[gnome-games/wip/abhinavsingh/keyboard-config: 3/6] ui: Add KeyboardTester
- From: Abhinav Singh <abhinavsingh src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-games/wip/abhinavsingh/keyboard-config: 3/6] ui: Add KeyboardTester
- Date: Sun, 27 Aug 2017 23:20:32 +0000 (UTC)
commit cb1468dd83aba679f98d72bc0489d75f2eca8e77
Author: theawless <theawless gmail com>
Date: Mon Aug 28 04:34:42 2017 +0530
ui: Add KeyboardTester
This allows the user to test their keyboard by highlighting GamepadView
widget on user inputs.
data/Makefile.am | 1 +
data/org.gnome.Games.gresource.xml | 1 +
data/ui/keyboard-tester.ui | 18 +++++++++++++++
src/Makefile.am | 1 +
src/ui/keyboard-tester.vala | 43 ++++++++++++++++++++++++++++++++++++
5 files changed, 64 insertions(+), 0 deletions(-)
---
diff --git a/data/Makefile.am b/data/Makefile.am
index fff2a95..73459a4 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -41,6 +41,7 @@ EXTRA_DIST = \
ui/gamepad-mapper.ui \
ui/gamepad-tester.ui \
ui/game-icon-view.ui \
+ ui/keyboard-tester.ui \
ui/media-menu-button.ui \
ui/media-selector.ui \
ui/preferences-page-controllers.ui \
diff --git a/data/org.gnome.Games.gresource.xml b/data/org.gnome.Games.gresource.xml
index b8ba7b5..680d4c4 100644
--- a/data/org.gnome.Games.gresource.xml
+++ b/data/org.gnome.Games.gresource.xml
@@ -20,6 +20,7 @@
<file preprocess="xml-stripblanks">ui/gamepad-mapper.ui</file>
<file preprocess="xml-stripblanks">ui/gamepad-tester.ui</file>
<file preprocess="xml-stripblanks">ui/game-icon-view.ui</file>
+ <file preprocess="xml-stripblanks">ui/keyboard-tester.ui</file>
<file preprocess="xml-stripblanks">ui/media-menu-button.ui</file>
<file preprocess="xml-stripblanks">ui/media-selector.ui</file>
<file preprocess="xml-stripblanks">ui/preferences-page-controllers.ui</file>
diff --git a/data/ui/keyboard-tester.ui b/data/ui/keyboard-tester.ui
new file mode 100644
index 0000000..4320ee7
--- /dev/null
+++ b/data/ui/keyboard-tester.ui
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <template class="GamesKeyboardTester" parent="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GamesGamepadView" id="gamepad_view">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">fill</property>
+ <property name="valign">fill</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ </object>
+ </child>
+ </template>
+</interface>
diff --git a/src/Makefile.am b/src/Makefile.am
index ee14493..cc75910 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -156,6 +156,7 @@ gnome_games_SOURCES = \
ui/game-icon-view.vala \
ui/game-thumbnail.vala \
ui/gamepad-view-configuration.vala \
+ ui/keyboard-tester.vala \
ui/media-selector.vala \
ui/media-menu-button.vala \
ui/preferences-page.vala \
diff --git a/src/ui/keyboard-tester.vala b/src/ui/keyboard-tester.vala
new file mode 100644
index 0000000..c409308
--- /dev/null
+++ b/src/ui/keyboard-tester.vala
@@ -0,0 +1,43 @@
+// This file is part of GNOME Games. License: GPL-3.0+.
+
+[GtkTemplate (ui = "/org/gnome/Games/ui/keyboard-tester.ui")]
+private class Games.KeyboardTester : Gtk.Box {
+ [GtkChild]
+ private GamepadView gamepad_view;
+
+ public Retro.VirtualGamepad keyboard { get; set; }
+
+ private uint update_gamepad_view_timeout_id;
+
+ public KeyboardTester (GamepadViewConfiguration configuration) {
+ try {
+ gamepad_view.set_configuration (configuration);
+ }
+ catch (Error e) {
+ critical ("Could not set up gamepad view: %s", e.message);
+ }
+ }
+
+ public void start () {
+ gamepad_view.reset ();
+ update_gamepad_view_timeout_id = GLib.Timeout.add (10, update_gamepad_view);
+ }
+
+ private bool update_gamepad_view () {
+ if (gamepad_view == null)
+ return false;
+
+ for (var i = 0; i < Retro.JoypadId.COUNT; ++i) {
+ var joypad_id = (Retro.JoypadId) i;
+ var highlight = keyboard.get_button_pressed (joypad_id);
+ var code = KeyboardMappingBuilder.event_code_from_joypad_id (joypad_id);
+ gamepad_view.highlight ({ EventCode.EV_KEY, code }, highlight);
+ }
+
+ return true;
+ }
+
+ public void stop () {
+ Source.remove (update_gamepad_view_timeout_id);
+ }
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]