diff options
author | Vivien Kraus <vivien@planete-kraus.eu> | 2023-03-11 20:43:00 +0100 |
---|---|---|
committer | Vivien Kraus <vivien@planete-kraus.eu> | 2023-03-11 21:51:32 +0100 |
commit | 6df16404194cd24b8b8cc03c2e2382a5fbffb6f5 (patch) | |
tree | 8d3e6763190f3ad8416bd297471e3f0111c771f1 /src/adwaita | |
parent | 419d7ec40b30e70d0f0f00ad96909c6978c9eace (diff) |
Add an application window for Experiences with a menu
Diffstat (limited to 'src/adwaita')
-rw-r--r-- | src/adwaita/Makefile.am | 4 | ||||
-rw-r--r-- | src/adwaita/disfluid-adwaita.h | 10 | ||||
-rw-r--r-- | src/adwaita/disfluid-application.c | 7 | ||||
-rw-r--r-- | src/adwaita/disfluid-menus.c | 40 | ||||
-rw-r--r-- | src/adwaita/disfluid-window.c | 81 |
5 files changed, 135 insertions, 7 deletions
diff --git a/src/adwaita/Makefile.am b/src/adwaita/Makefile.am index 5b30d64..2a6d0f1 100644 --- a/src/adwaita/Makefile.am +++ b/src/adwaita/Makefile.am @@ -3,7 +3,9 @@ noinst_LTLIBRARIES += %D%/libdisfluid-adwaita.la %C%_libdisfluid_adwaita_la_SOURCES = \ %D%/disfluid-adwaita.h \ %D%/disfluid-about.c \ - %D%/disfluid-application.c + %D%/disfluid-application.c \ + %D%/disfluid-menus.c \ + %D%/disfluid-window.c %C%_libdisfluid_adwaita_la_CPPFLAGS = \ -I lib -I $(srcdir)/lib \ diff --git a/src/adwaita/disfluid-adwaita.h b/src/adwaita/disfluid-adwaita.h index f3772cc..2c16899 100644 --- a/src/adwaita/disfluid-adwaita.h +++ b/src/adwaita/disfluid-adwaita.h @@ -15,4 +15,14 @@ ATTRIBUTE_CONST const char *disfluid_adw_application_id (void); void disfluid_adw_show_about (GtkApplication * app); +GMenuItem *disfluid_adw_menu_item_about (void); + +GMenu *disfluid_adw_main_menu (void); + +struct DisfluidAdwWindow; + +ATTRIBUTE_CONST GType disfluid_adw_window_get_type (void); + +GtkWidget *disfluid_adw_window_new (GtkApplication * app); + #endif /* not H_DISFLUID_ADWAITA_INCLUDED */ diff --git a/src/adwaita/disfluid-application.c b/src/adwaita/disfluid-application.c index 2adf33c..6814423 100644 --- a/src/adwaita/disfluid-application.c +++ b/src/adwaita/disfluid-application.c @@ -56,13 +56,8 @@ disfluid_adw_application_init (DisfluidAdwApplication * self) static void activated (GtkApplication * app) { - GtkWidget *window = gtk_application_window_new (app); - GtkWidget *label = gtk_label_new (_("Hello, world!")); - gtk_window_set_title (GTK_WINDOW (window), _("Hello")); - gtk_window_set_default_size (GTK_WINDOW (window), 200, 200); - gtk_window_set_child (GTK_WINDOW (window), label); + GtkWidget *window = disfluid_adw_window_new (app); gtk_window_present (GTK_WINDOW (window)); - disfluid_adw_show_about (app); } DisfluidAdwApplication * diff --git a/src/adwaita/disfluid-menus.c b/src/adwaita/disfluid-menus.c new file mode 100644 index 0000000..ffa0c00 --- /dev/null +++ b/src/adwaita/disfluid-menus.c @@ -0,0 +1,40 @@ +#include <config.h> + +#include "attribute.h" +#include <disfluid.h> +#include "disfluid-adwaita.h" + +#define STREQ(a, b) (strcmp ((a), (b)) == 0) +#define STRNEQ(a, b) (! (STREQ (a, b))) + +#include <locale.h> +#include <stdio.h> +#include <unistd.h> +#include "gettext.h" +#include "relocatable.h" + +#define _(String) dgettext (PACKAGE, (String)) +#define N_(String) (String) + +#include <adwaita.h> +#include <gtk/gtk.h> + +GMenuItem * +disfluid_adw_menu_item_about (void) +{ + GMenuItem *item = g_menu_item_new (_("About Experiences"), "app.about"); + GIcon *help_about_icon = G_ICON (g_themed_icon_new ("help-about")); + g_menu_item_set_icon (item, help_about_icon); + g_object_unref (help_about_icon); + return item; +} + +GMenu * +disfluid_adw_main_menu (void) +{ + GMenu *menu = g_menu_new (); + GMenuItem *about = disfluid_adw_menu_item_about (); + g_menu_append_item (menu, about); + g_object_unref (about); + return menu; +} diff --git a/src/adwaita/disfluid-window.c b/src/adwaita/disfluid-window.c new file mode 100644 index 0000000..a1b1813 --- /dev/null +++ b/src/adwaita/disfluid-window.c @@ -0,0 +1,81 @@ +#include <config.h> + +#include "attribute.h" +#include <disfluid-adwaita.h> + +#define STREQ(a, b) (strcmp ((a), (b)) == 0) +#define STRNEQ(a, b) (! (STREQ (a, b))) + +#include <locale.h> +#include <stdio.h> +#include <unistd.h> +#include "gettext.h" +#include "relocatable.h" + +#define _(String) dgettext (PACKAGE, (String)) +#define N_(String) (String) + +#include <disfluid.h> +#include <glib-object.h> +#include <adwaita.h> +#include <gtk/gtk.h> + +#define DISFLUID_ADW_TYPE_WINDOW \ + disfluid_adw_window_get_type () + +struct DisfluidAdwWindow +{ + AdwApplicationWindow parent_instance; +}; + +struct DisfluidAdwWindowClass +{ + AdwApplicationWindowClass parent_instance; +}; + +typedef struct DisfluidAdwWindow DisfluidAdwWindow; +typedef struct DisfluidAdwWindowClass DisfluidAdwWindowClass; + +/* *INDENT-OFF* */ +G_DEFINE_TYPE (DisfluidAdwWindow, disfluid_adw_window, ADW_TYPE_APPLICATION_WINDOW) +/* *INDENT-ON* */ + +static void +disfluid_adw_window_class_init (DisfluidAdwWindowClass * klass) +{ + (void) klass; +} + +static void +disfluid_adw_window_init (DisfluidAdwWindow * self) +{ + (void) self; + /* Perform default initialization of self. */ + GMenu *main_menu = disfluid_adw_main_menu (); + GtkWidget *menu_button = gtk_menu_button_new (); + GtkWidget *header_bar = adw_header_bar_new (); + gtk_menu_button_set_icon_name (GTK_MENU_BUTTON (menu_button), "open-menu"); + gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (menu_button), + G_MENU_MODEL (main_menu)); + g_object_unref (main_menu); + adw_header_bar_pack_end (ADW_HEADER_BAR (header_bar), menu_button); + GtkWidget *main_page = adw_status_page_new (); + adw_status_page_set_icon_name (ADW_STATUS_PAGE (main_page), "face-smile"); + adw_status_page_set_title (ADW_STATUS_PAGE (main_page), _("Hello, world!")); + adw_status_page_set_description (ADW_STATUS_PAGE (main_page), _("\ +There is nothing here yet, please come back later.")); + GtkWidget *content = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); + gtk_box_append (GTK_BOX (content), header_bar); + gtk_box_append (GTK_BOX (content), main_page); + adw_application_window_set_content (ADW_APPLICATION_WINDOW (self), content); +} + +GtkWidget * +disfluid_adw_window_new (GtkApplication * app) +{ + GtkWidget *self = NULL; + self = + (GtkWidget *) g_object_new (DISFLUID_ADW_TYPE_WINDOW, + "application", app, NULL); + return self; +} |