#pragma once #include #include #include #include #include #include #include #include #include #include #include class TextEditor; class FileTreeWidget; class TerminalWidget; class ProjectManager; class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); private slots: void newFile(); void openFile(); void saveFile(); void saveAsFile(); void openProject(); void buildProject(); void runProject(); void debugProject(); void showAbout(); void toggleTheme(); private: void setupUI(); void setupMenus(); void setupToolbar(); void setupStatusBar(); void connectSignals(); void loadSettings(); void saveSettings(); // UI Components QSplitter *m_centralSplitter; QSplitter *m_leftSplitter; QTabWidget *m_editorTabs; FileTreeWidget *m_fileTree; TerminalWidget *m_terminal; // Managers ProjectManager *m_projectManager; // Settings QSettings *m_settings; bool m_darkTheme; // Current file QString m_currentFilePath; };