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   // Gradient function pointer for plots
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   // PlotWindow
00064   PPPlotWindow* pp_win;
00065   PTPlotWindow* pt_win;
00066   TTPlotWindow* tt_win;
00067 
00068   // Important separators in the scene graph
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   // XXX That's ugly!
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 //      QAction *addContactSurfaceAct;
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

Generated on Mon Feb 8 17:22:35 2010 for libbiarc by  doxygen 1.5.6