diff --git a/data/com.mattjakeman.ExtensionManager.gschema.xml.in b/data/com.mattjakeman.ExtensionManager.gschema.xml.in index b61b473f..13f739ff 100644 --- a/data/com.mattjakeman.ExtensionManager.gschema.xml.in +++ b/data/com.mattjakeman.ExtensionManager.gschema.xml.in @@ -14,11 +14,6 @@ Is Maximized Wether app window is maximized. - - '@app_version@' - Last-Used Version - The last-used version of the app. If the saved version does not match, the "What's New" dialog is shown. - false Sort Enabled First diff --git a/data/icons/hicolor/scalable/actions/clock-alt-symbolic.svg b/data/icons/hicolor/scalable/actions/clock-alt-symbolic.svg index ad142d7b..b4b5066b 100644 --- a/data/icons/hicolor/scalable/actions/clock-alt-symbolic.svg +++ b/data/icons/hicolor/scalable/actions/clock-alt-symbolic.svg @@ -1,4 +1,2 @@ - - - - + + diff --git a/data/icons/hicolor/scalable/actions/dialog-error-symbolic.svg b/data/icons/hicolor/scalable/actions/dialog-error-symbolic.svg deleted file mode 100644 index 62eb3db0..00000000 --- a/data/icons/hicolor/scalable/actions/dialog-error-symbolic.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/data/icons/hicolor/scalable/actions/dialog-question-symbolic.svg b/data/icons/hicolor/scalable/actions/dialog-question-symbolic.svg deleted file mode 100644 index d744f496..00000000 --- a/data/icons/hicolor/scalable/actions/dialog-question-symbolic.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/data/icons/hicolor/scalable/actions/donation-symbolic.svg b/data/icons/hicolor/scalable/actions/donation-symbolic.svg index 62328a0f..a926544f 100644 --- a/data/icons/hicolor/scalable/actions/donation-symbolic.svg +++ b/data/icons/hicolor/scalable/actions/donation-symbolic.svg @@ -1,2 +1,2 @@ - + diff --git a/data/icons/hicolor/scalable/actions/external-link-symbolic.svg b/data/icons/hicolor/scalable/actions/external-link-symbolic.svg index 23716297..e88a887a 100644 --- a/data/icons/hicolor/scalable/actions/external-link-symbolic.svg +++ b/data/icons/hicolor/scalable/actions/external-link-symbolic.svg @@ -1,3 +1,2 @@ - - - + + diff --git a/data/icons/hicolor/scalable/actions/globe-symbolic.svg b/data/icons/hicolor/scalable/actions/globe-symbolic.svg index cd0fe834..812ec518 100644 --- a/data/icons/hicolor/scalable/actions/globe-symbolic.svg +++ b/data/icons/hicolor/scalable/actions/globe-symbolic.svg @@ -1,3 +1,2 @@ - - - + + diff --git a/data/icons/hicolor/scalable/actions/go-next-symbolic.svg b/data/icons/hicolor/scalable/actions/go-next-symbolic.svg deleted file mode 100644 index 9eb5d700..00000000 --- a/data/icons/hicolor/scalable/actions/go-next-symbolic.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/data/icons/hicolor/scalable/actions/pip-in-symbolic.svg b/data/icons/hicolor/scalable/actions/pip-in-symbolic.svg index 071f8084..cf3967cd 100644 --- a/data/icons/hicolor/scalable/actions/pip-in-symbolic.svg +++ b/data/icons/hicolor/scalable/actions/pip-in-symbolic.svg @@ -1,7 +1,2 @@ - - - - - - - + + diff --git a/data/icons/hicolor/scalable/actions/pip-out-symbolic.svg b/data/icons/hicolor/scalable/actions/pip-out-symbolic.svg index 37bf02cb..8cd196b1 100644 --- a/data/icons/hicolor/scalable/actions/pip-out-symbolic.svg +++ b/data/icons/hicolor/scalable/actions/pip-out-symbolic.svg @@ -1,8 +1,2 @@ - - - - - - - - + + diff --git a/data/icons/hicolor/scalable/actions/puzzle-piece-symbolic.svg b/data/icons/hicolor/scalable/actions/puzzle-piece-symbolic.svg index 916881d2..f14543e6 100644 --- a/data/icons/hicolor/scalable/actions/puzzle-piece-symbolic.svg +++ b/data/icons/hicolor/scalable/actions/puzzle-piece-symbolic.svg @@ -1,3 +1,2 @@ - - - + + diff --git a/data/icons/hicolor/scalable/actions/settings-symbolic.svg b/data/icons/hicolor/scalable/actions/settings-symbolic.svg index e018c6c2..408d7e5d 100644 --- a/data/icons/hicolor/scalable/actions/settings-symbolic.svg +++ b/data/icons/hicolor/scalable/actions/settings-symbolic.svg @@ -1,3 +1,2 @@ - - - + + diff --git a/data/icons/hicolor/scalable/actions/software-update-available-symbolic.svg b/data/icons/hicolor/scalable/actions/software-update-available-symbolic.svg index 0b05526a..aca3618b 100644 --- a/data/icons/hicolor/scalable/actions/software-update-available-symbolic.svg +++ b/data/icons/hicolor/scalable/actions/software-update-available-symbolic.svg @@ -1,3 +1,4 @@ - - + + + diff --git a/data/icons/hicolor/scalable/actions/star-filled-rounded-symbolic.svg b/data/icons/hicolor/scalable/actions/star-filled-rounded-symbolic.svg index 538ca5ef..381efad2 100644 --- a/data/icons/hicolor/scalable/actions/star-filled-rounded-symbolic.svg +++ b/data/icons/hicolor/scalable/actions/star-filled-rounded-symbolic.svg @@ -1,3 +1,2 @@ - - - + + diff --git a/data/icons/hicolor/scalable/actions/star-outline-rounded-symbolic.svg b/data/icons/hicolor/scalable/actions/star-outline-rounded-symbolic.svg index 1ed5f311..02bf6e16 100644 --- a/data/icons/hicolor/scalable/actions/star-outline-rounded-symbolic.svg +++ b/data/icons/hicolor/scalable/actions/star-outline-rounded-symbolic.svg @@ -1,3 +1,2 @@ - - - + + diff --git a/src/exm-detail-view.c b/src/exm-detail-view.c index 354f3ab7..ae967f2c 100644 --- a/src/exm-detail-view.c +++ b/src/exm-detail-view.c @@ -50,10 +50,6 @@ struct _ExmDetailView ExmCommentProvider *comment_provider; GCancellable *resolver_cancel; - GSimpleAction *zoom_in; - GSimpleAction *zoom_out; - GSimpleAction *zoom_reset; - gchar *shell_version; gchar *uuid; diff --git a/src/exm-screenshot-view.blp b/src/exm-screenshot-view.blp index 0ca2c7ab..906fae22 100644 --- a/src/exm-screenshot-view.blp +++ b/src/exm-screenshot-view.blp @@ -64,23 +64,4 @@ template $ExmScreenshotView: Adw.NavigationPage { } }; } - - Gtk.ShortcutController { - scope: managed; - - Gtk.Shortcut { - trigger: "plus"; - action: "action(screenshot.zoom-in)"; - } - - Gtk.Shortcut { - trigger: "minus"; - action: "action(screenshot.zoom-out)"; - } - - Gtk.Shortcut { - trigger: "0"; - action: "action(screenshot.zoom-reset)"; - } - } } diff --git a/src/exm-screenshot-view.c b/src/exm-screenshot-view.c index 9c4b703c..5cc51902 100644 --- a/src/exm-screenshot-view.c +++ b/src/exm-screenshot-view.c @@ -6,10 +6,6 @@ struct _ExmScreenshotView { AdwNavigationPage parent_instance; - GSimpleAction *zoom_in; - GSimpleAction *zoom_out; - GSimpleAction *zoom_reset; - ExmZoomPicture *overlay_screenshot; }; @@ -24,8 +20,6 @@ exm_screenshot_view_new (void) static void exm_screenshot_view_finalize (GObject *object) { - ExmScreenshotView *self = (ExmScreenshotView *)object; - G_OBJECT_CLASS (exm_screenshot_view_parent_class)->finalize (object); } @@ -37,28 +31,42 @@ exm_screenshot_view_set_screenshot (ExmScreenshotView *self, exm_zoom_picture_set_zoom_level (self->overlay_screenshot, 1.0f); } +void +exm_screenshot_view_zoom (ExmScreenshotView *self, + const char *action_name) +{ + float zoom_level; + float zoom_step; + + zoom_level = exm_zoom_picture_get_zoom_level (self->overlay_screenshot); + zoom_step = exm_zoom_picture_get_zoom_level_step (self->overlay_screenshot); + + if (g_strcmp0 (action_name, "screenshot.zoom-in") == 0) + exm_zoom_picture_set_zoom_level (self->overlay_screenshot, zoom_level + zoom_step); + else if (g_strcmp0 (action_name, "screenshot.zoom-out") == 0) + exm_zoom_picture_set_zoom_level (self->overlay_screenshot, zoom_level - zoom_step); + else if (g_strcmp0 (action_name, "screenshot.zoom-reset") == 0) + exm_zoom_picture_set_zoom_level (self->overlay_screenshot, 1.0f); + else + g_assert_not_reached (); +} + static void notify_zoom (ExmZoomPicture *picture, GParamSpec *pspec, ExmScreenshotView *self) { + GtkRoot *toplevel; float zoom_level; - float max_zoom; - float min_zoom; + toplevel = gtk_widget_get_root (GTK_WIDGET (self)); zoom_level = exm_zoom_picture_get_zoom_level (picture); - max_zoom = exm_zoom_picture_get_zoom_level_max (picture); - min_zoom = exm_zoom_picture_get_zoom_level_min (picture); // Set action states - if (zoom_level < max_zoom) - g_simple_action_set_enabled (self->zoom_in, TRUE); - if (zoom_level == max_zoom) - g_simple_action_set_enabled (self->zoom_in, FALSE); - if (zoom_level > min_zoom) - g_simple_action_set_enabled (self->zoom_out, TRUE); - if (zoom_level == min_zoom) - g_simple_action_set_enabled (self->zoom_out, FALSE); + gtk_widget_action_set_enabled (GTK_WIDGET (toplevel), "screenshot.zoom-in", + zoom_level < exm_zoom_picture_get_zoom_level_max (picture)); + gtk_widget_action_set_enabled (GTK_WIDGET (toplevel), "screenshot.zoom-out", + zoom_level > exm_zoom_picture_get_zoom_level_min (picture)); } static void @@ -80,22 +88,5 @@ exm_screenshot_view_class_init (ExmScreenshotViewClass *klass) static void exm_screenshot_view_init (ExmScreenshotView *self) { - GSimpleActionGroup *group; - gtk_widget_init_template (GTK_WIDGET (self)); - - self->zoom_in = g_simple_action_new ("zoom-in", NULL); - g_signal_connect_swapped (self->zoom_in, "activate", G_CALLBACK (exm_zoom_picture_zoom_in), self->overlay_screenshot); - - self->zoom_out = g_simple_action_new ("zoom-out", NULL); - g_signal_connect_swapped (self->zoom_out, "activate", G_CALLBACK (exm_zoom_picture_zoom_out), self->overlay_screenshot); - - self->zoom_reset = g_simple_action_new ("zoom-reset", NULL); - g_signal_connect_swapped (self->zoom_reset, "activate", G_CALLBACK (exm_zoom_picture_zoom_reset), self->overlay_screenshot); - - group = g_simple_action_group_new (); - g_action_map_add_action (G_ACTION_MAP (group), G_ACTION (self->zoom_in)); - g_action_map_add_action (G_ACTION_MAP (group), G_ACTION (self->zoom_out)); - g_action_map_add_action (G_ACTION_MAP (group), G_ACTION (self->zoom_reset)); - gtk_widget_insert_action_group (GTK_WIDGET (self), "screenshot", G_ACTION_GROUP (group)); } diff --git a/src/exm-screenshot-view.h b/src/exm-screenshot-view.h index 22ebc5d1..26097858 100644 --- a/src/exm-screenshot-view.h +++ b/src/exm-screenshot-view.h @@ -15,4 +15,8 @@ void exm_screenshot_view_set_screenshot (ExmScreenshotView *self, GdkPaintable *paintable); +void +exm_screenshot_view_zoom (ExmScreenshotView *self, + const char *action_name); + G_END_DECLS diff --git a/src/exm-upgrade-assistant.c b/src/exm-upgrade-assistant.c index 48829578..86906bcf 100644 --- a/src/exm-upgrade-assistant.c +++ b/src/exm-upgrade-assistant.c @@ -566,7 +566,7 @@ populate_drop_down (ExmUpgradeAssistant *self) else if (month >= G_DATE_SEPTEMBER) current_gnome_version += 1; - g_print ("Current GNOME Version: %d\n", current_gnome_version); + g_info ("Current GNOME Version: %d\n", current_gnome_version); // Make sure we at least have GNOME 40-43 regardless // of the date calculation. Update this periodically diff --git a/src/exm-window.blp b/src/exm-window.blp index a0b03409..7ca334f2 100644 --- a/src/exm-window.blp +++ b/src/exm-window.blp @@ -1,13 +1,14 @@ using Gtk 4.0; using Adw 1; -template $ExmWindow : Adw.ApplicationWindow { +template $ExmWindow: Adw.ApplicationWindow { width-request: 360; height-request: 294; title: _("Extension Manager"); Adw.Breakpoint { condition ("max-width: 400sp") + setters { header_bar.title-widget: null; switcher_bar.reveal: true; @@ -16,13 +17,11 @@ template $ExmWindow : Adw.ApplicationWindow { Adw.ToastOverlay toast_overlay { child: Adw.NavigationView navigation_view { - Adw.NavigationPage main_view { can-pop: false; title: bind template.title; Adw.ToolbarView { - [top] Adw.HeaderBar header_bar { show-back-button: false; @@ -82,22 +81,6 @@ template $ExmWindow : Adw.ApplicationWindow { } }; } - - Gtk.ShortcutController { - scope: managed; - - Gtk.Shortcut { - trigger: "1"; - action: "action(win.show-page)"; - arguments: "'installed'"; - } - - Gtk.Shortcut { - trigger: "2"; - action: "action(win.show-page)"; - arguments: "'browse'"; - } - } } menu primary_menu { @@ -107,6 +90,7 @@ menu primary_menu { item (_("Sort _Enabled First"), "app.sort-enabled-first") item (_("_Show Unsupported"), "app.show-unsupported") } + section { item (_("_Upgrade Assistant"), "win.show-upgrade-assistant") item (_("_Keyboard Shortcuts"), "win.show-help-overlay") diff --git a/src/exm-window.c b/src/exm-window.c index 259746e7..f49ee05b 100644 --- a/src/exm-window.c +++ b/src/exm-window.c @@ -44,6 +44,7 @@ struct _ExmWindow AdwNavigationView *navigation_view; AdwNavigationPage *main_view; ExmDetailView *detail_view; + ExmScreenshotView *screenshot_view; AdwViewSwitcher *title; AdwViewStack *view_stack; AdwViewStackPage *installed_stack; @@ -316,7 +317,6 @@ show_error (GtkWidget *widget, toast = adw_toast_new (_("An Error Occurred")); adw_toast_set_button_label (toast, _("_Details")); - adw_toast_set_timeout (toast, 5); adw_toast_set_action_name (toast, "win.show-error-dialog"); adw_toast_set_action_target (toast, "s", error_text); @@ -351,6 +351,18 @@ on_needs_attention (AdwViewStack *view_stack, && adw_view_stack_page_get_badge_number (self->installed_stack) > 0); } +static void +screenshot_zoom (GtkWidget *widget, + const char *action_name, + GVariant *parameter) +{ + ExmWindow *self = (ExmWindow *)widget; + + g_assert (EXM_IS_WINDOW (self)); + + exm_screenshot_view_zoom (self->screenshot_view, action_name); +} + static void exm_window_class_init (ExmWindowClass *klass) { @@ -378,6 +390,7 @@ exm_window_class_init (ExmWindowClass *klass) gtk_widget_class_bind_template_child (widget_class, ExmWindow, navigation_view); gtk_widget_class_bind_template_child (widget_class, ExmWindow, main_view); gtk_widget_class_bind_template_child (widget_class, ExmWindow, detail_view); + gtk_widget_class_bind_template_child (widget_class, ExmWindow, screenshot_view); gtk_widget_class_bind_template_child (widget_class, ExmWindow, title); gtk_widget_class_bind_template_child (widget_class, ExmWindow, view_stack); gtk_widget_class_bind_template_child (widget_class, ExmWindow, installed_stack); @@ -399,22 +412,15 @@ exm_window_class_init (ExmWindowClass *klass) gtk_widget_class_install_action (widget_class, "win.show-page", "s", show_page); gtk_widget_class_install_action (widget_class, "win.show-error", "s", show_error); gtk_widget_class_install_action (widget_class, "win.show-error-dialog", "s", show_error_dialog); -} - -static void -do_version_check (ExmWindow *self) -{ - GSettings *settings; - gchar *version_string; - - settings = g_settings_new (APP_ID); - version_string = g_settings_get_string (settings, "last-used-version"); - - // In the future, use this to show a toast or notification when - // a new version has been installed. Maybe with rich text release notes? - // if (strcmp (version_string, APP_VERSION) != 0) { ... } - - g_settings_set_string (settings, "last-used-version", APP_VERSION); + gtk_widget_class_install_action (widget_class, "screenshot.zoom-in", NULL, screenshot_zoom); + gtk_widget_class_install_action (widget_class, "screenshot.zoom-out", NULL, screenshot_zoom); + gtk_widget_class_install_action (widget_class, "screenshot.zoom-reset", NULL, screenshot_zoom); + + gtk_widget_class_add_binding_action (widget_class, GDK_KEY_1, GDK_ALT_MASK, "win.show-page", "s", "installed"); + gtk_widget_class_add_binding_action (widget_class, GDK_KEY_2, GDK_ALT_MASK, "win.show-page", "s", "browse"); + gtk_widget_class_add_binding_action (widget_class, GDK_KEY_plus, GDK_CONTROL_MASK, "screenshot.zoom-in", NULL); + gtk_widget_class_add_binding_action (widget_class, GDK_KEY_minus, GDK_CONTROL_MASK, "screenshot.zoom-out", NULL); + gtk_widget_class_add_binding_action (widget_class, GDK_KEY_0, GDK_CONTROL_MASK, "screenshot.zoom-reset", NULL); } static void @@ -448,7 +454,4 @@ exm_window_init (ExmWindow *self) "updates-available", G_CALLBACK (on_updates_available), self); - - // Window must be mapped to show version check dialog - g_signal_connect (self, "map", G_CALLBACK (do_version_check), NULL); } diff --git a/src/exm-zoom-picture.c b/src/exm-zoom-picture.c index 393e5326..dc06318d 100644 --- a/src/exm-zoom-picture.c +++ b/src/exm-zoom-picture.c @@ -165,24 +165,6 @@ exm_zoom_picture_get_zoom_level_step (ExmZoomPicture *self) return ZOOM_STEP; } -void -exm_zoom_picture_zoom_in (ExmZoomPicture *self) -{ - exm_zoom_picture_set_zoom_level (self, self->zoom_level += ZOOM_STEP); -} - -void -exm_zoom_picture_zoom_out (ExmZoomPicture *self) -{ - exm_zoom_picture_set_zoom_level (self, self->zoom_level -= ZOOM_STEP); -} - -void -exm_zoom_picture_zoom_reset (ExmZoomPicture *self) -{ - exm_zoom_picture_set_zoom_level (self, 1); -} - void compute_scaled_dimensions (ExmZoomPicture *self) { diff --git a/src/exm-zoom-picture.h b/src/exm-zoom-picture.h index f654a7be..c373d4de 100644 --- a/src/exm-zoom-picture.h +++ b/src/exm-zoom-picture.h @@ -37,15 +37,6 @@ exm_zoom_picture_set_paintable (ExmZoomPicture *self, GdkPaintable * exm_zoom_picture_get_paintable (ExmZoomPicture *self); -void -exm_zoom_picture_zoom_in (ExmZoomPicture *self); - -void -exm_zoom_picture_zoom_out (ExmZoomPicture *self); - -void -exm_zoom_picture_zoom_reset (ExmZoomPicture *self); - void exm_zoom_picture_set_zoom_level (ExmZoomPicture *self, float zoom_level); diff --git a/src/exm.gresource.xml.in b/src/exm.gresource.xml.in index e455983d..da854623 100644 --- a/src/exm.gresource.xml.in +++ b/src/exm.gresource.xml.in @@ -27,15 +27,12 @@ ../data/icons/hicolor/scalable/actions/clock-alt-symbolic.svg - ../data/icons/hicolor/scalable/actions/dialog-error-symbolic.svg ../data/icons/hicolor/scalable/actions/donation-symbolic.svg ../data/icons/hicolor/scalable/actions/external-link-symbolic.svg ../data/icons/hicolor/scalable/actions/globe-symbolic.svg - ../data/icons/hicolor/scalable/actions/go-next-symbolic.svg ../data/icons/hicolor/scalable/actions/pip-in-symbolic.svg ../data/icons/hicolor/scalable/actions/pip-out-symbolic.svg ../data/icons/hicolor/scalable/actions/puzzle-piece-symbolic.svg - ../data/icons/hicolor/scalable/actions/dialog-question-symbolic.svg ../data/icons/hicolor/scalable/actions/settings-symbolic.svg ../data/icons/hicolor/scalable/actions/software-update-available-symbolic.svg ../data/icons/hicolor/scalable/actions/star-filled-rounded-symbolic.svg