112 lines
2.8 KiB
C++
112 lines
2.8 KiB
C++
#include <string>
|
|
#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<Gtk::Builder> &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<std::string> 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<std::string>::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<Gtk::Builder> &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();
|
|
}
|