diff --git a/gui/ocarina6.glade b/gui/ocarina6.glade
index 80d63193..29bd3f69 100644
--- a/gui/ocarina6.glade
+++ b/gui/ocarina6.glade
@@ -18,10 +18,10 @@
-
-
+
+
@@ -112,7 +112,7 @@
- 2
+ 3
diff --git a/gui/wires.cpp b/gui/wires.cpp
index 8197e1cc..d8b0d4f1 100644
--- a/gui/wires.cpp
+++ b/gui/wires.cpp
@@ -1,6 +1,7 @@
/*
* Copyright 2014 (c) Anna Schumaker.
*/
+#include
#include
#include
@@ -10,9 +11,22 @@
static Glib::RefPtr builder;
void enable_idle();
+
/*
* Collection manager functions
*/
+class CollectionColumns : public Gtk::TreeModelColumnRecord {
+public:
+ CollectionColumns()
+ { add(c_col_id); add(c_col_enabled); add(c_col_size); add(c_col_path); }
+
+ Gtk::TreeModelColumn c_col_id;
+ Gtk::TreeModelColumn c_col_enabled;
+ Gtk::TreeModelColumn c_col_size;
+ Gtk::TreeModelColumn c_col_path;
+};
+static CollectionColumns collection_cols;
+
static void on_collection_ok()
{
std::string path;
@@ -36,6 +50,34 @@ static void on_collection_import()
enable_idle();
}
+static void on_library_add(unsigned int id, library :: Library *path)
+{
+ Gtk::TreeModel::Row row;
+ Glib::RefPtr list;
+
+ list = Glib::RefPtr::cast_static(builder->get_object("o_collection_dirs"));
+
+ row = *(list->append());
+ row[collection_cols.c_col_id] = id;
+ row[collection_cols.c_col_enabled] = path->enabled;
+ row[collection_cols.c_col_size] = path->size;
+ row[collection_cols.c_col_path] = path->root_path;
+}
+
+static void on_library_update(unsigned int id, library :: Library *path)
+{
+ Gtk::TreeModel::Row row;
+ Glib::RefPtr list = Glib::RefPtr::cast_static(builder->get_object("o_collection_dirs"));
+ Gtk::TreeModel::Children children = list->children();
+
+ for (Gtk::TreeModel::Children::iterator it = children.begin();
+ it != children.end(); it++) {
+ row = *it;
+ if (row[collection_cols.c_col_id] == id)
+ row[collection_cols.c_col_size] = path->size;
+ }
+}
+
/*
@@ -85,11 +127,15 @@ static void connect_button(const std::string &name, void (*func)())
Gtk::Window *connect_wires()
{
Gtk::Window *window;
+ struct Callbacks *cb = get_callbacks();
+
builder = Gtk::Builder::create();
builder->add_from_file("gui/ocarina6.glade");
builder->get_widget("o_window", window);
/* Collection manager */
+ cb->on_library_add = on_library_add;
+ cb->on_library_update = on_library_update;
connect_button("o_collection_ok", on_collection_ok);
connect_button("o_collection_update", on_collection_update);
connect_button("o_collection_import", on_collection_import);