From ddb0496dca76d7aa357f20feabc857abc74dc151 Mon Sep 17 00:00:00 2001 From: Marc Zinnschlag Date: Sat, 26 Apr 2014 13:11:27 +0200 Subject: [PATCH] replaced return value of removeDocument with a signal --- apps/opencs/editor.cpp | 7 +++++++ apps/opencs/editor.hpp | 2 ++ apps/opencs/model/doc/documentmanager.cpp | 8 ++++---- apps/opencs/model/doc/documentmanager.hpp | 6 ++++-- 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/apps/opencs/editor.cpp b/apps/opencs/editor.cpp index de68098395..f13c85e73e 100644 --- a/apps/opencs/editor.cpp +++ b/apps/opencs/editor.cpp @@ -39,6 +39,8 @@ CS::Editor::Editor (OgreInit::OgreInit& ogreInit) connect (&mDocumentManager, SIGNAL (documentAdded (CSMDoc::Document *)), this, SLOT (documentAdded (CSMDoc::Document *))); + connect (&mDocumentManager, SIGNAL (lastDocumentDeleted()), + this, SLOT (lastDocumentDeleted())); connect (&mViewManager, SIGNAL (newGameRequest ()), this, SLOT (createGame ())); connect (&mViewManager, SIGNAL (newAddonRequest ()), this, SLOT (createAddon ())); @@ -290,4 +292,9 @@ std::auto_ptr CS::Editor::setupGraphics() void CS::Editor::documentAdded (CSMDoc::Document *document) { mViewManager.addView (document); +} + +void CS::Editor::lastDocumentDeleted() +{ + exit (0); } \ No newline at end of file diff --git a/apps/opencs/editor.hpp b/apps/opencs/editor.hpp index 53afee0484..d1825e5af3 100644 --- a/apps/opencs/editor.hpp +++ b/apps/opencs/editor.hpp @@ -87,6 +87,8 @@ namespace CS void documentAdded (CSMDoc::Document *document); + void lastDocumentDeleted(); + private: QString mIpcServerName; diff --git a/apps/opencs/model/doc/documentmanager.cpp b/apps/opencs/model/doc/documentmanager.cpp index 51774e4ffa..b8372eb4c5 100644 --- a/apps/opencs/model/doc/documentmanager.cpp +++ b/apps/opencs/model/doc/documentmanager.cpp @@ -53,17 +53,18 @@ void CSMDoc::DocumentManager::addDocument (const std::vector::iterator iter = std::find (mDocuments.begin(), mDocuments.end(), document); if (iter==mDocuments.end()) - throw std::runtime_error ("removing invalid document"); + throw std::runtime_error ("removing invalid document"); mDocuments.erase (iter); delete document; - return mDocuments.empty(); + if (mDocuments.empty()) + emit lastDocumentDeleted(); } void CSMDoc::DocumentManager::setResourceDir (const boost::filesystem::path& parResDir) @@ -80,5 +81,4 @@ void CSMDoc::DocumentManager::documentNotLoaded (Document *document, const std:: { removeDocument (document); /// \todo report error - /// \todo handle removeDocument returning true } \ No newline at end of file diff --git a/apps/opencs/model/doc/documentmanager.hpp b/apps/opencs/model/doc/documentmanager.hpp index c30c83c066..1af18a1484 100644 --- a/apps/opencs/model/doc/documentmanager.hpp +++ b/apps/opencs/model/doc/documentmanager.hpp @@ -43,8 +43,8 @@ namespace CSMDoc ///< \param new_ Do not load the last content file in \a files and instead create in an /// appropriate way. - bool removeDocument (Document *document); - ///< \return last document removed? + void removeDocument (Document *document); + ///< Emits the lastDocumentDeleted signal, if applicable. void setResourceDir (const boost::filesystem::path& parResDir); @@ -66,6 +66,8 @@ namespace CSMDoc void documentAdded (CSMDoc::Document *document); void loadRequest (Document *document, bool _new); + + void lastDocumentDeleted(); }; }