diff options
author | Kelly Rauchenberger <fefferburbia@gmail.com> | 2015-03-16 17:20:03 -0400 |
---|---|---|
committer | Kelly Rauchenberger <fefferburbia@gmail.com> | 2015-03-16 17:20:03 -0400 |
commit | 8b61d93fc869ea39a78cdc134002ef11bf3e69d3 (patch) | |
tree | c2aca3668c058cbdc7dfd9537802750f9c4f6600 | |
parent | 82fb304e61191f27403b5dbfaa90f24d625dee87 (diff) | |
download | therapy-8b61d93fc869ea39a78cdc134002ef11bf3e69d3.tar.gz therapy-8b61d93fc869ea39a78cdc134002ef11bf3e69d3.tar.bz2 therapy-8b61d93fc869ea39a78cdc134002ef11bf3e69d3.zip |
Opening a file in the map editor closes the current window if the current window is a blank slate
-rw-r--r-- | tools/mapedit/src/frame.cpp | 14 | ||||
-rw-r--r-- | tools/mapedit/src/frame.h | 2 | ||||
-rw-r--r-- | tools/mapedit/src/world.cpp | 7 | ||||
-rw-r--r-- | tools/mapedit/src/world.h | 2 |
4 files changed, 22 insertions, 3 deletions
diff --git a/tools/mapedit/src/frame.cpp b/tools/mapedit/src/frame.cpp index 934e0f8..94be15e 100644 --- a/tools/mapedit/src/frame.cpp +++ b/tools/mapedit/src/frame.cpp | |||
@@ -265,7 +265,13 @@ void MapeditFrame::OnOpen(wxCommandEvent&) | |||
265 | return; | 265 | return; |
266 | } | 266 | } |
267 | 267 | ||
268 | OpenWorld(openFileDialog.GetPath().ToStdString()); | 268 | if (OpenWorld(openFileDialog.GetPath().ToStdString())) |
269 | { | ||
270 | if (world->getEmpty()) | ||
271 | { | ||
272 | Close(true); | ||
273 | } | ||
274 | } | ||
269 | } | 275 | } |
270 | 276 | ||
271 | void MapeditFrame::OnSave(wxCommandEvent&) | 277 | void MapeditFrame::OnSave(wxCommandEvent&) |
@@ -429,17 +435,21 @@ void MapeditFrame::NewWorld() | |||
429 | LaunchWindow(std::unique_ptr<World>(new World())); | 435 | LaunchWindow(std::unique_ptr<World>(new World())); |
430 | } | 436 | } |
431 | 437 | ||
432 | void MapeditFrame::OpenWorld(std::string filename) | 438 | bool MapeditFrame::OpenWorld(std::string filename) |
433 | { | 439 | { |
434 | try | 440 | try |
435 | { | 441 | { |
436 | auto world = std::unique_ptr<World>(new World(filename)); | 442 | auto world = std::unique_ptr<World>(new World(filename)); |
437 | 443 | ||
438 | LaunchWindow(std::move(world)); | 444 | LaunchWindow(std::move(world)); |
445 | |||
446 | return true; | ||
439 | } catch (std::exception& ex) | 447 | } catch (std::exception& ex) |
440 | { | 448 | { |
441 | wxMessageBox(ex.what(), "Error loading world", wxOK | wxCENTRE | wxICON_ERROR); | 449 | wxMessageBox(ex.what(), "Error loading world", wxOK | wxCENTRE | wxICON_ERROR); |
442 | } | 450 | } |
451 | |||
452 | return false; | ||
443 | } | 453 | } |
444 | 454 | ||
445 | void MapeditFrame::LaunchWindow(std::unique_ptr<World> world) | 455 | void MapeditFrame::LaunchWindow(std::unique_ptr<World> world) |
diff --git a/tools/mapedit/src/frame.h b/tools/mapedit/src/frame.h index 4844485..6085eb2 100644 --- a/tools/mapedit/src/frame.h +++ b/tools/mapedit/src/frame.h | |||
@@ -33,7 +33,7 @@ class MapeditFrame : public wxFrame { | |||
33 | void MapDirtyDidChange(bool dirty); | 33 | void MapDirtyDidChange(bool dirty); |
34 | 34 | ||
35 | static void NewWorld(); | 35 | static void NewWorld(); |
36 | static void OpenWorld(std::string filename); | 36 | static bool OpenWorld(std::string filename); |
37 | 37 | ||
38 | std::list<wxWindow*>::iterator closer; | 38 | std::list<wxWindow*>::iterator closer; |
39 | 39 | ||
diff --git a/tools/mapedit/src/world.cpp b/tools/mapedit/src/world.cpp index f7b541d..c30f76c 100644 --- a/tools/mapedit/src/world.cpp +++ b/tools/mapedit/src/world.cpp | |||
@@ -9,6 +9,7 @@ World::World() | |||
9 | newMap(); | 9 | newMap(); |
10 | 10 | ||
11 | rootChildren.push_back(0); | 11 | rootChildren.push_back(0); |
12 | empty = true; | ||
12 | } | 13 | } |
13 | 14 | ||
14 | World::World(std::string filename) | 15 | World::World(std::string filename) |
@@ -170,6 +171,7 @@ std::shared_ptr<Map> World::getMap(int id) const | |||
170 | 171 | ||
171 | void World::setDirty(bool dirty) | 172 | void World::setDirty(bool dirty) |
172 | { | 173 | { |
174 | if (dirty) empty = false; | ||
173 | this->dirty = dirty; | 175 | this->dirty = dirty; |
174 | parent->MapDirtyDidChange(dirty); | 176 | parent->MapDirtyDidChange(dirty); |
175 | } | 177 | } |
@@ -372,3 +374,8 @@ void World::setLastMap(Map* map) | |||
372 | { | 374 | { |
373 | lastmap = map->getID(); | 375 | lastmap = map->getID(); |
374 | } | 376 | } |
377 | |||
378 | bool World::getEmpty() const | ||
379 | { | ||
380 | return empty; | ||
381 | } | ||
diff --git a/tools/mapedit/src/world.h b/tools/mapedit/src/world.h index c30f4b4..a2b5235 100644 --- a/tools/mapedit/src/world.h +++ b/tools/mapedit/src/world.h | |||
@@ -32,6 +32,7 @@ class World { | |||
32 | void setLastMap(Map* map); | 32 | void setLastMap(Map* map); |
33 | std::list<std::shared_ptr<Map>> getRootMaps() const; | 33 | std::list<std::shared_ptr<Map>> getRootMaps() const; |
34 | const std::map<int, std::shared_ptr<Map>> getMaps() const; | 34 | const std::map<int, std::shared_ptr<Map>> getMaps() const; |
35 | bool getEmpty() const; | ||
35 | 36 | ||
36 | private: | 37 | private: |
37 | MapeditFrame* parent; | 38 | MapeditFrame* parent; |
@@ -41,6 +42,7 @@ class World { | |||
41 | std::string filename; | 42 | std::string filename; |
42 | int lastmap = 0; | 43 | int lastmap = 0; |
43 | std::list<int> rootChildren; | 44 | std::list<int> rootChildren; |
45 | bool empty = false; | ||
44 | }; | 46 | }; |
45 | 47 | ||
46 | #endif | 48 | #endif |