diff options
| author | Robert Günzler <r@gnzler.io> | 2026-08-13 17:21:46 +0200 |
|---|---|---|
| committer | Robert Günzler <r@gnzler.io> | 2026-08-13 17:21:46 +0200 |
| commit | 502d94151ed9dcfeeb691a92a4c413be5783ae2d (patch) | |
| tree | 0a547802f5408e8bcd11eca811365f0622519abc /src | |
| download | munchmate-master.tar.gz | |
Signed-off-by: Robert Günzler <r@gnzler.io>
Diffstat (limited to '')
| -rw-r--r-- | src/config.vapi | 7 | ||||
| -rw-r--r-- | src/main.vala | 8 | ||||
| -rw-r--r-- | src/meson.build | 42 | ||||
| -rw-r--r-- | src/mm-application.vala | 50 | ||||
| -rw-r--r-- | src/mm-window.vala | 12 |
5 files changed, 119 insertions, 0 deletions
diff --git a/src/config.vapi b/src/config.vapi new file mode 100644 index 0000000..bd04675 --- /dev/null +++ b/src/config.vapi @@ -0,0 +1,7 @@ +[CCode (cprefix = "", lower_case_cprefix = "", cheader_filename = "config.h")] +namespace Config { + public const string VERSION; + public const string APP_ID; + public const string BUILD_TYPE; +} + diff --git a/src/main.vala b/src/main.vala new file mode 100644 index 0000000..865765f --- /dev/null +++ b/src/main.vala @@ -0,0 +1,8 @@ + +static int main(string[] args) { + Dex.init(); + Dex.ThreadPoolScheduler.get_default(); + + var app = new MunchMate.Application(); + return app.run(args); +} diff --git a/src/meson.build b/src/meson.build new file mode 100644 index 0000000..9ded894 --- /dev/null +++ b/src/meson.build @@ -0,0 +1,42 @@ +mm_vapi_sources = files( + 'config.vapi', +) + +mm_vala_sources = files( + 'mm-application.vala', + 'mm-window.vala', + 'main.vala', +) + +mm_sources = [ + mm_vapi_sources, + mm_vala_sources, + resources, +] + +mm_deps = [ + glib_dep, + gio_dep, + gtk_dep, + adw_dep, + dex_dep, +] + +mm_vala_args = [ + '--vapidir', meson.current_source_dir(), + '--gresources', resource_files, +] + +mm_c_args = [ + '-DG_LOG_DOMAIN="@0@"'.format(app_id), +] + +executable( + meson.project_name(), + mm_sources, + include_directories: config_h_dir, + dependencies: mm_deps, + vala_args: mm_vala_args, + c_args: mm_c_args, + install: true, +) diff --git a/src/mm-application.vala b/src/mm-application.vala new file mode 100644 index 0000000..193f16b --- /dev/null +++ b/src/mm-application.vala @@ -0,0 +1,50 @@ +namespace MunchMate { + public class Application : Adw.Application { + private Window win; + + private static bool print_version = false; + + private const GLib.OptionEntry[] options = { + { "version", 'V', OptionFlags.NONE, OptionArg.NONE, ref print_version, "Display version number", null }, + { null } // terminator + }; + + private const GLib.ActionEntry[] action_entries = { + { "quit", on_quit_activate }, + }; + + public override int handle_local_options(VariantDict _) { + if (print_version) { + print("%s version %s\n", Config.APP_ID, Config.VERSION); + return 0; + } + return -1; + } + + public override void activate() { + win = new Window(this); + win.present(); + } + + public override void startup() { + base.startup(); + + set_accels_for_action("app.quit", { "q" }); + } + + public Application() { + // why doesnt service binding work in flatpak + Object(application_id: Config.APP_ID, flags: ApplicationFlags.NON_UNIQUE); + + set_resource_base_path("/im/gzr/munchmate/"); + + add_main_option_entries(options); + + add_action_entries(action_entries, this); + } + + void on_quit_activate() { + quit(); + } + } +} diff --git a/src/mm-window.vala b/src/mm-window.vala new file mode 100644 index 0000000..f8b9761 --- /dev/null +++ b/src/mm-window.vala @@ -0,0 +1,12 @@ +namespace MunchMate { + [GtkTemplate (ui = "/im/gzr/munchmate/mm-window.ui")] + public class Window : Adw.ApplicationWindow { + public Window(Gtk.Application app) { + Object(application: app); + + if (Config.BUILD_TYPE == "debug") { + add_css_class("devel"); + } + } + } +} |