[retro-gtk/wip/aplazas/demo] Add retro-gtk-demo



commit bdcc27aeb7ea34b5c7655d017b1544f766b4fc41
Author: Adrien Plazas <kekun plazas laposte net>
Date:   Wed Apr 5 08:56:21 2017 +0200

    Add retro-gtk-demo
    
    Add the a demo application, serving as an example of how to use
    retro-gtk and allowing to test it.

 Makefile.am                                      |    2 +-
 configure.ac                                     |    2 +
 demos/Makefile.am                                |    3 +
 demos/retro-gtk-demo/Makefile.am                 |   34 ++++++++
 demos/retro-gtk-demo/main.c                      |   20 +++++
 demos/retro-gtk-demo/org.gnome.RetroGtkDemo.json |   44 ++++++++++
 demos/retro-gtk-demo/retro-demo-application.c    |   96 ++++++++++++++++++++++
 demos/retro-gtk-demo/retro-demo-application.h    |   18 ++++
 demos/retro-gtk-demo/retro-demo-window.c         |   82 ++++++++++++++++++
 demos/retro-gtk-demo/retro-demo-window.h         |   19 ++++
 10 files changed, 319 insertions(+), 1 deletions(-)
---
diff --git a/Makefile.am b/Makefile.am
index 02b3f72..9a23d7c 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -2,7 +2,7 @@
 
 NULL =
 
-SUBDIRS = retro-gtk po
+SUBDIRS = retro-gtk demos po
 
 dist_doc_DATA = \
        README \
diff --git a/configure.ac b/configure.ac
index d40e67e..789abf2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -48,6 +48,8 @@ AC_SUBST(retro_gtk_pkg_modules)
 
 AC_OUTPUT([
 Makefile
+demos/Makefile
+demos/retro-gtk-demo/Makefile
 retro-gtk/retro-gtk-0.10.pc
 retro-gtk/Makefile
 po/Makefile.in])
