mainwindow.h
00001 #ifndef MAINWINDOW_H
00002 #define MAINWINDOW_H
00003
00004 #include <QApplication>
00005 #include <QMainWindow>
00006 #include <QToolBar>
00007 #include <QStatusBar>
00008 #include <QSettings>
00009 #include <QFileDialog>
00010 #include <QMenu>
00011 #include <QMenuBar>
00012 #include <QMessageBox>
00013
00014 #include "main.h"
00015 #include "utils.h"
00016 #include "../experimental/pngmanip/colors.h"
00017
00018 class PPPlotWindow;
00019 class PTPlotWindow;
00020 class TTPlotWindow;
00021
00022 class QAction;
00023 class QMenu;
00024
00025 enum VIEW_MODE { SOLID_VIEW = 1, WIRE_VIEW, BIARC_VIEW };
00026 class MainWindow : public QMainWindow, public SoQtExaminerViewer {
00027
00028 Q_OBJECT
00029 SOQT_OBJECT_HEADER(MainWindow, SoQtExaminerViewer);
00030
00031 public:
00032 MainWindow(QWidget* parent=NULL, const char *name = NULL,
00033 SbBool embed = TRUE,
00034 SoQtFullViewer::BuildFlag flag = BUILD_ALL,
00035 SoQtViewer::Type = BROWSER);
00036 ~MainWindow();
00037
00038 VIEW_MODE view_mode;
00039 void swap_view() {
00040 switch(view_mode) {
00041 case SOLID_VIEW: view_mode = WIRE_VIEW; break;
00042 case WIRE_VIEW: view_mode = BIARC_VIEW; break;
00043 case BIARC_VIEW: view_mode = SOLID_VIEW; break;
00044 default: view_mode = SOLID_VIEW; break;
00045 }
00046 }
00047
00048 ViewerInfo* vi;
00049 CurveInterface *ci;
00050
00051
00052 void(*gradient)(RGB*,float,float,float);
00053
00054 bool PRESSED;
00055 vector<Biarc<Vector3> >::iterator picked_biarc;
00056 SbPlaneProjector spp;
00057 SbVec3f UpVector, LeftVector, delta;
00058 float AspectratioX, AspectratioY;
00059 int EditTangent;
00060
00061 QFileDialog* fileDialog;
00062
00063
00064 PPPlotWindow* pp_win;
00065 PTPlotWindow* pt_win;
00066 TTPlotWindow* tt_win;
00067
00068
00069 SoSeparator *root, *circles, *interaction;
00070 SoSwitch *scene;
00071
00072 protected:
00073 void closeEvent(QCloseEvent *event);
00074
00075 private slots:
00076 void newFile();
00077 void open();
00078 bool save();
00079 bool saveAs();
00080 void about();
00081
00082
00083 void setGrad1();
00084 void setGrad2();
00085 void setGrad3();
00086 void setGrad4();
00087 void setGrad5();
00088 void setGrad6();
00089 void setGrad7();
00090 void setGrad8();
00091 void setGrad9();
00092
00093 void setFraming0();
00094 void setFraming1();
00095 void setFraming2();
00096 void setFraming3();
00097 void setFraming4();
00098 void setFraming5();
00099 void setFraming6();
00100
00101 void ppWindow();
00102 void ptWindow();
00103 void ttWindow();
00104
00105 void addIVScene();
00106
00107 void updatePickedPP(float u, float v, float u2, float v2, bool UNION);
00108 void updatePickedPT(float u, float v, float u2, float v2, bool UNION);
00109 void updatePickedTT(float u, float v, float u2, float v2, bool UNION);
00110
00111 public slots:
00112 void setFraming(int FRAME);
00113 void plotWindow(int w);
00114
00115 private:
00116
00117 int oldx, oldy, oldx2, oldy2;
00118
00119 void createActions();
00120 void createMenus();
00121 void createToolBars();
00122 void createStatusBar();
00123 void readSettings();
00124 void writeSettings();
00125 bool maybeSave();
00126 void loadFile(const QStringList fileNames);
00127 bool saveFile(const QString &fileName);
00128
00129 QMenu *fileMenu;
00130 QMenu *editMenu;
00131 QMenu *prefsMenu;
00132 QMenu *gradMenu;
00133 QMenu *framingMenu;
00134 QMenu *addMenu;
00135 QMenu *plotMenu;
00136 QMenu *helpMenu;
00137 QToolBar *fileToolBar;
00138 QToolBar *editToolBar;
00139 QAction *newAct;
00140 QAction *openAct;
00141 QAction *saveAct;
00142 QAction *saveAsAct;
00143 QAction *exitAct;
00144 QAction *cutAct;
00145 QAction *copyAct;
00146 QAction *pasteAct;
00147
00148 QActionGroup *gradientAct;
00149 QAction *grad1Act;
00150 QAction *grad2Act;
00151 QAction *grad3Act;
00152 QAction *grad4Act;
00153 QAction *grad5Act;
00154 QAction *grad6Act;
00155 QAction *grad7Act;
00156 QAction *grad8Act;
00157 QAction *grad9Act;
00158
00159 QActionGroup *framingAct;
00160 QAction *framingNoneAct;
00161 QAction *framingFrenetAct;
00162 QAction *framingFrenetFourierAct;
00163 QAction *framingParallelAct;
00164 QAction *framingParallelODEAct;
00165 QAction *framingWritheAct;
00166 QAction *framingWritheODEAct;
00167
00168 QAction *plotPPWindowAct;
00169 QAction *plotPTWindowAct;
00170 QAction *plotTTWindowAct;
00171
00172 QAction *addIVSceneAct;
00173
00174
00175 QAction *aboutAct;
00176 QAction *aboutQtAct;
00177 signals:
00178 void changed();
00179 public:
00180 void emitChanged() {
00181 emit changed();
00182 }
00183 };
00184
00185 #endif