From f80203c5fed12d0117784b260ccf3797ccf2ea58 Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Sat, 18 Jan 2014 12:53:31 -0500 Subject: [PATCH] gui: Delete and disable library paths The signal connections for these features are really difficult to test programmatically, but I can test the effects by calling each function directly. Signed-off-by: Anna Schumaker --- gui/ocarina6.glade | 37 ++---------------------------------- gui/wires.cpp | 47 ++++++++++++++++++++++++++++++++++++++++++++++ include/ocarina.h | 5 +++++ tests/gui/gui.cpp | 38 +++++++++++++++++++++++++++++++++++-- 4 files changed, 90 insertions(+), 37 deletions(-) diff --git a/gui/ocarina6.glade b/gui/ocarina6.glade index 5b04bc9a..6ec8750c 100644 --- a/gui/ocarina6.glade +++ b/gui/ocarina6.glade @@ -7,40 +7,6 @@ 1 10 - - True - False - gtk-refresh - 1 - - - True - False - user-trash-full - 1 - - - True - False - - - Update - True - False - image12 - False - - - - - Delete - True - False - image13 - False - - - @@ -112,6 +78,7 @@ natural o_collection_dirs True + False @@ -119,7 +86,7 @@ 20 - + 1 diff --git a/gui/wires.cpp b/gui/wires.cpp index f6ca2faf..51f34c18 100644 --- a/gui/wires.cpp +++ b/gui/wires.cpp @@ -68,6 +68,49 @@ static void on_collection_row_activated(const Gtk::TreePath &path, chooser->set_current_folder(dir); } +#ifndef CONFIG_TEST +static +#endif /* CONFIG_TEST */ +void do_collection_delete() +{ + Gtk::TreePath path; + Gtk::TreeViewColumn *col; + Gtk::TreeView *treeview; + + builder->get_widget("o_collection_treeview", treeview); + treeview->get_cursor(path, col); + if (path) { + Glib::RefPtr list; + get_object("o_collection_dirs", list); + Gtk::TreeModel::Row row = *(list->get_iter(path)); + library :: del_path(row[collection_cols.c_col_id]); + list->erase(row); + } +} + +static bool on_collection_key_pressed(GdkEventKey *event) +{ + std::string key = gdk_keyval_name(event->keyval); + if (key == "Delete") { + do_collection_delete(); + return true; + } + return false; +} + +#ifndef CONFIG_TEST +static +#endif /* CONFIG_TEST */ +void on_collection_toggled(const Glib::ustring &path) +{ + Glib::RefPtr list; + get_object("o_collection_dirs", list); + Gtk::TreeModel::Row row = *(list->get_iter(path)); + row[collection_cols.c_col_enabled] = !row[collection_cols.c_col_enabled]; + library :: set_enabled(row[collection_cols.c_col_id], + row[collection_cols.c_col_enabled]); +} + static void on_library_add(unsigned int id, library :: Library *path) { Gtk::TreeModel::Row row; @@ -153,6 +196,7 @@ Gtk::Window *connect_wires() Gtk::Window *window; struct Callbacks *cb = get_callbacks(); Glib::RefPtr list; + Glib::RefPtr toggle; Gtk::TreeView *treeview; builder = Gtk::Builder::create(); @@ -166,7 +210,10 @@ Gtk::Window *connect_wires() list->set_sort_column(collection_cols.c_col_path, Gtk::SORT_ASCENDING); builder->get_widget("o_collection_treeview", treeview); + get_object("o_collection_toggle", toggle); treeview->signal_row_activated().connect(sigc::ptr_fun(on_collection_row_activated)); + treeview->signal_key_press_event().connect(sigc::ptr_fun(on_collection_key_pressed)); + toggle->signal_toggled().connect(sigc::ptr_fun(on_collection_toggled)); connect_button("o_collection_ok", on_collection_ok); connect_button("o_collection_update", on_collection_update); diff --git a/include/ocarina.h b/include/ocarina.h index 2a723c56..a291fb5c 100644 --- a/include/ocarina.h +++ b/include/ocarina.h @@ -11,4 +11,9 @@ Gtk::Window *connect_wires(); Gtk::Button *get_button(const std::string &); Glib::RefPtr &get_builder(); +#ifdef CONFIG_TEST +void do_collection_delete(); +void on_collection_toggled(const Glib::ustring &); +#endif /* CONFIG_TEST */ + #endif /* OCARINA_H */ diff --git a/tests/gui/gui.cpp b/tests/gui/gui.cpp index 1a0d731c..9ca73862 100644 --- a/tests/gui/gui.cpp +++ b/tests/gui/gui.cpp @@ -24,12 +24,18 @@ void click_button(const std::string &name) get_button(name)->clicked(); } +void select_treeview_row(const std::string &tv_name, const std::string &path) +{ + Gtk::TreeView *treeview; + get_builder()->get_widget(tv_name, treeview); + treeview->set_cursor(Gtk::TreePath(path)); +} + void activate_treeview_row(const std::string &tv_name, const std::string &path) { Gtk::TreeView *treeview; Gtk::TreeViewColumn col("2"); - get_builder()->get_widget("o_collection_treeview", treeview); - treeview->set_cursor(Gtk::TreePath(path)); + get_builder()->get_widget(tv_name, treeview); treeview->row_activated(Gtk::TreePath(path), col); } @@ -61,14 +67,42 @@ bool test_0() click_button("o_collection_update"); break; case 7: + select_treeview_row("o_collection_treeview", "0"); activate_treeview_row("o_collection_treeview", "0"); break; case 8: + select_treeview_row("o_collection_treeview", "1"); activate_treeview_row("o_collection_treeview", "1"); break; case 9: + select_treeview_row("o_collection_treeview", "2"); activate_treeview_row("o_collection_treeview", "2"); break; + case 10: + case 12: + on_collection_toggled("0"); + break; + case 11: + case 13: + on_collection_toggled("2"); + break; + case 14: + select_treeview_row("o_collection_treeview", "1"); + break; + case 15: + do_collection_delete(); + break; + case 16: + select_treeview_row("o_collection_treeview", "2"); + break; + case 17: + do_collection_delete(); + break; + case 18: + click_button("o_collection_import"); + break; + case 19: + break; default: end_test(); return false;