// Unnamed CAD Software // // License: GPLv3 (or later) // Language: C++17 // Notes: // - use a right-handed, Z-up coordinate system to match Open CASCADE #ifndef MAINWINDOW_H #define MAINWINDOW_H #include class QEvent; class ViewportWidget; class Document; class Feature; class QTabWidget; class QWidget; class ApplicationController; class DebugWindow; class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(ApplicationController* appController, QWidget *parent = nullptr); private slots: void newFile(); void open(); bool save(); bool saveAs(); void createSketch(); void saveSketch(); void showDebugWindow(); void updateDebugInfo(); void enterSketchMode(); void exitSketchMode(); void updateWindowTitle(const QString& filePath); protected: bool eventFilter(QObject *watched, QEvent *event) override; private: ApplicationController* m_appController; ViewportWidget *m_viewport; DebugWindow* m_debugWindow; QTabWidget *m_tabWidget; QWidget *m_solidTab; QWidget *m_surfaceTab; QWidget *m_toolsTab; QWidget *m_sketchTab; }; #endif // MAINWINDOW_H