diff --git a/demos/Makefile.am b/demos/Makefile.am
new file mode 100644
index 0000000..10b0945
--- /dev/null
+++ b/demos/Makefile.am
@@ -0,0 +1,3 @@
+SUBDIRS = retro-gtk-demo
+
+-include $(top_srcdir)/git.mk
diff --git a/demos/retro-gtk-demo/Makefile.am b/demos/retro-gtk-demo/Makefile.am
new file mode 100644
index 0000000..c603fcd
--- /dev/null
+++ b/demos/retro-gtk-demo/Makefile.am
@@ -0,0 +1,34 @@
+NULL =
+
+bin_PROGRAMS = retro-gtk-demo
+
+retro_gtk_demo_SOURCES = \
+       main.c \
+       retro-demo-application.c \
+       retro-demo-window.c \
+       $(NULL)
+
+retro_gtk_demo_CFLAGS = \
+       $(RETRO_GTK_CFLAGS) \
+       $(GAMEPADS_CFLAGS) \
+       $(UDEV_CFLAGS) \
+       -DGNOMELOCALEDIR=\""$(datadir)/locale"\" \
+       -DGAMES_PLUGINS_DIR=\"$(libdir)/gnome-games/plugins\" \
+       $(NULL)
+
+retro_gtk_demo_CPPFLAGS = \
+       -I$(top_srcdir) \
+       -I$(top_builddir)/retro-gtk \
+       -DRETRO_GTK_USE_UNSTABLE_API \
+       $(NULL)
+
+retro_gtk_demo_DEPENDENCIES = \
+       $(top_builddir)/retro-gtk/libretro-gtk.la \
+       $(NULL)
+
+retro_gtk_demo_LDADD = \
+       $(RETRO_GTK_LIBS) \
+       $(top_builddir)/retro-gtk/libretro-gtk.la \
+       $(NULL)
+
+-include $(top_srcdir)/git.mk
diff --git a/demos/retro-gtk-demo/main.c b/demos/retro-gtk-demo/main.c
new file mode 100644
index 0000000..597cfe8
--- /dev/null
+++ b/demos/retro-gtk-demo/main.c
@@ -0,0 +1,20 @@
+// This file is part of retro-gtk. License: GPLv3
+
+#include "retro-demo-application.h"
+
+gint
+main (gint   argc,
+      gchar *argv[])
+{
+  RetroDemoApplication *app;
+  int status;
+
+  g_set_prgname ("retro-gtk-demo");
+  g_set_application_name ("org.gnome.RetroGtkDemo");
+
+  app = retro_demo_application_new();
+  status = g_application_run (G_APPLICATION (app), argc, argv);
+  g_object_unref (app);
+
+  return status;
+}
diff --git a/demos/retro-gtk-demo/org.gnome.RetroGtkDemo.json 
b/demos/retro-gtk-demo/org.gnome.RetroGtkDemo.json
new file mode 100644
index 0000000..0ba3233
--- /dev/null
+++ b/demos/retro-gtk-demo/org.gnome.RetroGtkDemo.json
@@ -0,0 +1,44 @@
+{
+    "app-id": "org.gnome.RetroGtkDemo",
+    "runtime": "org.gnome.Platform",
+    "runtime-version": "master",
+    "sdk": "org.gnome.Sdk",
+    "command": "retro-gtk-demo",
+    "tags": ["nightly"],
+    "desktop-file-name-prefix": "(Nightly) ",
+    "finish-args": [
+        /* X11 + XShm access */
+        "--share=ipc", "--socket=x11",
+        /* Wayland access */
+        "--socket=wayland",
+        /* PulseAudio access */
+        "--device=dri", "--socket=pulseaudio",
+        /* Needed to find the ROMs */
+        "--filesystem=home:ro"
+    ],
+    "build-options" : {
+        "cflags": "-O2 -g",
+        "cxxflags": "-O2 -g"
+    },
+    "cleanup": ["/include", "/lib/pkgconfig",
+                "/share/pkgconfig", "/share/aclocal",
+                "/man", "/share/man", "/share/gtk-doc",
+                "*.la", "*.a",
+                "/lib/girepository-1.0",
+                "/share/dbus-1", "/share/doc", "/share/gir-1.0"
+    ],
+    "modules": [
+        {
+            "name": "retro-gtk",
+            "config-opts": [
+                "--disable-static"
+            ],
+            "sources": [
+                {
+                    "type": "git",
+                    "url": "https://git.gnome.org/browse/retro-gtk";
+                }
+            ]
+        }
+    ]
+}
diff --git a/demos/retro-gtk-demo/retro-demo-application.c b/demos/retro-gtk-demo/retro-demo-application.c
new file mode 100644
index 0000000..e8feb5f
--- /dev/null
+++ b/demos/retro-gtk-demo/retro-demo-application.c
@@ -0,0 +1,96 @@
+// This file is part of retro-gtk. License: GPLv3
+
+#include "retro-demo-application.h"
+
+#include "retro-demo-window.h"
+
+struct _RetroDemoApplication
+{
+  GtkApplication parent_instance;
+};
+
+G_DEFINE_TYPE (RetroDemoApplication, retro_demo_application, GTK_TYPE_APPLICATION)
+
+enum {
+  PROP_0,
+  N_PROPS
+};
+
+static GParamSpec *properties [N_PROPS];
+
+RetroDemoApplication *
+retro_demo_application_new (void)
+{
+  return g_object_new (RETRO_TYPE_DEMO_APPLICATION, NULL);
+}
+
+static void
+retro_demo_application_finalize (GObject *object)
+{
+  RetroDemoApplication *self = (RetroDemoApplication *)object;
+
+  G_OBJECT_CLASS (retro_demo_application_parent_class)->finalize (object);
+}
+
+static void
+retro_demo_application_get_property (GObject    *object,
+                                     guint       prop_id,
+                                     GValue     *value,
+                                     GParamSpec *pspec)
+{
+  RetroDemoApplication *self = RETRO_DEMO_APPLICATION (object);
+
+  switch (prop_id)
+    {
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    }
+}
+
+static void
+retro_demo_application_set_property (GObject      *object,
+                                     guint         prop_id,
+                                     const GValue *value,
+                                     GParamSpec   *pspec)
+{
+  RetroDemoApplication *self = RETRO_DEMO_APPLICATION (object);
+
+  switch (prop_id)
+    {
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    }
+}
+
+static void
+retro_demo_application_real_activate (GApplication* base)
+{
+  GtkSettings *settings;
+  RetroDemoWindow *window;
+
+  settings = gtk_settings_get_default ();
+  g_object_set (G_OBJECT (settings), "gtk-application-prefer-dark-theme", TRUE, NULL);
+
+  window = retro_demo_window_new ();
+  gtk_widget_show (GTK_WIDGET (window));
+  gtk_application_add_window (GTK_APPLICATION (base), GTK_WINDOW (window));
+}
+
+static void
+retro_demo_application_class_init (RetroDemoApplicationClass *klass)
+{
+  GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+  object_class->finalize = retro_demo_application_finalize;
+  object_class->get_property = retro_demo_application_get_property;
+  object_class->set_property = retro_demo_application_set_property;
+
+  G_APPLICATION_CLASS (klass)->activate = retro_demo_application_real_activate;
+}
+
+static void
+retro_demo_application_init (RetroDemoApplication *self)
+{
+  g_application_set_application_id (G_APPLICATION (self), "org.gnome.RetroGtkDemo");
+  g_application_set_flags (G_APPLICATION (self), G_APPLICATION_FLAGS_NONE);
+}
diff --git a/demos/retro-gtk-demo/retro-demo-application.h b/demos/retro-gtk-demo/retro-demo-application.h
new file mode 100644
index 0000000..40c7abc
--- /dev/null
+++ b/demos/retro-gtk-demo/retro-demo-application.h
@@ -0,0 +1,18 @@
+// This file is part of retro-gtk. License: GPLv3
+
+#ifndef RETRO_DEMO_APPLICATION_H
+#define RETRO_DEMO_APPLICATION_H
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+#define RETRO_TYPE_DEMO_APPLICATION (retro_demo_application_get_type())
+
+G_DECLARE_FINAL_TYPE (RetroDemoApplication, retro_demo_application, RETRO, DEMO_APPLICATION, GtkApplication)
+
+RetroDemoApplication *retro_demo_application_new (void);
+
+G_END_DECLS
+
+#endif /* RETRO_DEMO_APPLICATION_H */
diff --git a/demos/retro-gtk-demo/retro-demo-window.c b/demos/retro-gtk-demo/retro-demo-window.c
new file mode 100644
index 0000000..d60a505
--- /dev/null
+++ b/demos/retro-gtk-demo/retro-demo-window.c
@@ -0,0 +1,82 @@
+// This file is part of retro-gtk. License: GPLv3
+
+#include "retro-demo-window.h"
+
+struct _RetroDemoWindow
+{
+  GtkApplicationWindow parent_instance;
+  GtkHeaderBar *header_bar;
+};
+
+G_DEFINE_TYPE (RetroDemoWindow, retro_demo_window, GTK_TYPE_APPLICATION_WINDOW)
+
+enum {
+  PROP_0,
+  N_PROPS
+};
+
+static GParamSpec *properties [N_PROPS];
+
+RetroDemoWindow *
+retro_demo_window_new (void)
+{
+  return g_object_new (RETRO_TYPE_DEMO_WINDOW, NULL);
+}
+
+static void
+retro_demo_window_finalize (GObject *object)
+{
+  RetroDemoWindow *self = (RetroDemoWindow *)object;
+
+  G_OBJECT_CLASS (retro_demo_window_parent_class)->finalize (object);
+}
+
+static void
+retro_demo_window_get_property (GObject    *object,
+                                guint       prop_id,
+                                GValue     *value,
+                                GParamSpec *pspec)
+{
+  RetroDemoWindow *self = RETRO_DEMO_WINDOW (object);
+
+  switch (prop_id)
+    {
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    }
+}
+
+static void
+retro_demo_window_set_property (GObject      *object,
+                                guint         prop_id,
+                                const GValue *value,
+                                GParamSpec   *pspec)
+{
+  RetroDemoWindow *self = RETRO_DEMO_WINDOW (object);
+
+  switch (prop_id)
+    {
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    }
+}
+
+static void
+retro_demo_window_class_init (RetroDemoWindowClass *klass)
+{
+  GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+  object_class->finalize = retro_demo_window_finalize;
+  object_class->get_property = retro_demo_window_get_property;
+  object_class->set_property = retro_demo_window_set_property;
+}
+
+static void
+retro_demo_window_init (RetroDemoWindow *self)
+{
+  self->header_bar = gtk_header_bar_new ();
+  gtk_widget_show (GTK_WIDGET (self->header_bar));
+  gtk_header_bar_set_show_close_button (self->header_bar, TRUE);
+
+  gtk_window_set_titlebar (GTK_WINDOW (self), GTK_WIDGET (self->header_bar));
+}
diff --git a/demos/retro-gtk-demo/retro-demo-window.h b/demos/retro-gtk-demo/retro-demo-window.h
new file mode 100644
index 0000000..2f6fae8
--- /dev/null
+++ b/demos/retro-gtk-demo/retro-demo-window.h
@@ -0,0 +1,19 @@
+// This file is part of retro-gtk. License: GPLv3
+
+#ifndef RETRO_DEMO_WINDOW_H
+#define RETRO_DEMO_WINDOW_H
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+#define RETRO_TYPE_DEMO_WINDOW (retro_demo_window_get_type())
+
+G_DECLARE_FINAL_TYPE (RetroDemoWindow, retro_demo_window, RETRO, DEMO_WINDOW, GtkApplicationWindow)
+
+RetroDemoWindow *retro_demo_window_new (void);
+
+G_END_DECLS
+
+#endif /* RETRO_DEMO_WINDOW_H */
+


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