Previously, the sidebar did not have scrolling enabled. This resulted in poor behavior in very short windows, such as landscape on phones, causing the bottom to be cut off. This commit fixes it by wrapping the sidebar's ListBox in a ScrolledWindow.
577 lines
14 KiB
Plaintext
577 lines
14 KiB
Plaintext
using Gtk 4.0;
|
|
using Adw 1;
|
|
|
|
Adw.StatusPage notice_no_results {
|
|
icon-name: "system-search-symbolic";
|
|
title: _("No Games Found");
|
|
description: _("Try a different search.");
|
|
vexpand: true;
|
|
valign: center;
|
|
}
|
|
|
|
Adw.StatusPage hidden_notice_no_results {
|
|
icon-name: "system-search-symbolic";
|
|
title: _("No Games Found");
|
|
description: _("Try a different search.");
|
|
vexpand: true;
|
|
valign: center;
|
|
}
|
|
|
|
Adw.StatusPage notice_empty {
|
|
title: _("No Games");
|
|
description: _("Use the + button to add games.");
|
|
vexpand: true;
|
|
valign: center;
|
|
|
|
Button {
|
|
label: _("Import");
|
|
halign: center;
|
|
action-name: "app.import";
|
|
|
|
styles [
|
|
"pill",
|
|
"suggested-action",
|
|
]
|
|
}
|
|
}
|
|
|
|
Adw.StatusPage hidden_notice_empty {
|
|
icon-name: "view-conceal-symbolic";
|
|
title: _("No Hidden Games");
|
|
description: _("Games you hide will appear here.");
|
|
vexpand: true;
|
|
valign: center;
|
|
}
|
|
|
|
template $CartridgesWindow : Adw.ApplicationWindow {
|
|
title: _("Cartridges");
|
|
width-request: 281;
|
|
height-request: 100;
|
|
|
|
Adw.Breakpoint {
|
|
condition ("max-width: 564px")
|
|
setters {
|
|
overlay_split_view.collapsed: true;
|
|
details_view_box.orientation: vertical;
|
|
details_view_box.margin-top: 12;
|
|
details_view_box.margin-start: 12;
|
|
details_view_box.margin-end: 12;
|
|
details_view_details_box.margin-start: 0;
|
|
details_view_details_box.margin-end: 0;
|
|
details_view_title.margin-top: 30;
|
|
details_view_title.halign: center;
|
|
details_view_developer.halign: center;
|
|
details_view_date_box.halign: center;
|
|
details_view_toolbar.halign: center;
|
|
details_view_toolbar.orientation: vertical;
|
|
details_view_play_button.halign: center;
|
|
details_view_toolbar_buttons.margin-start: 0;
|
|
}
|
|
}
|
|
|
|
Adw.ToastOverlay toast_overlay {
|
|
Adw.NavigationView navigation_view {
|
|
Adw.NavigationPage library_page {
|
|
title: _("All Games");
|
|
|
|
Adw.OverlaySplitView overlay_split_view {
|
|
[sidebar]
|
|
Adw.NavigationPage {
|
|
title: _("Cartridges");
|
|
Adw.ToolbarView {
|
|
[top]
|
|
Adw.HeaderBar {
|
|
[start]
|
|
Button {
|
|
icon-name: "sidebar-show-symbolic";
|
|
action-name: "win.show_sidebar";
|
|
tooltip-text: _("Toggle Sidebar");
|
|
}
|
|
}
|
|
|
|
ScrolledWindow {
|
|
ListBox sidebar {
|
|
Box all_games_row_box {
|
|
margin-top: 12;
|
|
margin-bottom: 12;
|
|
margin-start: 6;
|
|
margin-end: 6;
|
|
spacing: 12;
|
|
|
|
Image {
|
|
icon-name: "view-grid-symbolic";
|
|
}
|
|
Label {
|
|
halign: start;
|
|
label: _("All Games");
|
|
}
|
|
Label all_games_no_label {
|
|
hexpand: true;
|
|
halign: end;
|
|
|
|
styles ["dim-label"]
|
|
}
|
|
}
|
|
Box added_row_box {
|
|
margin-top: 12;
|
|
margin-bottom: 12;
|
|
margin-start: 6;
|
|
spacing: 12;
|
|
|
|
Image {
|
|
icon-name: "list-add-symbolic";
|
|
}
|
|
Label {
|
|
halign: start;
|
|
label: _("Added");
|
|
margin-end: 6;
|
|
}
|
|
Label added_games_no_label {
|
|
hexpand: true;
|
|
halign: end;
|
|
margin-end: 6;
|
|
|
|
styles ["dim-label"]
|
|
}
|
|
}
|
|
ListBoxRow {
|
|
selectable: false;
|
|
activatable: false;
|
|
Label {
|
|
label: _("Imported");
|
|
styles ["heading"]
|
|
halign: start;
|
|
}
|
|
}
|
|
styles ["navigation-sidebar"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Adw.ToolbarView library_view {
|
|
|
|
[top]
|
|
Adw.HeaderBar header_bar {
|
|
|
|
[start]
|
|
Revealer {
|
|
transition-type: slide_right;
|
|
reveal-child: bind overlay_split_view.show-sidebar inverted;
|
|
Button show_sidebar_button {
|
|
icon-name: "sidebar-show-symbolic";
|
|
action-name: "win.show_sidebar";
|
|
tooltip-text: _("Toggle Sidebar");
|
|
}
|
|
}
|
|
|
|
[start]
|
|
MenuButton {
|
|
tooltip-text: _("Add Game");
|
|
icon-name: "list-add-symbolic";
|
|
menu-model: add_games;
|
|
}
|
|
|
|
[end]
|
|
MenuButton primary_menu_button {
|
|
tooltip-text: _("Main Menu");
|
|
icon-name: "open-menu-symbolic";
|
|
menu-model: primary_menu;
|
|
}
|
|
|
|
[end]
|
|
ToggleButton search_button {
|
|
tooltip-text: _("Search");
|
|
icon-name: "system-search-symbolic";
|
|
action-name: "win.toggle_search";
|
|
}
|
|
}
|
|
|
|
[top]
|
|
SearchBar search_bar {
|
|
search-mode-enabled: bind search_button.active bidirectional;
|
|
key-capture-widget: navigation_view;
|
|
|
|
Adw.Clamp {
|
|
maximum-size: 500;
|
|
tightening-threshold: 500;
|
|
|
|
SearchEntry search_entry {
|
|
hexpand: true;
|
|
}
|
|
}
|
|
}
|
|
|
|
Overlay library_overlay {
|
|
ScrolledWindow scrolledwindow {
|
|
FlowBox library {
|
|
homogeneous: true;
|
|
halign: center;
|
|
valign: start;
|
|
column-spacing: 12;
|
|
row-spacing: 12;
|
|
margin-top: 15;
|
|
margin-bottom: 15;
|
|
margin-start: 15;
|
|
margin-end: 15;
|
|
selection-mode: none;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Adw.NavigationPage hidden_library_page {
|
|
title: _("Hidden Games");
|
|
|
|
Adw.ToolbarView hidden_library_view {
|
|
[top]
|
|
Adw.HeaderBar hidden_header_bar {
|
|
[end]
|
|
MenuButton hidden_primary_menu_button {
|
|
tooltip-text: _("Main Menu");
|
|
icon-name: "open-menu-symbolic";
|
|
menu-model: primary_menu;
|
|
}
|
|
|
|
[end]
|
|
ToggleButton hidden_search_button {
|
|
tooltip-text: _("Search");
|
|
icon-name: "system-search-symbolic";
|
|
action-name: "win.toggle_search";
|
|
}
|
|
}
|
|
|
|
[top]
|
|
SearchBar hidden_search_bar {
|
|
search-mode-enabled: bind hidden_search_button.active bidirectional;
|
|
key-capture-widget: hidden_library_view;
|
|
|
|
Adw.Clamp {
|
|
maximum-size: 500;
|
|
tightening-threshold: 500;
|
|
|
|
SearchEntry hidden_search_entry {
|
|
hexpand: true;
|
|
}
|
|
}
|
|
}
|
|
|
|
Overlay hidden_library_overlay {
|
|
ScrolledWindow hidden_scrolledwindow {
|
|
FlowBox hidden_library {
|
|
homogeneous: true;
|
|
halign: center;
|
|
valign: start;
|
|
column-spacing: 12;
|
|
row-spacing: 12;
|
|
margin-top: 15;
|
|
margin-bottom: 15;
|
|
margin-start: 15;
|
|
margin-end: 15;
|
|
selection-mode: none;
|
|
}
|
|
}
|
|
}
|
|
|
|
styles [
|
|
"background",
|
|
]
|
|
}
|
|
}
|
|
|
|
Adw.NavigationPage details_page {
|
|
title: _("Game Details");
|
|
|
|
Overlay details_view {
|
|
name: "details_view";
|
|
|
|
[overlay]
|
|
Adw.ToolbarView details_view_toolbar_view {
|
|
|
|
[top]
|
|
Adw.HeaderBar {
|
|
}
|
|
|
|
ScrolledWindow {
|
|
Box details_view_box {
|
|
halign: center;
|
|
valign: center;
|
|
margin-start: 24;
|
|
margin-end: 24;
|
|
margin-top: 24;
|
|
margin-bottom: 24;
|
|
|
|
Adw.Clamp {
|
|
maximum-size: 200;
|
|
|
|
Overlay {
|
|
[overlay]
|
|
Spinner details_view_spinner {
|
|
margin-start: 72;
|
|
margin-end: 72;
|
|
}
|
|
|
|
Picture details_view_cover {
|
|
halign: end;
|
|
valign: start;
|
|
width-request: 200;
|
|
height-request: 300;
|
|
|
|
styles [
|
|
"card",
|
|
]
|
|
}
|
|
}
|
|
}
|
|
|
|
Box details_view_details_box {
|
|
orientation: vertical;
|
|
margin-start: 48;
|
|
vexpand: true;
|
|
valign: center;
|
|
|
|
Label details_view_title {
|
|
label: _("Game Title");
|
|
hexpand: true;
|
|
halign: start;
|
|
max-width-chars: 24;
|
|
wrap: true;
|
|
wrap-mode: word_char;
|
|
natural-wrap-mode: word;
|
|
|
|
styles [
|
|
"title-1",
|
|
]
|
|
}
|
|
|
|
Label details_view_developer {
|
|
margin-top: 6;
|
|
hexpand: true;
|
|
halign: start;
|
|
max-width-chars: 36;
|
|
wrap: true;
|
|
wrap-mode: word_char;
|
|
natural-wrap-mode: word;
|
|
|
|
styles [
|
|
"heading",
|
|
]
|
|
}
|
|
|
|
Box details_view_date_box {
|
|
orientation: horizontal;
|
|
margin-top: 15;
|
|
hexpand: true;
|
|
halign: start;
|
|
|
|
Label details_view_added {
|
|
wrap: true;
|
|
wrap-mode: word_char;
|
|
natural-wrap-mode: word;
|
|
justify: center;
|
|
}
|
|
|
|
Label details_view_last_played {
|
|
margin-start: 12;
|
|
wrap: true;
|
|
wrap-mode: word_char;
|
|
natural-wrap-mode: word;
|
|
justify: center;
|
|
}
|
|
}
|
|
|
|
Box details_view_toolbar {
|
|
hexpand: true;
|
|
vexpand: true;
|
|
valign: center;
|
|
|
|
Button details_view_play_button {
|
|
name: "details_view_play_button";
|
|
action-name: "app.launch_game";
|
|
label: _("Play");
|
|
halign: start;
|
|
margin-top: 24;
|
|
|
|
styles [
|
|
"opaque",
|
|
"pill",
|
|
]
|
|
}
|
|
|
|
Box details_view_toolbar_buttons {
|
|
halign: start;
|
|
valign: center;
|
|
margin-top: 24;
|
|
margin-start: 9;
|
|
|
|
Button {
|
|
icon-name: "document-edit-symbolic";
|
|
action-name: "app.edit_game";
|
|
tooltip-text: _("Edit");
|
|
|
|
styles [
|
|
"raised",
|
|
"circular",
|
|
]
|
|
}
|
|
|
|
Button details_view_hide_button {
|
|
action-name: "app.hide_game";
|
|
|
|
styles [
|
|
"raised",
|
|
"circular",
|
|
]
|
|
}
|
|
|
|
Button {
|
|
icon-name: "user-trash-symbolic";
|
|
action-name: "app.remove_game";
|
|
tooltip-text: _("Remove");
|
|
|
|
styles [
|
|
"raised",
|
|
"circular",
|
|
]
|
|
}
|
|
|
|
MenuButton {
|
|
icon-name: "system-search-symbolic";
|
|
menu-model: search;
|
|
tooltip-text: _("Search");
|
|
|
|
styles [
|
|
"raised",
|
|
"circular",
|
|
]
|
|
}
|
|
|
|
styles [
|
|
"toolbar",
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Picture details_view_blurred_cover {
|
|
keep-aspect-ratio: false;
|
|
}
|
|
}
|
|
}
|
|
|
|
menu primary_menu {
|
|
section {
|
|
submenu {
|
|
label: _("Sort");
|
|
|
|
item {
|
|
label: _("A-Z");
|
|
action: "win.sort_by";
|
|
target: "a-z";
|
|
}
|
|
|
|
item {
|
|
label: _("Z-A");
|
|
action: "win.sort_by";
|
|
target: "z-a";
|
|
}
|
|
|
|
item {
|
|
label: _("Newest");
|
|
action: "win.sort_by";
|
|
target: "newest";
|
|
}
|
|
|
|
item {
|
|
label: _("Oldest");
|
|
action: "win.sort_by";
|
|
target: "oldest";
|
|
}
|
|
|
|
item {
|
|
label: _("Last Played");
|
|
action: "win.sort_by";
|
|
target: "last_played";
|
|
}
|
|
}
|
|
|
|
item {
|
|
label: _("Show Hidden");
|
|
action: "win.show_hidden";
|
|
hidden-when: "action-disabled";
|
|
}
|
|
}
|
|
|
|
section {
|
|
item {
|
|
label: _("Preferences");
|
|
action: "app.preferences";
|
|
}
|
|
|
|
item {
|
|
label: _("Keyboard Shortcuts");
|
|
action: "win.show-help-overlay";
|
|
}
|
|
|
|
item {
|
|
label: _("About Cartridges");
|
|
action: "app.about";
|
|
}
|
|
}
|
|
}
|
|
|
|
menu add_games {
|
|
section {
|
|
item {
|
|
label: _("Add Game");
|
|
action: "app.add_game";
|
|
}
|
|
}
|
|
|
|
section {
|
|
item {
|
|
label: _("Import");
|
|
action: "app.import";
|
|
}
|
|
}
|
|
}
|
|
|
|
menu search {
|
|
section {
|
|
label: "Search on…";
|
|
|
|
item {
|
|
label: "IGDB";
|
|
action: "app.igdb_search";
|
|
}
|
|
|
|
item {
|
|
label: "SteamGridDB";
|
|
action: "app.sgdb_search";
|
|
}
|
|
|
|
item {
|
|
label: "ProtonDB";
|
|
action: "app.protondb_search";
|
|
}
|
|
|
|
item {
|
|
label: "Lutris";
|
|
action: "app.lutris_search";
|
|
}
|
|
|
|
item {
|
|
label: "HowLongToBeat";
|
|
action: "app.hltb_search";
|
|
}
|
|
}
|
|
}
|