[gssdp/wip/modern-gtk: 1/6] wip: Add ApplicationWindow
- From: Jens Georg <jensgeorg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gssdp/wip/modern-gtk: 1/6] wip: Add ApplicationWindow
- Date: Mon, 12 Apr 2021 17:56:40 +0000 (UTC)
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]