Use overlay for track list on Cover panel (implements #47)
This commit is contained in:
parent
c1295c8ed1
commit
f98b888344
6 changed files with 427 additions and 603 deletions
|
|
@ -7,5 +7,6 @@
|
||||||
<file>gtk.menu.ui</file>
|
<file>gtk.menu.ui</file>
|
||||||
<file>mcg.svg</file>
|
<file>mcg.svg</file>
|
||||||
<file>noise-texture.png</file>
|
<file>noise-texture.png</file>
|
||||||
|
<file>mcg-tracklist.svg</file>
|
||||||
</gresource>
|
</gresource>
|
||||||
</gresources>
|
</gresources>
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,5 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<schemalist>
|
<schemalist>
|
||||||
<enum id="de.coderkun.mcg.TracklistSize">
|
|
||||||
<value nick="large" value="0" />
|
|
||||||
<value nick="small" value="1" />
|
|
||||||
<value nick="hidden" value="2" />
|
|
||||||
</enum>
|
|
||||||
<enum id="de.coderkun.mcg.SortOrder">
|
<enum id="de.coderkun.mcg.SortOrder">
|
||||||
<value nick="artist" value="0" />
|
<value nick="artist" value="0" />
|
||||||
<value nick="title" value="1" />
|
<value nick="title" value="1" />
|
||||||
|
|
@ -47,11 +42,6 @@
|
||||||
<summary>Last selected panel</summary>
|
<summary>Last selected panel</summary>
|
||||||
<description>The index of the last selected panel.</description>
|
<description>The index of the last selected panel.</description>
|
||||||
</key>
|
</key>
|
||||||
<key enum="de.coderkun.mcg.TracklistSize" name="tracklist-size">
|
|
||||||
<default>'large'</default>
|
|
||||||
<summary>Size of tracklist on cover panel</summary>
|
|
||||||
<description>The size of the tracklist on the cover panel.</description>
|
|
||||||
</key>
|
|
||||||
<key type="i" name="item-size">
|
<key type="i" name="item-size">
|
||||||
<range min="100" max="1000" />
|
<range min="100" max="1000" />
|
||||||
<default>150</default>
|
<default>150</default>
|
||||||
|
|
|
||||||
10
data/gtk.css
10
data/gtk.css
|
|
@ -18,6 +18,16 @@
|
||||||
font-weight:bold;
|
font-weight:bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
revealer.sidebar > * {
|
||||||
|
background-color:alpha(@theme_bg_color, 0.8);
|
||||||
|
box-shadow:0 0 10px @theme_bg_color;
|
||||||
|
margin-left:20px
|
||||||
|
}
|
||||||
|
|
||||||
|
revealer.sidebar scale mark indicator {
|
||||||
|
margin-right:5px;
|
||||||
|
}
|
||||||
|
|
||||||
actionbar {
|
actionbar {
|
||||||
background-color:@theme_unfocused_bg_color;
|
background-color:@theme_unfocused_bg_color;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
788
data/gtk.glade
788
data/gtk.glade
|
|
@ -1,91 +1,7 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!-- Generated with glade 3.20.4 -->
|
<!-- Generated with glade 3.22.1 -->
|
||||||
<interface>
|
<interface>
|
||||||
<requires lib="gtk+" version="3.20"/>
|
<requires lib="gtk+" version="3.20"/>
|
||||||
<object class="GtkPopover" id="cover-toolbar-popover">
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="orientation">vertical</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox" id="cover-toolbar-tracklist">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="orientation">vertical</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkLabel">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="label" translatable="yes">Tracklist</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">0</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkRadioButton" id="cover-toolbar-tracklist-large">
|
|
||||||
<property name="label" translatable="yes">large tracklist</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
<property name="receives_default">False</property>
|
|
||||||
<property name="active">True</property>
|
|
||||||
<property name="draw_indicator">True</property>
|
|
||||||
<signal name="toggled" handler="on_cover-toolbar-tracklist_toggled" swapped="no"/>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkRadioButton" id="cover-toolbar-tracklist-small">
|
|
||||||
<property name="label" translatable="yes">small tracklist</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
<property name="receives_default">False</property>
|
|
||||||
<property name="active">True</property>
|
|
||||||
<property name="draw_indicator">True</property>
|
|
||||||
<property name="group">cover-toolbar-tracklist-large</property>
|
|
||||||
<signal name="toggled" handler="on_cover-toolbar-tracklist_toggled" swapped="no"/>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">2</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkRadioButton" id="cover-toolbar-tracklist-hidden">
|
|
||||||
<property name="label" translatable="yes">hide tracklist</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
<property name="receives_default">False</property>
|
|
||||||
<property name="active">True</property>
|
|
||||||
<property name="draw_indicator">True</property>
|
|
||||||
<property name="group">cover-toolbar-tracklist-large</property>
|
|
||||||
<signal name="toggled" handler="on_cover-toolbar-tracklist_toggled" swapped="no"/>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">3</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">2</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<object class="GtkHeaderBar" id="headerbar-library-standalone">
|
<object class="GtkHeaderBar" id="headerbar-library-standalone">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
|
|
@ -364,6 +280,325 @@
|
||||||
<signal name="destroy" handler="on_appwindow_destroy" swapped="no"/>
|
<signal name="destroy" handler="on_appwindow_destroy" swapped="no"/>
|
||||||
<signal name="size-allocate" handler="on_appwindow_size_allocate" swapped="no"/>
|
<signal name="size-allocate" handler="on_appwindow_size_allocate" swapped="no"/>
|
||||||
<signal name="window-state-event" handler="on_appwindow_window_state_event" swapped="no"/>
|
<signal name="window-state-event" handler="on_appwindow_window_state_event" swapped="no"/>
|
||||||
|
<child type="titlebar">
|
||||||
|
<object class="GtkHeaderBar" id="headerbar">
|
||||||
|
<property name="name">headerbar</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="show_close_button">True</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkSwitch" id="headerbar-connection">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="tooltip_text" translatable="yes">Connect or disconnect</property>
|
||||||
|
<signal name="notify::active" handler="on_headerbar-connection_active_notify" swapped="no"/>
|
||||||
|
<signal name="state-set" handler="on_headerbar-connection_state_set" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkSeparator">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="position">2</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkToggleButton" id="headerbar-playpause">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">True</property>
|
||||||
|
<property name="tooltip_text" translatable="yes">Switch between play and pause</property>
|
||||||
|
<signal name="toggled" handler="on_headerbar-playpause_toggled" swapped="no"/>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImage">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="icon_name">media-playback-start</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="position">3</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkVolumeButton" id="headerbar-volume">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="focus_on_click">False</property>
|
||||||
|
<property name="receives_default">True</property>
|
||||||
|
<property name="tooltip_text" translatable="yes">Adjust the volume</property>
|
||||||
|
<property name="relief">none</property>
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
|
<property name="icons">audio-volume-muted
|
||||||
|
audio-volume-high
|
||||||
|
audio-volume-low
|
||||||
|
audio-volume-medium</property>
|
||||||
|
<signal name="button-press-event" handler="on_headerbar-volume_button_press_event" swapped="no"/>
|
||||||
|
<signal name="button-release-event" handler="on_headerbar-volume_button_release_event" swapped="no"/>
|
||||||
|
<signal name="value-changed" handler="on_headerbar-volume_value_changed" swapped="no"/>
|
||||||
|
<child internal-child="plus_button">
|
||||||
|
<object class="GtkButton">
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">True</property>
|
||||||
|
<property name="halign">center</property>
|
||||||
|
<property name="valign">center</property>
|
||||||
|
<property name="relief">none</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child internal-child="minus_button">
|
||||||
|
<object class="GtkButton">
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">True</property>
|
||||||
|
<property name="halign">center</property>
|
||||||
|
<property name="valign">center</property>
|
||||||
|
<property name="relief">none</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="position">4</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child type="title">
|
||||||
|
<object class="GtkStack" id="headerbar-title-stack">
|
||||||
|
<property name="name">headerbar-connection</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="transition_duration">100</property>
|
||||||
|
<property name="transition_type">crossfade</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="headerbar-connectionn-label">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="label" translatable="yes">Connect to MPD</property>
|
||||||
|
<attributes>
|
||||||
|
<attribute name="weight" value="bold"/>
|
||||||
|
</attributes>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="name">page1</property>
|
||||||
|
<property name="title">page1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkStackSwitcher" id="header-panelswitcher">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="stack">panelstack</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="name">page0</property>
|
||||||
|
<property name="title">page0</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="position">4</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkStack" id="toolbarstack">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButtonBox" id="cover-toolbar">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="spacing">6</property>
|
||||||
|
<property name="layout_style">end</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="cover-toolbar-fullscreen">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">True</property>
|
||||||
|
<property name="tooltip_text" translatable="yes">Show the cover in fullscreen mode</property>
|
||||||
|
<signal name="clicked" handler="on_cover-toolbar-fullscreen_clicked" swapped="no"/>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImage">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="icon_name">view-fullscreen-symbolic</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<accelerator key="F11" signal="activate"/>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">False</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
<property name="non_homogeneous">True</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="name">cover</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButtonBox" id="server-toolbar">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="spacing">6</property>
|
||||||
|
<property name="layout_style">end</property>
|
||||||
|
<child>
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="name">server</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButtonBox" id="playlist-toolbar">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="spacing">6</property>
|
||||||
|
<property name="layout_style">end</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkToggleButton" id="playlist-toolbar-select">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">True</property>
|
||||||
|
<property name="tooltip_text" translatable="yes">Select multiple albums</property>
|
||||||
|
<signal name="toggled" handler="on_playlist-toolbar-select_toggled" swapped="no"/>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImage">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="icon_name">object-select-symbolic</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">False</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
<property name="non_homogeneous">True</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="playlist-toolbar-clear">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">True</property>
|
||||||
|
<property name="tooltip_text" translatable="yes">Clear the playlist</property>
|
||||||
|
<signal name="clicked" handler="on_playlist-toolbar-clear_clicked" swapped="no"/>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImage">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="icon_name">edit-clear</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">False</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
<property name="non_homogeneous">True</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="name">playlist</property>
|
||||||
|
<property name="position">2</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButtonBox" id="library-toolbar">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="spacing">6</property>
|
||||||
|
<property name="layout_style">end</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkToggleButton" id="library-toolbar-search">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">True</property>
|
||||||
|
<property name="tooltip_text" translatable="yes">Search the library</property>
|
||||||
|
<signal name="toggled" handler="on_library-toolbar-search_toggled" swapped="no"/>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImage">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="icon_name">system-search-symbolic</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<accelerator key="f" signal="activate" modifiers="GDK_CONTROL_MASK"/>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">False</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
<property name="non_homogeneous">True</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkToggleButton" id="library-toolbar-select">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">True</property>
|
||||||
|
<property name="tooltip_text" translatable="yes">Select multiple albums</property>
|
||||||
|
<signal name="toggled" handler="on_library-toolbar-select_toggled" swapped="no"/>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImage">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="icon_name">object-select-symbolic</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">False</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
<property name="non_homogeneous">True</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkMenuButton">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">True</property>
|
||||||
|
<property name="tooltip_text" translatable="yes">Settings and actions</property>
|
||||||
|
<property name="popover">library-toolbar-popover</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImage">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="icon_name">open-menu-symbolic</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">False</property>
|
||||||
|
<property name="position">2</property>
|
||||||
|
<property name="non_homogeneous">True</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="name">library</property>
|
||||||
|
<property name="position">3</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="pack_type">end</property>
|
||||||
|
<property name="position">4</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkOverlay">
|
<object class="GtkOverlay">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
|
|
@ -1056,10 +1291,9 @@
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkBox" id="cover-panel">
|
<object class="GtkOverlay" id="cover-panel">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="homogeneous">True</property>
|
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkStack" id="cover-stack">
|
<object class="GtkStack" id="cover-stack">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
|
|
@ -1108,20 +1342,20 @@
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">True</property>
|
<property name="index">-1</property>
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">0</property>
|
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child type="overlay">
|
||||||
<object class="GtkRevealer" id="cover-info-revealer">
|
<object class="GtkRevealer" id="cover-info-revealer">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
|
<property name="halign">end</property>
|
||||||
<property name="transition_type">slide-right</property>
|
<property name="transition_type">slide-right</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkScrolledWindow">
|
<object class="GtkScrolledWindow">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
|
<property name="halign">start</property>
|
||||||
<property name="hscrollbar_policy">never</property>
|
<property name="hscrollbar_policy">never</property>
|
||||||
<property name="vscrollbar_policy">never</property>
|
<property name="vscrollbar_policy">never</property>
|
||||||
<child>
|
<child>
|
||||||
|
|
@ -1133,12 +1367,17 @@
|
||||||
<object class="GtkBox" id="cover-info-box">
|
<object class="GtkBox" id="cover-info-box">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
|
<property name="halign">start</property>
|
||||||
|
<property name="margin_left">5</property>
|
||||||
|
<property name="margin_right">5</property>
|
||||||
|
<property name="margin_top">5</property>
|
||||||
|
<property name="margin_bottom">5</property>
|
||||||
<property name="orientation">vertical</property>
|
<property name="orientation">vertical</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkGrid">
|
<object class="GtkGrid">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="margin_top">5</property>
|
<property name="margin_left">5</property>
|
||||||
<property name="margin_bottom">5</property>
|
<property name="margin_bottom">5</property>
|
||||||
<property name="row_spacing">5</property>
|
<property name="row_spacing">5</property>
|
||||||
<property name="column_homogeneous">True</property>
|
<property name="column_homogeneous">True</property>
|
||||||
|
|
@ -1146,8 +1385,10 @@
|
||||||
<object class="GtkLabel" id="cover-album">
|
<object class="GtkLabel" id="cover-album">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
|
<property name="halign">start</property>
|
||||||
<property name="label">Album</property>
|
<property name="label">Album</property>
|
||||||
<property name="wrap">True</property>
|
<property name="wrap">True</property>
|
||||||
|
<property name="xalign">0</property>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="left_attach">0</property>
|
<property name="left_attach">0</property>
|
||||||
|
|
@ -1158,8 +1399,10 @@
|
||||||
<object class="GtkLabel" id="cover-date">
|
<object class="GtkLabel" id="cover-date">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
|
<property name="halign">start</property>
|
||||||
<property name="label">Date</property>
|
<property name="label">Date</property>
|
||||||
<property name="wrap">True</property>
|
<property name="wrap">True</property>
|
||||||
|
<property name="xalign">0</property>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="left_attach">0</property>
|
<property name="left_attach">0</property>
|
||||||
|
|
@ -1170,8 +1413,10 @@
|
||||||
<object class="GtkLabel" id="cover-artist">
|
<object class="GtkLabel" id="cover-artist">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
|
<property name="halign">start</property>
|
||||||
<property name="label">Artist</property>
|
<property name="label">Artist</property>
|
||||||
<property name="wrap">True</property>
|
<property name="wrap">True</property>
|
||||||
|
<property name="xalign">0</property>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="left_attach">0</property>
|
<property name="left_attach">0</property>
|
||||||
|
|
@ -1195,6 +1440,8 @@
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="halign">start</property>
|
<property name="halign">start</property>
|
||||||
<property name="orientation">vertical</property>
|
<property name="orientation">vertical</property>
|
||||||
|
<property name="restrict_to_fill_level">False</property>
|
||||||
|
<property name="digits">0</property>
|
||||||
<property name="draw_value">False</property>
|
<property name="draw_value">False</property>
|
||||||
<signal name="button-press-event" handler="on_cover-songs_button_press_event" swapped="no"/>
|
<signal name="button-press-event" handler="on_cover-songs_button_press_event" swapped="no"/>
|
||||||
<signal name="button-release-event" handler="on_cover-songs_button_release_event" swapped="no"/>
|
<signal name="button-release-event" handler="on_cover-songs_button_release_event" swapped="no"/>
|
||||||
|
|
@ -1202,6 +1449,7 @@
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">True</property>
|
<property name="expand">True</property>
|
||||||
<property name="fill">True</property>
|
<property name="fill">True</property>
|
||||||
|
<property name="pack_type">end</property>
|
||||||
<property name="position">1</property>
|
<property name="position">1</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
|
|
@ -1211,12 +1459,11 @@
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
|
<style>
|
||||||
|
<class name="sidebar"/>
|
||||||
|
<class name="background"/>
|
||||||
|
</style>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
|
|
@ -1695,347 +1942,6 @@
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child type="titlebar">
|
|
||||||
<object class="GtkHeaderBar" id="headerbar">
|
|
||||||
<property name="name">headerbar</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="show_close_button">True</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkSwitch" id="headerbar-connection">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
<property name="tooltip_text" translatable="yes">Connect or disconnect</property>
|
|
||||||
<signal name="notify::active" handler="on_headerbar-connection_active_notify" swapped="no"/>
|
|
||||||
<signal name="state-set" handler="on_headerbar-connection_state_set" swapped="no"/>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="position">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkSeparator">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="position">2</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkToggleButton" id="headerbar-playpause">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
<property name="receives_default">True</property>
|
|
||||||
<property name="tooltip_text" translatable="yes">Switch between play and pause</property>
|
|
||||||
<signal name="toggled" handler="on_headerbar-playpause_toggled" swapped="no"/>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImage">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="icon_name">media-playback-start</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="position">3</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkVolumeButton" id="headerbar-volume">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
<property name="focus_on_click">False</property>
|
|
||||||
<property name="receives_default">True</property>
|
|
||||||
<property name="tooltip_text" translatable="yes">Adjust the volume</property>
|
|
||||||
<property name="relief">none</property>
|
|
||||||
<property name="orientation">vertical</property>
|
|
||||||
<property name="icons">audio-volume-muted
|
|
||||||
audio-volume-high
|
|
||||||
audio-volume-low
|
|
||||||
audio-volume-medium</property>
|
|
||||||
<signal name="button-press-event" handler="on_headerbar-volume_button_press_event" swapped="no"/>
|
|
||||||
<signal name="button-release-event" handler="on_headerbar-volume_button_release_event" swapped="no"/>
|
|
||||||
<signal name="value-changed" handler="on_headerbar-volume_value_changed" swapped="no"/>
|
|
||||||
<child internal-child="plus_button">
|
|
||||||
<object class="GtkButton">
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
<property name="receives_default">True</property>
|
|
||||||
<property name="halign">center</property>
|
|
||||||
<property name="valign">center</property>
|
|
||||||
<property name="relief">none</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child internal-child="minus_button">
|
|
||||||
<object class="GtkButton">
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
<property name="receives_default">True</property>
|
|
||||||
<property name="halign">center</property>
|
|
||||||
<property name="valign">center</property>
|
|
||||||
<property name="relief">none</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="position">4</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child type="title">
|
|
||||||
<object class="GtkStack" id="headerbar-title-stack">
|
|
||||||
<property name="name">headerbar-connection</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="transition_duration">100</property>
|
|
||||||
<property name="transition_type">crossfade</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkLabel" id="headerbar-connectionn-label">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="label" translatable="yes">Connect to MPD</property>
|
|
||||||
<attributes>
|
|
||||||
<attribute name="weight" value="bold"/>
|
|
||||||
</attributes>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="name">page1</property>
|
|
||||||
<property name="title">page1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkStackSwitcher" id="header-panelswitcher">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="stack">panelstack</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="name">page0</property>
|
|
||||||
<property name="title">page0</property>
|
|
||||||
<property name="position">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="position">4</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkStack" id="toolbarstack">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkButtonBox" id="cover-toolbar">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="spacing">6</property>
|
|
||||||
<property name="layout_style">end</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkButton" id="cover-toolbar-fullscreen">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
<property name="receives_default">True</property>
|
|
||||||
<property name="tooltip_text" translatable="yes">Show the cover in fullscreen mode</property>
|
|
||||||
<signal name="clicked" handler="on_cover-toolbar-fullscreen_clicked" swapped="no"/>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImage">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="icon_name">view-fullscreen-symbolic</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<accelerator key="F11" signal="activate"/>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">False</property>
|
|
||||||
<property name="position">0</property>
|
|
||||||
<property name="non_homogeneous">True</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkMenuButton">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
<property name="receives_default">True</property>
|
|
||||||
<property name="tooltip_text" translatable="yes">Settings and actions</property>
|
|
||||||
<property name="popover">cover-toolbar-popover</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImage">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="icon_name">open-menu-symbolic</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">False</property>
|
|
||||||
<property name="position">1</property>
|
|
||||||
<property name="non_homogeneous">True</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="name">cover</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkButtonBox" id="server-toolbar">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="spacing">6</property>
|
|
||||||
<property name="layout_style">end</property>
|
|
||||||
<child>
|
|
||||||
<placeholder/>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="name">server</property>
|
|
||||||
<property name="position">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkButtonBox" id="playlist-toolbar">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="spacing">6</property>
|
|
||||||
<property name="layout_style">end</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkToggleButton" id="playlist-toolbar-select">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
<property name="receives_default">True</property>
|
|
||||||
<property name="tooltip_text" translatable="yes">Select multiple albums</property>
|
|
||||||
<signal name="toggled" handler="on_playlist-toolbar-select_toggled" swapped="no"/>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImage">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="icon_name">object-select-symbolic</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">False</property>
|
|
||||||
<property name="position">0</property>
|
|
||||||
<property name="non_homogeneous">True</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkButton" id="playlist-toolbar-clear">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
<property name="receives_default">True</property>
|
|
||||||
<property name="tooltip_text" translatable="yes">Clear the playlist</property>
|
|
||||||
<signal name="clicked" handler="on_playlist-toolbar-clear_clicked" swapped="no"/>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImage">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="icon_name">edit-clear</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">False</property>
|
|
||||||
<property name="position">1</property>
|
|
||||||
<property name="non_homogeneous">True</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="name">playlist</property>
|
|
||||||
<property name="position">2</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkButtonBox" id="library-toolbar">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="spacing">6</property>
|
|
||||||
<property name="layout_style">end</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkToggleButton" id="library-toolbar-search">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
<property name="receives_default">True</property>
|
|
||||||
<property name="tooltip_text" translatable="yes">Search the library</property>
|
|
||||||
<signal name="toggled" handler="on_library-toolbar-search_toggled" swapped="no"/>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImage">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="icon_name">system-search-symbolic</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<accelerator key="f" signal="activate" modifiers="GDK_CONTROL_MASK"/>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">False</property>
|
|
||||||
<property name="position">0</property>
|
|
||||||
<property name="non_homogeneous">True</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkToggleButton" id="library-toolbar-select">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
<property name="receives_default">True</property>
|
|
||||||
<property name="tooltip_text" translatable="yes">Select multiple albums</property>
|
|
||||||
<signal name="toggled" handler="on_library-toolbar-select_toggled" swapped="no"/>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImage">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="icon_name">object-select-symbolic</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">False</property>
|
|
||||||
<property name="position">1</property>
|
|
||||||
<property name="non_homogeneous">True</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkMenuButton">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
<property name="receives_default">True</property>
|
|
||||||
<property name="tooltip_text" translatable="yes">Settings and actions</property>
|
|
||||||
<property name="popover">library-toolbar-popover</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImage">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="icon_name">open-menu-symbolic</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">False</property>
|
|
||||||
<property name="position">2</property>
|
|
||||||
<property name="non_homogeneous">True</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="name">library</property>
|
|
||||||
<property name="position">3</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="pack_type">end</property>
|
|
||||||
<property name="position">5</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<style>
|
<style>
|
||||||
<class name="bg-texture"/>
|
<class name="bg-texture"/>
|
||||||
</style>
|
</style>
|
||||||
|
|
@ -2054,6 +1960,9 @@
|
||||||
<property name="website">http://www.suruatoel.xyz/codes/mcg</property>
|
<property name="website">http://www.suruatoel.xyz/codes/mcg</property>
|
||||||
<property name="logo">mcg.svg</property>
|
<property name="logo">mcg.svg</property>
|
||||||
<property name="license_type">gpl-3-0</property>
|
<property name="license_type">gpl-3-0</property>
|
||||||
|
<child>
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
<child internal-child="vbox">
|
<child internal-child="vbox">
|
||||||
<object class="GtkBox">
|
<object class="GtkBox">
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
|
|
@ -2081,8 +1990,5 @@
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
|
||||||
<placeholder/>
|
|
||||||
</child>
|
|
||||||
</object>
|
</object>
|
||||||
</interface>
|
</interface>
|
||||||
|
|
|
||||||
|
|
@ -77,14 +77,6 @@ class Utils:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class TracklistSize:
|
|
||||||
LARGE = 0
|
|
||||||
SMALL = 1
|
|
||||||
HIDDEN = 2
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class SortOrder:
|
class SortOrder:
|
||||||
ARTIST = 0
|
ARTIST = 0
|
||||||
TITLE = 1
|
TITLE = 1
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,6 @@ from gi.repository import Gtk, Gdk, GObject, GdkPixbuf, GLib, Gio
|
||||||
|
|
||||||
from mcg import client
|
from mcg import client
|
||||||
from mcg.utils import SortOrder
|
from mcg.utils import SortOrder
|
||||||
from mcg.utils import TracklistSize
|
|
||||||
from mcg.utils import Utils
|
from mcg.utils import Utils
|
||||||
from mcg.zeroconf import ZeroconfProvider
|
from mcg.zeroconf import ZeroconfProvider
|
||||||
|
|
||||||
|
|
@ -83,7 +82,6 @@ class Window():
|
||||||
SETTING_WINDOW_SIZE = 'window-size'
|
SETTING_WINDOW_SIZE = 'window-size'
|
||||||
SETTING_WINDOW_MAXIMIZED = 'window-maximized'
|
SETTING_WINDOW_MAXIMIZED = 'window-maximized'
|
||||||
SETTING_PANEL = 'panel'
|
SETTING_PANEL = 'panel'
|
||||||
SETTING_TRACKLIST_SIZE = 'tracklist-size'
|
|
||||||
SETTING_ITEM_SIZE = 'item-size'
|
SETTING_ITEM_SIZE = 'item-size'
|
||||||
SETTING_SORT_ORDER = 'sort-order'
|
SETTING_SORT_ORDER = 'sort-order'
|
||||||
SETTING_SORT_TYPE = 'sort-type'
|
SETTING_SORT_TYPE = 'sort-type'
|
||||||
|
|
@ -133,7 +131,6 @@ class Window():
|
||||||
if use_keyring:
|
if use_keyring:
|
||||||
self._connection_panel.set_password(keyring.get_password(ZeroconfProvider.KEYRING_SYSTEM, ZeroconfProvider.KEYRING_USERNAME))
|
self._connection_panel.set_password(keyring.get_password(ZeroconfProvider.KEYRING_SYSTEM, ZeroconfProvider.KEYRING_USERNAME))
|
||||||
self._connection_panel.set_image_dir(self._settings.get_string(Window.SETTING_IMAGE_DIR))
|
self._connection_panel.set_image_dir(self._settings.get_string(Window.SETTING_IMAGE_DIR))
|
||||||
self._panels[Window._PANEL_INDEX_COVER].set_tracklist_size(self._settings.get_enum(Window.SETTING_TRACKLIST_SIZE))
|
|
||||||
self._panels[Window._PANEL_INDEX_PLAYLIST].set_item_size(self._settings.get_int(Window.SETTING_ITEM_SIZE))
|
self._panels[Window._PANEL_INDEX_PLAYLIST].set_item_size(self._settings.get_int(Window.SETTING_ITEM_SIZE))
|
||||||
self._panels[Window._PANEL_INDEX_LIBRARY].set_item_size(self._settings.get_int(Window.SETTING_ITEM_SIZE))
|
self._panels[Window._PANEL_INDEX_LIBRARY].set_item_size(self._settings.get_int(Window.SETTING_ITEM_SIZE))
|
||||||
self._panels[Window._PANEL_INDEX_LIBRARY].set_sort_order(self._settings.get_enum(Window.SETTING_SORT_ORDER))
|
self._panels[Window._PANEL_INDEX_LIBRARY].set_sort_order(self._settings.get_enum(Window.SETTING_SORT_ORDER))
|
||||||
|
|
@ -147,7 +144,6 @@ class Window():
|
||||||
self._connection_panel.connect('connection-changed', self.on_connection_panel_connection_changed)
|
self._connection_panel.connect('connection-changed', self.on_connection_panel_connection_changed)
|
||||||
self._panels[Window._PANEL_INDEX_SERVER].connect('change-output-device', self.on_server_panel_output_device_changed)
|
self._panels[Window._PANEL_INDEX_SERVER].connect('change-output-device', self.on_server_panel_output_device_changed)
|
||||||
self._panels[Window._PANEL_INDEX_COVER].connect('toggle-fullscreen', self.on_cover_panel_toggle_fullscreen)
|
self._panels[Window._PANEL_INDEX_COVER].connect('toggle-fullscreen', self.on_cover_panel_toggle_fullscreen)
|
||||||
self._panels[Window._PANEL_INDEX_COVER].connect('tracklist-size-changed', self.on_cover_panel_tracklist_size_changed)
|
|
||||||
self._panels[Window._PANEL_INDEX_COVER].connect('set-song', self.on_cover_panel_set_song)
|
self._panels[Window._PANEL_INDEX_COVER].connect('set-song', self.on_cover_panel_set_song)
|
||||||
self._panels[Window._PANEL_INDEX_PLAYLIST].connect('clear-playlist', self.on_playlist_panel_clear_playlist)
|
self._panels[Window._PANEL_INDEX_PLAYLIST].connect('clear-playlist', self.on_playlist_panel_clear_playlist)
|
||||||
self._panels[Window._PANEL_INDEX_PLAYLIST].connect('remove', self.on_playlist_panel_remove)
|
self._panels[Window._PANEL_INDEX_PLAYLIST].connect('remove', self.on_playlist_panel_remove)
|
||||||
|
|
@ -167,7 +163,6 @@ class Window():
|
||||||
self._mcg.connect_signal(client.Client.SIGNAL_LOAD_ALBUMS, self.on_mcg_load_albums)
|
self._mcg.connect_signal(client.Client.SIGNAL_LOAD_ALBUMS, self.on_mcg_load_albums)
|
||||||
self._mcg.connect_signal(client.Client.SIGNAL_ERROR, self.on_mcg_error)
|
self._mcg.connect_signal(client.Client.SIGNAL_ERROR, self.on_mcg_error)
|
||||||
self._settings.connect('changed::'+Window.SETTING_PANEL, self.on_settings_panel_changed)
|
self._settings.connect('changed::'+Window.SETTING_PANEL, self.on_settings_panel_changed)
|
||||||
self._settings.connect('changed::'+Window.SETTING_TRACKLIST_SIZE, self.on_settings_tracklist_size_changed)
|
|
||||||
self._settings.connect('changed::'+Window.SETTING_ITEM_SIZE, self.on_settings_item_size_changed)
|
self._settings.connect('changed::'+Window.SETTING_ITEM_SIZE, self.on_settings_item_size_changed)
|
||||||
self._settings.connect('changed::'+Window.SETTING_SORT_ORDER, self.on_settings_sort_order_changed)
|
self._settings.connect('changed::'+Window.SETTING_SORT_ORDER, self.on_settings_sort_order_changed)
|
||||||
self._settings.connect('changed::'+Window.SETTING_SORT_TYPE, self.on_settings_sort_type_changed)
|
self._settings.connect('changed::'+Window.SETTING_SORT_TYPE, self.on_settings_sort_type_changed)
|
||||||
|
|
@ -315,10 +310,6 @@ class Window():
|
||||||
self._appwindow.unfullscreen()
|
self._appwindow.unfullscreen()
|
||||||
|
|
||||||
|
|
||||||
def on_cover_panel_tracklist_size_changed(self, widget, size):
|
|
||||||
self._settings.set_enum(Window.SETTING_TRACKLIST_SIZE, size)
|
|
||||||
|
|
||||||
|
|
||||||
def on_cover_panel_set_song(self, widget, pos, time):
|
def on_cover_panel_set_song(self, widget, pos, time):
|
||||||
self._mcg.seek(pos, time)
|
self._mcg.seek(pos, time)
|
||||||
|
|
||||||
|
|
@ -422,11 +413,6 @@ class Window():
|
||||||
self._stack.set_visible_child(self._panels[panel_index].get())
|
self._stack.set_visible_child(self._panels[panel_index].get())
|
||||||
|
|
||||||
|
|
||||||
def on_settings_tracklist_size_changed(self, settings, key):
|
|
||||||
size = settings.get_enum(key)
|
|
||||||
self._panels[Window._PANEL_INDEX_COVER].set_tracklist_size(size)
|
|
||||||
|
|
||||||
|
|
||||||
def on_settings_item_size_changed(self, settings, key):
|
def on_settings_item_size_changed(self, settings, key):
|
||||||
size = settings.get_int(key)
|
size = settings.get_int(key)
|
||||||
self._panels[Window._PANEL_INDEX_PLAYLIST].set_item_size(size)
|
self._panels[Window._PANEL_INDEX_PLAYLIST].set_item_size(size)
|
||||||
|
|
@ -927,7 +913,6 @@ class ServerPanel(GObject.GObject):
|
||||||
class CoverPanel(GObject.GObject):
|
class CoverPanel(GObject.GObject):
|
||||||
__gsignals__ = {
|
__gsignals__ = {
|
||||||
'toggle-fullscreen': (GObject.SIGNAL_RUN_FIRST, None, ()),
|
'toggle-fullscreen': (GObject.SIGNAL_RUN_FIRST, None, ()),
|
||||||
'tracklist-size-changed': (GObject.SIGNAL_RUN_FIRST, None, (int,)),
|
|
||||||
'set-song': (GObject.SIGNAL_RUN_FIRST, None, (int, int,))
|
'set-song': (GObject.SIGNAL_RUN_FIRST, None, (int, int,))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -939,7 +924,6 @@ class CoverPanel(GObject.GObject):
|
||||||
self._cover_pixbuf = None
|
self._cover_pixbuf = None
|
||||||
self._timer = None
|
self._timer = None
|
||||||
self._properties = {}
|
self._properties = {}
|
||||||
self._tracklist_size = TracklistSize.LARGE
|
|
||||||
self._icon_theme = Gtk.IconTheme.get_default()
|
self._icon_theme = Gtk.IconTheme.get_default()
|
||||||
self._fullscreened = False
|
self._fullscreened = False
|
||||||
|
|
||||||
|
|
@ -949,12 +933,6 @@ class CoverPanel(GObject.GObject):
|
||||||
self._toolbar = builder.get_object('cover-toolbar')
|
self._toolbar = builder.get_object('cover-toolbar')
|
||||||
# Toolbar menu
|
# Toolbar menu
|
||||||
self._toolbar_fullscreen_button = builder.get_object('cover-toolbar-fullscreen')
|
self._toolbar_fullscreen_button = builder.get_object('cover-toolbar-fullscreen')
|
||||||
self._toolbar_tracklist = builder.get_object('cover-toolbar-tracklist')
|
|
||||||
self._toolbar_tracklist_buttons = {
|
|
||||||
TracklistSize.LARGE: builder.get_object('cover-toolbar-tracklist-large'),
|
|
||||||
TracklistSize.SMALL: builder.get_object('cover-toolbar-tracklist-small'),
|
|
||||||
TracklistSize.HIDDEN: builder.get_object('cover-toolbar-tracklist-hidden')
|
|
||||||
}
|
|
||||||
# Cover
|
# Cover
|
||||||
self._cover_stack = builder.get_object('cover-stack')
|
self._cover_stack = builder.get_object('cover-stack')
|
||||||
self._cover_spinner = builder.get_object('cover-spinner')
|
self._cover_spinner = builder.get_object('cover-spinner')
|
||||||
|
|
@ -971,7 +949,6 @@ class CoverPanel(GObject.GObject):
|
||||||
self._album_artist_label = builder.get_object('cover-artist')
|
self._album_artist_label = builder.get_object('cover-artist')
|
||||||
# Songs
|
# Songs
|
||||||
self._songs_scale = builder.get_object('cover-songs')
|
self._songs_scale = builder.get_object('cover-songs')
|
||||||
self._songs_scale.override_color(Gtk.StateFlags.NORMAL, Gdk.RGBA(0, 0, 0, 1))
|
|
||||||
|
|
||||||
# Initial actions
|
# Initial actions
|
||||||
GObject.idle_add(self._enable_tracklist)
|
GObject.idle_add(self._enable_tracklist)
|
||||||
|
|
@ -988,7 +965,6 @@ class CoverPanel(GObject.GObject):
|
||||||
def get_signal_handlers(self):
|
def get_signal_handlers(self):
|
||||||
return {
|
return {
|
||||||
'on_cover-toolbar-fullscreen_clicked': self.on_fullscreen_clicked,
|
'on_cover-toolbar-fullscreen_clicked': self.on_fullscreen_clicked,
|
||||||
'on_cover-toolbar-tracklist_toggled': self.on_tracklist_togged,
|
|
||||||
'on_cover-box_button_press_event': self.on_cover_box_pressed,
|
'on_cover-box_button_press_event': self.on_cover_box_pressed,
|
||||||
'on_cover-scroll_size_allocate': self.on_cover_size_allocate,
|
'on_cover-scroll_size_allocate': self.on_cover_size_allocate,
|
||||||
'on_cover-songs_button_press_event': self.on_songs_start_change,
|
'on_cover-songs_button_press_event': self.on_songs_start_change,
|
||||||
|
|
@ -1000,12 +976,6 @@ class CoverPanel(GObject.GObject):
|
||||||
self.emit('toggle-fullscreen')
|
self.emit('toggle-fullscreen')
|
||||||
|
|
||||||
|
|
||||||
def on_tracklist_togged(self, widget):
|
|
||||||
if widget.get_active():
|
|
||||||
size = [key for key, value in self._toolbar_tracklist_buttons.items() if value is widget][0]
|
|
||||||
self._change_tracklist_size(size)
|
|
||||||
|
|
||||||
|
|
||||||
def on_cover_box_pressed(self, widget, event):
|
def on_cover_box_pressed(self, widget, event):
|
||||||
if self._current_album and event.type == Gdk.EventType._2BUTTON_PRESS:
|
if self._current_album and event.type == Gdk.EventType._2BUTTON_PRESS:
|
||||||
self.emit('toggle-fullscreen')
|
self.emit('toggle-fullscreen')
|
||||||
|
|
@ -1035,36 +1005,13 @@ class CoverPanel(GObject.GObject):
|
||||||
self.emit('set-song', pos, time)
|
self.emit('set-song', pos, time)
|
||||||
|
|
||||||
|
|
||||||
def set_tracklist_size(self, size):
|
|
||||||
if self._tracklist_size != size:
|
|
||||||
button = self._toolbar_tracklist_buttons[size]
|
|
||||||
if button and not button.get_active():
|
|
||||||
button.set_active(True)
|
|
||||||
self._change_tracklist_size(size, False)
|
|
||||||
|
|
||||||
|
|
||||||
def get_tracklist_size(self):
|
|
||||||
return self._tracklist_size
|
|
||||||
|
|
||||||
|
|
||||||
def set_album(self, album):
|
def set_album(self, album):
|
||||||
if album:
|
if album:
|
||||||
# Set labels
|
# Set labels
|
||||||
self._album_title_label.set_label(
|
self._album_title_label.set_label(album.get_title())
|
||||||
GObject.markup_escape_text(
|
self._album_date_label.set_label(', '.join(album.get_dates()))
|
||||||
album.get_title()
|
self._album_artist_label.set_label(', '.join(album.get_albumartists()))
|
||||||
)
|
|
||||||
)
|
|
||||||
self._album_date_label.set_markup(
|
|
||||||
GObject.markup_escape_text(
|
|
||||||
', '.join(album.get_dates())
|
|
||||||
)
|
|
||||||
)
|
|
||||||
self._album_artist_label.set_markup(
|
|
||||||
GObject.markup_escape_text(
|
|
||||||
', '.join(album.get_albumartists())
|
|
||||||
)
|
|
||||||
)
|
|
||||||
# Set tracks
|
# Set tracks
|
||||||
self._set_tracks(album)
|
self._set_tracks(album)
|
||||||
|
|
||||||
|
|
@ -1098,7 +1045,6 @@ class CoverPanel(GObject.GObject):
|
||||||
|
|
||||||
def set_fullscreen(self, active):
|
def set_fullscreen(self, active):
|
||||||
if active:
|
if active:
|
||||||
self._change_tracklist_size(TracklistSize.HIDDEN, False, False)
|
|
||||||
self._cover_box.override_background_color(Gtk.StateFlags.NORMAL, Gdk.RGBA(0, 0, 0, 1))
|
self._cover_box.override_background_color(Gtk.StateFlags.NORMAL, Gdk.RGBA(0, 0, 0, 1))
|
||||||
GObject.idle_add(self._resize_image)
|
GObject.idle_add(self._resize_image)
|
||||||
# Hide curser
|
# Hide curser
|
||||||
|
|
@ -1108,7 +1054,6 @@ class CoverPanel(GObject.GObject):
|
||||||
self._fullscreened = True
|
self._fullscreened = True
|
||||||
else:
|
else:
|
||||||
self._fullscreened = False
|
self._fullscreened = False
|
||||||
self._change_tracklist_size(self._tracklist_size, False, False)
|
|
||||||
self._cover_box.override_background_color(Gtk.StateFlags.NORMAL, Gdk.RGBA(0, 0, 0, 0))
|
self._cover_box.override_background_color(Gtk.StateFlags.NORMAL, Gdk.RGBA(0, 0, 0, 0))
|
||||||
GObject.idle_add(self._resize_image)
|
GObject.idle_add(self._resize_image)
|
||||||
# Reset cursor
|
# Reset cursor
|
||||||
|
|
@ -1151,40 +1096,20 @@ class CoverPanel(GObject.GObject):
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
length = length + track.get_length()
|
length = length + track.get_length()
|
||||||
self._songs_scale.add_mark(length, Gtk.PositionType.RIGHT, "{0[0]:02d}:{0[1]:02d} minutes".format(divmod(length, 60)))
|
self._songs_scale.add_mark(
|
||||||
|
length,
|
||||||
|
Gtk.PositionType.RIGHT,
|
||||||
|
"{0[0]:02d}:{0[1]:02d} minutes".format(divmod(length, 60))
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def _enable_tracklist(self):
|
def _enable_tracklist(self):
|
||||||
if self._current_album:
|
if self._current_album:
|
||||||
# enable
|
# enable
|
||||||
self._toolbar_tracklist.set_sensitive(True)
|
self._info_revealer.set_reveal_child(True)
|
||||||
self._change_tracklist_size(self._tracklist_size, False, False)
|
|
||||||
else:
|
else:
|
||||||
# disable
|
# disable
|
||||||
self._toolbar_tracklist.set_sensitive(False)
|
|
||||||
self._change_tracklist_size(TracklistSize.HIDDEN, False, False)
|
|
||||||
|
|
||||||
|
|
||||||
def _change_tracklist_size(self, size, notify=True, store=True):
|
|
||||||
# Set tracklist size
|
|
||||||
if not self._fullscreened:
|
|
||||||
if size == TracklistSize.LARGE:
|
|
||||||
self._panel.set_homogeneous(True)
|
|
||||||
self._info_revealer.set_reveal_child(True)
|
|
||||||
elif size == TracklistSize.SMALL:
|
|
||||||
self._panel.set_homogeneous(False)
|
|
||||||
self._info_revealer.set_reveal_child(True)
|
|
||||||
else:
|
|
||||||
self._panel.set_homogeneous(False)
|
|
||||||
self._info_revealer.set_reveal_child(False)
|
self._info_revealer.set_reveal_child(False)
|
||||||
# Store size
|
|
||||||
if store:
|
|
||||||
self._tracklist_size = size
|
|
||||||
# Notify signals
|
|
||||||
if notify:
|
|
||||||
self.emit('tracklist-size-changed', size)
|
|
||||||
# Resize image
|
|
||||||
GObject.idle_add(self._resize_image)
|
|
||||||
|
|
||||||
|
|
||||||
def _playing(self):
|
def _playing(self):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue