41b94ccf11
It's good practice to save and reload the window size and maximization state, and easy enough to implement, so let's do that. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3115>
289 lines
14 KiB
XML
289 lines
14 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
||
<interface>
|
||
<menu id="primary-menu">
|
||
<section>
|
||
<item>
|
||
<attribute name="label" translatable="yes">Keyboard Shortcuts</attribute>
|
||
<attribute name="action">win.show-help-overlay</attribute>
|
||
</item>
|
||
<item>
|
||
<attribute name="label" translatable="yes">About Extensions</attribute>
|
||
<attribute name="action">win.show-about</attribute>
|
||
</item>
|
||
</section>
|
||
</menu>
|
||
<object class="GtkSortListModel" id="sortModel">
|
||
<property name="sorter">
|
||
<object class="GtkStringSorter">
|
||
<property name="expression">
|
||
<lookup name="name" type="Extension"/>
|
||
</property>
|
||
</object>
|
||
</property>
|
||
</object>
|
||
<object class="GtkStringFilter" id="searchFilter">
|
||
<property name="ignore-case">true</property>
|
||
<property name="match-mode">substring</property>
|
||
<property name="expression">
|
||
<lookup name="name" type="Extension"/>
|
||
</property>
|
||
</object>
|
||
<object class="GtkFilterListModel" id="userListModel">
|
||
<property name="model">sortModel</property>
|
||
<property name="filter">
|
||
<object class="GtkBoolFilter">
|
||
<property name="expression">
|
||
<lookup name="is-user" type="Extension"/>
|
||
</property>
|
||
</object>
|
||
</property>
|
||
</object>
|
||
<object class="GtkFilterListModel" id="systemListModel">
|
||
<property name="model">sortModel</property>
|
||
<property name="filter">
|
||
<object class="GtkBoolFilter">
|
||
<property name="invert">true</property>
|
||
<property name="expression">
|
||
<lookup name="is-user" type="Extension"/>
|
||
</property>
|
||
</object>
|
||
</property>
|
||
</object>
|
||
<object class="GtkFilterListModel" id="searchListModel">
|
||
<property name="model">sortModel</property>
|
||
<property name="filter">searchFilter</property>
|
||
</object>
|
||
<template class="ExtensionsWindow" parent="AdwApplicationWindow">
|
||
<property name="title" translatable="yes">Extensions</property>
|
||
<child>
|
||
<object class="AdwToolbarView">
|
||
<child type="top">
|
||
<object class="GtkHeaderBar">
|
||
<child type="end">
|
||
<object class="GtkMenuButton" id="menuButton">
|
||
<property name="tooltip-text" translatable="yes">Main Menu</property>
|
||
<property name="receives-default">True</property>
|
||
<property name="menu-model">primary-menu</property>
|
||
<property name="icon-name">open-menu-symbolic</property>
|
||
<property name="primary">True</property>
|
||
</object>
|
||
</child>
|
||
<child type="start">
|
||
<object class="GtkToggleButton" id="searchButton">
|
||
<property name="tooltip-text" translatable="yes">Search</property>
|
||
<property name="receives-default">True</property>
|
||
<property name="icon-name">edit-find-symbolic</property>
|
||
<child>
|
||
<object class="GtkShortcutController">
|
||
<property name='scope'>global</property>
|
||
<child>
|
||
<object class='GtkShortcut'>
|
||
<property name='trigger'><Control>f</property>
|
||
<property name='action'>activate</property>
|
||
</object>
|
||
</child>
|
||
<child>
|
||
<object class='GtkShortcut'>
|
||
<property name='trigger'><Control>s</property>
|
||
<property name='action'>activate</property>
|
||
</object>
|
||
</child>
|
||
</object>
|
||
</child>
|
||
</object>
|
||
</child>
|
||
</object>
|
||
</child>
|
||
<child type="top">
|
||
<object class="GtkSearchBar" id="searchBar">
|
||
<property name="key-capture-widget">ExtensionsWindow</property>
|
||
<property name="search-mode-enabled"
|
||
bind-source="searchButton"
|
||
bind-property="active"
|
||
bind-flags="bidirectional"/>
|
||
<child>
|
||
<object class="GtkSearchEntry" id="searchEntry">
|
||
<property name="placeholder-text" translatable="yes">Search extensions</property>
|
||
<property name="max-width-chars">35</property>
|
||
</object>
|
||
</child>
|
||
</object>
|
||
</child>
|
||
<property name="content">
|
||
<object class="GtkStack" id="mainStack">
|
||
<property name="transition-type">crossfade</property>
|
||
<property name="vexpand">True</property>
|
||
<child>
|
||
<object class="GtkStackPage">
|
||
<property name="name">main</property>
|
||
<property name="child">
|
||
<object class="GtkBox">
|
||
<property name="orientation">vertical</property>
|
||
<child>
|
||
<object class="AdwBanner" id="updatesBanner">
|
||
<property name="button-label" translatable="yes">Log Out…</property>
|
||
<property name="action-name">win.logout</property>
|
||
</object>
|
||
</child>
|
||
<child>
|
||
<object class="AdwPreferencesPage">
|
||
<child>
|
||
<object class="AdwPreferencesGroup">
|
||
<child>
|
||
<object class="AdwActionRow">
|
||
<property name="title" translatable="yes">_Extensions</property>
|
||
<property name="activatable-widget">enabledSwitch</property>
|
||
<property name="use-underline">true</property>
|
||
<child type="suffix">
|
||
<object class="GtkMenuButton">
|
||
<property name="valign">center</property>
|
||
<property name="has-frame">false</property>
|
||
<property name="icon-name">info-symbolic</property>
|
||
<accessibility>
|
||
<property name="label" translatable="yes">More Information</property>
|
||
</accessibility>
|
||
<property name="popover">
|
||
<object class="GtkPopover" id="infoPopover">
|
||
<property name="child">
|
||
<object class="AdwClamp">
|
||
<property name="maximum-size">350</property>
|
||
<property name="tightening-threshold">350</property>
|
||
<property name="child">
|
||
<object class="GtkLabel">
|
||
<property name="label" translatable="yes">Extensions can cause performance and stability issues. It is recommended to disable all extensions if you experience problems with your system.</property>
|
||
<property name="wrap">true</property>
|
||
<!-- Hack to make the screen reader read the label -->
|
||
<property name="selectable"
|
||
bind-source="infoPopover"
|
||
bind-property="visible"
|
||
bind-flags="invert-boolean|sync-create"/>
|
||
</object>
|
||
</property>
|
||
</object>
|
||
</property>
|
||
</object>
|
||
</property>
|
||
</object>
|
||
</child>
|
||
<child type="suffix">
|
||
<object class="GtkSwitch" id="enabledSwitch">
|
||
<property name="action-name">win.user-extensions-enabled</property>
|
||
<property name="valign">center</property>
|
||
</object>
|
||
</child>
|
||
</object>
|
||
</child>
|
||
</object>
|
||
</child>
|
||
<child>
|
||
<object class="AdwPreferencesGroup" id="userGroup">
|
||
<property name="title" translatable="yes">User Extensions</property>
|
||
<property name="visible"
|
||
bind-source="userListModel"
|
||
bind-property="n-items"
|
||
bind-flags="sync-create"/>
|
||
<child>
|
||
<object class="GtkListBox" id="userList">
|
||
<property name="selection-mode">none</property>
|
||
<accessibility>
|
||
<relation name="labelled-by">userGroup</relation>
|
||
</accessibility>
|
||
<style>
|
||
<class name="boxed-list"/>
|
||
</style>
|
||
</object>
|
||
</child>
|
||
</object>
|
||
</child>
|
||
<child>
|
||
<object class="AdwPreferencesGroup" id="systemGroup">
|
||
<property name="title" translatable="yes">System Extensions</property>
|
||
<property name="visible"
|
||
bind-source="systemListModel"
|
||
bind-property="n-items"
|
||
bind-flags="sync-create"/>
|
||
<child>
|
||
<object class="GtkListBox" id="systemList">
|
||
<property name="selection-mode">none</property>
|
||
<accessibility>
|
||
<relation name="labelled-by">systemGroup</relation>
|
||
</accessibility>
|
||
<style>
|
||
<class name="boxed-list"/>
|
||
</style>
|
||
</object>
|
||
</child>
|
||
</object>
|
||
</child>
|
||
</object>
|
||
</child>
|
||
</object>
|
||
</property>
|
||
</object>
|
||
</child>
|
||
<child>
|
||
<object class="GtkStackPage">
|
||
<property name="name">search</property>
|
||
<property name="child">
|
||
<object class="AdwPreferencesPage">
|
||
<child>
|
||
<object class="AdwPreferencesGroup">
|
||
<child>
|
||
<object class="GtkListBox" id="searchList">
|
||
<property name="selection-mode">none</property>
|
||
<accessibility>
|
||
<property name="label" translatable="yes">Search Results</property>
|
||
</accessibility>
|
||
<style>
|
||
<class name="boxed-list"/>
|
||
</style>
|
||
</object>
|
||
</child>
|
||
</object>
|
||
</child>
|
||
</object>
|
||
</property>
|
||
</object>
|
||
</child>
|
||
<child>
|
||
<object class="GtkStackPage">
|
||
<property name="name">noresults</property>
|
||
<property name="child">
|
||
<object class="AdwStatusPage">
|
||
<property name="icon-name">org.gnome.Extensions-symbolic</property>
|
||
<property name="title" translatable="yes">No Results Found</property>
|
||
<property name="description" translatable="yes">Try a different search.</property>
|
||
</object>
|
||
</property>
|
||
</object>
|
||
</child>
|
||
<child>
|
||
<object class="GtkStackPage">
|
||
<property name="name">placeholder</property>
|
||
<property name="child">
|
||
<object class="AdwStatusPage">
|
||
<property name="icon-name">org.gnome.Extensions-symbolic</property>
|
||
<property name="title" translatable="yes">No Installed Extensions</property>
|
||
<property name="description" translatable="yes">To find and add extensions, visit <a href="https://extensions.gnome.org">extensions.gnome.org</a>.</property>
|
||
</object>
|
||
</property>
|
||
</object>
|
||
</child>
|
||
<child>
|
||
<object class="GtkStackPage">
|
||
<property name="name">noshell</property>
|
||
<property name="child">
|
||
<object class="AdwStatusPage">
|
||
<property name="title" translatable="yes">Something’s gone wrong</property>
|
||
<property name="description" translatable="yes">We’re very sorry, but it was not possible to get the list of installed extensions. Make sure you are logged into GNOME and try again.</property>
|
||
</object>
|
||
</property>
|
||
</object>
|
||
</child>
|
||
</object>
|
||
</property>
|
||
</object>
|
||
</child>
|
||
</template>
|
||
</interface>
|