editor_window.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #pragma once
  2. #include "map_canvas.h"
  3. #include "map_data.h"
  4. #include "tool_panel.h"
  5. #include <QLabel>
  6. #include <QMainWindow>
  7. #include <QWidget>
  8. namespace MapEditor {
  9. class EditorWindow : public QMainWindow {
  10. Q_OBJECT
  11. public:
  12. explicit EditorWindow(QWidget *parent = nullptr);
  13. ~EditorWindow() override;
  14. bool loadFile(const QString &filePath);
  15. private slots:
  16. void newMap();
  17. void openMap();
  18. void saveMap();
  19. void saveMapAs();
  20. void resizeMap();
  21. void undo();
  22. void redo();
  23. void onToolSelected(ToolType tool);
  24. void onToolCleared();
  25. void onElementDoubleClicked(int elementType, int index);
  26. void onGridDoubleClicked();
  27. void onModifiedChanged(bool modified);
  28. void onUndoRedoChanged();
  29. void updateDimensionsLabel();
  30. private:
  31. void setupUI();
  32. void setupMenus();
  33. void updateWindowTitle();
  34. bool maybeSave();
  35. void closeEvent(QCloseEvent *event) override;
  36. MapData *m_mapData = nullptr;
  37. MapCanvas *m_canvas = nullptr;
  38. ToolPanel *m_toolPanel = nullptr;
  39. QLabel *m_statusLabel = nullptr;
  40. QLabel *m_dimensionsLabel = nullptr;
  41. QString m_currentFilePath;
  42. QAction *m_undoAction = nullptr;
  43. QAction *m_redoAction = nullptr;
  44. };
  45. } // namespace MapEditor