From 61436d5ccda314e4c8fb122136a674e949e74b4e Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Thu, 24 Dec 2015 09:35:36 -0500 Subject: [PATCH] gui: Switch over to the new gui_builder system Glib::wrap() all the things! Signed-off-by: Anna Schumaker --- gui/collection.cpp | 5 ++++- gui/gst.cpp | 29 +++++++++++++++-------------- gui/history.cpp | 4 +++- gui/manager.cpp | 17 +++++++++-------- gui/ocarina.cpp | 8 ++------ gui/playlist.cpp | 8 +++++--- gui/queue.cpp | 14 +++++++++----- gui/tabs.cpp | 41 +++++++++++++++++++++-------------------- gui/window.cpp | 7 ++++--- include/gui/ocarina.h | 16 ---------------- 10 files changed, 72 insertions(+), 77 deletions(-) diff --git a/gui/collection.cpp b/gui/collection.cpp index 10e9489c..eeba3d50 100644 --- a/gui/collection.cpp +++ b/gui/collection.cpp @@ -4,6 +4,7 @@ extern "C" { #include #include +#include } #include #include @@ -24,7 +25,9 @@ public: tab_label = collection_label; tab_vbox.pack_start(*tab_window, true, true); - gui :: get_widget("o_notebook")->insert_page(tab_vbox, *collection_label, 0); + + Glib::wrap(GTK_NOTEBOOK(gui_builder_widget("o_notebook")), + false)->insert_page(tab_vbox, *collection_label, 0); } ~CollectionTab() diff --git a/gui/gst.cpp b/gui/gst.cpp index f2140a42..beca7783 100644 --- a/gui/gst.cpp +++ b/gui/gst.cpp @@ -8,6 +8,7 @@ extern "C" { #include #include +#include } #include #include @@ -133,22 +134,22 @@ void gst :: toggle() void gst :: init_pre() { - o_next = gui :: get_widget("o_next"); - o_pause = gui :: get_widget("o_pause"); - o_play = gui :: get_widget("o_play"); - o_prev = gui :: get_widget("o_prev"); - o_seek = gui :: get_widget("o_seek"); - o_stop = gui :: get_widget("o_stop"); + o_next = Glib :: wrap(GTK_BUTTON(gui_builder_widget("o_next")), false); + o_pause = Glib :: wrap(GTK_BUTTON(gui_builder_widget("o_pause")), false); + o_play = Glib :: wrap(GTK_BUTTON(gui_builder_widget("o_play")), false); + o_prev = Glib :: wrap(GTK_BUTTON(gui_builder_widget("o_prev")), false); + o_stop = Glib :: wrap(GTK_BUTTON(gui_builder_widget("o_stop")), false); + o_seek = Glib :: wrap(GTK_SCALE(gui_builder_widget("o_seek")), false); - o_count = gui :: get_widget("o_pause_count"); - o_enabled = gui :: get_widget("o_pause_enabled"); + o_count = Glib :: wrap(GTK_SPIN_BUTTON(gui_builder_widget("o_pause_count")), false); + o_enabled = Glib :: wrap(GTK_CHECK_BUTTON(gui_builder_widget("o_pause_enabled")), false); - o_album = gui :: get_widget("o_album"); - o_artist = gui :: get_widget("o_artist"); - o_duration = gui :: get_widget("o_duration"); - o_position = gui :: get_widget("o_position"); - o_title = gui :: get_widget("o_title"); - o_progress = gui :: get_object("o_progress"); + o_album = Glib :: wrap(GTK_LABEL(gui_builder_widget("o_album")), false); + o_artist = Glib :: wrap(GTK_LABEL(gui_builder_widget("o_artist")), false); + o_duration = Glib :: wrap(GTK_LABEL(gui_builder_widget("o_duration")), false); + o_position = Glib :: wrap(GTK_LABEL(gui_builder_widget("o_position")), false); + o_title = Glib ::wrap(GTK_LABEL(gui_builder_widget("o_title")), false); + o_progress = Glib :: wrap(GTK_ADJUSTMENT(gui_builder_object("o_progress")), false); o_next->signal_clicked().connect(sigc::ptr_fun(next)); o_pause->signal_clicked().connect(sigc::ptr_fun(gst :: pause)); diff --git a/gui/history.cpp b/gui/history.cpp index 38f047e4..013bfdc5 100644 --- a/gui/history.cpp +++ b/gui/history.cpp @@ -3,6 +3,7 @@ */ extern "C" { #include +#include } #include #include @@ -24,7 +25,8 @@ public: tab_vbox.pack_start(*tab_window, true, true); - gui :: get_widget("o_notebook")->insert_page(tab_vbox, *history_label, 0); + Glib :: wrap(GTK_NOTEBOOK(gui_builder_widget("o_notebook")), + false)->insert_page(tab_vbox, *history_label, 0); } ~HistoryTab() diff --git a/gui/manager.cpp b/gui/manager.cpp index dc8ff2b5..9ea170ad 100644 --- a/gui/manager.cpp +++ b/gui/manager.cpp @@ -6,6 +6,7 @@ extern "C" { #include #include #include +#include } #include @@ -16,7 +17,7 @@ static Gtk::FileChooserWidget *c_chooser; static Gtk::ProgressBar *c_progress; static Gtk::TreeView *c_treeview; static Glib::RefPtr c_list; -static Glib::RefPtr c_toggle; +static Gtk::CellRendererToggle *c_toggle; static class CollectionColumns : public Gtk::TreeModelColumnRecord { public: @@ -164,14 +165,14 @@ void manager :: init() { struct db_entry *library, *next; - c_add = gui :: get_widget("colmgr_add"); - c_update = gui :: get_widget("colmgr_update"); + c_add = Glib :: wrap(GTK_BUTTON(gui_builder_widget("colmgr_add")), false); + c_update = Glib :: wrap(GTK_BUTTON(gui_builder_widget("colmgr_update")), false); - c_chooser = gui :: get_widget("colmgr_chooser"); - c_progress = gui :: get_widget("o_idle_progress"); - c_toggle = gui :: get_object("colmgr_toggle"); - c_list = gui :: get_object("colmgr_list"); - c_treeview = gui :: get_widget("colmgr_treeview"); + c_chooser = Glib :: wrap(GTK_FILE_CHOOSER_WIDGET(gui_builder_widget("colmgr_chooser")), false); + c_progress = Glib :: wrap(GTK_PROGRESS_BAR(gui_builder_widget("o_idle_progress")), false); + c_list = Glib :: wrap(GTK_LIST_STORE(gui_builder_object("colmgr_list")), false); + c_toggle = Glib :: wrap(GTK_CELL_RENDERER_TOGGLE(gui_builder_object("colmgr_toggle")), false); + c_treeview = Glib :: wrap(GTK_TREE_VIEW(gui_builder_widget("colmgr_treeview")), false); c_add->signal_clicked().connect(sigc::ptr_fun(on_add)); c_update->signal_clicked().connect(sigc::ptr_fun(on_update)); diff --git a/gui/ocarina.cpp b/gui/ocarina.cpp index 46adf520..5184b0f2 100644 --- a/gui/ocarina.cpp +++ b/gui/ocarina.cpp @@ -5,6 +5,7 @@ extern "C" { #include #include #include +#include } #include #include @@ -24,8 +25,6 @@ struct core_init_data init_data = { namespace gui { - Glib::RefPtr __O_BUILDER; - const std::string share_file(const std::string &f) { return ocarina_dir + f; @@ -59,10 +58,7 @@ int main(int argc, char **argv) setup_share(argv[0]); ocarina_app = Gtk::Application::create(argc, argv, "org.gtkmm.ocarina"); - gui :: __O_BUILDER = Gtk::Builder::create(); - if (!gui::__O_BUILDER->add_from_file(gui::share_file("ocarina6.glade"))) - exit(1); - + gui_builder_init(gui :: share_file("ocarina6.glade").c_str()); gst :: init_pre(); core_init(&argc, &argv, &init_data); diff --git a/gui/playlist.cpp b/gui/playlist.cpp index da1ce1d0..8c13b020 100644 --- a/gui/playlist.cpp +++ b/gui/playlist.cpp @@ -5,6 +5,7 @@ extern "C" { #include #include #include +#include } #include #include @@ -105,7 +106,8 @@ public: tab_vbox.pack_start(playlist_hbox, true, true); - gui :: get_widget("o_notebook")->insert_page(tab_vbox, *playlist_label, 0); + Glib :: wrap(GTK_NOTEBOOK(gui_builder_widget("o_notebook")), + false)->insert_page(tab_vbox, *playlist_label, 0); } ~PlaylistTab() @@ -195,8 +197,8 @@ void plist :: init() { p_tab = new PlaylistTab; - o_ban = gui :: get_widget("o_ban"); - o_fav = gui :: get_widget("o_favorite"); + o_ban = Glib :: wrap(GTK_TOGGLE_BUTTON(gui_builder_widget("o_ban")), false); + o_fav = Glib :: wrap(GTK_TOGGLE_BUTTON(gui_builder_widget("o_favorite")), false); track_loaded(audio_cur_track()); diff --git a/gui/queue.cpp b/gui/queue.cpp index 8c584d15..2d2c18a7 100644 --- a/gui/queue.cpp +++ b/gui/queue.cpp @@ -4,6 +4,7 @@ extern "C" { #include #include +#include } #include #include @@ -66,6 +67,8 @@ static std::map queue_mapping; QueueTab :: QueueTab(queue *pq, unsigned int num) : Tab(pq) { + Gtk::Notebook *notebook; + tab_builder->add_from_file(gui :: share_file("QueueLabel.ui")); /* @@ -95,15 +98,16 @@ QueueTab :: QueueTab(queue *pq, unsigned int num) queue_mapping[&tab_vbox] = this; - gui :: get_widget("o_notebook")->insert_page(tab_vbox, *q_label, num); - gui :: get_widget("o_notebook")->set_tab_reorderable(tab_vbox); + notebook = Glib :: wrap(GTK_NOTEBOOK(gui_builder_widget("o_notebook")), false); + notebook->insert_page(tab_vbox, *q_label, num); + notebook->set_tab_reorderable(tab_vbox); } QueueTab :: ~QueueTab() { queue_mapping.erase(&tab_vbox); tab_unmap(); - gui :: get_widget("o_notebook")->remove_page(tab_vbox); + Glib :: wrap(GTK_NOTEBOOK(gui_builder_widget("o_notebook")), false)->remove_page(tab_vbox); renumber_queues(); } @@ -199,7 +203,7 @@ void on_pq_created(queue *pq, unsigned int num) static void on_page_reordered(Gtk::Widget *page, int num) { - Gtk::Notebook *notebook = gui :: get_widget("o_notebook"); + Gtk::Notebook *notebook = Glib :: wrap(GTK_NOTEBOOK(gui_builder_widget("o_notebook")), false); if ((unsigned int)num >= tempq_count()) { notebook->reorder_child(*page, tempq_count() - 1); @@ -216,7 +220,7 @@ static void on_page_reordered(Gtk::Widget *page, int num) void init_queue_tabs() { - Gtk::Notebook *notebook = gui :: get_widget("o_notebook"); + Gtk::Notebook *notebook = Glib :: wrap(GTK_NOTEBOOK(gui_builder_widget("o_notebook")), false); notebook->signal_page_reordered().connect(sigc::ptr_fun(on_page_reordered)); } diff --git a/gui/tabs.cpp b/gui/tabs.cpp index c6680b61..f1cfc488 100644 --- a/gui/tabs.cpp +++ b/gui/tabs.cpp @@ -6,6 +6,7 @@ extern "C" { #include #include #include +#include } #include @@ -137,13 +138,13 @@ void Tab :: on_track_updated(unsigned int row) int Tab :: tab_page_num() { - Gtk::Notebook *notebook = gui :: get_widget("o_notebook"); + Gtk::Notebook *notebook = Glib :: wrap(GTK_NOTEBOOK(gui_builder_widget("o_notebook")), false); return notebook->page_num(tab_vbox); } bool Tab :: tab_is_cur() { - Gtk::Notebook *notebook = gui :: get_widget("o_notebook"); + Gtk::Notebook *notebook = Glib :: wrap(GTK_NOTEBOOK(gui_builder_widget("o_notebook")), false); return notebook->page_num(tab_vbox) == notebook->get_current_page(); } @@ -151,7 +152,7 @@ void Tab :: tab_runtime_changed() { gchar *len = string_sec2str_long(tab_pq->q_length); if (tab_is_cur()) - gui :: get_widget("o_queue_time")->set_text(len); + Glib :: wrap(GTK_LABEL(gui_builder_widget("o_queue_time")), false)->set_text(len); g_free(len); } @@ -160,7 +161,7 @@ void Tab :: tab_display_sorting() std::string text = ""; if ((tab_sorting_count > 0) && tab_is_cur()) text = "Sorting within " + tab_sorting_title; - gui :: get_widget("o_sorting_indicator")->set_text(text); + Glib :: wrap(GTK_LABEL(gui_builder_widget("o_sorting_indicator")), false)->set_text(text); } void Tab :: tab_dec_sort_count() @@ -275,23 +276,23 @@ void Tab :: on_show_rc_menu() unsigned int size = tempq_count(); if (size == 0) { - gui :: get_widget("o_add_to_pq")->hide(); + Glib :: wrap(GTK_MENU_ITEM(gui_builder_widget("o_add_to_pq")), false)->hide(); return; } - gui :: get_widget("o_add_to_pq")->show(); + Glib :: wrap(GTK_MENU_ITEM(gui_builder_widget("o_add_to_pq")), false)->show(); if (size == 10) - gui :: get_widget("o_new_pq")->hide(); + Glib :: wrap(GTK_MENU_ITEM(gui_builder_widget("o_new_pq")), false)->hide(); else - gui :: get_widget("o_new_pq")->show(); + Glib :: wrap(GTK_MENU_ITEM(gui_builder_widget("o_new_pq")), false)->show(); for (unsigned int i = 0; i < 10; i++) { item = "o_pq_"; item += '0' + i; if (i < size) - gui :: get_widget(item)->show(); + Glib :: wrap(GTK_MENU_ITEM(gui_builder_widget(item.c_str())), false)->show(); else - gui :: get_widget(item)->hide(); + Glib :: wrap(GTK_MENU_ITEM(gui_builder_widget(item.c_str())), false)->hide(); } } @@ -339,7 +340,7 @@ bool Tab :: on_button_pressed(GdkEventButton *button) tab_window->q_treeview->get_selection()->select(path); on_show_rc_menu(); - gui :: get_widget("o_rc_menu")->popup(button->button, button->time); + Glib :: wrap(GTK_MENU(gui_builder_widget("o_rc_menu")), false)->popup(button->button, button->time); return true; } @@ -387,12 +388,12 @@ static void on_switch_page(Gtk::Widget *page, int num) tab->tab_runtime_changed(); tab->tab_display_sorting(); } else - gui :: get_widget("o_queue_time")->set_text(""); + Glib :: wrap(GTK_LABEL(gui_builder_widget("o_queue_time")), false)->set_text(""); } void tab_focus_search() { - int page = gui :: get_widget("o_notebook")->get_current_page(); + int page = Glib :: wrap(GTK_NOTEBOOK(gui_builder_widget("o_notebook")), false)->get_current_page(); Tab *tab = find_tab(page); if (tab) tab->tab_focus_search(); @@ -429,23 +430,23 @@ static void on_add_to_queue(unsigned int n) static void init_menu_item(const std::string &pq, unsigned int n) { - gui :: get_widget(pq)->signal_activate().connect( + Glib :: wrap(GTK_MENU_ITEM(gui_builder_widget(pq.c_str())), false)->signal_activate().connect( sigc::bind (sigc::ptr_fun(on_add_to_queue), n)); } void init_tabs() { /* Notebook signals */ - struct Gtk::Notebook *notebook = gui :: get_widget("o_notebook"); + struct Gtk::Notebook *notebook = Glib :: wrap(GTK_NOTEBOOK(gui_builder_widget("o_notebook")), false); notebook->signal_switch_page().connect(sigc::ptr_fun(on_switch_page)); /* Menu signals */ - gui :: get_widget("o_rc_menu")->show_all(); - gui :: get_widget("o_new_pq")->signal_activate().connect( + Glib :: wrap(GTK_MENU(gui_builder_widget("o_rc_menu")), false)->show_all(); + Glib :: wrap(GTK_MENU_ITEM(gui_builder_widget("o_new_pq")), false)->signal_activate().connect( sigc::ptr_fun(on_new_pq)); - gui :: get_widget("o_add_to_favorites")->signal_activate().connect( + Glib :: wrap(GTK_MENU_ITEM(gui_builder_widget("o_add_to_favorites")), false)->signal_activate().connect( sigc::ptr_fun(on_add_to_favs)); - gui :: get_widget("o_add_to_banned")->signal_activate().connect( + Glib :: wrap(GTK_MENU_ITEM(gui_builder_widget("o_add_to_banned")), false)->signal_activate().connect( sigc::ptr_fun(on_add_to_banned)); for (unsigned int i = 0; i < 10; i++) { std::string pq = "o_pq_"; @@ -468,7 +469,7 @@ void post_init_tabs() if (queue_has_flag(tempq_get(tab), Q_ENABLED)) break; } - gui :: get_widget("o_notebook")->set_current_page(tab); + Glib :: wrap(GTK_NOTEBOOK(gui_builder_widget("o_notebook")), false)->set_current_page(tab); } void cleanup_tabs() diff --git a/gui/window.cpp b/gui/window.cpp index 0c7c71b6..9e0ffdf6 100644 --- a/gui/window.cpp +++ b/gui/window.cpp @@ -5,6 +5,7 @@ extern "C" { #include #include #include +#include } #include #include @@ -13,8 +14,8 @@ const std::string appname = "Ocarina "; static bool on_window_key_pressed(GdkEventKey *event) { - Gtk::Notebook *notebook = gui :: get_widget("o_notebook"); - Gtk::Window *window = gui :: get_widget("o_window"); + Gtk::Notebook *notebook = Glib :: wrap(GTK_NOTEBOOK(gui_builder_widget("o_notebook")), false); + Gtk::Window *window = Glib :: wrap(GTK_WINDOW(gui_builder_widget("o_window")), false); std::string key = gdk_keyval_name(event->keyval); if (key.size() >= 3) { @@ -60,7 +61,7 @@ static bool on_window_key_released(GdkEventKey *event) Gtk::Window *window_init() { - Gtk::Window *window = gui :: get_widget("o_window"); + Gtk::Window *window = Glib :: wrap(GTK_WINDOW(gui_builder_widget("o_window")), false); window->set_can_focus(); window->set_title(appname + get_version()); diff --git a/include/gui/ocarina.h b/include/gui/ocarina.h index 03aa6f29..011270f8 100644 --- a/include/gui/ocarina.h +++ b/include/gui/ocarina.h @@ -11,23 +11,7 @@ /* main.cpp */ namespace gui { - extern Glib::RefPtr __O_BUILDER; - const std::string share_file(const std::string &); - - template - static inline T *get_widget(const std::string &name) - { - T *widget; - __O_BUILDER->get_widget(name, widget); - return widget; - } - - template - static inline Glib::RefPtr get_object(const std::string &name) - { - return Glib::RefPtr::cast_static(__O_BUILDER->get_object(name)); - } } extern struct queue_ops collection_ops;