diff options
author | Kelly Rauchenberger <fefferburbia@gmail.com> | 2015-03-15 19:27:55 -0400 |
---|---|---|
committer | Kelly Rauchenberger <fefferburbia@gmail.com> | 2015-03-15 19:27:55 -0400 |
commit | dca2aea57957c6af1af535f23ae392e7517ebd51 (patch) | |
tree | 170d7e471d3872c07e508998320a3a5e537454fe | |
parent | c125c1acc0b20c3e405dddb5c835d9734aa0472c (diff) | |
download | therapy-dca2aea57957c6af1af535f23ae392e7517ebd51.tar.gz therapy-dca2aea57957c6af1af535f23ae392e7517ebd51.tar.bz2 therapy-dca2aea57957c6af1af535f23ae392e7517ebd51.zip |
Fixed functionality of quit menu item in map editor
-rw-r--r-- | tools/mapedit/src/frame.cpp | 37 | ||||
-rw-r--r-- | tools/mapedit/src/frame.h | 10 | ||||
-rw-r--r-- | tools/mapedit/src/main.cpp | 4 |
3 files changed, 41 insertions, 10 deletions
diff --git a/tools/mapedit/src/frame.cpp b/tools/mapedit/src/frame.cpp index b3808e2..e0df030 100644 --- a/tools/mapedit/src/frame.cpp +++ b/tools/mapedit/src/frame.cpp | |||
@@ -3,6 +3,9 @@ | |||
3 | #include "tile_widget.h" | 3 | #include "tile_widget.h" |
4 | #include <wx/splitter.h> | 4 | #include <wx/splitter.h> |
5 | #include "panel.h" | 5 | #include "panel.h" |
6 | #include <list> | ||
7 | |||
8 | static std::list<wxWindow*> openWindows; | ||
6 | 9 | ||
7 | enum { | 10 | enum { |
8 | MENU_VIEW_ZOOM_IN, | 11 | MENU_VIEW_ZOOM_IN, |
@@ -102,6 +105,8 @@ void MapeditFrame::OnExit(wxCloseEvent& event) | |||
102 | } | 105 | } |
103 | } | 106 | } |
104 | 107 | ||
108 | *closer = nullptr; | ||
109 | |||
105 | event.Skip(); | 110 | event.Skip(); |
106 | } | 111 | } |
107 | 112 | ||
@@ -122,8 +127,7 @@ void MapeditFrame::ZoomOut(wxCommandEvent& event) | |||
122 | 127 | ||
123 | void MapeditFrame::OnNew(wxCommandEvent& event) | 128 | void MapeditFrame::OnNew(wxCommandEvent& event) |
124 | { | 129 | { |
125 | MapeditFrame* frame = new MapeditFrame(); | 130 | NewMap(); |
126 | frame->Show(true); | ||
127 | } | 131 | } |
128 | 132 | ||
129 | void MapeditFrame::OnOpen(wxCommandEvent& event) | 133 | void MapeditFrame::OnOpen(wxCommandEvent& event) |
@@ -134,9 +138,7 @@ void MapeditFrame::OnOpen(wxCommandEvent& event) | |||
134 | return; | 138 | return; |
135 | } | 139 | } |
136 | 140 | ||
137 | std::string filename = openFileDialog.GetPath().ToStdString(); | 141 | OpenMap(openFileDialog.GetPath().c_str()); |
138 | MapeditFrame* frame = new MapeditFrame(Map(filename), filename); | ||
139 | frame->Show(true); | ||
140 | } | 142 | } |
141 | 143 | ||
142 | void MapeditFrame::OnSave(wxCommandEvent& event) | 144 | void MapeditFrame::OnSave(wxCommandEvent& event) |
@@ -162,10 +164,33 @@ void MapeditFrame::OnClose(wxCommandEvent& event) | |||
162 | 164 | ||
163 | void MapeditFrame::OnQuit(wxCommandEvent& event) | 165 | void MapeditFrame::OnQuit(wxCommandEvent& event) |
164 | { | 166 | { |
165 | // TODO | 167 | for (auto window : openWindows) |
168 | { | ||
169 | if (window != nullptr) | ||
170 | { | ||
171 | window->Close(false); | ||
172 | } | ||
173 | } | ||
166 | } | 174 | } |
167 | 175 | ||
168 | void MapeditFrame::OnTitleChange(wxCommandEvent& event) | 176 | void MapeditFrame::OnTitleChange(wxCommandEvent& event) |
169 | { | 177 | { |
170 | map.setTitle(titleBox->GetLineText(0).ToStdString()); | 178 | map.setTitle(titleBox->GetLineText(0).ToStdString()); |
171 | } | 179 | } |
180 | |||
181 | void MapeditFrame::NewMap() | ||
182 | { | ||
183 | LaunchWindow(Map(), ""); | ||
184 | } | ||
185 | |||
186 | void MapeditFrame::OpenMap(const char* filename) | ||
187 | { | ||
188 | LaunchWindow(Map(filename), filename); | ||
189 | } | ||
190 | |||
191 | void MapeditFrame::LaunchWindow(Map map, const char* filename) | ||
192 | { | ||
193 | MapeditFrame* frame = new MapeditFrame(map, filename); | ||
194 | frame->closer = openWindows.insert(end(openWindows), frame); | ||
195 | frame->Show(true); | ||
196 | } | ||
diff --git a/tools/mapedit/src/frame.h b/tools/mapedit/src/frame.h index 11990b1..5e119f3 100644 --- a/tools/mapedit/src/frame.h +++ b/tools/mapedit/src/frame.h | |||
@@ -10,15 +10,23 @@ | |||
10 | #include "map.h" | 10 | #include "map.h" |
11 | #include "widget.h" | 11 | #include "widget.h" |
12 | #include "tile_widget.h" | 12 | #include "tile_widget.h" |
13 | #include <list> | ||
13 | 14 | ||
14 | class MapeditFrame : public wxFrame { | 15 | class MapeditFrame : public wxFrame { |
15 | public: | 16 | public: |
16 | MapeditFrame() : MapeditFrame(Map(), "") {} | 17 | MapeditFrame() {} |
17 | MapeditFrame(Map map, std::string filename); | 18 | MapeditFrame(Map map, std::string filename); |
18 | 19 | ||
19 | MapeditWidget* GetMapEditor(); | 20 | MapeditWidget* GetMapEditor(); |
21 | |||
22 | static void NewMap(); | ||
23 | static void OpenMap(const char* filename); | ||
24 | |||
25 | std::list<wxWindow*>::iterator closer; | ||
20 | 26 | ||
21 | private: | 27 | private: |
28 | static void LaunchWindow(Map map, const char* filename); | ||
29 | |||
22 | void ZoomIn(wxCommandEvent& event); | 30 | void ZoomIn(wxCommandEvent& event); |
23 | void ZoomOut(wxCommandEvent& event); | 31 | void ZoomOut(wxCommandEvent& event); |
24 | void OnNew(wxCommandEvent& event); | 32 | void OnNew(wxCommandEvent& event); |
diff --git a/tools/mapedit/src/main.cpp b/tools/mapedit/src/main.cpp index cfc5a46..91dd98f 100644 --- a/tools/mapedit/src/main.cpp +++ b/tools/mapedit/src/main.cpp | |||
@@ -18,9 +18,7 @@ bool MapeditApp::OnInit() | |||
18 | { | 18 | { |
19 | wxInitAllImageHandlers(); | 19 | wxInitAllImageHandlers(); |
20 | 20 | ||
21 | MapeditFrame* frame = new MapeditFrame(); | 21 | MapeditFrame::NewMap(); |
22 | SetTopWindow(frame); | ||
23 | frame->Show(true); | ||
24 | 22 | ||
25 | return true; | 23 | return true; |
26 | } | 24 | } |