#include #include "session_gui.h" #include "session.h" #include "gui.h" // Session Open window SessionOpenGui *SessionOpenGui::Open() { SessionOpenGui *window = NULL; g_builder->get_widget_derived("dialog_session_open", window); if (window != NULL) window->Refresh(); return window; } SessionOpenGui::SessionOpenGui(BaseObjectType *cobject, const Glib::RefPtr &builder) : Gtk::Dialog(cobject) { builder->get_widget("combobox_session_open", combobox_session_open); builder->get_widget("button_session_open_cancel", button_session_open_cancel); builder->get_widget("button_session_open_okay", button_session_open_okay); m_tree_model = Gtk::ListStore::create(m_columns); combobox_session_open->set_model(m_tree_model); combobox_session_open->pack_start(m_columns.m_name); button_session_open_cancel->signal_clicked().connect(sigc::mem_fun(*this, &SessionOpenGui::on_cancel)); button_session_open_okay->signal_clicked().connect(sigc::mem_fun(*this, &SessionOpenGui::on_okay)); } void SessionOpenGui::Refresh() { Session *s = new Session(); std::list sessions = s->List(); delete s; bool active = sessions.size() > 0; combobox_session_open->set_sensitive(active); button_session_open_okay->set_sensitive(active); if (active) { m_tree_model->clear(); Gtk::TreeModel::Row row; std::list::iterator it; for (it = sessions.begin(); it != sessions.end(); ++it) { row = *(m_tree_model->append()); row[m_columns.m_name] = *it; } } } void SessionOpenGui::on_cancel() { hide(); } void SessionOpenGui::on_okay() { Gtk::TreeModel::iterator iter = combobox_session_open->get_active(); if (iter) { Gtk::TreeModel::Row row = *iter; Session *s = new Session(); s->Load(row[m_columns.m_name]); delete s; } hide(); } // Session Save window SessionSaveGui *SessionSaveGui::Open() { SessionSaveGui *window = NULL; g_builder->get_widget_derived("dialog_session_save", window); if (window != NULL) window->Refresh(); return window; } SessionSaveGui::SessionSaveGui(BaseObjectType *cobject, const Glib::RefPtr &builder) : Gtk::Dialog(cobject) { builder->get_widget("entry_session_name", entry_session_name); builder->get_widget("button_session_save_cancel", button_session_save_cancel); builder->get_widget("button_session_save_okay", button_session_save_okay); button_session_save_cancel->signal_clicked().connect(sigc::mem_fun(*this, &SessionSaveGui::on_cancel)); button_session_save_okay->signal_clicked().connect(sigc::mem_fun(*this, &SessionSaveGui::on_okay)); } void SessionSaveGui::Refresh() { entry_session_name->set_text(""); } void SessionSaveGui::on_cancel() { hide(); } void SessionSaveGui::on_okay() { Session *s = new Session(); s->SaveAs(entry_session_name->get_text()); delete s; hide(); }