summaryrefslogtreecommitdiff
path: root/src/MainWindow.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/MainWindow.h')
-rw-r--r--src/MainWindow.h142
1 files changed, 142 insertions, 0 deletions
diff --git a/src/MainWindow.h b/src/MainWindow.h
new file mode 100644
index 0000000..bb1bdc4
--- /dev/null
+++ b/src/MainWindow.h
@@ -0,0 +1,142 @@
+#ifndef MAINWINDOW_H_
+#define MAINWINDOW_H_
+
+#include <QMainWindow>
+#include "ui_MainWindow.h"
+#include "openscad.h"
+
+class MainWindow : public QMainWindow, public Ui::MainWindow
+{
+ Q_OBJECT
+
+public:
+ static QPointer<MainWindow> current_win;
+ static void requestOpenFile(const QString &filename);
+
+ QString fileName;
+ class Highlighter *highlighter;
+
+ class Preferences *prefs;
+
+ QTimer *animate_timer;
+ double tval, fps, fsteps;
+
+ Context root_ctx;
+ AbstractModule *root_module; // Result of parsing
+ ModuleInstantiation root_inst; // Top level instance
+ AbstractNode *absolute_root_node; // Result of tree evaluation
+ AbstractNode *root_node; // Root if the root modifier (!) is used
+
+ CSGTerm *root_raw_term; // Result of CSG term rendering
+ CSGTerm *root_norm_term; // Normalized CSG products
+ CSGChain *root_chain;
+#ifdef ENABLE_CGAL
+ CGAL_Nef_polyhedron *root_N;
+ bool recreate_cgal_ogl_p;
+ void *cgal_ogl_p;
+ PolySet *cgal_ogl_ps;
+#endif
+
+ QVector<CSGTerm*> highlight_terms;
+ CSGChain *highlights_chain;
+ QVector<CSGTerm*> background_terms;
+ CSGChain *background_chain;
+ QString last_compiled_doc;
+ bool enableOpenCSG;
+
+ static const int maxRecentFiles = 10;
+ QAction *actionRecentFile[maxRecentFiles];
+ QString examplesdir;
+
+ MainWindow(const char *filename = 0);
+ ~MainWindow();
+
+protected:
+ void closeEvent(QCloseEvent *event);
+
+private slots:
+ void updatedFps();
+ void updateTVal();
+ void setFileName(const QString &filename);
+ void setFont(const QString &family, uint size);
+
+private:
+ void openFile(const QString &filename);
+ void load();
+ AbstractNode *find_root_tag(AbstractNode *n);
+ void compile(bool procevents);
+ bool maybeSave();
+
+private slots:
+ void actionNew();
+ void actionOpen();
+ void actionOpenRecent();
+ void actionOpenExample();
+ void clearRecentFiles();
+ void updateRecentFileActions();
+ void actionSave();
+ void actionSaveAs();
+ void actionReload();
+
+private slots:
+ void editIndent();
+ void editUnindent();
+ void editComment();
+ void editUncomment();
+ void pasteViewportTranslation();
+ void pasteViewportRotation();
+ void hideEditor();
+ void preferences();
+
+private slots:
+ void actionReloadCompile();
+ void actionCompile();
+#ifdef ENABLE_CGAL
+ void actionRenderCGAL();
+#endif
+ void actionDisplayAST();
+ void actionDisplayCSGTree();
+ void actionDisplayCSGProducts();
+ void actionExportSTLorOFF(bool stl_mode);
+ void actionExportSTL();
+ void actionExportOFF();
+ void actionExportDXF();
+ void actionFlushCaches();
+
+public:
+ void viewModeActionsUncheck();
+
+public slots:
+#ifdef ENABLE_OPENCSG
+ void viewModeOpenCSG();
+#endif
+#ifdef ENABLE_CGAL
+ void viewModeCGALSurface();
+ void viewModeCGALGrid();
+#endif
+ void viewModeThrownTogether();
+ void viewModeShowEdges();
+ void viewModeShowAxes();
+ void viewModeShowCrosshairs();
+ void viewModeAnimate();
+ void viewAngleTop();
+ void viewAngleBottom();
+ void viewAngleLeft();
+ void viewAngleRight();
+ void viewAngleFront();
+ void viewAngleBack();
+ void viewAngleDiagonal();
+ void viewCenter();
+ void viewPerspective();
+ void viewOrthogonal();
+ void hideConsole();
+ void animateUpdateDocChanged();
+ void animateUpdate();
+ void dragEnterEvent(QDragEnterEvent *event);
+ void dropEvent(QDropEvent *event);
+ void helpAbout();
+ void helpManual();
+ void quit();
+};
+
+#endif
contact: Jan Huwald // Impressum