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 @@ - - + + @@ -101,7 +101,7 @@ - 3 + 2 @@ -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);