[gnome-system-monitor/wip/cdavis/libhandy: 40/42] interface, application: Use HdyApplicationWindow and HdyHeaderBar




commit c0722a6200ee5dd5c2446772650eebfe85adb81b
Author: Christopher Davis <brainblasted disroot org>
Date:   Thu Feb 4 18:21:17 2021 -0800

    interface, application: Use HdyApplicationWindow and HdyHeaderBar
    
    Rounded windows are in style. For consistency with other
    applications, we can use HdyWindow and HdyHeaderBar.

 data/interface.ui   | 138 ++++++++++++++++++++++++++--------------------------
 meson.build         |   1 +
 src/application.cpp |   3 ++
 src/application.h   |   3 +-
 src/interface.cpp   |  15 +++---
 src/meson.build     |   1 +
 6 files changed, 84 insertions(+), 77 deletions(-)
---
diff --git a/data/interface.ui b/data/interface.ui
index 8a4558ea..67ff5669 100644
--- a/data/interface.ui
+++ b/data/interface.ui
@@ -1,91 +1,91 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <interface>
   <!-- interface-requires gtk+ 3.12 -->
-  <object class="GtkApplicationWindow" id="main_window">
+  <object class="HdyApplicationWindow" id="main_window">
     <property name="can-focus">False</property>
     <property name="title" translatable="yes">System Monitor</property>
     <property name="default-width">440</property>
     <property name="default-height">495</property>
     <property name="icon-name">org.gnome.SystemMonitor</property>
-    <child type="titlebar">
-      <object class="GtkHeaderBar" id="header_bar">
+    <child>
+      <object class="GtkBox" id="main_box">
         <property name="visible">True</property>
-        <property name="show-close-button">True</property>
-        <style>
-          <class name="titlebar"/>
-        </style>
-        <child type="title">
-          <object class="GtkStackSwitcher" id="stack_switcher">
-            <property name="visible">True</property>
-            <property name="stack">stack</property>
-          </object>
-        </child>
-        <child>
-          <object class="GtkMenuButton" id="process_menu_button">
-            <property name="visible">True</property>
-            <property name="can-focus">True</property>
-            <property name="use-popover">True</property>
-            <property name="valign">center</property>
-            <property name="halign">end</property>
-            <property name="direction">none</property>
-            <accelerator key="F10" signal="clicked"/>
-            <style>
-              <class name="title-button"/>
-            </style>
-          </object>
-          <packing>
-            <property name="pack-type">end</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkMenuButton" id="window_menu_button">
-            <property name="visible">True</property>
-            <property name="can-focus">True</property>
-            <property name="use-popover">True</property>
-            <property name="valign">center</property>
-            <property name="halign">end</property>
-            <property name="direction">none</property>
-            <accelerator key="F10" signal="clicked"/>
-            <style>
-              <class name="title-button"/>
-            </style>
-          </object>
-          <packing>
-            <property name="pack-type">end</property>
-          </packing>
-        </child>
+        <property name="can-focus">False</property>
+        <property name="orientation">vertical</property>
+        <property name="width-request">620</property>
+        <property name="height-request">480</property>
         <child>
-          <object class="GtkToggleButton" id="search_button">
+          <object class="HdyHeaderBar" id="header_bar">
             <property name="visible">True</property>
-            <property name="active">False</property>
-            <property name="valign">center</property>
-            <property name="margin-start">6</property>
-            <property name="action-name">win.search</property>
-            <property name="action-target">@b false</property>
+            <property name="show-close-button">True</property>
             <style>
-              <class name="title-button"/>
+              <class name="titlebar"/>
             </style>
+            <child type="title">
+              <object class="GtkStackSwitcher" id="stack_switcher">
+                <property name="visible">True</property>
+                <property name="stack">stack</property>
+              </object>
+            </child>
+            <child>
+              <object class="GtkMenuButton" id="process_menu_button">
+                <property name="visible">True</property>
+                <property name="can-focus">True</property>
+                <property name="use-popover">True</property>
+                <property name="valign">center</property>
+                <property name="halign">end</property>
+                <property name="direction">none</property>
+                <accelerator key="F10" signal="clicked"/>
+                <style>
+                  <class name="title-button"/>
+                </style>
+              </object>
+              <packing>
+                <property name="pack-type">end</property>
+              </packing>
+            </child>
             <child>
-              <object class="GtkImage" id="search_image">
+              <object class="GtkMenuButton" id="window_menu_button">
                 <property name="visible">True</property>
-                <property name="icon-size">1</property>
-                <property name="icon-name">edit-find-symbolic</property>
+                <property name="can-focus">True</property>
+                <property name="use-popover">True</property>
+                <property name="valign">center</property>
+                <property name="halign">end</property>
+                <property name="direction">none</property>
+                <accelerator key="F10" signal="clicked"/>
+                <style>
+                  <class name="title-button"/>
+                </style>
               </object>
+              <packing>
+                <property name="pack-type">end</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkToggleButton" id="search_button">
+                <property name="visible">True</property>
+                <property name="active">False</property>
+                <property name="valign">center</property>
+                <property name="margin-start">6</property>
+                <property name="action-name">win.search</property>
+                <property name="action-target">@b false</property>
+                <style>
+                  <class name="title-button"/>
+                </style>
+                <child>
+                  <object class="GtkImage" id="search_image">
+                    <property name="visible">True</property>
+                    <property name="icon-size">1</property>
+                    <property name="icon-name">edit-find-symbolic</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="pack-type">end</property>
+              </packing>
             </child>
           </object>
-          <packing>
-            <property name="pack-type">end</property>
-          </packing>
         </child>
-      </object>
-    </child>
-    <child>
-      <object class="GtkBox" id="main_box">
-        <property name="visible">True</property>
-        <property name="can-focus">False</property>
-        <property name="orientation">vertical</property>
-        <property name="width-request">620</property>
-        <property name="height-request">480</property>
         <child>
           <object class="GtkStack" id="stack">
             <property name="visible">True</property>
diff --git a/meson.build b/meson.build
index d2eff466..a4c97f8d 100644
--- a/meson.build
+++ b/meson.build
@@ -48,6 +48,7 @@ gtk3    = dependency('gtk+-3.0',    version: '>=3.22.0')
 gtkmm   = dependency('gtkmm-3.0',   version: '>=3.3.18')
 atkmm   = dependency('atkmm-1.6',   version: '>=2.28')
 libgtop = dependency('libgtop-2.0', version: '>=2.37.0')
+libhandy = dependency('libhandy-1',  version: '>=1.0.0')
 librsvg = dependency('librsvg-2.0', version: '>=2.35')
 libxml  = dependency('libxml-2.0',  version: '>=2.0')
 
diff --git a/src/application.cpp b/src/application.cpp
index 72e852e0..e66408a1 100644
--- a/src/application.cpp
+++ b/src/application.cpp
@@ -6,6 +6,7 @@
 #include <glibtop/close.h>
 #include <glibtop/cpu.h>
 #include <glibtop/sysinfo.h>
+#include <libhandy-1/handy.h>
 #include <signal.h>
 #include <stdlib.h>
 
