[gssdp/wip/modern-gtk: 1/6] wip: Add ApplicationWindow




commit 014a6302bb4361fd5c9cd34144a11d00af6bbc7b
Author: Jens Georg <mail jensge org>
Date:   Tue Oct 6 23:16:16 2020 +0200

    wip: Add ApplicationWindow

 tools/gssdp-device-sniffer.c             | 31 ++++++++++++++++++++++++++++++-
 tools/gssdp-device-sniffer.gresource.xml |  1 +
 tools/main-window.c                      | 28 ++++++++++++++++++++++++++++
 tools/main-window.h                      | 18 ++++++++++++++++++
 tools/main-window.ui                     | 14 ++++++++++++++
 tools/meson.build                        |  2 ++
 6 files changed, 93 insertions(+), 1 deletion(-)
---
diff --git a/tools/gssdp-device-sniffer.c b/tools/gssdp-device-sniffer.c
index 4020130..d30687e 100644
--- a/tools/gssdp-device-sniffer.c
+++ b/tools/gssdp-device-sniffer.c
@@ -17,6 +17,8 @@
  * Boston, MA 02110-1301, USA.
  */
 
+#include "main-window.h"
+
 #include <libgssdp/gssdp.h>
 #include <libgssdp/gssdp-client-private.h>
 #include <libsoup/soup.h>
@@ -717,11 +719,38 @@ deinit_upnp (void)
         g_object_unref (client);
 }
 
+static void
+on_activate (GtkApplication *app)
+{
+        GtkWindow *window;
+
+        window = gtk_application_get_active_window (app);
+        if (window == NULL) {
+                window = g_object_new (GSSDP_DEVICE_SNIFFER_TYPE_MAIN_WINDOW,
+                                       "application",
+                                       app,
+                                       NULL);
+        }
+
+        gtk_window_present (window);
+}
+
 gint
 main (gint argc, gchar *argv[])
 {
         g_type_ensure (G_TYPE_DATE_TIME);
 
+        GtkApplication *app =
+                gtk_application_new ("org.gupnp.GSSDP.DeviceSniffer",
+                                     G_APPLICATION_FLAGS_NONE);
+
+        g_signal_connect (G_OBJECT (app),
+                          "activate",
+                          G_CALLBACK (on_activate),
+                          NULL);
+
+        return g_application_run (G_APPLICATION (app), argc, argv);
+#if 0
         if (!init_ui (&argc, &argv)) {
            return -2;
         }
@@ -734,6 +763,6 @@ main (gint argc, gchar *argv[])
        
         deinit_upnp ();
         deinit_ui ();
-        
+#endif
         return 0;
 }
diff --git a/tools/gssdp-device-sniffer.gresource.xml b/tools/gssdp-device-sniffer.gresource.xml
index ec8dc93..ee9bf87 100644
--- a/tools/gssdp-device-sniffer.gresource.xml
+++ b/tools/gssdp-device-sniffer.gresource.xml
@@ -2,6 +2,7 @@
 <gresources>
   <gresource prefix="/org/gupnp/GSSDP">
     <file preprocess="xml-stripblanks" alias="DeviceSniffer.ui">gssdp-device-sniffer.ui</file>
+    <file preprocess="xml-stripblanks" alias="MainWindow.ui">main-window.ui</file>
     <file alias="WindowMenu.ui">window-menu.ui</file>
   </gresource>
 </gresources>
diff --git a/tools/main-window.c b/tools/main-window.c
new file mode 100644
index 0000000..51cd485
--- /dev/null
+++ b/tools/main-window.c
@@ -0,0 +1,28 @@
+// SPDX-License-Identifier: LGPL-2.1-or-later
+
+#include "main-window.h"
+
+struct _GSSDPDeviceSnifferMainWindow {
+        GtkApplicationWindow parent_instance;
+};
+
+G_DEFINE_TYPE (GSSDPDeviceSnifferMainWindow,
+               gssdp_device_sniffer_main_window,
+               GTK_TYPE_APPLICATION_WINDOW)
+
+static void
+gssdp_device_sniffer_main_window_class_init (
+        GSSDPDeviceSnifferMainWindowClass *klass)
+{
+        GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+
+        gtk_widget_class_set_template_from_resource (
+                widget_class,
+                "/org/gupnp/GSSDP/MainWindow.ui");
+}
+
+static void
+gssdp_device_sniffer_main_window_init (GSSDPDeviceSnifferMainWindow *self)
+{
+        gtk_widget_init_template (GTK_WIDGET (self));
+}
diff --git a/tools/main-window.h b/tools/main-window.h
new file mode 100644
index 0000000..ba8877f
--- /dev/null
+++ b/tools/main-window.h
@@ -0,0 +1,18 @@
+// SPDX-License-Identifier: LGPL-2.1-or-later
+
+#pragma once
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+#define GSSDP_DEVICE_SNIFFER_TYPE_MAIN_WINDOW                                  \
+        (gssdp_device_sniffer_main_window_get_type ())
+
+G_DECLARE_FINAL_TYPE (GSSDPDeviceSnifferMainWindow,
+                      gssdp_device_sniffer_main_window,
+                      GSSDP_DEVICE_SNIFFER,
+                      MAIN_WINDOW,
+                      GtkApplicationWindow)
+
+G_END_DECLS
diff --git a/tools/main-window.ui b/tools/main-window.ui
new file mode 100644
index 0000000..41a24f3
--- /dev/null
+++ b/tools/main-window.ui
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.2 -->
+<interface>
+  <requires lib="gtk+" version="3.20"/>
+  <template class="GSSDPDeviceSnifferMainWindow" parent="GtkApplicationWindow">
+    <property name="can_focus">False</property>
+    <child type="titlebar">
+      <placeholder/>
+    </child>
+    <child>
+      <placeholder/>
+    </child>
+  </template>
+</interface>
diff --git a/tools/meson.build b/tools/meson.build
index bfd44d2..59c5e74 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -7,6 +7,8 @@ sniffer = executable(
     'gssdp-device-sniffer',
     [
         'gssdp-device-sniffer.c',
+        'main-window.c',
+        'main-window.h',
         resource
     ],
     dependencies : [gssdp, gtk],


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