summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVivien Kraus <vivien@planete-kraus.eu>2023-03-11 20:43:00 +0100
committerVivien Kraus <vivien@planete-kraus.eu>2023-03-11 21:51:32 +0100
commit6df16404194cd24b8b8cc03c2e2382a5fbffb6f5 (patch)
tree8d3e6763190f3ad8416bd297471e3f0111c771f1
parent419d7ec40b30e70d0f0f00ad96909c6978c9eace (diff)
Add an application window for Experiences with a menu
-rw-r--r--guix.scm31
-rw-r--r--po/POTFILES.in3
-rw-r--r--src/adwaita/Makefile.am4
-rw-r--r--src/adwaita/disfluid-adwaita.h10
-rw-r--r--src/adwaita/disfluid-application.c7
-rw-r--r--src/adwaita/disfluid-menus.c40
-rw-r--r--src/adwaita/disfluid-window.c81
7 files changed, 163 insertions, 13 deletions
diff --git a/guix.scm b/guix.scm
index 275f2ad..2a8f7f5 100644
--- a/guix.scm
+++ b/guix.scm
@@ -167,11 +167,32 @@
(("#!/gnu/store/.*/bin/sh")
"#!/bin/sh")))
(with-directory-excursion "tests/libgnu"
- (substitute* '("test-verify.sh" "test-select-out.sh" "test-select-in.sh"
- "test-vc-list-files-git.sh" "test-setlocale1.sh"
- "test-lseek.sh" "test-binary-io.sh" "test-ftruncate.sh"
- "test-init.sh" "test-vc-list-files-cvs.sh"
- "test-setlocale2.sh" "test-perror.sh")
+ (substitute* '(
+ "test-fflush2.sh"
+ "test-fseek.sh"
+ "test-fseek2.sh"
+ "test-fseeko.sh"
+ "test-fseeko2.sh"
+ "test-fseeko3.sh"
+ "test-fseeko4.sh"
+ "test-ftell.sh"
+ "test-ftell2.sh"
+ "test-ftello.sh"
+ "test-ftello2.sh"
+ "test-ftello4.sh"
+ "test-ftruncate.sh"
+ "test-init.sh"
+ "test-lseek.sh"
+ "test-perror.sh"
+ "test-select-in.sh"
+ "test-select-out.sh"
+ "test-setlocale1.sh"
+ "test-setlocale2.sh"
+ "test-vc-list-files-cvs.sh"
+ "test-vc-list-files-git.sh"
+ "test-verify.sh"
+ "test-binary-io.sh"
+ )
(("#!/gnu/store/.*/bin/sh")
"#!/bin/sh")))
(with-directory-excursion "tests/libprog"
diff --git a/po/POTFILES.in b/po/POTFILES.in
index f15e90a..371f070 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -1,7 +1,8 @@
desktop/eu.planete_kraus.Disfluid.Devel.desktop.in
desktop/eu.planete_kraus.Disfluid.desktop.in
src/adwaita/disfluid-about.c
-src/adwaita/disfluid-application.c
+src/adwaita/disfluid-menus.c
+src/adwaita/disfluid-window.c
src/libdisfluid/disfluid-authors.h
src/libdisfluid/disfluid-tests.h
src/libdisfluid/disfluid-version.h
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;
+}