add options for different tracklist sizes on cover panel
This commit is contained in:
parent
0f4ba72198
commit
ed29006f10
4 changed files with 243 additions and 59 deletions
|
|
@ -37,6 +37,16 @@
|
||||||
<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 type="s" name="tracklist-size">
|
||||||
|
<default>'large'</default>
|
||||||
|
<choices>
|
||||||
|
<choice value='large' />
|
||||||
|
<choice value='small' />
|
||||||
|
<choice value='hidden' />
|
||||||
|
</choices>
|
||||||
|
<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>
|
||||||
|
|
|
||||||
Binary file not shown.
245
data/gtk.glade
245
data/gtk.glade
|
|
@ -2,6 +2,90 @@
|
||||||
<!-- Generated with glade 3.20.0 -->
|
<!-- Generated with glade 3.20.0 -->
|
||||||
<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>
|
||||||
|
|
@ -519,85 +603,91 @@
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkBox" id="cover-info-box">
|
<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="orientation">vertical</property>
|
<property name="transition_type">slide-right</property>
|
||||||
|
<property name="reveal_child">True</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkGrid">
|
<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="margin_top">5</property>
|
|
||||||
<property name="margin_bottom">5</property>
|
|
||||||
<property name="row_spacing">5</property>
|
|
||||||
<property name="row_homogeneous">True</property>
|
|
||||||
<property name="column_homogeneous">True</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkLabel" id="cover-album">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="label">Album</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="left_attach">0</property>
|
|
||||||
<property name="top_attach">0</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkLabel" id="cover-date">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="label">Date</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="left_attach">0</property>
|
|
||||||
<property name="top_attach">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkLabel" id="cover-artist">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="label">Artist</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="left_attach">0</property>
|
|
||||||
<property name="top_attach">2</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<style>
|
|
||||||
<class name="cover-labels"/>
|
|
||||||
</style>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="padding">10</property>
|
|
||||||
<property name="position">0</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkScale" id="cover-songs">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
<property name="halign">start</property>
|
|
||||||
<property name="orientation">vertical</property>
|
<property name="orientation">vertical</property>
|
||||||
<property name="draw_value">False</property>
|
<child>
|
||||||
<signal name="button-press-event" handler="on_cover-songs_button_press_event" swapped="no"/>
|
<object class="GtkGrid">
|
||||||
<signal name="button-release-event" handler="on_cover-songs_button_release_event" swapped="no"/>
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="margin_top">5</property>
|
||||||
|
<property name="margin_bottom">5</property>
|
||||||
|
<property name="row_spacing">5</property>
|
||||||
|
<property name="row_homogeneous">True</property>
|
||||||
|
<property name="column_homogeneous">True</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="cover-album">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="label">Album</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="left_attach">0</property>
|
||||||
|
<property name="top_attach">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="cover-date">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="label">Date</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="left_attach">0</property>
|
||||||
|
<property name="top_attach">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="cover-artist">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="label">Artist</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="left_attach">0</property>
|
||||||
|
<property name="top_attach">2</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<style>
|
||||||
|
<class name="cover-labels"/>
|
||||||
|
</style>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="padding">10</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkScale" id="cover-songs">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="halign">start</property>
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
|
<property name="draw_value">False</property>
|
||||||
|
<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"/>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
|
||||||
<property name="expand">True</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">False</property>
|
||||||
<property name="fill">True</property>
|
<property name="fill">True</property>
|
||||||
<property name="padding">10</property>
|
|
||||||
<property name="pack_type">end</property>
|
|
||||||
<property name="position">1</property>
|
<property name="position">1</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
|
|
@ -1068,6 +1158,27 @@
|
||||||
<property name="non_homogeneous">True</property>
|
<property name="non_homogeneous">True</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkMenuButton">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">True</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>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="name">cover</property>
|
<property name="name">cover</property>
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,7 @@ class Application(Gtk.Application):
|
||||||
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'
|
||||||
|
|
@ -169,6 +170,7 @@ class Window():
|
||||||
if use_keyring:
|
if use_keyring:
|
||||||
self._panels[Window._PANEL_INDEX_CONNECTION].set_password(keyring.get_password(Application.KEYRING_SYSTEM, Application.KEYRING_USERNAME))
|
self._panels[Window._PANEL_INDEX_CONNECTION].set_password(keyring.get_password(Application.KEYRING_SYSTEM, Application.KEYRING_USERNAME))
|
||||||
self._panels[Window._PANEL_INDEX_CONNECTION].set_image_dir(self._settings.get_string(Application.SETTING_IMAGE_DIR))
|
self._panels[Window._PANEL_INDEX_CONNECTION].set_image_dir(self._settings.get_string(Application.SETTING_IMAGE_DIR))
|
||||||
|
self._panels[Window._PANEL_INDEX_COVER].set_tracklist_size(self._settings.get_string(Application.SETTING_TRACKLIST_SIZE))
|
||||||
self._panels[Window._PANEL_INDEX_PLAYLIST].set_item_size(self._settings.get_int(Application.SETTING_ITEM_SIZE))
|
self._panels[Window._PANEL_INDEX_PLAYLIST].set_item_size(self._settings.get_int(Application.SETTING_ITEM_SIZE))
|
||||||
self._panels[Window._PANEL_INDEX_LIBRARY].set_item_size(self._settings.get_int(Application.SETTING_ITEM_SIZE))
|
self._panels[Window._PANEL_INDEX_LIBRARY].set_item_size(self._settings.get_int(Application.SETTING_ITEM_SIZE))
|
||||||
self._panels[Window._PANEL_INDEX_LIBRARY].set_sort_order(self._settings.get_string(Application.SETTING_SORT_ORDER))
|
self._panels[Window._PANEL_INDEX_LIBRARY].set_sort_order(self._settings.get_string(Application.SETTING_SORT_ORDER))
|
||||||
|
|
@ -181,6 +183,7 @@ class Window():
|
||||||
self._header_bar.connect_signal(HeaderBar.SIGNAL_SET_VOLUME, self.on_header_bar_set_volume)
|
self._header_bar.connect_signal(HeaderBar.SIGNAL_SET_VOLUME, self.on_header_bar_set_volume)
|
||||||
self._panels[Window._PANEL_INDEX_CONNECTION].connect_signal(ConnectionPanel.SIGNAL_CONNECTION_CHANGED, self.on_connection_panel_connection_changed)
|
self._panels[Window._PANEL_INDEX_CONNECTION].connect_signal(ConnectionPanel.SIGNAL_CONNECTION_CHANGED, self.on_connection_panel_connection_changed)
|
||||||
self._panels[Window._PANEL_INDEX_COVER].connect_signal(CoverPanel.SIGNAL_TOGGLE_FULLSCREEN, self.on_cover_panel_toggle_fullscreen)
|
self._panels[Window._PANEL_INDEX_COVER].connect_signal(CoverPanel.SIGNAL_TOGGLE_FULLSCREEN, self.on_cover_panel_toggle_fullscreen)
|
||||||
|
self._panels[Window._PANEL_INDEX_COVER].connect_signal(CoverPanel.SIGNAL_TRACKLIST_SIZE_CHANGED, self.on_cover_panel_tracklist_size_changed)
|
||||||
self._panels[Window._PANEL_INDEX_COVER].connect_signal(CoverPanel.SIGNAL_SET_SONG, self.on_cover_panel_set_song)
|
self._panels[Window._PANEL_INDEX_COVER].connect_signal(CoverPanel.SIGNAL_SET_SONG, self.on_cover_panel_set_song)
|
||||||
self._panels[Window._PANEL_INDEX_PLAYLIST].connect_signal(PlaylistPanel.SIGNAL_CLEAR_PLAYLIST, self.on_playlist_panel_clear_playlist)
|
self._panels[Window._PANEL_INDEX_PLAYLIST].connect_signal(PlaylistPanel.SIGNAL_CLEAR_PLAYLIST, self.on_playlist_panel_clear_playlist)
|
||||||
self._panels[Window._PANEL_INDEX_LIBRARY].connect_signal(LibraryPanel.SIGNAL_UPDATE, self.on_library_panel_update)
|
self._panels[Window._PANEL_INDEX_LIBRARY].connect_signal(LibraryPanel.SIGNAL_UPDATE, self.on_library_panel_update)
|
||||||
|
|
@ -194,6 +197,7 @@ class Window():
|
||||||
self._mcg.connect_signal(mcg.Client.SIGNAL_LOAD_ALBUMS, self.on_mcg_load_albums)
|
self._mcg.connect_signal(mcg.Client.SIGNAL_LOAD_ALBUMS, self.on_mcg_load_albums)
|
||||||
self._mcg.connect_signal(mcg.Client.SIGNAL_ERROR, self.on_mcg_error)
|
self._mcg.connect_signal(mcg.Client.SIGNAL_ERROR, self.on_mcg_error)
|
||||||
self._settings.connect('changed::'+Application.SETTING_PANEL, self.on_settings_panel_changed)
|
self._settings.connect('changed::'+Application.SETTING_PANEL, self.on_settings_panel_changed)
|
||||||
|
self._settings.connect('changed::'+Application.SETTING_TRACKLIST_SIZE, self.on_settings_tracklist_size_changed)
|
||||||
self._settings.connect('changed::'+Application.SETTING_ITEM_SIZE, self.on_settings_item_size_changed)
|
self._settings.connect('changed::'+Application.SETTING_ITEM_SIZE, self.on_settings_item_size_changed)
|
||||||
self._settings.connect('changed::'+Application.SETTING_SORT_ORDER, self.on_settings_sort_order_changed)
|
self._settings.connect('changed::'+Application.SETTING_SORT_ORDER, self.on_settings_sort_order_changed)
|
||||||
self._settings.connect('changed::'+Application.SETTING_SORT_TYPE, self.on_settings_sort_type_changed)
|
self._settings.connect('changed::'+Application.SETTING_SORT_TYPE, self.on_settings_sort_type_changed)
|
||||||
|
|
@ -285,6 +289,10 @@ class Window():
|
||||||
self._appwindow.unfullscreen()
|
self._appwindow.unfullscreen()
|
||||||
|
|
||||||
|
|
||||||
|
def on_cover_panel_tracklist_size_changed(self, size):
|
||||||
|
self._settings.set_string(Application.SETTING_TRACKLIST_SIZE, size)
|
||||||
|
|
||||||
|
|
||||||
def on_cover_panel_set_song(self, pos, time):
|
def on_cover_panel_set_song(self, pos, time):
|
||||||
self._mcg.seek(pos, time)
|
self._mcg.seek(pos, time)
|
||||||
|
|
||||||
|
|
@ -361,6 +369,11 @@ 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_string(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)
|
||||||
|
|
@ -741,7 +754,11 @@ class ConnectionPanel(mcg.Base):
|
||||||
|
|
||||||
class CoverPanel(mcg.Base):
|
class CoverPanel(mcg.Base):
|
||||||
SIGNAL_TOGGLE_FULLSCREEN = 'toggle-fullscreen'
|
SIGNAL_TOGGLE_FULLSCREEN = 'toggle-fullscreen'
|
||||||
|
SIGNAL_TRACKLIST_SIZE_CHANGED = 'tracklist-size-changed'
|
||||||
SIGNAL_SET_SONG = 'set-song'
|
SIGNAL_SET_SONG = 'set-song'
|
||||||
|
TRACKLIST_SIZE_LARGE = 'large'
|
||||||
|
TRACKLIST_SIZE_SMALL = 'small'
|
||||||
|
TRACKLIST_SIZE_HIDDEN = 'hidden'
|
||||||
|
|
||||||
|
|
||||||
def __init__(self, builder):
|
def __init__(self, builder):
|
||||||
|
|
@ -751,11 +768,18 @@ class CoverPanel(mcg.Base):
|
||||||
self._cover_pixbuf = None
|
self._cover_pixbuf = None
|
||||||
self._timer = None
|
self._timer = None
|
||||||
self._properties = {}
|
self._properties = {}
|
||||||
|
self._tracklist_size = CoverPanel.TRACKLIST_SIZE_LARGE
|
||||||
|
|
||||||
# Widgets
|
# Widgets
|
||||||
self._appwindow = builder.get_object('appwindow')
|
self._appwindow = builder.get_object('appwindow')
|
||||||
self._panel = builder.get_object('cover-panel')
|
self._panel = builder.get_object('cover-panel')
|
||||||
self._toolbar = builder.get_object('cover-toolbar')
|
self._toolbar = builder.get_object('cover-toolbar')
|
||||||
|
# Toolbar menu
|
||||||
|
self._toolbar_tracklist_buttons = {
|
||||||
|
CoverPanel.TRACKLIST_SIZE_LARGE: builder.get_object('cover-toolbar-tracklist-large'),
|
||||||
|
CoverPanel.TRACKLIST_SIZE_SMALL: builder.get_object('cover-toolbar-tracklist-small'),
|
||||||
|
CoverPanel.TRACKLIST_SIZE_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')
|
||||||
|
|
@ -763,6 +787,7 @@ class CoverPanel(mcg.Base):
|
||||||
self._cover_box = builder.get_object('cover-box')
|
self._cover_box = builder.get_object('cover-box')
|
||||||
self._cover_image = builder.get_object('cover-image')
|
self._cover_image = builder.get_object('cover-image')
|
||||||
# Album Infos
|
# Album Infos
|
||||||
|
self._info_revealer = builder.get_object('cover-info-revealer')
|
||||||
self._info_box = builder.get_object('cover-info-box')
|
self._info_box = builder.get_object('cover-info-box')
|
||||||
self._album_title_label = builder.get_object('cover-album')
|
self._album_title_label = builder.get_object('cover-album')
|
||||||
self._album_date_label = builder.get_object('cover-date')
|
self._album_date_label = builder.get_object('cover-date')
|
||||||
|
|
@ -783,6 +808,7 @@ class CoverPanel(mcg.Base):
|
||||||
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,
|
||||||
|
|
@ -794,6 +820,12 @@ class CoverPanel(mcg.Base):
|
||||||
self._callback(self.SIGNAL_TOGGLE_FULLSCREEN)
|
self._callback(self.SIGNAL_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 event.type == Gdk.EventType._2BUTTON_PRESS:
|
if event.type == Gdk.EventType._2BUTTON_PRESS:
|
||||||
self._callback(self.SIGNAL_TOGGLE_FULLSCREEN)
|
self._callback(self.SIGNAL_TOGGLE_FULLSCREEN)
|
||||||
|
|
@ -823,6 +855,18 @@ class CoverPanel(mcg.Base):
|
||||||
self._callback(self.SIGNAL_SET_SONG, pos, time)
|
self._callback(self.SIGNAL_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):
|
||||||
# Set labels
|
# Set labels
|
||||||
self._album_title_label.set_label(
|
self._album_title_label.set_label(
|
||||||
|
|
@ -868,8 +912,7 @@ class CoverPanel(mcg.Base):
|
||||||
|
|
||||||
def set_fullscreen(self, active):
|
def set_fullscreen(self, active):
|
||||||
if active:
|
if active:
|
||||||
self._songs_scale.hide()
|
self._change_tracklist_size(CoverPanel.TRACKLIST_SIZE_HIDDEN, False, False)
|
||||||
self._info_box.hide()
|
|
||||||
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
|
||||||
|
|
@ -877,8 +920,7 @@ class CoverPanel(mcg.Base):
|
||||||
Gdk.Cursor.new_from_name(Gdk.Display.get_default(), "none")
|
Gdk.Cursor.new_from_name(Gdk.Display.get_default(), "none")
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
self._songs_scale.show()
|
self._change_tracklist_size(self._tracklist_size, False, False)
|
||||||
self._info_box.show()
|
|
||||||
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
|
||||||
|
|
@ -924,6 +966,27 @@ class CoverPanel(mcg.Base):
|
||||||
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 _change_tracklist_size(self, size, notify=True, store=True):
|
||||||
|
# Set tracklist size
|
||||||
|
if size == CoverPanel.TRACKLIST_SIZE_LARGE:
|
||||||
|
self._panel.set_homogeneous(True)
|
||||||
|
self._info_revealer.set_reveal_child(True)
|
||||||
|
elif size == CoverPanel.TRACKLIST_SIZE_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)
|
||||||
|
# Store size
|
||||||
|
if store:
|
||||||
|
self._tracklist_size = size
|
||||||
|
# Notify signals
|
||||||
|
if notify:
|
||||||
|
self._callback(CoverPanel.SIGNAL_TRACKLIST_SIZE_CHANGED, size)
|
||||||
|
# Resize image
|
||||||
|
self._resize_image()
|
||||||
|
|
||||||
|
|
||||||
def _playing(self):
|
def _playing(self):
|
||||||
value = self._songs_scale.get_value() + 1
|
value = self._songs_scale.get_value() + 1
|
||||||
self._songs_scale.set_value(value)
|
self._songs_scale.set_value(value)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue