diff options
author | Jens Georg <mail@jensge.org> | 2020-07-18 13:43:44 +0200 |
---|---|---|
committer | Jens Georg <mail@jensge.org> | 2020-07-18 14:45:29 +0200 |
commit | 7c939932d31d60188929c7f11da170ef424a268a (patch) | |
tree | 273d4d11947eb3539747ee75e526bd962ae0ff02 | |
parent | 6ae77b7d14eeaf539c4c8d5951a386116c8fa3c2 (diff) | |
download | gupnp-tools-7c939932d31d60188929c7f11da170ef424a268a.tar.gz |
av-cp: Do not abuse GtkBuilder to bind call-backs
-rw-r--r-- | data/search-dialog.ui | 13 | ||||
-rw-r--r-- | src/av-cp/search-dialog.c | 43 |
2 files changed, 28 insertions, 28 deletions
diff --git a/data/search-dialog.ui b/data/search-dialog.ui index 90010c4..d1b65d0 100644 --- a/data/search-dialog.ui +++ b/data/search-dialog.ui @@ -2,19 +2,6 @@ <!-- Generated with glade 3.20.0 --> <interface> <requires lib="gtk+" version="3.10"/> - <object class="GtkMenu" id="popup-menu"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <child> - <object class="GtkMenuItem"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="label" translatable="yes">Show _DIDL…</property> - <property name="use_underline">True</property> - <signal name="activate" handler="search_dialog_on_didl_popup_activate" object="SearchDialog" swapped="yes"/> - </object> - </child> - </object> <object class="GtkListStore" id="search_dialog_liststore"> <columns> <!-- column-name icon --> diff --git a/src/av-cp/search-dialog.c b/src/av-cp/search-dialog.c index 31f9287..8235fde 100644 --- a/src/av-cp/search-dialog.c +++ b/src/av-cp/search-dialog.c @@ -66,16 +66,16 @@ struct _SearchDialogPrivate { typedef struct _SearchDialogPrivate SearchDialogPrivate; G_DEFINE_TYPE_WITH_PRIVATE (SearchDialog, search_dialog, GTK_TYPE_DIALOG) -void +static void search_dialog_on_search_activate (SearchDialog *self, GtkEntry *entry); -gboolean +static gboolean search_dialog_on_listview_button_release (GtkWidget *widget, GdkEventButton *event, gpointer user_data); -void -search_dialog_on_didl_popup_activate (SearchDialog *self, gpointer user_data); +static void +search_dialog_on_didl_popup_activate (SearchDialog *self, GVariant *parameter, gpointer user_data); static void search_dialog_finalize (GObject *object); @@ -352,6 +352,12 @@ search_dialog_class_init (SearchDialogClass *klass) gtk_widget_class_bind_template_child_private (widget_class, SearchDialog, search_dialog_treeview); + gtk_widget_class_bind_template_callback (widget_class, + search_dialog_on_search_activate); + gtk_widget_class_bind_template_callback (widget_class, + search_dialog_on_listview_button_release); + gtk_widget_class_bind_template_callback (widget_class, gtk_widget_hide); + object_class->finalize = search_dialog_finalize; object_class->dispose = search_dialog_dispose; @@ -361,16 +367,26 @@ static void search_dialog_init (SearchDialog *self) { SearchDialogPrivate *priv = NULL; - GtkBuilder *builder = gtk_builder_new (); gtk_widget_init_template (GTK_WIDGET (self)); priv = search_dialog_get_instance_private (self); priv->parser = gupnp_search_criteria_parser_new (); - gtk_builder_add_from_resource (builder, DIALOG_RESOURCE_PATH, NULL); - gtk_builder_connect_signals (builder, self); - priv->popup_menu = GTK_WIDGET (gtk_builder_get_object (builder, "popup-menu")); + GMenu *menu = g_menu_new (); + g_menu_insert (menu, 0, _("Show _DIDL…"), "search.show-didl"); + priv->popup_menu = gtk_menu_new_from_model (G_MENU_MODEL (menu)); + g_object_unref (menu); + + gtk_menu_attach_to_widget (GTK_MENU (priv->popup_menu), GTK_WIDGET (self), NULL); + GSimpleActionGroup *group = g_simple_action_group_new (); + GSimpleAction *action = g_simple_action_new ("show-didl", NULL); + g_signal_connect_swapped (G_OBJECT (action), "activate", G_CALLBACK (search_dialog_on_didl_popup_activate), self); + g_action_map_add_action (G_ACTION_MAP (group), G_ACTION (action)); + + gtk_widget_insert_action_group (GTK_WIDGET (self), "search", G_ACTION_GROUP (group)); + g_object_unref (group); + g_object_unref (action); } static void @@ -530,8 +546,7 @@ pulse_timer (gpointer user_data) return TRUE; } -G_MODULE_EXPORT -void +static void search_dialog_on_search_activate (SearchDialog *self, GtkEntry *entry) { GError *error = NULL; @@ -618,8 +633,7 @@ do_popup_menu (GtkMenu *menu, GtkWidget *widget, GdkEventButton *event) #endif } -G_MODULE_EXPORT -gboolean +static gboolean search_dialog_on_listview_button_release (GtkWidget *widget, GdkEventButton *event, gpointer user_data) @@ -724,9 +738,8 @@ search_dialog_on_metadata_ready (GObject *source, } } -G_MODULE_EXPORT -void -search_dialog_on_didl_popup_activate (SearchDialog *self, gpointer user_data) +static void +search_dialog_on_didl_popup_activate (SearchDialog *self, GVariant *parameter, gpointer user_data) { SearchDialogPrivate *priv = search_dialog_get_instance_private (self); GtkTreeView *treeview = priv->search_dialog_treeview; |