[gnome-games/wip/exalm/platform-preferences: 6/7] ui: Add PreferencesPageRetroPlatform
- From: Alexander Mikhaylenko <alexm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-games/wip/exalm/platform-preferences: 6/7] ui: Add PreferencesPageRetroPlatform
- Date: Wed, 26 Sep 2018 18:09:28 +0000 (UTC)
commit 909ea1678a10c643d66cb31f3dc918495dcb36c1
Author: Alexander Mikhaylenko <exalm7659 gmail com>
Date: Tue Sep 25 23:08:16 2018 +0500
ui: Add PreferencesPageRetroPlatform
data/org.gnome.Games.gresource.xml | 1 +
data/ui/preferences-page-retro-platform.ui | 46 ++++++++++++++++++++
po/POTFILES.in | 1 +
src/meson.build | 1 +
src/ui/preferences-page-retro-platform.vala | 66 +++++++++++++++++++++++++++++
5 files changed, 115 insertions(+)
---
diff --git a/data/org.gnome.Games.gresource.xml b/data/org.gnome.Games.gresource.xml
index 2691ba7e..defa5cd5 100644
--- a/data/org.gnome.Games.gresource.xml
+++ b/data/org.gnome.Games.gresource.xml
@@ -34,6 +34,7 @@
<file preprocess="xml-stripblanks">ui/preferences-page-dummy-platform.ui</file>
<file preprocess="xml-stripblanks">ui/preferences-page-plugins.ui</file>
<file preprocess="xml-stripblanks">ui/preferences-page-plugins-item.ui</file>
+ <file preprocess="xml-stripblanks">ui/preferences-page-retro-platform.ui</file>
<file preprocess="xml-stripblanks">ui/preferences-page-video.ui</file>
<file preprocess="xml-stripblanks">ui/preferences-sidebar.ui</file>
<file preprocess="xml-stripblanks">ui/preferences-sidebar-item.ui</file>
diff --git a/data/ui/preferences-page-retro-platform.ui b/data/ui/preferences-page-retro-platform.ui
new file mode 100644
index 00000000..ae6c9a78
--- /dev/null
+++ b/data/ui/preferences-page-retro-platform.ui
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <!-- interface-requires gtk+ 3.16 -->
+ <template class="GamesPreferencesPageRetroPlatform" parent="GtkBin">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkScrolledWindow">
+ <property name="visible">true</property>
+ <property name="hscrollbar-policy">never</property>
+ <child>
+ <object class="GtkViewport">
+ <property name="visible">true</property>
+ <child>
+ <object class="HdyColumn">
+ <property name="visible">True</property>
+ <property name="expand">True</property>
+ <property name="maximum_width">600</property>
+ <property name="linear-growth-width">300</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="orientation">vertical</property>
+ <property name="margin">12</property>
+ <property name="spacing">12</property>
+ <child>
+ <object class="GtkFrame">
+ <property name="visible">true</property>
+ <property name="shadow-type">in</property>
+ <child>
+ <object class="GtkListBox" id="core_list_box">
+ <property name="selection-mode">none</property>
+ <property name="visible">true</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </template>
+</interface>
diff --git a/po/POTFILES.in b/po/POTFILES.in
index c4aa492b..6140e3ec 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -14,6 +14,7 @@ data/ui/media-menu-button.ui
data/ui/preferences-page-controllers.ui
data/ui/preferences-page-dummy-platform.ui
data/ui/preferences-page-plugins.ui
+data/ui/preferences-page-retro-platform.ui
data/ui/preferences-page-video.ui
data/ui/preferences-subpage-gamepad.ui
data/ui/preferences-subpage-keyboard.ui
diff --git a/src/meson.build b/src/meson.build
index c04ac402..8cfb6ac2 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -160,6 +160,7 @@ vala_sources = [
'ui/preferences-page-dummy-platform.vala',
'ui/preferences-page-plugins.vala',
'ui/preferences-page-plugins-item.vala',
+ 'ui/preferences-page-retro-platform.vala',
'ui/preferences-page-video.vala',
'ui/preferences-sidebar.vala',
'ui/preferences-sidebar-item.vala',
diff --git a/src/ui/preferences-page-retro-platform.vala b/src/ui/preferences-page-retro-platform.vala
new file mode 100644
index 00000000..192e00e9
--- /dev/null
+++ b/src/ui/preferences-page-retro-platform.vala
@@ -0,0 +1,66 @@
+// This file is part of GNOME Games. License: GPL-3.0+.
+
+[GtkTemplate (ui = "/org/gnome/Games/ui/preferences-page-retro-platform.ui")]
+private class Games.PreferencesPageRetroPlatform: Gtk.Bin, PreferencesPage {
+ public RetroPlatform platform { get; construct set; }
+
+ public PreferencesSubpage subpage { get; protected set; }
+
+ private string _title;
+ public string title {
+ get { return _title; }
+ }
+
+ public PreferencesPageCategory category {
+ get { return PreferencesPageCategory.PLATFORMS; }
+ }
+
+ [GtkChild]
+ private Gtk.ListBox core_list_box;
+
+ public PreferencesPageRetroPlatform (RetroPlatform platform) {
+ this.platform = platform;
+ _title = platform.get_name ();
+
+ build_core_list ();
+ }
+
+ private void build_core_list () {
+ var modules = new Retro.ModuleQuery (true);
+ foreach (var core_descriptor in modules) {
+ try {
+ var platform_id = platform.get_id ();
+ var mime_types = platform.get_mime_types ();
+
+ if (!core_descriptor.get_is_emulator ())
+ continue;
+
+ if (!core_descriptor.has_platform (platform_id))
+ continue;
+
+ if (!core_descriptor.get_platform_supports_mime_types (platform_id,
mime_types))
+ continue;
+
+ if (core_descriptor.get_module_file () == null)
+ continue;
+
+ add_core_descriptor (core_descriptor);
+ }
+ catch (Error e) {
+ debug (e.message);
+ }
+ }
+ }
+
+ private void add_core_descriptor (Retro.CoreDescriptor core_descriptor) throws Error {
+ var name = core_descriptor.get_name ();
+
+ var item = new CheckmarkItem (name);
+ var row = new Gtk.ListBoxRow ();
+ row.add (item);
+ core_list_box.add (row);
+
+ item.show ();
+ row.show ();
+ }
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]