ocarina/gui/wires.cpp

86 lines
1.5 KiB
C++

/*
* Copyright 2014 (c) Anna Schumaker.
*/
#include <idle.h>
#include <library.h>
#include <ocarina.h>
#include <print.h>
static Glib::RefPtr<Gtk::Builder> builder;
void enable_idle();
/*
* Collection manager functions
*/
static void on_collection_ok()
{
print("OK clicked!\n");
}
static void on_collection_update()
{
print("Update clicked!\n");
//library :: update_all();
enable_idle();
}
static void on_collection_import()
{
print("Import clicked!\n");
library :: import();
enable_idle();
}
/*
* Idle func
*/
bool on_idle()
{
Gtk::ProgressBar *prog;
bool ret = idle::run_task();
builder->get_widget("o_idle_progress", prog);
if (ret == false)
prog->hide();
else {
prog->show();
prog->set_fraction(idle::get_progress());
}
return ret;
}
void enable_idle()
{
Glib::signal_idle().connect(sigc::ptr_fun(on_idle));
}
/*
* Ocarina functions
*/
static void connect_button(Glib::RefPtr<Gtk::Builder> &builder,
const std::string &name, void (*func)())
{
Gtk::Button *button;
builder->get_widget(name, button);
button->signal_clicked().connect(sigc::ptr_fun(func));
}
Gtk::Window *connect_wires()
{
Gtk::Window *window;
builder = Gtk::Builder::create();
builder->add_from_file("gui/ocarina6.glade");
builder->get_widget("o_window", window);
/* Collection manager */
connect_button(builder, "o_collection_ok", on_collection_ok);
connect_button(builder, "o_collection_update", on_collection_update);
connect_button(builder, "o_collection_import", on_collection_import);
return window;
}