#ifndef FRAME_H #define FRAME_H #include #ifndef WX_PRECOMP #include #endif #include "map.h" #include "widget.h" #include "tile_widget.h" #include #include #include #include class MapPtrCtr : public wxTreeItemData { public: Map* map; MapPtrCtr(Map* map) : map(map) {} }; class MapeditFrame : public wxFrame { public: MapeditFrame() {} MapeditFrame(std::unique_ptr world); MapeditWidget* GetMapEditor(); void StartAddingEntity(); void FinishAddingEntity(); void MapDirtyDidChange(bool dirty); static void NewWorld(); static void OpenWorld(std::string filename); std::list::iterator closer; private: static void LaunchWindow(std::unique_ptr world); void populateMapTree(wxTreeItemId node, std::list> maps); void SelectMap(Map* map); wxTreeItemId MoveTreeNode(wxTreeItemId toCopy, wxTreeItemId newParent); void ZoomIn(wxCommandEvent& event); void ZoomOut(wxCommandEvent& event); void OnNew(wxCommandEvent& event); void OnOpen(wxCommandEvent& event); void OnSave(wxCommandEvent& event); void OnClose(wxCommandEvent& event); void OnExit(wxCloseEvent& event); void OnQuit(wxCommandEvent& event); void OnTitleChange(wxCommandEvent& event); void OnTabChange(wxBookCtrlEvent& event); void OnTabChanging(wxBookCtrlEvent& event); void OnAddEntity(wxCommandEvent& event); void OnCancelAddEntity(wxCommandEvent& event); void OnAddRoot(wxCommandEvent& event); void OnAddChild(wxCommandEvent& event); void OnDidSelectMap(wxTreeEvent& event); void OnWillSelectMap(wxTreeEvent& event); void OnWillDragMap(wxTreeEvent& event); void OnDidDragMap(wxTreeEvent& event); std::unique_ptr world; Map* currentMap; MapeditWidget* mapEditor; TileWidget* tileEditor; wxTextCtrl* titleBox; std::string filename; wxNotebook* notebook; wxChoice* entityTypeBox; wxButton* addEntityButton; wxButton* cancelEntityButton; wxToolBar* toolbar; wxMenu* menuFile; wxTreeCtrl* mapTree; wxTreeItemId dragMap; bool addingEntity = false; wxDECLARE_EVENT_TABLE(); }; #endif