@@ -471,6 +472,8 @@ void GsmApplication::on_startup()
 {
     Gtk::Application::on_startup();
 
+    hdy_init();
+
     load_resources ();
 
     Glib::RefPtr<Gio::SimpleAction> action;
diff --git a/src/application.h b/src/application.h
index 8961c5c4..8f1c6224 100644
--- a/src/application.h
+++ b/src/application.h
@@ -4,6 +4,7 @@
 
 #include <gtkmm.h>
 #include <glibtop/cpu.h>
+#include <libhandy-1/handy.h>
 
 #include <algorithm>
 
@@ -239,7 +240,7 @@ public:
     PrettyTable      *pretty_table;
 
     Glib::RefPtr<Gio::Settings> settings;
-    GtkApplicationWindow *main_window;
+    HdyApplicationWindow *main_window;
 
     unsigned         frequency;
 
diff --git a/src/interface.cpp b/src/interface.cpp
index 8f25555d..48b42d0b 100644
--- a/src/interface.cpp
+++ b/src/interface.cpp
@@ -22,6 +22,7 @@
 
 #include <glib/gi18n.h>
 #include <gtk/gtk.h>
+#include <libhandy-1/handy.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <unistd.h>
@@ -430,7 +431,7 @@ static void
 on_activate_keyboard_shortcuts (GSimpleAction *, GVariant *, gpointer data)
 {
     GsmApplication *app = (GsmApplication *) data;
-    gtk_widget_show (GTK_WIDGET (gtk_application_window_get_help_overlay (app->main_window)));
+    gtk_widget_show (GTK_WIDGET (gtk_application_window_get_help_overlay (GTK_APPLICATION_WINDOW 
(app->main_window))));
 }
 
 static void
@@ -690,7 +691,7 @@ cb_main_window_state_changed (GtkWidget *window, GdkEventWindowState *event, gpo
 void
 create_main_window (GsmApplication *app)
 {
-    GtkApplicationWindow *main_window;
+    HdyApplicationWindow *main_window;
     GtkStack *stack;
     GMenuModel *window_menu_model;
     GMenuModel *process_menu_model;
@@ -706,24 +707,24 @@ create_main_window (GsmApplication *app)
     gtk_builder_add_from_resource (builder, "/org/gnome/gnome-system-monitor/data/menus.ui", NULL);
     gtk_builder_add_from_resource (builder, "/org/gnome/gnome-system-monitor/gtk/help-overlay.ui", NULL);
 
-    main_window = GTK_APPLICATION_WINDOW (gtk_builder_get_object (builder, "main_window"));
+    main_window = HDY_APPLICATION_WINDOW (gtk_builder_get_object (builder, "main_window"));
     gtk_window_set_application (GTK_WINDOW (main_window), app->gobj());
     gtk_widget_set_name (GTK_WIDGET (main_window), "gnome-system-monitor");
     app->main_window = main_window;
 
-    gtk_application_window_set_help_overlay (app->main_window, 
+    gtk_application_window_set_help_overlay (GTK_APPLICATION_WINDOW (app->main_window),
                                              GTK_SHORTCUTS_WINDOW (gtk_builder_get_object (builder, 
"help_overlay")));
 
     session = g_getenv ("XDG_CURRENT_DESKTOP");
     if (session && !strstr (session, "GNOME")){
         GtkBox *mainbox;
-        GtkHeaderBar *headerbar;
+        HdyHeaderBar *headerbar;
 
         mainbox = GTK_BOX (gtk_builder_get_object (builder, "main_box"));
-        headerbar = GTK_HEADER_BAR (gtk_builder_get_object (builder, "header_bar"));
+        headerbar = HDY_HEADER_BAR (gtk_builder_get_object (builder, "header_bar"));
         gtk_style_context_remove_class (gtk_widget_get_style_context (GTK_WIDGET (headerbar)), "titlebar");
         gtk_window_set_titlebar (GTK_WINDOW (main_window), NULL);
-        gtk_header_bar_set_show_close_button (headerbar, FALSE);
+        hdy_header_bar_set_show_close_button (headerbar, FALSE);
         gtk_box_pack_start (mainbox, GTK_WIDGET (headerbar), FALSE, FALSE, 0);
     }
 
diff --git a/src/meson.build b/src/meson.build
index 3ff36b5f..6b537363 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -97,6 +97,7 @@ executable(meson.project_name(),
     gtkmm,
     atkmm,
     libgtop,
+    libhandy,
     libsystemd,
     libwnck,
   ],


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]