00001 #ifndef TABBEDPLOTWIDGET_H 00002 #define TABBEDPLOTWIDGET_H 00003 00004 #include <QWidget> 00005 #include <QMainWindow> 00006 #include <QTableWidget> 00007 #include "plotmatrix.h" 00008 00009 namespace Ui { 00010 class TabbedPlotWidget; 00011 } 00012 00013 00014 class TabbedPlotWidget : public QWidget 00015 { 00016 Q_OBJECT 00017 00018 public: 00019 typedef struct{} MainWindowArea; 00020 00021 explicit TabbedPlotWidget(QString name, 00022 QMainWindow *main_window, 00023 PlotMatrix* first_tab, 00024 PlotDataMap &mapped_data, 00025 QMainWindow *parent ); 00026 00027 PlotMatrix* currentTab(); 00028 00029 QTabWidget* tabWidget(); 00030 00031 void addTab(PlotMatrix *tab = NULL); 00032 00033 QDomElement xmlSaveState(QDomDocument &doc) const; 00034 bool xmlLoadState(QDomElement &tabbed_area); 00035 00036 ~TabbedPlotWidget(); 00037 00038 QString name() const { return _name; } 00039 00040 static const std::map<QString,TabbedPlotWidget*>& instances(); 00041 00042 static TabbedPlotWidget *instance(const QString& key); 00043 00044 void setControlsVisible(bool visible); 00045 00046 public slots: 00047 00048 void setStreamingMode(bool streaming_mode); 00049 00050 private slots: 00051 00052 void on_renameCurrentTab(); 00053 00054 void on_savePlotsToFile(); 00055 00056 void on_pushAddColumn_pressed(); 00057 00058 void on_pushVerticalResize_pressed(); 00059 00060 void on_pushHorizontalResize_pressed(); 00061 00062 void on_pushAddRow_pressed(); 00063 00064 void on_addTabButton_pressed(); 00065 00066 void on_pushRemoveEmpty_pressed(); 00067 00068 void on_tabWidget_currentChanged(int index); 00069 00070 void on_tabWidget_tabCloseRequested(int index); 00071 00072 void on_buttonLinkHorizontalScale_toggled(bool checked); 00073 00074 void on_requestTabMovement(const QString &destination_name); 00075 00076 void on_moveTabIntoNewWindow(); 00077 00078 void on_pushButtonShowLabel_toggled(bool checked); 00079 00080 private: 00081 Ui::TabbedPlotWidget *ui; 00082 00083 QAction* _action_renameTab; 00084 QAction* _action_savePlots; 00085 00086 QMenu* _tab_menu; 00087 00088 const QString _name; 00089 00090 PlotDataMap& _mapped_data; 00091 00092 bool _horizontal_link; 00093 00094 QString _parent_type; 00095 00096 virtual void closeEvent(QCloseEvent *event) override; 00097 00098 protected: 00099 00100 virtual bool eventFilter(QObject *obj, QEvent *event); 00101 00102 static std::map<QString,TabbedPlotWidget*> _instances; 00103 00104 signals: 00105 void created(); 00106 void undoableChangeHappened(); 00107 void matrixAdded( PlotMatrix * ); 00108 void sendTabToNewWindow(PlotMatrix *); 00109 }; 00110 00111 #endif // TABBEDPLOTWIDGET_H