summaryrefslogtreecommitdiff
path: root/src/adwaita/disfluid-application.c
diff options
context:
space:
mode:
authorVivien Kraus <vivien@planete-kraus.eu>2023-03-13 20:06:11 +0100
committerVivien Kraus <vivien@planete-kraus.eu>2023-03-13 21:14:10 +0100
commitc3af2a1b3c86bf1070b60f16c6caed2d13763ac5 (patch)
tree4f435ec045e6972725370ed3a059e71d5728de37 /src/adwaita/disfluid-application.c
parent1c031b6fa198b5732f7cb39b54c2fb1d70673c4c (diff)
Show the About page when passed -V (--version).
Diffstat (limited to 'src/adwaita/disfluid-application.c')
-rw-r--r--src/adwaita/disfluid-application.c64
1 files changed, 47 insertions, 17 deletions
diff --git a/src/adwaita/disfluid-application.c b/src/adwaita/disfluid-application.c
index 08af0c8..471bfae 100644
--- a/src/adwaita/disfluid-application.c
+++ b/src/adwaita/disfluid-application.c
@@ -23,6 +23,7 @@
struct _DisfluidAdwApplication
{
AdwApplication parent_instance;
+ gboolean only_show_version;
};
struct _DisfluidAdwApplicationClass
@@ -41,27 +42,61 @@ disfluid_adw_application_class_init (DisfluidAdwApplicationClass * klass)
}
static void
-disfluid_adw_application_init (DisfluidAdwApplication * self)
+launch_about_window (GSimpleAction * action, GVariant * parameter,
+ gpointer user_data)
{
- (void) self;
- /* Perform default initialization of self. */
+ (void) action;
+ (void) parameter;
+ DisfluidAdwApplication *self = user_data;
+ disfluid_adw_show_about (GTK_APPLICATION (self));
}
static void
-activated (GtkApplication * app)
+disfluid_adw_application_init (DisfluidAdwApplication * self)
{
- GtkWidget *window = disfluid_adw_window_new (app);
- gtk_window_present (GTK_WINDOW (window));
+ (void) self;
+ /* Perform default initialization of self. */
+ self->only_show_version = false;
+ g_application_set_flags (G_APPLICATION (self),
+ g_application_get_flags (G_APPLICATION (self)) |
+ G_APPLICATION_HANDLES_OPEN);
+ static GActionEntry app_actions[] = {
+ {.name = "about",.activate = launch_about_window}
+ };
+ g_action_map_add_action_entries (G_ACTION_MAP (self), app_actions,
+ G_N_ELEMENTS (app_actions), self);
+ GOptionEntry app_options[] = {
+ {
+ .long_name = N_("version"),
+ .short_name = 'V',
+ .flags = G_OPTION_FLAG_NONE,
+ .arg = G_OPTION_ARG_NONE,
+ .arg_data = &(self->only_show_version),
+ .description = N_("Show the program version.")},
+ {0}
+ };
+ for (size_t i = 0; i < sizeof (app_options) / sizeof (app_options[0]); i++)
+ {
+ app_options[i].long_name = dgettext (PACKAGE, app_options[i].long_name);
+ app_options[i].description =
+ dgettext (PACKAGE, app_options[i].description);
+ }
+ g_application_add_main_option_entries (G_APPLICATION (self), app_options);
}
static void
-launch_about_window (GSimpleAction * action, GVariant * parameter,
- gpointer user_data)
+activated (GtkApplication * app)
{
- (void) action;
- (void) parameter;
- DisfluidAdwApplication *self = user_data;
- disfluid_adw_show_about (GTK_APPLICATION (self));
+ DisfluidAdwApplication *self = DISFLUID_ADW_APPLICATION (app);
+ if (self->only_show_version)
+ {
+ launch_about_window (NULL, NULL, app);
+ }
+ else
+ {
+ GtkWidget *window = disfluid_adw_window_new (app);
+ gtk_window_present (GTK_WINDOW (window));
+ }
}
DisfluidAdwApplication *
@@ -73,11 +108,6 @@ disfluid_adw_application_new (void)
"application-id",
disfluid_adw_application_id (),
NULL);
- static GActionEntry app_actions[] = {
- {.name = "about",.activate = launch_about_window}
- };
- g_action_map_add_action_entries (G_ACTION_MAP (self), app_actions,
- G_N_ELEMENTS (app_actions), self);
g_signal_connect (self, "activate", G_CALLBACK (activated), NULL);
return self;
}