diff --git a/src/exm-browse-page.blp b/src/exm-browse-page.blp index 5e08aebf..af081c6c 100644 --- a/src/exm-browse-page.blp +++ b/src/exm-browse-page.blp @@ -2,6 +2,8 @@ using Gtk 4.0; using Adw 1; template $ExmBrowsePage : Gtk.Widget { + notify::manager => $on_bind_manager(); + Gtk.ScrolledWindow { Adw.StatusPage { title: _("Search for extensions"); @@ -18,8 +20,8 @@ template $ExmBrowsePage : Gtk.Widget { Gtk.SearchEntry search_entry { hexpand: true; - realize => $on_search_entry_realize(); + search-changed => $on_search_changed() swapped; } // Keep the same order as the ExmSearchSort enum @@ -28,6 +30,7 @@ template $ExmBrowsePage : Gtk.Widget { // Translators: dropdown items for sorting search results strings [_("Relevance"), C_("Sort search results", "Downloads"), _("Recent"), _("Name")] }; + notify::selected => $on_search_changed() swapped; } } @@ -57,6 +60,7 @@ template $ExmBrowsePage : Gtk.Widget { halign: center; margin-top: 24; use-underline: true; + clicked => $on_load_more_results(); } }; } diff --git a/src/exm-browse-page.c b/src/exm-browse-page.c index 0a5b8c24..cbcfdb7e 100644 --- a/src/exm-browse-page.c +++ b/src/exm-browse-page.c @@ -401,6 +401,9 @@ exm_browse_page_class_init (ExmBrowsePageClass *klass) gtk_widget_class_bind_template_child (widget_class, ExmBrowsePage, more_results_btn); gtk_widget_class_bind_template_callback (widget_class, on_search_entry_realize); + gtk_widget_class_bind_template_callback (widget_class, on_search_changed); + gtk_widget_class_bind_template_callback (widget_class, on_load_more_results); + gtk_widget_class_bind_template_callback (widget_class, on_bind_manager); gtk_widget_class_set_layout_manager_type (widget_class, GTK_TYPE_BIN_LAYOUT); } @@ -427,26 +430,6 @@ exm_browse_page_init (ExmBrowsePage *self) g_object_unref (settings); - g_signal_connect_swapped (self->search_entry, - "search-changed", - G_CALLBACK (on_search_changed), - self); - - g_signal_connect_swapped (self->search_dropdown, - "notify::selected", - G_CALLBACK (on_search_changed), - self); - - g_signal_connect (self->more_results_btn, - "clicked", - G_CALLBACK (on_load_more_results), - self); - - g_signal_connect (self, - "notify::manager", - G_CALLBACK (on_bind_manager), - NULL); - load_suggestions (self); } diff --git a/src/exm-comment-tile.blp b/src/exm-comment-tile.blp index 437a49d4..c7e83187 100644 --- a/src/exm-comment-tile.blp +++ b/src/exm-comment-tile.blp @@ -13,16 +13,20 @@ template $ExmCommentTile : Gtk.Widget { Gtk.Label author { styles ["dim-label"] xalign: 0; + label: bind template.comment as <$ExmComment>.author; } Gtk.Label author_badge { styles ["author-badge"] label: _("Author"); + visible: bind template.comment as <$ExmComment>.is_extension_creator; } $ExmRating rating { halign: end; hexpand: true; + rating: bind template.comment as <$ExmComment>.rating; + visible: bind template.comment as <$ExmComment>.rating as ; } } diff --git a/src/exm-comment-tile.c b/src/exm-comment-tile.c index 9c561b0a..859c391b 100644 --- a/src/exm-comment-tile.c +++ b/src/exm-comment-tile.c @@ -88,31 +88,14 @@ exm_comment_tile_constructed (GObject *object) TextFrame *frame; - gboolean is_extension_creator; - gchar *text, *author; - int score; + gchar *text; g_object_get (self->comment, - "is_extension_creator", &is_extension_creator, "comment", &text, - "author", &author, - "rating", &score, NULL); - if (score >= 1 && score <= 5) - { - g_object_set (self->rating, "rating", score, NULL); - gtk_widget_set_visible (GTK_WIDGET (self->rating), TRUE); - } - else - { - gtk_widget_set_visible (GTK_WIDGET (self->rating), FALSE); - } - frame = format_parse_html (text); g_object_set (self->display, "frame", frame, NULL); - gtk_label_set_text (self->author, author); - gtk_widget_set_visible (GTK_WIDGET (self->author_badge), is_extension_creator); G_OBJECT_CLASS (exm_comment_tile_parent_class)->constructed (object); } diff --git a/src/exm-installed-page.blp b/src/exm-installed-page.blp index ddf577b8..be77b839 100644 --- a/src/exm-installed-page.blp +++ b/src/exm-installed-page.blp @@ -2,6 +2,8 @@ using Gtk 4.0; using Adw 1; template $ExmInstalledPage : Gtk.Widget { + notify::manager => $on_bind_manager(); + Gtk.Box { orientation: vertical; diff --git a/src/exm-installed-page.c b/src/exm-installed-page.c index 877fae98..4ad5da0f 100644 --- a/src/exm-installed-page.c +++ b/src/exm-installed-page.c @@ -326,6 +326,8 @@ exm_installed_page_class_init (ExmInstalledPageClass *klass) gtk_widget_class_bind_template_child (widget_class, ExmInstalledPage, updates_action_bar); gtk_widget_class_bind_template_child (widget_class, ExmInstalledPage, global_toggle); + gtk_widget_class_bind_template_callback (widget_class, on_bind_manager); + gtk_widget_class_set_layout_manager_type (widget_class, GTK_TYPE_BIN_LAYOUT); } @@ -374,11 +376,6 @@ exm_installed_page_init (ExmInstalledPage *self) gtk_widget_init_template (GTK_WIDGET (self)); - g_signal_connect (self, - "notify::manager", - G_CALLBACK (on_bind_manager), - NULL); - settings = g_settings_new (APP_ID); g_settings_bind (settings, "sort-enabled-first", diff --git a/src/exm-search-row.blp b/src/exm-search-row.blp index a8fca145..53e669ad 100644 --- a/src/exm-search-row.blp +++ b/src/exm-search-row.blp @@ -76,6 +76,7 @@ template $ExmSearchRow: Gtk.ListBoxRow { $ExmInstallButton install_btn { valign: center; halign: end; + clicked => $install_remote(); } Gtk.Image { diff --git a/src/exm-search-row.c b/src/exm-search-row.c index 84895507..65fa6a4f 100644 --- a/src/exm-search-row.c +++ b/src/exm-search-row.c @@ -141,7 +141,6 @@ exm_search_row_constructed (GObject *object) ? EXM_INSTALL_BUTTON_STATE_DEFAULT : EXM_INSTALL_BUTTON_STATE_UNSUPPORTED); - g_signal_connect (self->install_btn, "clicked", G_CALLBACK (install_remote), self); g_object_set (self->install_btn, "state", install_state, NULL); G_OBJECT_CLASS (exm_search_row_parent_class)->constructed (object); @@ -185,6 +184,8 @@ exm_search_row_class_init (ExmSearchRowClass *klass) gtk_widget_class_set_template_from_resource (widget_class, "/com/mattjakeman/ExtensionManager/exm-search-row.ui"); gtk_widget_class_bind_template_child (widget_class, ExmSearchRow, install_btn); + + gtk_widget_class_bind_template_callback (widget_class, install_remote); } static void diff --git a/src/exm-upgrade-assistant.blp b/src/exm-upgrade-assistant.blp index b7a2a431..f455e8bd 100644 --- a/src/exm-upgrade-assistant.blp +++ b/src/exm-upgrade-assistant.blp @@ -5,6 +5,7 @@ template $ExmUpgradeAssistant : Adw.Window { default-width: 400; default-height: 550; title: _("Upgrade Assistant"); + notify::manager => $on_bind_manager(); Adw.ToolbarView { @@ -48,6 +49,7 @@ template $ExmUpgradeAssistant : Adw.Window { halign: center; valign: end; use-underline: true; + clicked => $do_compatibility_check() swapped; } } }; @@ -127,6 +129,7 @@ template $ExmUpgradeAssistant : Adw.Window { label: _("_Copy to Clipboard"); halign: center; use-underline: true; + clicked => $copy_to_clipboard() swapped; } }; }; diff --git a/src/exm-upgrade-assistant.c b/src/exm-upgrade-assistant.c index e6db3aa5..7870d949 100644 --- a/src/exm-upgrade-assistant.c +++ b/src/exm-upgrade-assistant.c @@ -654,6 +654,10 @@ exm_upgrade_assistant_class_init (ExmUpgradeAssistantClass *klass) gtk_widget_class_bind_template_child (widget_class, ExmUpgradeAssistant, summary); gtk_widget_class_bind_template_child (widget_class, ExmUpgradeAssistant, copy_details); + gtk_widget_class_bind_template_callback (widget_class, do_compatibility_check); + gtk_widget_class_bind_template_callback (widget_class, copy_to_clipboard); + gtk_widget_class_bind_template_callback (widget_class, on_bind_manager); + gtk_widget_class_add_binding_action (widget_class, GDK_KEY_Escape, 0, "window.close", NULL); } @@ -664,21 +668,6 @@ exm_upgrade_assistant_init (ExmUpgradeAssistant *self) gtk_widget_init_template (GTK_WIDGET (self)); - g_signal_connect_swapped (self->run_button, - "clicked", - G_CALLBACK (do_compatibility_check), - self); - - g_signal_connect_swapped (self->copy_details, - "clicked", - G_CALLBACK (copy_to_clipboard), - self); - - g_signal_connect (self, - "notify::manager", - G_CALLBACK (on_bind_manager), - NULL); - self->data_provider = exm_data_provider_new (); self->target_shell_version = NULL; diff --git a/src/exm-window.blp b/src/exm-window.blp index bedf4d70..23946fb9 100644 --- a/src/exm-window.blp +++ b/src/exm-window.blp @@ -83,23 +83,11 @@ template $ExmWindow : Adw.ApplicationWindow { menu primary_menu { section { - item { - label: _("Sort Enabled First"); - action: "app.sort-enabled-first"; - } - item { - label: _("Show Unsupported"); - action: "app.show-unsupported"; - } + item (_("Sort Enabled First"), "app.sort-enabled-first") + item (_("Show Unsupported"), "app.show-unsupported") } section { - item { - label: _("Upgrade Assistant"); - action: "win.show-upgrade-assistant"; - } - item { - label: _("About Extension Manager"); - action: "app.about"; - } + item (_("Upgrade Assistant"), "win.show-upgrade-assistant") + item (_("About Extension Manager"), "app.about") } }