summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVivien Kraus <vivien@planete-kraus.eu>2023-03-06 21:23:45 +0100
committerVivien Kraus <vivien@planete-kraus.eu>2023-03-07 08:20:17 +0100
commit3a928301b13fb86ad22a5299a636c9a3cfb2f893 (patch)
tree413ae0554addbea257930309db7d0920822ae487
parentdce70584699bb41699bb84a598dd6afdc7f2778f (diff)
Rework the main window with Adwaita.
-rw-r--r--po/POTFILES.in1
-rw-r--r--src/disfluid.ui87
-rw-r--r--src/unit_tests_report.ui86
-rw-r--r--src/vala/application-window.vala4
-rw-r--r--src/vala/main.vala5
-rw-r--r--src/vala/unit-tests-report.vala21
6 files changed, 133 insertions, 71 deletions
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 509ba58..d60f215 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -2,4 +2,5 @@
src/about.ui
src/disfluid.ui
src/unit_tests_report.ui
+src/vala/about.c
src/vala/application-window.c
diff --git a/src/disfluid.ui b/src/disfluid.ui
index 1a516c8..8d24cad 100644
--- a/src/disfluid.ui
+++ b/src/disfluid.ui
@@ -1,34 +1,73 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.40.0 -->
<interface>
- <template class="DisfluidWindow" parent="GtkApplicationWindow">
- <property name="can-focus">False</property>
- <property name="titlebar">
- <object class="GtkHeaderBar">
- <property name="visible">True</property>
- <property name="can-focus">False</property>
- <property name="title-widget">
- <object class="GtkLabel">
- <property name="label" translatable="yes" context="gui-title" comments="Title of the main window.">Disfluid</property>
- <property name="single-line-mode">True</property>
- <property name="ellipsize">end</property>
+ <template class="DisfluidWindow" parent="AdwApplicationWindow">
+ <property name="content">
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="AdwHeaderBar">
+ <property name="centering-policy">strict</property>
+ <property name="title-widget">
+ <object class="AdwViewSwitcherTitle" id="title">
+ <property name="stack">stack</property>
+ <property name="title" translatable="yes">Disfluid</property>
+ </object>
+ </property>
+ <child>
+ <object class="GtkMenuButton" id="window_menu">
+ <property name="icon-name">open-menu</property>
+ </object>
+ </child>
</object>
- </property>
- <child type="end">
- <object class="GtkMenuButton" id="window_menu">
- <property name="visible">True</property>
- <property name="can-focus">True</property>
- <property name="focus-on-click">False</property>
- <property name="receives-default">True</property>
- <property name="icon-name">open-menu</property>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="AdwViewStack" id="stack">
+ <child>
+ <object class="AdwViewStackPage">
+ <property name="name">home</property>
+ <property name="title" translatable="yes" context="home-page">Home</property>
+ <property name="icon-name">go-home</property>
+ <property name="child">
+ <object class="AdwStatusPage">
+ <property name="title" translatable="yes">Nothing to see here.</property>
+ <property name="description" translatable="yes">Disfluid is not ready yet. Please come back later.</property>
+ <property name="icon-name">computer-fail</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="AdwViewStackPage">
+ <property name="name">settings</property>
+ <property name="title" translatable="yes" context="home-page">Settings</property>
+ <property name="icon-name">emblem-system</property>
+ <property name="child">
+ <object class="GtkListBox">
+ <property name="selection-mode">none</property>
+ <style>
+ <class name="boxed-list"/>
+ </style>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="AdwViewSwitcherBar">
+ <property name="stack">stack</property>
+ <binding name="reveal">
+ <lookup name="title-visible">title</lookup>
+ </binding>
+ </object>
+ </child>
</object>
</child>
</object>
</property>
- <child>
- <object class="GtkLabel">
- <property name="label" translatable="yes" context="gui-hello">Hello, world!</property>
- </object>
- </child>
</template>
</interface>
diff --git a/src/unit_tests_report.ui b/src/unit_tests_report.ui
index 84ba121..daedc5c 100644
--- a/src/unit_tests_report.ui
+++ b/src/unit_tests_report.ui
@@ -1,43 +1,71 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.40.0 -->
<interface>
- <template class="DisfluidUnitTestsReport" parent="AdwBin">
- <child>
- <object class="GtkStack" id="stack">
- <property name="transition-type">slide-left</property>
+ <template class="DisfluidUnitTestsReportDialog" parent="AdwApplicationWindow">
+ <property name="content">
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
<child>
- <object class="AdwStatusPage" id="page_wait">
- <property name="title" translatable="yes">Running disfluid unit tests…</property>
- <property name="description" translatable="yes">Please wait while disfluid is running the unit tests.</property>
- </object>
- </child>
- <child>
- <object class="AdwStatusPage" id="page_failure">
- <property name="title" translatable="yes">The unit tests failed.</property>
- <property name="description" translatable="yes">Disfluid unit tests failed. Sorry for the inconvenience.</property>
- <property name="icon-name">dialog-error</property>
- <child>
- <object class="GtkButton">
- <property name="label" translatable="yes">Retry</property>
- <property name="action-name">app.run-unit-tests</property>
+ <object class="AdwHeaderBar">
+ <property name="centering-policy">strict</property>
+ <property name="title-widget">
+ <object class="AdwWindowTitle" id="title">
+ <property name="title" translatable="yes">Disfluid</property>
+ <property name="subtitle" translatable="yes">Checking the Disfluid implementation</property>
</object>
- </child>
+ </property>
</object>
</child>
<child>
- <object class="AdwStatusPage" id="page_success">
- <property name="title" translatable="yes">The unit tests passed.</property>
- <property name="description" translatable="yes">Disfluid unit tests passed. The application is functioning as expected.</property>
- <property name="icon-name">dialog-information</property>
- <child>
- <object class="GtkButton">
- <property name="label" translatable="yes">Retry</property>
- <property name="action-name">app.run-unit-tests</property>
+ <object class="AdwClamp">
+ <property name="orientation">horizontal</property>
+ <property name="maximum-size">480</property>
+ <property name="tightening-threshold">320</property>
+ <property name="child">
+ <object class="GtkStack" id="stack">
+ <property name="valign">center</property>
+ <property name="vhomogeneous">true</property>
+ <property name="vexpand">true</property>
+ <property name="vexpand-set">true</property>
+ <property name="transition-type">slide-left</property>
+ <property name="interpolate-size">true</property>
+ <child>
+ <object class="AdwStatusPage" id="page_wait">
+ <property name="title" translatable="yes">Running disfluid unit tests…</property>
+ <property name="description" translatable="yes">Please wait while disfluid is running the unit tests.</property>
+ </object>
+ </child>
+ <child>
+ <object class="AdwStatusPage" id="page_failure">
+ <property name="title" translatable="yes">The unit tests failed.</property>
+ <property name="description" translatable="yes">Disfluid unit tests failed. Sorry for the inconvenience.</property>
+ <property name="icon-name">dialog-error</property>
+ <child>
+ <object class="GtkButton">
+ <property name="label" translatable="yes">Retry</property>
+ <property name="action-name">win.rerun-unit-tests</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="AdwStatusPage" id="page_success">
+ <property name="title" translatable="yes">The unit tests passed.</property>
+ <property name="description" translatable="yes">Disfluid unit tests passed. The application is functioning as expected.</property>
+ <property name="icon-name">dialog-information</property>
+ <child>
+ <object class="GtkButton">
+ <property name="label" translatable="yes">Retry</property>
+ <property name="action-name">win.rerun-unit-tests</property>
+ </object>
+ </child>
+ </object>
+ </child>
</object>
- </child>
+ </property>
</object>
</child>
</object>
- </child>
+ </property>
</template>
</interface>
diff --git a/src/vala/application-window.vala b/src/vala/application-window.vala
index 4ec76f6..3255d72 100644
--- a/src/vala/application-window.vala
+++ b/src/vala/application-window.vala
@@ -3,11 +3,11 @@ extern const string APPLICATION_WINDOW_VALA;
namespace Disfluid {
[GtkTemplate (ui = "/eu/planete_kraus/Disfluid/src/disfluid.ui")]
- public class Window: Gtk.ApplicationWindow {
+ public class Window: Adw.ApplicationWindow {
[GtkChild]
private unowned Gtk.MenuButton window_menu;
- public Window (Gtk.Application app) {
+ public Window (Adw.Application app) {
this.application = app;
var menu_model = new GLib.Menu ();
menu_model.append(_ ("About disfluid"), "app.about");
diff --git a/src/vala/main.vala b/src/vala/main.vala
index f37c261..f39a94b 100644
--- a/src/vala/main.vala
+++ b/src/vala/main.vala
@@ -20,12 +20,9 @@ namespace Disfluid {
this.add_action (show_about_dialog);
GLib.SimpleAction run_unit_tests =
new GLib.SimpleAction ("run-unit-tests", null);
- Disfluid.UnitTestsReportDialog? dialog = null;
run_unit_tests.activate.connect (() => {
this.hold ();
- if (dialog == null) {
- dialog = new Disfluid.UnitTestsReportDialog (this);
- }
+ var dialog = new Disfluid.UnitTestsReportDialog (this);
dialog.present ();
this.release ();
});
diff --git a/src/vala/unit-tests-report.vala b/src/vala/unit-tests-report.vala
index a7bf63a..ec0d125 100644
--- a/src/vala/unit-tests-report.vala
+++ b/src/vala/unit-tests-report.vala
@@ -17,7 +17,7 @@ namespace Disfluid {
}
[GtkTemplate (ui = "/eu/planete_kraus/Disfluid/src/unit_tests_report.ui")]
- public class UnitTestsReport: Adw.Bin {
+ public class UnitTestsReportDialog: Adw.ApplicationWindow {
[GtkChild]
private unowned Gtk.Stack stack;
@@ -49,21 +49,18 @@ namespace Disfluid {
});
}
- public UnitTestsReport () {
+ public UnitTestsReportDialog (Gtk.Application app) {
+ this.application = app;
var s = new Gtk.Spinner ();
s.spinning = true;
var spinner = new Gtk.WidgetPaintable (s);
this.page_wait.paintable = spinner;
- }
- }
-
- public class UnitTestsReportDialog: Adw.ApplicationWindow {
- private UnitTestsReport report = new UnitTestsReport ();
-
- public UnitTestsReportDialog (Gtk.Application app) {
- this.application = app;
- this.content = report;
- this.report.start ();
+ this.start ();
+ GLib.SimpleAction rerun = new GLib.SimpleAction ("rerun-unit-tests", null);
+ rerun.activate.connect (() => {
+ this.start ();
+ });
+ this.add_action (rerun);
}
}
}