#include "MainWindow.h" MainWindow::MainWindow() { // Initialise members preferences_window = NULL; // Load the data for this window and it's widgets. refXml = Gnome::Glade::Xml::create("simpleapp.glade", "main_window"); // The window refXml->get_widget("main_window", window); window->signal_delete_event().connect(sigc::mem_fun(*this, &MainWindow::on_delete_event)); // Widgets refXml->connect_clicked("preferences_button", sigc::mem_fun(*this, &MainWindow::on_preferences_open)); // Show everything. window->show_all_children(true); } MainWindow::~MainWindow() { delete window; // Frees all the children for the window, too. } bool MainWindow::on_delete_event(GdkEventAny *e) { if (preferences_window != NULL) return true; return false; } void MainWindow::on_preferences_open() { if (preferences_window == NULL) preferences_window = new PreferencesWindow; preferences_window->window->signal_delete_event().connect(sigc::mem_fun(*this, &MainWindow::on_preferences_close)); preferences_window->window->signal_hide().connect(sigc::mem_fun(*this, &MainWindow::on_preferences_hide)); } void MainWindow::on_preferences_hide() { std::cout << "MainWindow::on_preferences_hide() called" << std::endl; delete preferences_window; preferences_window = NULL; std::cout << "MainWindow::on_preferences_hide() finished" << std::endl; } bool MainWindow::on_preferences_close(GdkEventAny *e) { on_preferences_hide(); return false; }