...
 
Commits (211)
......@@ -39,15 +39,15 @@ Vala projects.
out this.sort_criteria);
* ''Prefer'' descriptive names over abbreviations (unless well-known)
& shortening of names. E.g discoverer over disco.
& shortening of names. E.g. discoverer over disco.
* Use 'var' in variable declarations wherever possible.
* Don't use var when declaring a number from a litteral.
* Don't use var when declaring a number from a literal.
* Use 'as' to cast wherever possible.
* Single statments inside if/else must not be enclosed by '{}'.
* Single statements inside if/else must not be enclosed by '{}'.
* The more you provide docs in comments, but at the same time avoid
over-documenting. Here is an example of useless comment:
......@@ -56,7 +56,7 @@ Vala projects.
fetch_the_document ();
* Each class should go in a separate .vala file & named according to
the class in it, in spinal-case. E.g Games.GameSource class should
the class in it, in spinal-case. E.g. Games.GameSource class should
go under game-source.vala.
* Don't use any 'using' statement.
......@@ -74,7 +74,7 @@ Vala projects.
* Prefer properties over methods whenever possible.
* Declare properties getters befor the setters.
* Declare properties getters before the setters.
* Add a newline to break the code in logical pieces.
......@@ -108,7 +108,7 @@ Vala projects.
* Add a newline at the end of each file.
* If a function returns several equally important values, they should
all be given as out arguments. IOW, prefer this:
all be given as out arguments. In other words, prefer this:
void get_a_and_b (out string a, out string b)
......@@ -116,11 +116,11 @@ Vala projects.
* Use methods as callbacks to signals.
* ''Prefer'' operators over methods when possible. E.g prefer
* ''Prefer'' operators over methods when possible. E.g. prefer
'collection[key]' over 'collection.get(key)'.
* If a function or a method can be used as a callback, don't enclose
it in a lambda. E.g do 'do (callback)' rather than
it in a lambda. E.g. do 'do (callback)' rather than
'do (() => callback ())'.
* Limit the try blocks to the code throwing the error.
......@@ -140,7 +140,7 @@ Vala projects.
same as the previous closing brace.
* Internationalize error messages, which implies using printf style
string contruction rather than string templates.
string construction rather than string templates.
* Append the original error message to the one you are building when
refining an error.
......@@ -152,9 +152,9 @@ projects.
* ''Prefer'' lines of less than <= 80 columns
* Functions with no parameter should state it with the 'void' keyword.
* Functions with no parameters should state it with the 'void' keyword.
* In C files, function definitions are splitted in lines that way:
* In C files, function definitions are split into lines that way:
* modifiers and the returned type at the beginning of the line;
* the function name and the first parameter (if any) at the
beginning of the line;
......@@ -162,7 +162,7 @@ projects.
parameter;
* the opening curly brace at the beginning of the line.
* In header files, function definitions are splitted in lines that way:
* In header files, function definitions are split into lines that way:
* modifiers, the returned type, the function name and the first
parameter (if any) at the beginning of the line;
* each extra parameter has its own line, aligned with the first
......@@ -174,9 +174,9 @@ projects.
* 1-space between function name and braces (both calls and signature).
* ''Prefer'' descriptive names over abbreviations (unless well-known)
& shortening of names. E.g discoverer over disco.
& shortening of names. E.g. discoverer over disco.
* No single statment blocks.
* No single statement blocks.
* The more you provide docs in comments, but at the same time avoid
over-documenting. Here is an example of useless comment:
......@@ -185,7 +185,7 @@ projects.
fetch_the_document ();
* Each class should go in a separate .c and .h file & named according
to the class in it, in spinal-case. E.g Games.GameSource class should
to the class in it, in spinal-case. E.g. Games.GameSource class should
go under game-source.h and game-source.c.
* Add a newline to break the code in logical pieces.
......@@ -208,7 +208,7 @@ projects.
* Add a newline at the end of each file.
* If a function returns several equally important values, they should
all be given as out arguments. IOW, prefer this:
all be given as out arguments. In other words, prefer this:
void get_a_and_b (gchar **a, gchar **b)
......@@ -220,7 +220,7 @@ projects.
* Always add a comma after the enumerated value of an enum type broken
into multiple lines.
* Always add a comma after values of an array litteral broken into
* Always add a comma after values of an array literal broken into
multiple lines.
* Any 'else', 'else if' block or any other special block following
......
===============
Version 3.31.90
===============
* During search, developers and platforms without any games to show are now
hidden.
* Fixes
- Quit dialog now actually appears when exiting a game that doesn't support
snapshots.
- Opening a game by double-clicking while another game is running now quits
the previous game correctly.
- Database file is now correctly created even if data directory didn't exist.
- Steam plugin now works if ~/.steam directory contains invalid symlinks.
* Symbolic icon is now installed into symbolic/ directory instead of scalable/.
* Deprecated HighContrast app icons have been removed.
* Translation updates
Hungarian
Spanish
==============
Version 3.31.4
==============
* UI
- Make preferences window adaptive.
- Preferences window should now work better with window buttons on the left
side.
* Revert to non-portal file chooser for Flatpak, to allow adding games
consisting of multiple files.
* Update appdata to add launchable, provides and developer_name tags, remove
.desktop from application id.
* Appdata and desktop files are now validated when building.
* Translation updates
Brazilian Portuguese
Czech
Polish
Swedish
==============
Version 3.30.2
Version 3.31.3
==============
* UI
- Introduce a widget for switching between gamepad and keyboard input. This
is currently enabled for DOS and standalone Libretro games.
- Make search bar in the collection adaptive.
* Fixes
- Fix search filter not updating when switching between collection views.
- Keyboard doesn't control every player in multiplayer games anymore.
- Prevent a crash when creating snapshots of standalone libretro games.
- Various code cleanups.
* Translation updates
Brazilian Portuguese
Indonesian
Polish
Spanish
==============
Version 3.31.2
==============
* Drop custom development build style.
* Fixes
- Fix build on upcoming Vala versions.
- Skip symlinked Steam directories to avoid duplicating games.
- Fix header bar buttons grabbing arrow keys in fullscreen.
- Various code cleanups.
* Translation updates
Brazilian Portuguese
Croatian
Russian
Spanish
Swedish
==============
Version 3.30.1
Version 3.31.1
==============
* MAME plugin loading is now slightly faster.
* UI
- Update primary menu layout according to app menu retirement initiative.
- Refine controller preferences: hide sidebar while testing controllers
and use better transitions.
- Wrap plugin descriptions in preferences.
- Remove double border on preferences sidebar.
- Use HdyColumn to allow preferences dialog to get smaller.
- Use HdyTitleBar in main and preferences windows.
- Update development build style.
* Don't build MAME plugin by default. It can still be enabled via
'-Dmame-plugin=true' build option.
* Fixes
- Fix crash in PlayStation plugin.
- Pressed buttons in controller preferences are now positioned correctly.
- Fix drawing failure in controller preferences.
- Fix Cancel button flickering in controller preferences.
- Fix occasional tiny thumbnails in Developers and Platforms views.
- Fix GTK+ warnings when browsing collection.
- Fix Steam registry tree parser logic.
- Fix game filtering when switching between collection views while searching.
- Various code cleanups.
* Dependencies:
- Add libhandy-0.0 dependency.
* Fix typos in coding style document.
* Translation updates
Croatian
Czech
Friulian
Hungarian
Polish
Swedish
==============
......
......@@ -14,7 +14,6 @@ if not destdir and len(sys.argv) > 1:
print('Updating icon cache...')
subprocess.call(['gtk-update-icon-cache', '-qtf', os.path.join(datadir, 'icons', 'hicolor')])
subprocess.call(['gtk-update-icon-cache', '-qtf', os.path.join(datadir, 'icons', 'HighContrast')])
print('Updating desktop database...')
subprocess.call(['update-desktop-database', '-q', os.path.join(datadir, 'icons', 'applications')])
......@@ -13,24 +13,6 @@ gamesgamethumbnail {
color: @theme_fg_color;
}
.devel headerbar {
background: -gtk-icontheme("system-run-symbolic") right 0/350px 64px no-repeat,
linear-gradient(to left, rgba (165, 177, 189, 0.5) 0,
rgba (165, 177, 189, 0.5) 200px,
rgba ( 0, 0, 0, 0) 400px),
@theme_bg_color;
border-color: @borders;
}
.devel headerbar:backdrop {
background: -gtk-icontheme("system-run-symbolic") right 0/350px 64px no-repeat,
linear-gradient(to left, rgba (165, 177, 189, 0.3) 0,
rgba (165, 177, 189, 0.3) 200px,
rgba ( 0, 0, 0, 0) 400px),
@theme_unfocused_bg_color;
border-color: @unfocused_borders;
}
gamescollectioniconview flowboxchild {
min-width: 128px;
}
......@@ -38,3 +20,13 @@ gamescollectioniconview flowboxchild {
gamescollectioniconview.large flowboxchild {
min-width: 256px;
}
/* Styles from libhandy example, this should be kept in sync with this:
* https://source.puri.sm/Librem5/libhandy/blob/master/examples/style.css
*/
stacksidebar list {
border-left-width: 0px;
border-right-width: 0px;
}
This diff is collapsed.
......@@ -2,22 +2,15 @@ icon_sizes = ['16x16', '22x22', '24x24', '32x32', '48x48', '256x256', '512x512']
foreach icon_size: icon_sizes
hicolor_dir = join_paths('hicolor', icon_size, 'apps')
highcontrast_dir = join_paths('HighContrast', icon_size, 'apps')
install_data(
join_paths(hicolor_dir, 'org.gnome.Games.png'),
install_dir: join_paths(datadir, 'icons', hicolor_dir),
rename: '@0@.png'.format(application_id)
)
install_data(
join_paths(highcontrast_dir, 'org.gnome.Games.png'),
install_dir: join_paths(datadir, 'icons', highcontrast_dir),
rename: '@0@.png'.format(application_id)
)
endforeach
hicolor_dir = join_paths('hicolor', 'scalable', 'apps')
hicolor_dir = join_paths('hicolor', 'symbolic', 'apps')
install_data(
join_paths(hicolor_dir, 'org.gnome.Games-symbolic.svg'),
......
......@@ -6,7 +6,7 @@ resources = gnome.compile_resources(
desktop_conf = configuration_data()
desktop_conf.set('icon', application_id)
i18n.merge_file ('desktop-file',
desktop_file = i18n.merge_file ('desktop-file',
type: 'desktop',
input: configure_file(
input: files('org.gnome.Games.desktop.in.in'),
......@@ -19,9 +19,20 @@ i18n.merge_file ('desktop-file',
install_dir: join_paths (datadir, 'applications')
)
desktop_file_validate = find_program('desktop-file-validate', required: false)
if desktop_file_validate.found()
test(
'validate-desktop',
desktop_file_validate,
args: [
desktop_file.full_path()
]
)
endif
appdata_conf = configuration_data()
appdata_conf.set('appid', application_id)
i18n.merge_file ('appdata-file',
appdata_file = i18n.merge_file ('appdata-file',
input: configure_file(
input: files('org.gnome.Games.appdata.xml.in.in'),
output: 'org.gnome.Games.appdata.xml.in',
......@@ -33,6 +44,16 @@ i18n.merge_file ('appdata-file',
install_dir: join_paths (datadir, 'metainfo')
)
appstream_util = find_program('appstream-util', required: false)
if appstream_util.found()
test(
'validate-appdata', appstream_util,
args: [
'validate-relax', '--nonet', appdata_file.full_path()
]
)
endif
gsettings_conf = configuration_data ()
gsettings_conf.set ('GETTEXT_PACKAGE', meson.project_name ())
configure_file (
......
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop-application">
<id>@appid@.desktop</id>
<id>@appid@</id>
<metadata_license>CC0-1.0</metadata_license>
<project_license>GPL-3.0+</project_license>
<name>Games</name>
......@@ -40,13 +40,17 @@
<image width="800" height="450">https://gitlab.gnome.org/GNOME/gnome-games/raw/master/data/appdata/3-30-gamepad-test.png</image>
</screenshot>
</screenshots>
<provides>
<binary>gnome-games</binary>
</provides>
<launchable type="desktop-id">@appid@.desktop</launchable>
<url type="homepage">https://wiki.gnome.org/Apps/Games</url>
<url type="bugtracker">https://gitlab.gnome.org/GNOME/gnome-games/issues</url>
<url type="donation">http://www.gnome.org/friends/</url>
<url type="translate">https://wiki.gnome.org/TranslationProject</url>
<project_group>GNOME</project_group>
<developer_name>The GNOME Project</developer_name>
<update_contact>kekun.plazas_at_laposte.net</update_contact>
<translation type="gettext">org.gnome.Games</translation>
......
......@@ -15,27 +15,30 @@
<file preprocess="xml-stripblanks">ui/collection-box.ui</file>
<file preprocess="xml-stripblanks">ui/collection-header-bar.ui</file>
<file preprocess="xml-stripblanks">ui/collection-icon-view.ui</file>
<file preprocess="xml-stripblanks">ui/developer-list-item.ui</file>
<file preprocess="xml-stripblanks">ui/display-box.ui</file>
<file preprocess="xml-stripblanks">ui/display-header-bar.ui</file>
<file preprocess="xml-stripblanks">ui/dummy-display.ui</file>
<file preprocess="xml-stripblanks">ui/empty-collection.ui</file>
<file preprocess="xml-stripblanks">ui/error-display.ui</file>
<file preprocess="xml-stripblanks">ui/error-info-bar.ui</file>
<file preprocess="xml-stripblanks">ui/gamepad-configurer.ui</file>
<file preprocess="xml-stripblanks">ui/fullscreen-box.ui</file>
<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-configurer.ui</file>
<file preprocess="xml-stripblanks">ui/input-mode-switcher.ui</file>
<file preprocess="xml-stripblanks">ui/keyboard-mapper.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/platform-list-item.ui</file>
<file preprocess="xml-stripblanks">ui/preferences-page.ui</file>
<file preprocess="xml-stripblanks">ui/preferences-page-controllers.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-video.ui</file>
<file preprocess="xml-stripblanks">ui/preferences-sidebar.ui</file>
<file preprocess="xml-stripblanks">ui/preferences-sidebar-item.ui</file>
<file preprocess="xml-stripblanks">ui/preferences-subpage-gamepad.ui</file>
<file preprocess="xml-stripblanks">ui/preferences-subpage-keyboard.ui</file>
<file preprocess="xml-stripblanks">ui/preferences-window.ui</file>
<file preprocess="xml-stripblanks">ui/quit-dialog.ui</file>
<file preprocess="xml-stripblanks">ui/remote-display.ui</file>
......@@ -44,6 +47,7 @@
<file preprocess="xml-stripblanks">ui/resume-failed-dialog.ui</file>
<file preprocess="xml-stripblanks">ui/search-bar.ui</file>
<file preprocess="xml-stripblanks">ui/shortcuts-window.ui</file>
<file preprocess="xml-stripblanks">ui/sidebar-list-item.ui</file>
<file preprocess="xml-stripblanks">ui/sidebar-view.ui</file>
</gresource>
</gresources>
......@@ -3,9 +3,9 @@
<interface>
<requires lib="gtk+" version="3.16"/>
<template class="GamesApplicationWindow" parent="GtkApplicationWindow">
<property name="default_width">768</property>
<property name="default_height">600</property>
<property name="show_menubar">False</property>
<property name="default-width">768</property>
<property name="default-height">600</property>
<property name="show-menubar">False</property>
<signal name="delete-event" after="yes" handler="on_delete_event"/>
<signal name="key-press-event" after="yes" handler="on_key_pressed"/>
<signal name="button-press-event" after="yes" handler="on_button_pressed"/>
......@@ -35,26 +35,31 @@
</object>
</child>
<child type="titlebar">
<object class="GtkStack" id="header_bar">
<object class="HdyTitleBar">
<property name="visible">True</property>
<child>
<object class="GamesCollectionHeaderBar" id="collection_header_bar">
<object class="GtkStack" id="header_bar">
<property name="visible">True</property>
<property name="show_close_button">True</property>
<child>
<object class="GamesCollectionHeaderBar" id="collection_header_bar">
<property name="visible">True</property>
<property name="show-close-button">True</property>
</object>
<packing>
<property name="name">collection</property>
</packing>
</child>
<child>
<object class="GamesDisplayHeaderBar" id="display_header_bar">
<property name="visible">True</property>
<property name="show-close-button">True</property>
<signal name="back" handler="on_display_back"/>
</object>
<packing>
<property name="name">display</property>
</packing>
</child>
</object>
<packing>
<property name="name">collection</property>
</packing>
</child>
<child>
<object class="GamesDisplayHeaderBar" id="display_header_bar">
<property name="visible">True</property>
<property name="show_close_button">True</property>
<signal name="back" handler="on_display_back"/>
</object>
<packing>
<property name="name">display</property>
</packing>
</child>
</object>
</child>
......
......@@ -20,7 +20,7 @@
<object class="GtkStack" id="viewstack">
<property name="visible">True</property>
<property name="visible-child">collection_view</property>
<property name="transition-type">GTK_STACK_TRANSITION_TYPE_CROSSFADE</property>
<property name="transition-type">crossfade</property>
<signal name="notify::visible-child" handler="on_visible_child_changed"/>
<child>
<object class="GamesEmptyCollection" id="empty_collection">
......@@ -86,9 +86,9 @@
<child>
<object class="GtkButton">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="can-focus">True</property>
<property name="image">close_icon</property>
<property name="always_show_image">True</property>
<property name="always-show-image">True</property>
<signal name="clicked" handler="on_loading_notification_closed"/>
<style>
<class name="flat"/>
......@@ -107,6 +107,6 @@
</template>
<object class="GtkImage" id="close_icon">
<property name="visible">True</property>
<property name="icon_name">window-close-symbolic</property>
<property name="icon-name">window-close-symbolic</property>
</object>
</interface>
......@@ -33,7 +33,7 @@
<object class="GtkMenuButton" id="menu">
<property name="popover">menu_popover</property>
<!-- Translators: tooltip for the application menu button -->
<property name="tooltip_text" translatable="yes">Menu</property>
<property name="tooltip-text" translatable="yes">Menu</property>
<property name="use-underline">True</property>
<property name="valign">center</property>
<property name="visible">True</property>
......@@ -55,7 +55,7 @@
<child type="title">
<object class="GtkStack" id="title_stack">
<property name="visible">True</property>
<property name="transition-type">GTK_STACK_TRANSITION_TYPE_CROSSFADE</property>
<property name="transition-type">crossfade</property>
<child>
<object class="GtkStackSwitcher" id="view_switcher">
<property name="visible">True</property>
......@@ -107,30 +107,23 @@
<property name="visible">True</property>
<child>
<object class="GtkModelButton">
<property name="can_focus">True</property>
<property name="can-focus">True</property>
<property name="text" translatable="yes">Preferences</property>
<property name="action-name">app.preferences</property>
<property name="visible">True</property>
</object>
</child>
<child>
<object class="GtkSeparator">
<property name="margin-top">6</property>
<property name="margin-bottom">6</property>
<property name="visible">True</property>
</object>
</child>
<child>
<object class="GtkModelButton">
<property name="can_focus">True</property>
<property name="text" translatable="yes">Shortcuts</property>
<property name="action-name">app.shortcuts</property>
<property name="can-focus">True</property>
<property name="text" translatable="yes">Keyboard Shortcuts</property>
<property name="action-name">win.show-help-overlay</property>
<property name="visible">True</property>
</object>
</child>
<child>
<object class="GtkModelButton">
<property name="can_focus">True</property>
<property name="can-focus">True</property>
<property name="text" translatable="yes">Help</property>
<property name="action-name">app.help</property>
<property name="visible">True</property>
......@@ -138,8 +131,8 @@
</child>
<child>
<object class="GtkModelButton">
<property name="can_focus">True</property>
<property name="text" translatable="yes">About</property>
<property name="can-focus">True</property>
<property name="text" translatable="yes">About Games</property>
<property name="action-name">app.about</property>
<property name="visible">True</property>
</object>
......
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="GamesDeveloperListItem" parent="GtkLabel">
<property name="visible">true</property>
<property name="vexpand">true</property>
<property name="margin">6</property>
<property name="wrap">true</property>
<property name="xalign">0</property>
</template>
</interface>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk+" version="3.16"/>
<template class="GamesDisplayBox" parent="GtkEventBox">
<template class="GamesDisplayBox" parent="GtkBin">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK</property>
<signal name="notify::is-fullscreen" handler="on_fullscreen_changed"/>
<signal name="motion-notify-event" handler="on_motion_event"/>
<child>
<object class="GtkOverlay" id="overlay">
<object class="GamesFullscreenBox" id="fullscreen_box">
<property name="visible">True</property>
<child type="overlay">
<object class="GtkRevealer" id="fullscreen_header_bar_revealer">
<child type="titlebar">
<object class="GamesDisplayHeaderBar" id="fullscreen_header_bar">
<property name="visible">True</property>
<property name="valign">start</property>
<property name="hexpand">True</property>
<property name="transition-type">slide-down</property>
<property name="events">GDK_POINTER_MOTION_MASK</property>
<signal name="notify::is-fullscreen" handler="on_fullscreen_changed"/>
<signal name="motion-notify-event" handler="on_motion_event"/>
<child>
<object class="GamesDisplayHeaderBar" id="fullscreen_header_bar">
<property name="visible">True</property>
<property name="show_close_button">False</property>
<signal name="back" handler="on_fullscreen_header_bar_back"/>
</object>
</child>
<property name="show-close-button">False</property>
<signal name="back" handler="on_fullscreen_header_bar_back"/>
</object>
</child>
<child>
......
......@@ -91,5 +91,13 @@
<property name="pack-type">end</property>
</packing>
</child>
<child>
<object class="GamesInputModeSwitcher" id="input_mode_switcher">
<property name="visible">True</property>
</object>
<packing>
<property name="pack-type">end</property>
</packing>
</child>
</template>
</interface>
......@@ -10,7 +10,7 @@
<object class="GtkImage" id="icon">
<property name="visible">True</property>
<property name="valign">center</property>
<property name="pixel_size">128</property>
<property name="pixel-size">128</property>
<property name="icon-size">0</property>
<property name="margin-bottom">18</property>
<style>
......@@ -42,7 +42,7 @@
<property name="opacity">0.5</property>
<property name="label" translatable="yes">Install games or add directories containing games to your search sources.</property>
<property name="justify">left</property>
<property name="use_markup">true</property>
<property name="use-markup">true</property>
<property name="wrap">true</property>
</object>
</child>
......
......@@ -10,8 +10,8 @@
<object class="GtkImage" id="icon">
<property name="visible">True</property>
<property name="valign">center</property>
<property name="pixel_size">128</property>
<property name="icon_name">face-uncertain-symbolic</property>
<property name="pixel-size">128</property>
<property name="icon-name">face-uncertain-symbolic</property>
<property name="icon-size">0</property>
<property name="margin-bottom">18</property>
<style>
......
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk+" version="3.16"/>
<template class="GamesFullscreenBox" parent="GtkEventBox">
<property name="visible">True</property>
<property name="events">pointer-motion-mask</property>
<signal name="notify::is-fullscreen" handler="on_fullscreen_changed"/>
<signal name="motion-notify-event" handler="on_motion_event"/>
<child>
<object class="GtkOverlay" id="overlay">
<property name="visible">True</property>
<child type="overlay">
<object class="GtkRevealer" id="header_bar_revealer">
<property name="visible">True</property>
<property name="valign">start</property>
<property name="hexpand">True</property>
<property name="transition-type">slide-down</property>
<property name="events">pointer-motion-mask</property>
<signal name="notify::is-fullscreen" handler="on_fullscreen_changed"/>
<signal name="motion-notify-event" handler="on_motion_event"/>
</object>
</child>
</object>
</child>
</template>
</interface>
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="GamesGamepadMapper" parent="GtkBox">
<template class="GamesGamepadMapper" parent="GtkBin">
<property name="visible">True</property>
<property name="orientation">vertical</property>
<child>
<object class="GamesGamepadView" id="gamepad_view">
<property name="visible">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
</object>
</child>
<child>
<object class="GtkActionBar" id="action_bar">
<property name="visible">True</property>
<child>
<object class="GtkButton" id="skip_button">
<property name="visible">True</property>
<property name="label" translatable="yes">Skip</property>
<signal name="clicked" handler="on_skip_clicked"/>
</object>
<packing>
<property name="pack-type">start</property>
</packing>
</child>
<child type="center">
<object class="GtkLabel" id="info_message">
<property name="visible">True</property>
</object>
</child>
</object>
</child>
</template>
......
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="GamesGamepadTester" parent="GtkBox">
<template class="GamesGamepadTester" parent="GtkBin">
<property name="visible">True</property>
<property name="orientation">vertical</property>
<child>
<object class="GamesGamepadView" id="gamepad_view">
<property name="visible">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
</object>
</child>
</template>
......
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk+" version="3.16"/>
<template class="GamesInputModeSwitcher" parent="GtkBox">
<style>
<class name="linked"/>
</style>
<child>
<object class="GtkRadioButton" id="gamepad_mode">
<property name="visible">True</property>
<property name="draw-indicator">False</property>
<property name="can-focus">False</property>
<signal name="toggled" handler="on_gamepad_button_toggled"/>
<child internal-child="accessible">
<object class="AtkObject" id="a11y-gamepad-input">
<property name="accessible-name" translatable="yes">Gamepad Input</property>
</object>
</child>
<child>
<object class="GtkImage" id="gamepad_image">
<property name="visible">True</property>
<property name="icon-name">input-gaming-symbolic</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkRadioButton" id="keyboard_mode">
<property name="visible">True</property>
<property name="draw-indicator">False</property>
<property name="can-focus">False</property>
<property name="group">gamepad_mode</property>
<signal name="toggled" handler="on_keyboard_button_toggled"/>
<child internal-child="accessible">
<object class="AtkObject" id="a11y-keyboard-input">
<property name="accessible-name" translatable="yes">Keyboard Input</property>
</object>
</child>
<child>
<object class="GtkImage" id="keyboard_image">
<property name="visible">True</property>
<property name="icon-name">input-keyboard-symbolic</property>
</object>
</child>
</object>
</child>
</template>
</interface>
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="GamesKeyboardMapper" parent="GtkBox">
<template class="GamesKeyboardMapper" parent="GtkBin">
<property name="visible">True</property>
<property name="orientation">vertical</property>
<child>
<object class="GamesGamepadView" id="gamepad_view">
<property name="visible">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
</object>
</child>
<child>
<object class="GtkActionBar" id="action_bar">
<property name="visible">True</property>
<child>
<object class="GtkButton" id="skip_button">
<property name="visible">True</property>
<property name="label" translatable="yes">Skip</property>
<signal name="clicked" handler="on_skip_clicked"/>
</object>
<packing>
<property name="pack-type">start</property>
</packing>
</child>
<child type="center">
<object class="GtkLabel" id="info_message">
<property name="visible">True</property>
</object>
</child>
</object>
</child>
</template>
......
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="GamesKeyboardTester" parent="GtkBox">
<template class="GamesKeyboardTester" parent="GtkBin">
<property name="visible">True</property>
<property name="orientation">vertical</property>
<child>
<object class="GamesGamepadView" id="gamepad_view">
<property name="visible">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
</object>
</child>
</template>
......
......@@ -5,7 +5,7 @@
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="shadow_type">none</property>
<property name="shadow-type">none</property>
<child>
<object class="GtkListBox" id="list_box">
<property name="visible">True</property>
......@@ -13,7 +13,7 @@
<property name="margin-bottom">6</property>
<property name="margin-start">6</property>
<property name="margin-end">6</property>
<property name="selection_mode">none</property>
<property name="selection-mode">none</property>
<signal name="row-activated" after="yes" handler="on_row_activated"/>
</object>
</child>
......
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="GamesPlatformListItem" parent="GtkLabel">
<property name="visible">true</property>
<property name="vexpand">true</property>
<property name="margin">6</property>
<property name="wrap">true</property>
<property name="xalign">0</property>
</template>
</interface>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="GamesPreferencesPageControllers" parent="GtkStack">
<template class="GamesPreferencesPageControllers" parent="GamesPreferencesPage">
<property name="visible">True</property>
<property name="visible-child">main_stack_child_holder</property>
<property name="transition-type">GTK_STACK_TRANSITION_TYPE_SLIDE_LEFT_RIGHT</property>
<child>
<object class="GtkBox" id="extra_stack_child_holder">
<object class="GtkLabel" id="gamepads_label">
<property name="visible">True</property>
<property name="halign">start</property>
<property name="label" translatable="yes">Gamepads</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
<packing>
<property name="name">extra_stack_child</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow" id="main_stack_child_holder">
<object class="GtkFrame" id="gamepads_frame">
<property name="visible">True</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkViewport">
<object class="GtkListBox" id="gamepads_list_box">
<property name="visible">True</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="GtkLabel" id="gamepads_label">
<property name="visible">True</property>
<property name="halign">start</property>
<property name="label" translatable="yes">Gamepads</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
<child>
<object class="GtkFrame" id="gamepads_frame">
<property name="visible">True</property>
<property name="shadow_type">in</property>
<child>
<object class="GtkListBox" id="gamepads_list_box">
<property name="visible">True</property>
<property name="selection_mode">none</property>
<signal name="row-activated" handler="gamepads_list_box_row_activated"/>
</object>
</child>
</object>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="halign">start</property>
<property name="label" translatable="yes">Keyboard</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="shadow_type">in</property>
<child>
<object class="GtkListBox" id="keyboard_list_box">
<property name="visible">True</property>
<property name="selection_mode">none</property>
<signal name="row-activated" handler="keyboard_list_box_row_activated"/>
</object>
</child>
</object>
</child>
</object>
</child>
<property name="selection-mode">none</property>
<signal name="row-activated" handler="gamepads_list_box_row_activated"/>
</object>
</child>
</object>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="halign">start</property>
<property name="label" translatable="yes">Keyboard</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkListBox" id="keyboard_list_box">
<property name="visible">True</property>
<property name="selection-mode">none</property>
<signal name="row-activated" handler="keyboard_list_box_row_activated"/>
</object>
</child>
</object>
<packing>
<property name="name">main_stack_child</property>
</packing>
</child>
</template>
<object class="GtkHeaderBar" id="default_header_bar">
<property name="visible">True</property>
<property name="expand">True</property>
<property name="title" translatable="yes">Controllers</property>
</object>
</interface>
......@@ -15,6 +15,7 @@
<object class="GtkLabel" id="plugin_description">
<property name="visible">true</property>
<property name="xalign">0</property>
<property name="wrap">true</property>
<style>
<class name="dim-label" />
</style>
......
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<!-- interface-requires gtk+ 3.16 -->
<template class="GamesPreferencesPagePlugins" parent="GtkBin">
<template class="GamesPreferencesPagePlugins" parent="GamesPreferencesPage">
<property name="visible">True</property>
<child>
<object class="GtkScrolledWindow" id="plugins">
<object class="GtkFrame">
<property name="visible">true</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkViewport">
<object class="GtkListBox" id="list_box">
<property name="selection-mode">none</property>
<property name="visible">true</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="list_box">
<property name="selection-mode">none</property>
<property name="visible">true</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</template>
<object class="GtkHeaderBar" id="header_bar">
<property name="visible">True</property>
<property name="expand">True</property>
<property name="title" translatable="yes">Extensions</property>
</object>
</interface>
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="GamesPreferencesPageVideo" parent="GtkBin">
<template class="GamesPreferencesPageVideo" parent="GamesPreferencesPage">
<property name="visible">True</property>
<child>
<object class="GtkScrolledWindow">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="halign">start</property>
<property name="label" translatable="yes">Filter</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkViewport">
<object class="GtkListBox" id="filter_list_box">
<property name="visible">True</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="GtkLabel">
<property name="visible">True</property>
<property name="halign">start</property>
<property name="label" translatable="yes">Filter</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="shadow_type">in</property>
<child>
<object class="GtkListBox" id="filter_list_box">
<property name="visible">True</property>
<property name="selection_mode">none</property>
<signal name="row-activated" handler="filter_list_box_row_activated"/>
</object>
</child>
</object>
</child>
</object>
</child>
<property name="selection-mode">none</property>
<signal name="row-activated" handler="filter_list_box_row_activated"/>
</object>
</child>
</object>
</child>
</template>
<object class="GtkHeaderBar" id="header_bar">
<property name="visible">True</property>
<property name="expand">True</property>
<property name="title" translatable="yes">Video</property>
</object>
</interface>
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="GamesPreferencesPage" 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" id="box">
<property name="visible">True</property>
<property name="orientation">vertical</property>
<property name="margin">12</property>
<property name="spacing">12</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</template>
</interface>
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="GamesPreferencesSidebarItem" parent="GtkListBoxRow">
<property name="visible">true</property>
<child>
<object class="GtkLabel" id="label">
<property name="visible">true</property>
<property name="wrap">true</property>
<property name="xalign">0</property>
</object>
</child>
</template>
</interface>
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="GamesPreferencesSidebar" parent="GtkBin">
<property name="visible">True</property>
<style>
<class name="preferences"/>
<class name="sidebar"/>
</style>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="hscrollbar-policy">never</property>
<child>
<object class="GtkListBox" id="list">
<property name="visible">True</property>
<property name="margin-top">4</property>
<property name="margin-bottom">4</property>
<signal name="row-activated" handler="row_activated"/>
</object>
</child>
</object>
</child>
</template>
</interface>
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="GamesGamepadConfigurer" parent="GtkBox">
<template class="GamesPreferencesSubpageGamepad" parent="GtkBox">
<property name="visible">True</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkStack" id="stack">
<object class="GtkStack" id="gamepad_view_stack">
<property name="visible">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<child>
<object class="GtkBox" id="gamepad_mapper_holder">
<property name="visible">True</property>
</object>
<packing>
<property name="name">gamepad_mapper</property>
</packing>
</child>
<child>
<object class="GtkBox" id="gamepad_tester_holder">
<property name="visible">True</property>
</object>
<packing>
<property name="name">gamepad_tester</property>
</packing>
</child>
</object>
</child>
<child>
<object class="GtkActionBar" id="action_bar">
<object class="GtkStack" id="action_bar_stack">
<property name="visible">True</property>
<child>
<object class="GtkButton" id="reset_button">
<object class="GtkActionBar" id="tester_action_bar">
<property name="visible">True</property>
<property name="label" translatable="yes" context="Gamepad configuration factory reset">Reset</property>
<signal name="clicked" handler="on_reset_clicked"/>
<style>
<class name="destructive-action"/>
</style>
<child>
<object class="GtkButton" id="reset_button">
<property name="visible">True</property>
<property name="label" translatable="yes" context="Keyboard configuration factory reset">Reset</property>
<signal name="clicked" handler="on_reset_clicked"/>
<style>
<class name="destructive-action"/>
</style>
</object>
<packing>
<property name="pack-type">end</property>
</packing>
</child>
<child>
<object class="GtkButton" id="configure_button">
<property name="visible">True</property>