From 476ba7b276658b35b54732fffde6cc87d7768f65 Mon Sep 17 00:00:00 2001 From: Vivien Kraus Date: Sat, 25 Mar 2023 13:24:26 +0100 Subject: Don’t develop the application in C MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile.am | 8 +- bootstrap.conf | 18 +-- cfg.mk | 3 + configure.ac | 24 +-- src/Makefile.am | 2 - src/adwaita/Makefile.am | 34 ---- src/adwaita/disfluid-about.c | 144 ----------------- src/adwaita/disfluid-adwaita.h | 73 --------- src/adwaita/disfluid-application.c | 207 ------------------------ src/adwaita/disfluid-cache-entry.c | 286 ---------------------------------- src/adwaita/disfluid-cache-key-demo.c | 267 ------------------------------- src/adwaita/disfluid-g-cache-entry.c | 25 --- src/adwaita/disfluid-hash-key-demo.c | 170 -------------------- src/adwaita/disfluid-menus.c | 53 ------- src/adwaita/disfluid-tests-results.c | 108 ------------- src/adwaita/disfluid-window.c | 89 ----------- src/disfluid/Makefile.am | 40 ----- src/disfluid/main.c | 25 --- src/disfluid/run-unit-tests.c | 70 --------- src/libdisfluid/Makefile.am | 12 ++ 20 files changed, 24 insertions(+), 1634 deletions(-) delete mode 100644 src/adwaita/Makefile.am delete mode 100644 src/adwaita/disfluid-about.c delete mode 100644 src/adwaita/disfluid-adwaita.h delete mode 100644 src/adwaita/disfluid-application.c delete mode 100644 src/adwaita/disfluid-cache-entry.c delete mode 100644 src/adwaita/disfluid-cache-key-demo.c delete mode 100644 src/adwaita/disfluid-g-cache-entry.c delete mode 100644 src/adwaita/disfluid-hash-key-demo.c delete mode 100644 src/adwaita/disfluid-menus.c delete mode 100644 src/adwaita/disfluid-tests-results.c delete mode 100644 src/adwaita/disfluid-window.c delete mode 100644 src/disfluid/Makefile.am delete mode 100644 src/disfluid/main.c delete mode 100644 src/disfluid/run-unit-tests.c diff --git a/Makefile.am b/Makefile.am index af53e3f..c775ef6 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,10 +1,4 @@ -SUBDIRS = lib libprog . po tests/libgnu tests/libprog - -LTV_CURRENT = 0 -LTV_REVISION = 0 -LTV_AGE = 0 - -DLL_VERSION = $$(expr $(LTV_CURRENT) - $(LTV_AGE)) +SUBDIRS = lib . po tests/libgnu bin_PROGRAMS = libexec_PROGRAMS = diff --git a/bootstrap.conf b/bootstrap.conf index b708257..7178f85 100644 --- a/bootstrap.conf +++ b/bootstrap.conf @@ -78,20 +78,4 @@ gnulib_tool_option_extras='--makefile-name=Makefile.gnulib --with-tests --tests- checkout_only_file=guix.scm -po_download_command_format="git archive --format=tar translations | tar -x -C %s && echo %s" - -bootstrap_post_import_hook () -{ - "${GNULIB_SRCDIR}"/gnulib-tool --import \ - --lib=libgnu \ - --source-base=libprog \ - --m4-base=m4prog \ - --doc-base=doc \ - --aux-dir=build-aux \ - --libtool \ - --macro-prefix=glprog \ - --with-tests \ - --tests-base=tests/libprog \ - --tests-makefile-name=Makefile.am \ - relocatable-prog gettext-h locale setlocale stdbool attribute execv -} +po_download_command_format="git archive --format=tar translations | tar -x -C %s && echo %s" \ No newline at end of file diff --git a/cfg.mk b/cfg.mk index 2249118..cc6e35c 100644 --- a/cfg.mk +++ b/cfg.mk @@ -4,6 +4,9 @@ _makefile_at_at_check_exceptions = ' && !/INTL_MACOSX_LIBS/ && !/GSETTINGS_RULES generated_files = $(srcdir)/lib/*.[ch] $(srcdir)/desktop/*.desktop.in _gl_translatable_string_re ?= \b(N?_|gettext) *\([^)"]*("|$$)|translatable="yes"|^Comment=||dn?gettext *\(PACKAGE, *" +#" +# The line above is to reset buggy syntax highlighting + VC_LIST_ALWAYS_EXCLUDE_REGEX ?= ^doc/.*\.png$$ .PHONY: push-updated-translations sc_git_authors_known sc_appstream_news_hash diff --git a/configure.ac b/configure.ac index 8a2410b..c2b0444 100644 --- a/configure.ac +++ b/configure.ac @@ -9,16 +9,18 @@ AC_CONFIG_HEADERS([config.h]) AC_CONFIG_AUX_DIR([build-aux]) AC_CONFIG_MACRO_DIR([m4]) +AC_SUBST([LTV_CURRENT], [0]) +AC_SUBST([LTV_REVISION], [0]) +AC_SUBST([LTV_AGE], [0]) +AC_SUBST([DLL_VERSION], [$(expr $LTV_CURRENT - $LTV_AGE)]) + # Checks for programs. AC_PROG_CC gl_EARLY -glprog_EARLY AM_INIT_AUTOMAKE([gnu -Wall -Werror subdir-objects]) AM_PROG_AR LT_INIT([win32-dll]) gl_INIT -glprog_INIT -AM_MISSING_PROG([GLIB_COMPILE_RESOURCES], [glib-compile-resources]) AM_MISSING_PROG([CONVERT], [convert]) GLIB_GSETTINGS @@ -30,16 +32,6 @@ PKG_CHECK_MODULES([LIBCHECK], [check], [ CFLAGS="$CFLAGS $LIBCHECK_CFLAGS" LIBS="$LIBS $LIBCHECK_LIBS" ], [AC_MSG_WARN([pkg-config does not know the "check" module])]) -PKG_CHECK_MODULES([GTK], [gtk4], [ - CPPFLAGS="$CPPFLAGS $GTK_CFLAGS" - CFLAGS="$CFLAGS $GTK_CFLAGS" - LIBS="$LIBS $GTK_LIBS" -], [AC_MSG_WARN([pkg-config does not know the "gtk4" module])]) -PKG_CHECK_MODULES([ADW], [libadwaita-1], [ - CPPFLAGS="$CPPFLAGS $ADW_CFLAGS" - CFLAGS="$CFLAGS $ADW_CFLAGS" - LIBS="$LIBS $ADW_LIBS" -], [AC_MSG_WARN([pkg-config does not know the "libadwaita-1" module])]) PKG_CHECK_MODULES([GNUTLS], [gnutls], [ CPPFLAGS="$CPPFLAGS $GNUTLS_CFLAGS" CFLAGS="$CFLAGS $GNUTLS_CFLAGS" @@ -47,7 +39,7 @@ PKG_CHECK_MODULES([GNUTLS], [gnutls], [ ], [AC_MSG_WARN([pkg-config does not know the "gnutls" module])]) # Checks for header files. -AC_CHECK_HEADERS([check.h gtk/gtk.h adwaita.h gnutls/gnutls.h gnutls/crypto.h],, +AC_CHECK_HEADERS([check.h gnutls/gnutls.h gnutls/crypto.h],, [AC_MSG_ERROR([Required library headers not found.])]) # Checks for typedefs, structures, and compiler characteristics. @@ -59,11 +51,9 @@ gl_VISIBILITY # Checks for library functions. AC_SEARCH_LIBS([srunner_create], [check]) -AC_SEARCH_LIBS([gtk_application_new], [gtk-4]) -AC_SEARCH_LIBS([adw_application_new], [adwaita-1]) AC_SEARCH_LIBS([gnutls_hmac_init], [gnutls]) -AC_CHECK_FUNCS([srunner_create gtk_application_new adw_application_new gnutls_hmac_init],, +AC_CHECK_FUNCS([srunner_create gnutls_hmac_init],, [AC_MSG_ERROR([Required library functions not found.])]) i_am_windows=no diff --git a/src/Makefile.am b/src/Makefile.am index bdb7b63..506c7a8 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,3 +1 @@ include %D%/libdisfluid/Makefile.am -include %D%/adwaita/Makefile.am -include %D%/disfluid/Makefile.am diff --git a/src/adwaita/Makefile.am b/src/adwaita/Makefile.am deleted file mode 100644 index d28455b..0000000 --- a/src/adwaita/Makefile.am +++ /dev/null @@ -1,34 +0,0 @@ -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-cache-key-demo.c \ - %D%/disfluid-hash-key-demo.c \ - %D%/disfluid-g-cache-entry.c \ - %D%/disfluid-cache-entry.c \ - %D%/disfluid-menus.c \ - %D%/disfluid-tests-results.c \ - %D%/disfluid-window.c - -%C%_libdisfluid_adwaita_la_CPPFLAGS = \ - -I lib -I $(srcdir)/lib \ - -I include -I $(srcdir)/include \ - -I %D% -I $(srcdir)/%D% \ - -DLOCALEDIR=\"$(localedir)\" \ - -DINSTALLDIR=\"$(bindir)\" \ - -DLIBEXECDIR=\"$(libexecdir)\" - -%C%_libdisfluid_adwaita_la_LIBADD = \ - lib/libgnu.la \ - src/libdisfluid/libdisfluid.la - -%C%_libdisfluid_adwaita_la_LDFLAGS = \ - $(CLOCK_TIME_LIB) \ - $(GETRANDOM_LIB) \ - $(LIBTHREAD) \ - $(LTLIBINTL) \ - $(SETLOCALE_LIB) \ - $(SETLOCALE_NULL_LIB) \ - @INTL_MACOSX_LIBS@ diff --git a/src/adwaita/disfluid-about.c b/src/adwaita/disfluid-about.c deleted file mode 100644 index ccc55f8..0000000 --- a/src/adwaita/disfluid-about.c +++ /dev/null @@ -1,144 +0,0 @@ -#include - -#include "attribute.h" -#include -#include "disfluid-adwaita.h" - -#define STREQ(a, b) (strcmp ((a), (b)) == 0) -#define STRNEQ(a, b) (! (STREQ (a, b))) - -#include -#include -#include -#include "gettext.h" -#include "relocatable.h" - -#define _(String) dgettext (PACKAGE, (String)) -#define N_(String) (String) - -#include -#include - -static char * -some_developers (void) -{ - char *first_developer = NULL; - bool and_others = false; - for (size_t i = 0; i < disfluid_count_authors (); i++) - { - if (disfluid_author_is_developer (i)) - { - if (first_developer == NULL) - { - first_developer = g_strdup (disfluid_author_name (i)); - } - else - { - and_others = true; - } - } - } - char *ret = NULL; - if (first_developer != NULL) - { - if (and_others) - { - asprintf (&ret, _("%s and others"), first_developer); - free (first_developer); - } - else - { - ret = first_developer; - } - } - return ret; -} - -static char ** -enumerate_credits (int (*check) (size_t)) -{ - size_t n = disfluid_count_authors (); - char **ret = malloc ((n + 1) * sizeof (char *)); - if (ret == NULL) - { - abort (); - } - size_t n_relevant = 0; - for (size_t i = 0; i < n; i++) - { - if (check (i)) - { - if (disfluid_author_uri (i)) - { - asprintf (&(ret[n_relevant]), "%s %s", disfluid_author_name (i), - disfluid_author_uri (i)); - } - else if (disfluid_author_email (i)) - { - asprintf (&(ret[n_relevant]), "%s <%s>", - disfluid_author_name (i), disfluid_author_email (i)); - } - else - { - asprintf (&(ret[n_relevant]), "%s", disfluid_author_name (i)); - } - n_relevant++; - } - } - ret[n_relevant] = NULL; - return ret; -} - -void -disfluid_adw_show_about (GtkApplication * app) -{ - char *developer = some_developers (); - char **developers = enumerate_credits (disfluid_author_is_developer); - char **designers = enumerate_credits (disfluid_author_is_designer); - char **artists = enumerate_credits (disfluid_author_is_artist); - char **documenters = enumerate_credits (disfluid_author_is_documenter); - AdwAboutWindow *window = - (AdwAboutWindow *) g_object_new (ADW_TYPE_ABOUT_WINDOW, - "application-name", _("Experiences"), - "application-icon", - disfluid_adw_application_id (), - "version", disfluid_version (), - "copyright", - _("Copyright © 2023 Vivien Kraus"), - "developer-name", developer, - "website", disfluid_website (), - "developers", developers, - "designers", designers, - "artists", artists, - "documenters", documenters, - "translator-credits", - disfluid_translation_credits (), - "license-type", GTK_LICENSE_AGPL_3_0, - "release-notes", disfluid_whats_new (), - "release-notes-version", - disfluid_major_version (), - NULL); - gtk_window_set_application (GTK_WINDOW (window), app); - gtk_window_present (GTK_WINDOW (window)); - free (developer); - for (size_t i = 0; developers[i] != NULL; i++) - { - free (developers[i]); - } - free (developers); - for (size_t i = 0; designers[i] != NULL; i++) - { - free (designers[i]); - } - free (designers); - for (size_t i = 0; artists[i] != NULL; i++) - { - free (artists[i]); - } - free (artists); - for (size_t i = 0; documenters[i] != NULL; i++) - { - free (documenters[i]); - } - free (documenters); -} diff --git a/src/adwaita/disfluid-adwaita.h b/src/adwaita/disfluid-adwaita.h deleted file mode 100644 index e57a78d..0000000 --- a/src/adwaita/disfluid-adwaita.h +++ /dev/null @@ -1,73 +0,0 @@ -#ifndef H_DISFLUID_ADWAITA_INCLUDED -# define H_DISFLUID_ADWAITA_INCLUDED - -# include -# include -# include -# include -# include - -/* *INDENT-OFF* */ -G_BEGIN_DECLS -/* *INDENT-ON* */ - -# define DISFLUID_TYPE_CACHE_ENTRY \ - disfluid_cache_entry_get_type () - -# define DISFLUID_ADW_TYPE_APPLICATION \ - disfluid_adw_application_get_type () - -# define DISFLUID_ADW_TYPE_WINDOW \ - disfluid_adw_window_get_type () - -# define DISFLUID_ADW_TYPE_CACHE_ENTRY \ - disfluid_adw_cache_entry_get_type () - -/* *INDENT-OFF* */ -G_DECLARE_FINAL_TYPE (DisfluidAdwApplication, - disfluid_adw_application, - DISFLUID_ADW, APPLICATION, - AdwApplication) -G_DECLARE_FINAL_TYPE (DisfluidAdwWindow, - disfluid_adw_window, - DISFLUID_ADW, WINDOW, - AdwApplicationWindow) -G_DECLARE_FINAL_TYPE (DisfluidAdwCacheEntry, - disfluid_adw_cache_entry, - DISFLUID_ADW, CACHE_ENTRY, - AdwPreferencesGroup) -G_END_DECLS -/* *INDENT-ON* */ - -GType disfluid_cache_entry_get_type (void); - -DisfluidAdwApplication *disfluid_adw_application_new (void); - -GtkWidget *disfluid_adw_window_new (GtkApplication * app); - -ATTRIBUTE_CONST const char *disfluid_adw_application_id (void); - -void disfluid_adw_show_about (GtkApplication * app); - -void disfluid_adw_show_tests_results (GtkApplication * app, - size_t n_tests, - size_t n_errors, const char *output); - -GMenuItem *disfluid_adw_menu_item_about (void); - -GMenuItem *disfluid_adw_menu_item_run_tests (void); - -GMenu *disfluid_adw_main_menu (void); - -void disfluid_adw_cache_entry_set_file_name (DisfluidAdwCacheEntry * - cache_entry, const char *fname); - -void disfluid_adw_cache_entry_set_cache_entry (DisfluidAdwCacheEntry * - cache_entry, - struct disfluid_cache_entry - *value); - -GtkWidget *disfluid_adw_cache_key_demo (void); -GtkWidget *disfluid_adw_hash_key_demo (void); - -#endif /* not H_DISFLUID_ADWAITA_INCLUDED */ diff --git a/src/adwaita/disfluid-application.c b/src/adwaita/disfluid-application.c deleted file mode 100644 index 9afe838..0000000 --- a/src/adwaita/disfluid-application.c +++ /dev/null @@ -1,207 +0,0 @@ -#include - -#include "attribute.h" -#include - -#define STREQ(a, b) (strcmp ((a), (b)) == 0) -#define STRNEQ(a, b) (! (STREQ (a, b))) - -#include -#include -#include -#include "gettext.h" -#include "relocatable.h" - -#define _(String) dgettext (PACKAGE, (String)) -#define N_(String) (String) - -#include -#include -#include -#include - -struct _DisfluidAdwApplication -{ - AdwApplication parent_instance; - gboolean only_show_version; - gboolean only_run_tests; - gint n_tests_run; - gint n_tests_errors; - gchar *tests_output; -}; - -struct _DisfluidAdwApplicationClass -{ - AdwApplicationClass parent_instance; -}; - -/* *INDENT-OFF* */ -G_DEFINE_TYPE (DisfluidAdwApplication, disfluid_adw_application, ADW_TYPE_APPLICATION) -/* *INDENT-ON* */ - -static void -launch_about_window (GSimpleAction * action, GVariant * parameter, - gpointer user_data) -{ - (void) action; - (void) parameter; - DisfluidAdwApplication *self = user_data; - disfluid_adw_show_about (GTK_APPLICATION (self)); -} - -static void -start_tests (GSimpleAction * action, GVariant * parameter, gpointer user_data) -{ - (void) action; - (void) parameter; - (void) user_data; - char *arg_0; - if (asprintf (&arg_0, "%s/disfluid-run-unit-tests", relocate (LIBEXECDIR)) < - 0) - { - abort (); - } - char *args[] = { arg_0, NULL }; - g_spawn_async (NULL, args, NULL, 0, NULL, NULL, NULL, NULL); - free (arg_0); -} - -static void -disfluid_adw_application_init (DisfluidAdwApplication * self) -{ - (void) self; - /* Perform default initialization of self. */ - self->only_show_version = false; - self->only_run_tests = false; - self->n_tests_run = -1; - self->n_tests_errors = -1; - self->tests_output = NULL; - 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}, - {.name = "runtests",.activate = start_tests} - }; - 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.")}, - { - .long_name = N_("run-tests"), - .short_name = 'T', - .flags = G_OPTION_FLAG_NONE, - .arg = G_OPTION_ARG_NONE, - .arg_data = &(self->only_run_tests), - .description = N_("Run the unit tests and exit.")}, - { - .long_name = N_("n-tests-run"), - .flags = G_OPTION_FLAG_NONE, - .arg = G_OPTION_ARG_INT, - .arg_data = &(self->n_tests_run), - .description = N_("Indicate how many tests were run.")}, - { - .long_name = N_("n-tests-errors"), - .flags = G_OPTION_FLAG_NONE, - .arg = G_OPTION_ARG_INT, - .arg_data = &(self->n_tests_errors), - .description = N_("Indicate how many tests failed.")}, - { - .long_name = N_("tests-output"), - .flags = G_OPTION_FLAG_NONE, - .arg = G_OPTION_ARG_STRING, - .arg_data = &(self->tests_output), - .description = N_("Report the tests output.")}, - {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 -disfluid_adw_application_finalize (GObject * object) -{ - DisfluidAdwApplication *self = DISFLUID_ADW_APPLICATION (object); - g_free (self->tests_output); -} - -static void -disfluid_adw_application_class_init (DisfluidAdwApplicationClass * klass) -{ - GObjectClass *object_class = G_OBJECT_CLASS (klass); - object_class->finalize = disfluid_adw_application_finalize; -} - -static void -activated (GtkApplication * app) -{ - DisfluidAdwApplication *self = DISFLUID_ADW_APPLICATION (app); - if (self->only_show_version) - { - launch_about_window (NULL, NULL, app); - } - else if (self->only_run_tests) - { - start_tests (NULL, NULL, app); - } - else if (self->n_tests_run >= 0 || self->n_tests_errors >= 0 - || self->tests_output != NULL) - { - if (self->n_tests_run < 0) - { - self->n_tests_run = 0; - } - if (self->n_tests_errors < 0) - { - self->n_tests_errors = 0; - } - if (self->tests_output == NULL) - { - self->tests_output = g_strdup (_("No output is available.")); - } - disfluid_adw_show_tests_results (app, self->n_tests_run, - self->n_tests_errors, - self->tests_output); - } - else - { - GtkWidget *window = disfluid_adw_window_new (app); - gtk_window_present (GTK_WINDOW (window)); - } -} - -DisfluidAdwApplication * -disfluid_adw_application_new (void) -{ - DisfluidAdwApplication *self = NULL; - self = - (DisfluidAdwApplication *) g_object_new (DISFLUID_ADW_TYPE_APPLICATION, - "application-id", - disfluid_adw_application_id (), - NULL); - g_signal_connect (self, "activate", G_CALLBACK (activated), NULL); - return self; -} - -const char * -disfluid_adw_application_id () -{ - static const char *id_non_nightly = "eu.planete_kraus.Disfluid"; - static const char *id_nightly = "eu.planete_kraus.Disfluid.Devel"; - if (disfluid_is_nightly ()) - { - return id_nightly; - } - return id_non_nightly; -} diff --git a/src/adwaita/disfluid-cache-entry.c b/src/adwaita/disfluid-cache-entry.c deleted file mode 100644 index 02d7e83..0000000 --- a/src/adwaita/disfluid-cache-entry.c +++ /dev/null @@ -1,286 +0,0 @@ -#include - -#include "attribute.h" -#include - -#define STREQ(a, b) (strcmp ((a), (b)) == 0) -#define STRNEQ(a, b) (! (STREQ (a, b))) - -#include -#include -#include -#include -#include "gettext.h" -#include "relocatable.h" - -#define _(String) dgettext (PACKAGE, (String)) -#define N_(String) (String) - -#include -#include -#include -#include - -struct _DisfluidAdwCacheEntry -{ - AdwPreferencesGroup parent_instance; - char *file_name; - struct disfluid_cache_entry *cache_entry; - GtkLabel *row_request_date; - GtkLabel *row_response_date; - GtkLabel *row_invalidation_status; -}; - -struct _DisfluidAdwCacheEntryClass -{ - AdwPreferencesGroupClass parent_instance; -}; - -/* *INDENT-OFF* */ -G_DEFINE_TYPE (DisfluidAdwCacheEntry, - disfluid_adw_cache_entry, - ADW_TYPE_PREFERENCES_GROUP) -/* *INDENT-ON* */ - -typedef enum -{ - PROP_FILE_NAME = 1, - PROP_CACHE_ENTRY = 2, - - /* ... */ - N_PROPERTIES -} DisfluidAdwCacheEntryProperty; - -static GParamSpec *obj_properties[N_PROPERTIES] = { NULL, }; - -static void -disfluid_adw_cache_entry_set_property (GObject * object, - guint property_id, - const GValue * value, - GParamSpec * pspec) -{ - DisfluidAdwCacheEntry *self = DISFLUID_ADW_CACHE_ENTRY (object); - switch ((DisfluidAdwCacheEntryProperty) property_id) - { - case PROP_FILE_NAME: - disfluid_adw_cache_entry_set_file_name (self, - g_value_get_string (value)); - break; - - case PROP_CACHE_ENTRY: - assert (G_VALUE_TYPE (value) == DISFLUID_TYPE_CACHE_ENTRY); - disfluid_adw_cache_entry_set_cache_entry (self, - g_value_get_boxed (value)); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - -static void -disfluid_adw_cache_entry_get_property (GObject * object, - guint property_id, - GValue * value, GParamSpec * pspec) -{ - DisfluidAdwCacheEntry *self = DISFLUID_ADW_CACHE_ENTRY (object); - switch ((DisfluidAdwCacheEntryProperty) property_id) - { - case PROP_FILE_NAME: - g_value_set_string (value, self->file_name); - break; - case PROP_CACHE_ENTRY: - if (self->cache_entry != NULL) - { - g_value_set_boxed (value, - disfluid_cache_entry_dup (self->cache_entry)); - } - else - { - g_value_set_boxed (value, NULL); - } - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - -static void -disfluid_adw_cache_entry_finalize (GObject * obj) -{ - DisfluidAdwCacheEntry *self = DISFLUID_ADW_CACHE_ENTRY (obj); - free (self->file_name); - disfluid_cache_entry_free (self->cache_entry); - G_OBJECT_CLASS (disfluid_adw_cache_entry_parent_class)->finalize (obj); -} - -static void -disfluid_adw_cache_entry_class_init (DisfluidAdwCacheEntryClass * klass) -{ - GObjectClass *object_class = G_OBJECT_CLASS (klass); - object_class->set_property = disfluid_adw_cache_entry_set_property; - object_class->get_property = disfluid_adw_cache_entry_get_property; - object_class->finalize = disfluid_adw_cache_entry_finalize; - obj_properties[PROP_FILE_NAME] = - g_param_spec_string ("file-name", _("File name"), _("Name of the file \ -of this cache entry"), NULL, G_PARAM_READWRITE); - obj_properties[PROP_CACHE_ENTRY] = - g_param_spec_boxed ("cache-entry", - _("Cache entry"), _("Value of the cache entry \ -that is to be displayed by this widget"), DISFLUID_TYPE_CACHE_ENTRY, G_PARAM_READWRITE); - g_object_class_install_properties (object_class, N_PROPERTIES, - obj_properties); -} - -static void -disfluid_adw_cache_entry_init (DisfluidAdwCacheEntry * self) -{ - /* Perform default initialization of self. */ - self->file_name = NULL; - self->cache_entry = NULL; - self->row_request_date = GTK_LABEL (gtk_label_new (_("Unset"))); - self->row_response_date = GTK_LABEL (gtk_label_new (_("Unset"))); - self->row_invalidation_status = GTK_LABEL (gtk_label_new (_("Unset"))); - GtkLabel *my_labels[3] = { self->row_request_date, self->row_response_date, - self->row_invalidation_status - }; - for (size_t i = 0; i < sizeof (my_labels) / sizeof (my_labels[0]); i++) - { - gtk_label_set_wrap (my_labels[i], true); - const int margin = 8; - gtk_widget_set_margin_top (GTK_WIDGET (my_labels[i]), margin); - gtk_widget_set_margin_bottom (GTK_WIDGET (my_labels[i]), margin); - gtk_widget_set_margin_start (GTK_WIDGET (my_labels[i]), margin); - gtk_widget_set_margin_end (GTK_WIDGET (my_labels[i]), margin); - } - GtkListBoxRow *row_request_date = - GTK_LIST_BOX_ROW (g_object_new (ADW_TYPE_PREFERENCES_ROW, - "title", _("Request date"), - "child", self->row_request_date, - "selectable", false, - NULL)); - GtkListBoxRow *row_response_date = - GTK_LIST_BOX_ROW (g_object_new (ADW_TYPE_PREFERENCES_ROW, - "title", _("Response date"), - "child", self->row_response_date, - "selectable", false, - NULL)); - GtkListBoxRow *row_invalidation_status = - GTK_LIST_BOX_ROW (g_object_new (ADW_TYPE_PREFERENCES_ROW, - "title", _("Invalidation status"), - "child", self->row_invalidation_status, - "selectable", false, - NULL)); - adw_preferences_group_set_title (ADW_PREFERENCES_GROUP (self), - _("Unknown cache entry")); - adw_preferences_group_set_description (ADW_PREFERENCES_GROUP (self), - _("Unknown URI")); - adw_preferences_group_add (ADW_PREFERENCES_GROUP (self), - GTK_WIDGET (row_request_date)); - adw_preferences_group_add (ADW_PREFERENCES_GROUP (self), - GTK_WIDGET (row_response_date)); - adw_preferences_group_add (ADW_PREFERENCES_GROUP (self), - GTK_WIDGET (row_invalidation_status)); -} - -void -disfluid_adw_cache_entry_set_file_name (DisfluidAdwCacheEntry * self, - const char *fname) -{ - free (self->file_name); - self->file_name = NULL; - if (fname) - { - self->file_name = g_strdup (fname); - } - if (self->file_name == NULL) - { - adw_preferences_group_set_title (ADW_PREFERENCES_GROUP (self), - _("Unknown cache entry")); - } - else - { - adw_preferences_group_set_title (ADW_PREFERENCES_GROUP (self), - self->file_name); - } -} - -void -disfluid_adw_cache_entry_set_cache_entry (DisfluidAdwCacheEntry * self, - struct disfluid_cache_entry *value) -{ - disfluid_cache_entry_free (self->cache_entry); - if (value != NULL) - { - self->cache_entry = disfluid_cache_entry_dup (value); - struct timespec request_ts, response_ts; - disfluid_cache_entry_get_request_date (self->cache_entry, &request_ts); - disfluid_cache_entry_get_response_date (self->cache_entry, - &response_ts); - GDateTime *request_date_gross = - g_date_time_new_from_unix_local (request_ts.tv_sec); - const double request_frac = request_ts.tv_nsec * 1e-9; - GDateTime *request_date = g_date_time_add_seconds (request_date_gross, - request_frac); - g_date_time_unref (request_date_gross); - GDateTime *response_date_gross = - g_date_time_new_from_unix_local (response_ts.tv_sec); - const double response_frac = response_ts.tv_nsec * 1e-9; - GDateTime *response_date = g_date_time_add_seconds (response_date_gross, - response_frac); - g_date_time_unref (response_date_gross); - gchar *request_format = g_date_time_format (request_date, "%c"); - gchar *response_format = g_date_time_format (response_date, "%c"); - g_date_time_unref (request_date); - g_date_time_unref (response_date); - char *request_title; - char *response_title; - char *invalidation_status_title; - /* TRANSLATORS: The argument is a date and time. */ - if (asprintf (&request_title, _("Requested %s"), request_format) < 0) - { - abort (); - } - /* TRANSLATORS: The argument is a date and time. */ - if (asprintf (&response_title, _("Responded %s"), response_format) < 0) - { - abort (); - } - if (disfluid_cache_entry_is_invalidated (self->cache_entry)) - { - if (asprintf - (&invalidation_status_title, - _("This response has been invalidated.")) < 0) - { - abort (); - } - } - else - { - if (asprintf - (&invalidation_status_title, - _("This response is still valid.")) < 0) - { - abort (); - } - } - g_free (request_format); - g_free (response_format); - gtk_label_set_label (self->row_request_date, request_title); - gtk_label_set_label (self->row_response_date, response_title); - gtk_label_set_label (self->row_invalidation_status, - invalidation_status_title); - g_free (request_title); - g_free (response_title); - g_free (invalidation_status_title); - } - else - { - self->cache_entry = NULL; - gtk_label_set_label (self->row_request_date, _("No content")); - gtk_label_set_label (self->row_response_date, _("No content")); - gtk_label_set_label (self->row_invalidation_status, _("No content")); - } -} diff --git a/src/adwaita/disfluid-cache-key-demo.c b/src/adwaita/disfluid-cache-key-demo.c deleted file mode 100644 index 93ec136..0000000 --- a/src/adwaita/disfluid-cache-key-demo.c +++ /dev/null @@ -1,267 +0,0 @@ -#include - -#include "attribute.h" -#include -#include "disfluid-adwaita.h" - -#define STREQ(a, b) (strcmp ((a), (b)) == 0) -#define STRNEQ(a, b) (! (STREQ (a, b))) - -#include -#include -#include -#include "gettext.h" -#include "relocatable.h" - -#define _(String) dgettext (PACKAGE, (String)) -#define N_(String) (String) - -#include -#include - -/* *INDENT-OFF* */ -G_BEGIN_DECLS -/* *INDENT-ON* */ - -#define DISFLUID_ADW_TYPE_CACHE_KEY_DEMO \ - disfluid_adw_cache_key_demo_get_type () - -/* *INDENT-OFF* */ -G_DECLARE_FINAL_TYPE (DisfluidAdwCacheKeyDemo, - disfluid_adw_cache_key_demo, - DISFLUID_ADW, CACHE_KEY_DEMO, - AdwPreferencesGroup) -G_END_DECLS -/* *INDENT-ON* */ - -GType disfluid_adw_cache_key_demo_get_type (void); - -struct _DisfluidAdwCacheKeyDemo -{ - AdwPreferencesGroup parent_instance; - AdwEntryRow *scheme_view; - GtkTextBuffer *request_buffer; - GtkTextBuffer *response_buffer; - GtkTextBuffer *output_buffer; -}; - -struct _DisfluidAdwCacheKeyDemoClass -{ - AdwPreferencesGroupClass parent_instance; -}; - -/* *INDENT-OFF* */ -G_DEFINE_TYPE (DisfluidAdwCacheKeyDemo, disfluid_adw_cache_key_demo, ADW_TYPE_PREFERENCES_GROUP) -/* *INDENT-ON* */ - -static void -disfluid_adw_cache_key_demo_class_init (DisfluidAdwCacheKeyDemoClass * klass) -{ - (void) klass; -} - -static inline void -push_dynamic_text (char **text, size_t *used, size_t *allocated, char c) -{ - if (*used == *allocated) - { - *allocated *= 2; - *text = realloc (*text, *allocated); - if (*text == NULL) - { - abort (); - } - } - (*text)[*used] = c; - *used += 1; -} - -static inline char * -get_text_buffer_data (GtkTextBuffer * buffer) -{ - GtkTextIter iter_start = { 0 }; - GtkTextIter iter_end = { 0 }; - gtk_text_buffer_get_start_iter (buffer, &iter_start); - gtk_text_buffer_get_end_iter (buffer, &iter_end); - gchar *raw_text = - gtk_text_buffer_get_text (buffer, &iter_start, &iter_end, TRUE); - /* raw_text has \n or \r\n line ending, replace them with \r\n. */ - size_t allocated_size = 1; - size_t used_size = 0; - char *http_ready = calloc (allocated_size, 1); - for (size_t i = 0; i < strlen (raw_text); i++) - { - if (raw_text[i] != '\r') - { - if (raw_text[i] == '\n') - { - push_dynamic_text (&http_ready, &used_size, &allocated_size, - '\r'); - } - push_dynamic_text (&http_ready, &used_size, &allocated_size, - raw_text[i]); - } - } - push_dynamic_text (&http_ready, &used_size, &allocated_size, '\0'); - g_free (raw_text); - return http_ready; -} - -static inline void -recompute (DisfluidAdwCacheKeyDemo * self) -{ - static const size_t max = 4096; - char *key = calloc (max, 1); - if (key == NULL) - { - abort (); - } - char *scheme = - g_strdup (gtk_editable_get_text (GTK_EDITABLE (self->scheme_view))); - char *request_header = get_text_buffer_data (self->request_buffer); - char *response_header = get_text_buffer_data (self->response_buffer); - int error = - disfluid_compute_cache_key (scheme, request_header, response_header, max, - key); - switch (error) - { - case 0: - gtk_text_buffer_set_text (self->output_buffer, key, strlen (key)); - break; - case -1: - { - const char *error_message = - _("Error: there is a problem with your input."); - gtk_text_buffer_set_text (self->output_buffer, error_message, - strlen (error_message)); - } - break; - case -2: - { - const char *error_message = _("Error: the key would be too large."); - gtk_text_buffer_set_text (self->output_buffer, error_message, - strlen (error_message)); - } - break; - default: - { - const char *error_message = _("You triggered an unknown error."); - gtk_text_buffer_set_text (self->output_buffer, error_message, - strlen (error_message)); - } - break; - } - free (key); -} - -static GtkWidget * -make_text_view_row (const char *title, const char *default_text, - GtkTextBuffer ** buffer, gboolean editable) -{ - GtkBox *container = GTK_BOX (g_object_new (GTK_TYPE_BOX, - "orientation", - GTK_ORIENTATION_VERTICAL, - NULL)); - GtkLabel *title_widget = GTK_LABEL (g_object_new (GTK_TYPE_LABEL, - "label", title, - "ellipsize", - PANGO_ELLIPSIZE_END, - "margin-top", 8, - "margin-bottom", 8, - "margin-start", 8, - "margin-end", 8, - NULL)); - *buffer = GTK_TEXT_BUFFER (g_object_new (GTK_TYPE_TEXT_BUFFER, - "text", default_text, NULL)); - GtkTextView *text_view = GTK_TEXT_VIEW (g_object_new (GTK_TYPE_TEXT_VIEW, - "monospace", TRUE, - "buffer", *buffer, - "margin-top", 8, - "margin-bottom", 8, - "margin-start", 8, - "margin-end", 8, - "editable", editable, - NULL)); - gtk_box_append (container, GTK_WIDGET (title_widget)); - gtk_box_append (container, GTK_WIDGET (text_view)); - AdwPreferencesRow *ret = - ADW_PREFERENCES_ROW (g_object_new (ADW_TYPE_PREFERENCES_ROW, - "title", title, - "activatable", FALSE, - "selectable", FALSE, - "child", container, - NULL)); - return GTK_WIDGET (ret); -} - -static inline void -change_scheme (GtkEditable * editable, void *user_data) -{ - (void) editable; - DisfluidAdwCacheKeyDemo *context = user_data; - recompute (context); -} - -static inline void -change_text_buffer (GtkTextBuffer * ptr, void *user_data) -{ - (void) ptr; - DisfluidAdwCacheKeyDemo *context = user_data; - recompute (context); -} - -static void -disfluid_adw_cache_key_demo_init (DisfluidAdwCacheKeyDemo * self) -{ - g_object_set (G_OBJECT (self), - "title", _("Cache key demo"), - "description", - _("See how disfluid indexes a request/response pair."), NULL); - /* TRANSLATORS: Make sure the HTTP/1.1 example stays valid (the CR - characters, \r, are not mandatory), but you can translate the URI - and host. */ - const char *request_example = _("\ -GET /example HTTP/1.1\n\ -Host: example.com\n\ -Accept: text/plain\n\ -\n"); - GtkWidget *request_view = - make_text_view_row (_("Request header"), request_example, - &(self->request_buffer), TRUE); - /* TRANSLATORS: Make sure the HTTP/1.1 example stays valid (the CR - characters, \r, are not mandatory), but you can translate the - reason phrase and the message. */ - const char *response_example = _("\ -HTTP/1.1 200 OK\n\ -Content-Type: text/plain\n\ -\n\ -Hi :)\n"); - GtkWidget *response_view = - make_text_view_row (_("Response header"), response_example, - &(self->response_buffer), TRUE); - GtkWidget *output_view = - make_text_view_row (_("Cache key"), "", &(self->output_buffer), FALSE); - self->scheme_view = - ADW_ENTRY_ROW (g_object_new - (ADW_TYPE_ENTRY_ROW, "title", _("HTTP scheme"), - "input-purpose", GTK_INPUT_PURPOSE_ALPHA, "activatable", - FALSE, "selectable", FALSE, "text", "https", NULL)); - adw_preferences_group_add (ADW_PREFERENCES_GROUP (self), - GTK_WIDGET (self->scheme_view)); - adw_preferences_group_add (ADW_PREFERENCES_GROUP (self), request_view); - adw_preferences_group_add (ADW_PREFERENCES_GROUP (self), response_view); - adw_preferences_group_add (ADW_PREFERENCES_GROUP (self), output_view); - g_signal_connect (self->scheme_view, "changed", G_CALLBACK (change_scheme), - self); - g_signal_connect (self->request_buffer, "changed", - G_CALLBACK (change_text_buffer), self); - g_signal_connect (self->response_buffer, "changed", - G_CALLBACK (change_text_buffer), self); - recompute (self); -} - -GtkWidget * -disfluid_adw_cache_key_demo (void) -{ - return GTK_WIDGET (g_object_new (DISFLUID_ADW_TYPE_CACHE_KEY_DEMO, NULL)); -} diff --git a/src/adwaita/disfluid-g-cache-entry.c b/src/adwaita/disfluid-g-cache-entry.c deleted file mode 100644 index 8fe7141..0000000 --- a/src/adwaita/disfluid-g-cache-entry.c +++ /dev/null @@ -1,25 +0,0 @@ -#include - -#include "attribute.h" -#include -#include "disfluid-adwaita.h" - -#define STREQ(a, b) (strcmp ((a), (b)) == 0) -#define STRNEQ(a, b) (! (STREQ (a, b))) - -#include -#include -#include -#include "gettext.h" -#include "relocatable.h" - -#define _(String) dgettext (PACKAGE, (String)) -#define N_(String) (String) - -#include - -typedef struct disfluid_cache_entry DisfluidCacheEntry; - -G_DEFINE_BOXED_TYPE (DisfluidCacheEntry, - disfluid_cache_entry, - disfluid_cache_entry_dup, disfluid_cache_entry_free) diff --git a/src/adwaita/disfluid-hash-key-demo.c b/src/adwaita/disfluid-hash-key-demo.c deleted file mode 100644 index c8af2b1..0000000 --- a/src/adwaita/disfluid-hash-key-demo.c +++ /dev/null @@ -1,170 +0,0 @@ -#include - -#include "attribute.h" -#include -#include "disfluid-adwaita.h" - -#define STREQ(a, b) (strcmp ((a), (b)) == 0) -#define STRNEQ(a, b) (! (STREQ (a, b))) - -#include -#include -#include -#include "gettext.h" -#include "relocatable.h" - -#define _(String) dgettext (PACKAGE, (String)) -#define N_(String) (String) - -#include -#include -#include - -/* *INDENT-OFF* */ -G_BEGIN_DECLS -/* *INDENT-ON* */ - -#define DISFLUID_ADW_TYPE_HASH_KEY_DEMO \ - disfluid_adw_hash_key_demo_get_type () - -/* *INDENT-OFF* */ -G_DECLARE_FINAL_TYPE (DisfluidAdwHashKeyDemo, - disfluid_adw_hash_key_demo, - DISFLUID_ADW, HASH_KEY_DEMO, - AdwPreferencesGroup) -G_END_DECLS -/* *INDENT-ON* */ - -GType disfluid_adw_hash_key_demo_get_type (void); - -struct _DisfluidAdwHashKeyDemo -{ - AdwPreferencesGroup parent_instance; - AdwEntryRow *method_view; - AdwEntryRow *uri_view; - AdwEntryRow *password_view; - GtkTextBuffer *output_buffer; -}; - -struct _DisfluidAdwHashKeyDemoClass -{ - AdwPreferencesGroupClass parent_instance; -}; - -/* *INDENT-OFF* */ -G_DEFINE_TYPE (DisfluidAdwHashKeyDemo, disfluid_adw_hash_key_demo, ADW_TYPE_PREFERENCES_GROUP) -/* *INDENT-ON* */ - -static void -disfluid_adw_hash_key_demo_class_init (DisfluidAdwHashKeyDemoClass * klass) -{ - (void) klass; -} - -static inline void -recompute (DisfluidAdwHashKeyDemo * self) -{ - char *method = - g_strdup (gtk_editable_get_text (GTK_EDITABLE (self->method_view))); - char *uri = - g_strdup (gtk_editable_get_text (GTK_EDITABLE (self->uri_view))); - char *password = - g_strdup (gtk_editable_get_text (GTK_EDITABLE (self->password_view))); - char output[65]; - int error = - disfluid_hash_primary_cache_key (method, uri, password, strlen (password), - sizeof (output), output); - if (error < 0) - { - abort (); - } - assert (strlen (output) == 64); - gtk_text_buffer_set_text (self->output_buffer, output, strlen (output)); - free (password); - free (uri); - free (method); -} - -static inline void -change_and_recompute (GtkEditable * editable, void *user_data) -{ - (void) editable; - DisfluidAdwHashKeyDemo *context = user_data; - recompute (context); -} - -static void -disfluid_adw_hash_key_demo_init (DisfluidAdwHashKeyDemo * self) -{ - g_object_set (G_OBJECT (self), - "title", _("Hash key demo"), - "description", - _("See how disfluid hashes a method and URI."), NULL); - self->method_view = - ADW_ENTRY_ROW (g_object_new (ADW_TYPE_ENTRY_ROW, - "title", _("HTTP Method"), - "input-purpose", GTK_INPUT_PURPOSE_ALPHA, - "activatable", FALSE, - "selectable", FALSE, "text", "GET", NULL)); - self->uri_view = - ADW_ENTRY_ROW (g_object_new (ADW_TYPE_ENTRY_ROW, - "title", _("URI"), - "activatable", FALSE, - "selectable", FALSE, - "text", "https://example.com", NULL)); - self->password_view = - ADW_ENTRY_ROW (g_object_new (ADW_TYPE_PASSWORD_ENTRY_ROW, - "title", _("Password"), - "activatable", FALSE, - "selectable", FALSE, "text", "", NULL)); - self->output_buffer = - GTK_TEXT_BUFFER (g_object_new (GTK_TYPE_TEXT_BUFFER, "text", "", NULL)); - GtkTextView *text_view = GTK_TEXT_VIEW (g_object_new (GTK_TYPE_TEXT_VIEW, - "monospace", TRUE, - "buffer", - self->output_buffer, - "margin-top", 8, - "margin-bottom", 8, - "margin-start", 8, - "margin-end", 8, - "editable", FALSE, - "wrap-mode", - GTK_WRAP_CHAR, - NULL)); - g_signal_connect (self->method_view, "changed", - G_CALLBACK (change_and_recompute), self); - g_signal_connect (self->uri_view, "changed", - G_CALLBACK (change_and_recompute), self); - g_signal_connect (self->password_view, "changed", - G_CALLBACK (change_and_recompute), self); - adw_preferences_group_add (ADW_PREFERENCES_GROUP (self), - GTK_WIDGET (self->method_view)); - adw_preferences_group_add (ADW_PREFERENCES_GROUP (self), - GTK_WIDGET (self->uri_view)); - adw_preferences_group_add (ADW_PREFERENCES_GROUP (self), - GTK_WIDGET (self->password_view)); - GtkLabel *output_title_widget = - GTK_LABEL (g_object_new - (GTK_TYPE_LABEL, "label", _("Hash output"), "ellipsize", - PANGO_ELLIPSIZE_END, "margin-top", 8, "margin-bottom", 8, - "margin-start", 8, "margin-end", 8, NULL)); - GtkBox *output_container = - GTK_BOX (g_object_new - (GTK_TYPE_BOX, "orientation", GTK_ORIENTATION_VERTICAL, NULL)); - gtk_box_append (output_container, GTK_WIDGET (output_title_widget)); - gtk_box_append (output_container, GTK_WIDGET (text_view)); - AdwPreferencesRow *output_row = - ADW_PREFERENCES_ROW (g_object_new - (ADW_TYPE_PREFERENCES_ROW, "title", _("Hash output"), - "activatable", FALSE, "selectable", FALSE, "child", - output_container, NULL)); - adw_preferences_group_add (ADW_PREFERENCES_GROUP (self), - GTK_WIDGET (output_row)); - recompute (self); -} - -GtkWidget * -disfluid_adw_hash_key_demo (void) -{ - return GTK_WIDGET (g_object_new (DISFLUID_ADW_TYPE_HASH_KEY_DEMO, NULL)); -} diff --git a/src/adwaita/disfluid-menus.c b/src/adwaita/disfluid-menus.c deleted file mode 100644 index 34766c7..0000000 --- a/src/adwaita/disfluid-menus.c +++ /dev/null @@ -1,53 +0,0 @@ -#include - -#include "attribute.h" -#include -#include "disfluid-adwaita.h" - -#define STREQ(a, b) (strcmp ((a), (b)) == 0) -#define STRNEQ(a, b) (! (STREQ (a, b))) - -#include -#include -#include -#include "gettext.h" -#include "relocatable.h" - -#define _(String) dgettext (PACKAGE, (String)) -#define N_(String) (String) - -#include -#include - -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; -} - -GMenuItem * -disfluid_adw_menu_item_run_tests (void) -{ - GMenuItem *item = g_menu_item_new (_("Run Tests"), "app.runtests"); - GIcon *system_run_icon = G_ICON (g_themed_icon_new ("system-run")); - g_menu_item_set_icon (item, system_run_icon); - g_object_unref (system_run_icon); - return item; -} - -GMenu * -disfluid_adw_main_menu (void) -{ - GMenu *menu = g_menu_new (); - GMenuItem *about = disfluid_adw_menu_item_about (); - GMenuItem *runtests = disfluid_adw_menu_item_run_tests (); - g_menu_append_item (menu, about); - g_menu_append_item (menu, runtests); - g_object_unref (about); - g_object_unref (runtests); - return menu; -} diff --git a/src/adwaita/disfluid-tests-results.c b/src/adwaita/disfluid-tests-results.c deleted file mode 100644 index f4794ef..0000000 --- a/src/adwaita/disfluid-tests-results.c +++ /dev/null @@ -1,108 +0,0 @@ -#include - -#include "attribute.h" -#include -#include "disfluid-adwaita.h" - -#define STREQ(a, b) (strcmp ((a), (b)) == 0) -#define STRNEQ(a, b) (! (STREQ (a, b))) - -#include -#include -#include -#include "gettext.h" -#include "relocatable.h" - -#define _(String) dgettext (PACKAGE, (String)) -#define N_(String) (String) - -#include -#include - -void -disfluid_adw_show_tests_results (GtkApplication * app, - size_t n_tests, - size_t n_errors, const char *output) -{ - GtkTextBuffer *buffer = gtk_text_buffer_new (NULL); - g_object_set (G_OBJECT (buffer), "text", output, NULL); - GtkTextView *text_area = - GTK_TEXT_VIEW (gtk_text_view_new_with_buffer (buffer)); - g_object_unref (buffer); - g_object_set (G_OBJECT (text_area), - "editable", (gboolean) 0, - "hscroll-policy", GTK_SCROLL_NATURAL, NULL); - char *icon_name = NULL; - char *title = NULL; - char *description = NULL; - if (n_errors == 0) - { - icon_name = g_strdup ("dialog-information"); - if (asprintf - (&title, - dngettext (PACKAGE, "The %lu test passed", "All %lu tests passed", - n_tests), n_tests) < 0) - { - title = NULL; - } - if (asprintf (&description, dngettext (PACKAGE, "\ -The unit test indicates that when you restart Experiences, \ -it will behave as expected.", "\ -The unit tests indicate that when you restart Experiences, \ -it will behave as expected.", n_tests)) < 0) - { - description = NULL; - } - } - else - { - icon_name = g_strdup ("dialog-error"); - if (asprintf - (&title, - dngettext (PACKAGE, "A test failed", "Some tests failed", - n_errors)) < 0) - { - title = NULL; - } - if (asprintf (&description, - dngettext (PACKAGE, - "%2$lu unit tests failed out of %1$lu.", - "%2$lu unit tests failed out of %1$lu.", - n_errors), n_tests, n_errors) < 0) - { - description = NULL; - } - } - AdwStatusPage *page = ADW_STATUS_PAGE (g_object_new (ADW_TYPE_STATUS_PAGE, - "child", text_area, - "icon-name", icon_name, - "title", title, - "description", - description, - NULL)); - g_free (icon_name); - free (title); - free (description); - AdwWindowTitle *window_title = - ADW_WINDOW_TITLE (g_object_new (ADW_TYPE_WINDOW_TITLE, - "title", _("Experiences"), - "subtitle", _("Unit Tests Results"), - NULL)); - AdwHeaderBar *header_bar = - ADW_HEADER_BAR (g_object_new (ADW_TYPE_HEADER_BAR, - "title-widget", GTK_WIDGET (window_title), - "centering-policy", - ADW_CENTERING_POLICY_STRICT, - NULL)); - GtkBox *main_content = GTK_BOX (gtk_box_new (GTK_ORIENTATION_VERTICAL, 0)); - gtk_box_append (main_content, GTK_WIDGET (header_bar)); - gtk_box_append (main_content, GTK_WIDGET (page)); - AdwApplicationWindow *window = - (AdwApplicationWindow *) g_object_new (ADW_TYPE_APPLICATION_WINDOW, - "application", - GTK_APPLICATION (app), - "content", - GTK_WIDGET (main_content), - NULL); - gtk_window_present (GTK_WINDOW (window)); -} diff --git a/src/adwaita/disfluid-window.c b/src/adwaita/disfluid-window.c deleted file mode 100644 index d7d1519..0000000 --- a/src/adwaita/disfluid-window.c +++ /dev/null @@ -1,89 +0,0 @@ -#include - -#include "attribute.h" -#include - -#define STREQ(a, b) (strcmp ((a), (b)) == 0) -#define STRNEQ(a, b) (! (STREQ (a, b))) - -#include -#include -#include -#include "gettext.h" -#include "relocatable.h" - -#define _(String) dgettext (PACKAGE, (String)) -#define N_(String) (String) - -#include -#include -#include -#include - -struct _DisfluidAdwWindow -{ - AdwApplicationWindow parent_instance; -}; - -struct _DisfluidAdwWindowClass -{ - AdwApplicationWindowClass parent_instance; -}; - -/* *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 *unique_content = disfluid_adw_hash_key_demo (); - GtkWidget *main_page = g_object_new (ADW_TYPE_PREFERENCES_PAGE, NULL); - adw_preferences_page_add (ADW_PREFERENCES_PAGE (main_page), - ADW_PREFERENCES_GROUP (unique_content)); - 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); - char *settings_id; - if (asprintf (&settings_id, "%s.State", disfluid_adw_application_id ()) < 0) - { - abort (); - } - GSettings *settings = g_settings_new (settings_id); - free (settings_id); - g_settings_bind (settings, "width", self, "default-width", - G_SETTINGS_BIND_DEFAULT); - g_settings_bind (settings, "height", self, "default-height", - G_SETTINGS_BIND_DEFAULT); - g_settings_bind (settings, "is-maximized", self, "maximized", - G_SETTINGS_BIND_DEFAULT); - g_settings_bind (settings, "is-fullscreen", self, "fullscreened", - G_SETTINGS_BIND_DEFAULT); -} - -GtkWidget * -disfluid_adw_window_new (GtkApplication * app) -{ - GtkWidget *self = NULL; - self = - (GtkWidget *) g_object_new (DISFLUID_ADW_TYPE_WINDOW, - "application", app, NULL); - return self; -} diff --git a/src/disfluid/Makefile.am b/src/disfluid/Makefile.am deleted file mode 100644 index 555d455..0000000 --- a/src/disfluid/Makefile.am +++ /dev/null @@ -1,40 +0,0 @@ -bin_PROGRAMS += %D%/disfluid -libexec_PROGRAMS += %D%/disfluid-run-unit-tests - -%C%_disfluid_SOURCES = \ - %D%/main.c -%C%_disfluid_CPPFLAGS = \ - -I libprog -I $(srcdir)/libprog \ - -I include -I $(srcdir)/include \ - -DLOCALEDIR=\"$(localedir)\" \ - -DINSTALLDIR=\"$(bindir)\" \ - -DGETTEXT_PACKAGE=\"$(PACKAGE)\" -%C%_disfluid_LDADD = \ - libprog/libgnu.la \ - src/libdisfluid/libdisfluid.la \ - src/adwaita/libdisfluid-adwaita.la \ - $(LIBTHREAD) \ - $(LTLIBINTL) \ - $(POSIX_SPAWN_LIB) \ - $(SETLOCALE_LIB) \ - $(SETLOCALE_NULL_LIB) \ - @INTL_MACOSX_LIBS@ - -%C%_disfluid_run_unit_tests_SOURCES = \ - %D%/run-unit-tests.c -%C%_disfluid_run_unit_tests_CPPFLAGS = \ - -I libprog -I $(srcdir)/libprog \ - -I include -I $(srcdir)/include \ - -DLOCALEDIR=\"$(localedir)\" \ - -DINSTALLDIR=\"$(bindir)\" \ - -DGETTEXT_PACKAGE=\"$(PACKAGE)\" -%C%_disfluid_run_unit_tests_LDADD = \ - libprog/libgnu.la \ - src/libdisfluid/libdisfluid.la \ - src/adwaita/libdisfluid-adwaita.la \ - $(LIBTHREAD) \ - $(LTLIBINTL) \ - $(POSIX_SPAWN_LIB) \ - $(SETLOCALE_LIB) \ - $(SETLOCALE_NULL_LIB) \ - @INTL_MACOSX_LIBS@ diff --git a/src/disfluid/main.c b/src/disfluid/main.c deleted file mode 100644 index 598cd36..0000000 --- a/src/disfluid/main.c +++ /dev/null @@ -1,25 +0,0 @@ -#include -#include "attribute.h" -#include - -#include -#include "gettext.h" -#include "progname.h" -#include "relocatable.h" - -#include "../adwaita/disfluid-adwaita.h" -#include -#include - -int -main (int argc, char *argv[]) -{ - set_program_name (argv[0]); - setlocale (LC_ALL, ""); - bindtextdomain (PACKAGE, relocate (LOCALEDIR)); - textdomain (PACKAGE); - DisfluidAdwApplication *app = disfluid_adw_application_new (); - int status = g_application_run ((GApplication *) app, argc, argv); - g_object_unref (app); - return status; -} diff --git a/src/disfluid/run-unit-tests.c b/src/disfluid/run-unit-tests.c deleted file mode 100644 index 7f9b8f3..0000000 --- a/src/disfluid/run-unit-tests.c +++ /dev/null @@ -1,70 +0,0 @@ -#include -#include "attribute.h" -#include - -#include -#include -#include "gettext.h" -#include "progname.h" -#include "relocatable.h" - -#include - -#define _(String) gettext (String) -#define N_(String) (String) - -int -main (int argc, char *argv[]) -{ - (void) argc; - set_program_name (argv[0]); - setlocale (LC_ALL, ""); - bindtextdomain (PACKAGE, relocate (LOCALEDIR)); - textdomain (PACKAGE); - size_t n_tests, n_errors; - char *tests_output = disfluid_run_tests (&n_tests, &n_errors); - const char *bindir = relocate (INSTALLDIR); - char *disfluid_exec = malloc (strlen (bindir) + strlen ("/disfluid") + 1); - if (disfluid_exec == NULL) - { - abort (); - } - strcpy (disfluid_exec, bindir); - strcat (disfluid_exec, "/disfluid"); - char *arg_0 = NULL; - if (asprintf (&arg_0, "%s", disfluid_exec) < 0) - { - abort (); - } - char *arg_1 = NULL; - if (asprintf (&arg_1, "--%s=%lu", _("n-tests-run"), n_tests) < 0) - { - abort (); - } - char *arg_2 = NULL; - if (asprintf (&arg_2, "--%s=%lu", _("n-tests-errors"), n_errors) < 0) - { - abort (); - } - char *arg_3 = NULL; - if (asprintf (&arg_3, "--%s=%s", _("tests-output"), tests_output) < 0) - { - abort (); - } - char *args[] = { arg_0, arg_1, arg_2, arg_3, NULL }; - int error = execv (disfluid_exec, args); - for (size_t i = 0; args[i] != NULL; i++) - { - free (args[i]); - } - free (tests_output); - if (error) - { - fprintf (stderr, "%s:%d: cannot execute %s.\n", __FILE__, __LINE__, - disfluid_exec); - free (disfluid_exec); - return EXIT_FAILURE; - } - free (disfluid_exec); - return EXIT_SUCCESS; -} diff --git a/src/libdisfluid/Makefile.am b/src/libdisfluid/Makefile.am index e8bb8f5..8eb2d3a 100644 --- a/src/libdisfluid/Makefile.am +++ b/src/libdisfluid/Makefile.am @@ -49,3 +49,15 @@ defexec_DATA = \ DISTCLEANFILES += $(defexec_DATA) endif + +AM_V_SCAN = $(am__v_SCAN_@AM_V@) +am__v_SCAN_ = $(am__v_SCAN_@AM_DEFAULT_V@) +am__v_SCAN_0 = @echo " SCAN " $@; +am__v_SCAN_1 = + +girdir = $(datarootdir)/gir-1.0 + +dist_gir_DATA = %D%/Disfluid-$(DLL_VERSION).gir + +%D%/Disfluid-$(DLL_VERSION).gir: $(include_HEADERS) $(dist_pkginclude_HEADERS) + $(AM_V_SCAN) ($(G_IR_SCANNER) --warn-all --strict --format=gir -I$(abs_top_srcdir)/include --c-include=disfluid.h --c-include=disfluid/cache_entry.h -n Disfluid --nsversion=$(DLL_VERSION) --symbol-prefix=disfluid_ --output=%D%/Disfluid-$(DLL_VERSION).gir-t $(include_HEADERS) $(dist_pkginclude_HEADERS) --program=echo && mv %D%/Disfluid-$(DLL_VERSION).gir-t $(srcdir)/%D%/Disfluid-$(DLL_VERSION).gir) -- cgit v1.2.3