diff options
author | neoraider <devnull@localhost> | 2008-04-06 15:29:03 +0200 |
---|---|---|
committer | neoraider <devnull@localhost> | 2008-04-06 15:29:03 +0200 |
commit | 356efaf89afdad141b313767e1a2b89de3c08d0a (patch) | |
tree | 37edb2a0fc0ea15f4f60e45ed411cbea7b4c12c5 /Instance.cpp | |
parent | 258eb984bafe0f667d1e76de61c8afaa23f39ef4 (diff) | |
download | zoomedit-356efaf89afdad141b313767e1a2b89de3c08d0a.tar zoomedit-356efaf89afdad141b313767e1a2b89de3c08d0a.zip |
zoomedit: Recreated ZoomEdit based on Glademm.
Diffstat (limited to 'Instance.cpp')
-rw-r--r-- | Instance.cpp | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/Instance.cpp b/Instance.cpp new file mode 100644 index 0000000..6c658ba --- /dev/null +++ b/Instance.cpp @@ -0,0 +1,66 @@ +#include <iostream> +#include "Instance.h" + +namespace ZoomEdit { + +guint Instance::instances = 0; + +Instance::Instance() : window(NULL) { + instances++; + +#ifdef GLIBMM_EXCEPTIONS_ENABLED + try + { + xml = Gnome::Glade::Xml::create("zoomedit.glade"); + } + catch(const Gnome::Glade::XmlError& ex) + { + std::cerr << ex.what() << std::endl; + return; + } +#else + std::auto_ptr<Gnome::Glade::XmlError> error; + xml = Gnome::Glade::Xml::create("zoomedit.glade", "", "", error); + if(error.get()) + { + std::cerr << error->what() << std::endl; + return; + } +#endif + + xml->get_widget_derived("WindowMain", window); + if(!window) { + xml.clear(); + return; + } + + window->signal_hide().connect(sigc::mem_fun(this, &Instance::destroy)); + + window->show(); +} + +Instance::~Instance() { + if(window) + delete window; + + instances--; + if(!instances) + Gtk::Main::quit(); +} + +bool Instance::create() { + Instance *instance = new Instance(); + + if(!instance->xml) { + delete instance; + return false; + } + + return true; +} + +void Instance::destroy() { + delete this; +} + +} |