use enums for tracklist size and sort order values
This commit is contained in:
parent
99fa2be42f
commit
f38737e6ba
5 changed files with 53 additions and 39 deletions
|
|
@ -1,5 +1,15 @@
|
||||||
<?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">
|
||||||
|
<value nick="artist" value="0" />
|
||||||
|
<value nick="title" value="1" />
|
||||||
|
<value nick="year" value="2" />
|
||||||
|
</enum>
|
||||||
<schema path="/de/coderkun/mcg/" id="de.coderkun.mcg" gettext-domain="mcg">
|
<schema path="/de/coderkun/mcg/" id="de.coderkun.mcg" gettext-domain="mcg">
|
||||||
<key type="s" name="host">
|
<key type="s" name="host">
|
||||||
<default>'localhost'</default>
|
<default>'localhost'</default>
|
||||||
|
|
@ -37,13 +47,8 @@
|
||||||
<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">
|
<key enum="de.coderkun.mcg.TracklistSize" name="tracklist-size">
|
||||||
<default>'large'</default>
|
<default>'large'</default>
|
||||||
<choices>
|
|
||||||
<choice value='large' />
|
|
||||||
<choice value='small' />
|
|
||||||
<choice value='hidden' />
|
|
||||||
</choices>
|
|
||||||
<summary>Size of tracklist on cover panel</summary>
|
<summary>Size of tracklist on cover panel</summary>
|
||||||
<description>The size of the tracklist on the cover panel.</description>
|
<description>The size of the tracklist on the cover panel.</description>
|
||||||
</key>
|
</key>
|
||||||
|
|
@ -53,13 +58,8 @@
|
||||||
<summary>Size of library items</summary>
|
<summary>Size of library items</summary>
|
||||||
<description>The size of items displayed in the library.</description>
|
<description>The size of items displayed in the library.</description>
|
||||||
</key>
|
</key>
|
||||||
<key type="s" name="sort-order">
|
<key enum="de.coderkun.mcg.SortOrder" name="sort-order">
|
||||||
<default>'year'</default>
|
<default>'year'</default>
|
||||||
<choices>
|
|
||||||
<choice value='artist' />
|
|
||||||
<choice value='title' />
|
|
||||||
<choice value='year' />
|
|
||||||
</choices>
|
|
||||||
<summary>Sort criterium for library items</summary>
|
<summary>Sort criterium for library items</summary>
|
||||||
<description>The sort criterium of items displayed in the library.</description>
|
<description>The sort criterium of items displayed in the library.</description>
|
||||||
</key>
|
</key>
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -14,6 +14,8 @@ import urllib.request
|
||||||
|
|
||||||
from hashlib import md5
|
from hashlib import md5
|
||||||
|
|
||||||
|
from mcg.utils import SortOrder
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -605,9 +607,6 @@ class Client(Base):
|
||||||
|
|
||||||
class MCGAlbum:
|
class MCGAlbum:
|
||||||
DEFAULT_ALBUM = 'Various'
|
DEFAULT_ALBUM = 'Various'
|
||||||
SORT_BY_ARTIST = 'artist'
|
|
||||||
SORT_BY_TITLE = 'title'
|
|
||||||
SORT_BY_YEAR = 'year'
|
|
||||||
_FILE_NAMES = ['cover', 'folder']
|
_FILE_NAMES = ['cover', 'folder']
|
||||||
_FILE_EXTS = ['jpg', 'png', 'jpeg']
|
_FILE_EXTS = ['jpg', 'png', 'jpeg']
|
||||||
_FILTER_DELIMITER = ' '
|
_FILTER_DELIMITER = ' '
|
||||||
|
|
@ -720,12 +719,12 @@ class MCGAlbum:
|
||||||
|
|
||||||
def compare(album1, album2, criterion=None):
|
def compare(album1, album2, criterion=None):
|
||||||
if criterion == None:
|
if criterion == None:
|
||||||
criterion = MCGAlbum.SORT_BY_TITLE
|
criterion = SortOrder.TITLE
|
||||||
if criterion == MCGAlbum.SORT_BY_ARTIST:
|
if criterion == SortOrder.ARTIST:
|
||||||
value_function = "get_artists"
|
value_function = "get_artists"
|
||||||
elif criterion == MCGAlbum.SORT_BY_TITLE:
|
elif criterion == SortOrder.TITLE:
|
||||||
value_function = "get_title"
|
value_function = "get_title"
|
||||||
elif criterion == MCGAlbum.SORT_BY_YEAR:
|
elif criterion == SortOrder.YEAR:
|
||||||
value_function = "get_date"
|
value_function = "get_date"
|
||||||
|
|
||||||
value1 = getattr(album1, value_function)()
|
value1 = getattr(album1, value_function)()
|
||||||
|
|
|
||||||
16
mcg/utils.py
16
mcg/utils.py
|
|
@ -52,3 +52,19 @@ class Utils:
|
||||||
filetype = 'jpeg'
|
filetype = 'jpeg'
|
||||||
pixbuf.savev(cache.create_filename(album), filetype, [], [])
|
pixbuf.savev(cache.create_filename(album), filetype, [], [])
|
||||||
return pixbuf
|
return pixbuf
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class TracklistSize:
|
||||||
|
LARGE = 0
|
||||||
|
SMALL = 1
|
||||||
|
HIDDEN = 2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class SortOrder:
|
||||||
|
ARTIST = 0
|
||||||
|
TITLE = 1
|
||||||
|
YEAR = 2
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,8 @@ import threading
|
||||||
from gi.repository import Gtk, Gdk, GObject, GdkPixbuf, GLib
|
from gi.repository import Gtk, Gdk, GObject, GdkPixbuf, GLib
|
||||||
|
|
||||||
from mcg import client
|
from mcg import client
|
||||||
|
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
|
||||||
|
|
||||||
|
|
@ -81,10 +83,10 @@ class Window():
|
||||||
if use_keyring:
|
if use_keyring:
|
||||||
self._panels[Window._PANEL_INDEX_CONNECTION].set_password(keyring.get_password(ZeroconfProvider.KEYRING_SYSTEM, ZeroconfProvider.KEYRING_USERNAME))
|
self._panels[Window._PANEL_INDEX_CONNECTION].set_password(keyring.get_password(ZeroconfProvider.KEYRING_SYSTEM, ZeroconfProvider.KEYRING_USERNAME))
|
||||||
self._panels[Window._PANEL_INDEX_CONNECTION].set_image_dir(self._settings.get_string(Window.SETTING_IMAGE_DIR))
|
self._panels[Window._PANEL_INDEX_CONNECTION].set_image_dir(self._settings.get_string(Window.SETTING_IMAGE_DIR))
|
||||||
self._panels[Window._PANEL_INDEX_COVER].set_tracklist_size(self._settings.get_string(Window.SETTING_TRACKLIST_SIZE))
|
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_string(Window.SETTING_SORT_ORDER))
|
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_type(self._settings.get_boolean(Window.SETTING_SORT_TYPE))
|
self._panels[Window._PANEL_INDEX_LIBRARY].set_sort_type(self._settings.get_boolean(Window.SETTING_SORT_TYPE))
|
||||||
|
|
||||||
# Signals
|
# Signals
|
||||||
|
|
@ -201,7 +203,7 @@ class Window():
|
||||||
|
|
||||||
|
|
||||||
def on_cover_panel_tracklist_size_changed(self, size):
|
def on_cover_panel_tracklist_size_changed(self, size):
|
||||||
self._settings.set_string(Window.SETTING_TRACKLIST_SIZE, size)
|
self._settings.set_enum(Window.SETTING_TRACKLIST_SIZE, size)
|
||||||
|
|
||||||
|
|
||||||
def on_cover_panel_set_song(self, pos, time):
|
def on_cover_panel_set_song(self, pos, time):
|
||||||
|
|
@ -222,7 +224,7 @@ class Window():
|
||||||
|
|
||||||
|
|
||||||
def on_library_panel_sort_order_changed(self, sort_order):
|
def on_library_panel_sort_order_changed(self, sort_order):
|
||||||
self._settings.set_string(Window.SETTING_SORT_ORDER, self._panels[Window._PANEL_INDEX_LIBRARY].get_sort_order())
|
self._settings.set_enum(Window.SETTING_SORT_ORDER, self._panels[Window._PANEL_INDEX_LIBRARY].get_sort_order())
|
||||||
|
|
||||||
|
|
||||||
def on_library_panel_sort_type_changed(self, sort_type):
|
def on_library_panel_sort_type_changed(self, sort_type):
|
||||||
|
|
@ -281,7 +283,7 @@ class Window():
|
||||||
|
|
||||||
|
|
||||||
def on_settings_tracklist_size_changed(self, settings, key):
|
def on_settings_tracklist_size_changed(self, settings, key):
|
||||||
size = settings.get_string(key)
|
size = settings.get_enum(key)
|
||||||
self._panels[Window._PANEL_INDEX_COVER].set_tracklist_size(size)
|
self._panels[Window._PANEL_INDEX_COVER].set_tracklist_size(size)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -292,7 +294,7 @@ class Window():
|
||||||
|
|
||||||
|
|
||||||
def on_settings_sort_order_changed(self, settings, key):
|
def on_settings_sort_order_changed(self, settings, key):
|
||||||
sort_order = settings.get_string(key)
|
sort_order = settings.get_enum(key)
|
||||||
self._panels[Window._PANEL_INDEX_LIBRARY].set_sort_order(sort_order)
|
self._panels[Window._PANEL_INDEX_LIBRARY].set_sort_order(sort_order)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -667,9 +669,6 @@ class CoverPanel(client.Base):
|
||||||
SIGNAL_TOGGLE_FULLSCREEN = 'toggle-fullscreen'
|
SIGNAL_TOGGLE_FULLSCREEN = 'toggle-fullscreen'
|
||||||
SIGNAL_TRACKLIST_SIZE_CHANGED = 'tracklist-size-changed'
|
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):
|
||||||
|
|
@ -679,7 +678,7 @@ class CoverPanel(client.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
|
self._tracklist_size = TracklistSize.LARGE
|
||||||
|
|
||||||
# Widgets
|
# Widgets
|
||||||
self._appwindow = builder.get_object('appwindow')
|
self._appwindow = builder.get_object('appwindow')
|
||||||
|
|
@ -687,9 +686,9 @@ class CoverPanel(client.Base):
|
||||||
self._toolbar = builder.get_object('cover-toolbar')
|
self._toolbar = builder.get_object('cover-toolbar')
|
||||||
# Toolbar menu
|
# Toolbar menu
|
||||||
self._toolbar_tracklist_buttons = {
|
self._toolbar_tracklist_buttons = {
|
||||||
CoverPanel.TRACKLIST_SIZE_LARGE: builder.get_object('cover-toolbar-tracklist-large'),
|
TracklistSize.LARGE: builder.get_object('cover-toolbar-tracklist-large'),
|
||||||
CoverPanel.TRACKLIST_SIZE_SMALL: builder.get_object('cover-toolbar-tracklist-small'),
|
TracklistSize.SMALL: builder.get_object('cover-toolbar-tracklist-small'),
|
||||||
CoverPanel.TRACKLIST_SIZE_HIDDEN: builder.get_object('cover-toolbar-tracklist-hidden')
|
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')
|
||||||
|
|
@ -823,7 +822,7 @@ class CoverPanel(client.Base):
|
||||||
|
|
||||||
def set_fullscreen(self, active):
|
def set_fullscreen(self, active):
|
||||||
if active:
|
if active:
|
||||||
self._change_tracklist_size(CoverPanel.TRACKLIST_SIZE_HIDDEN, False, False)
|
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
|
||||||
|
|
@ -879,10 +878,10 @@ class CoverPanel(client.Base):
|
||||||
|
|
||||||
def _change_tracklist_size(self, size, notify=True, store=True):
|
def _change_tracklist_size(self, size, notify=True, store=True):
|
||||||
# Set tracklist size
|
# Set tracklist size
|
||||||
if size == CoverPanel.TRACKLIST_SIZE_LARGE:
|
if size == TracklistSize.LARGE:
|
||||||
self._panel.set_homogeneous(True)
|
self._panel.set_homogeneous(True)
|
||||||
self._info_revealer.set_reveal_child(True)
|
self._info_revealer.set_reveal_child(True)
|
||||||
elif size == CoverPanel.TRACKLIST_SIZE_SMALL:
|
elif size == TracklistSize.SMALL:
|
||||||
self._panel.set_homogeneous(False)
|
self._panel.set_homogeneous(False)
|
||||||
self._info_revealer.set_reveal_child(True)
|
self._info_revealer.set_reveal_child(True)
|
||||||
else:
|
else:
|
||||||
|
|
@ -1160,7 +1159,7 @@ class LibraryPanel(client.Base):
|
||||||
self._host = "localhost"
|
self._host = "localhost"
|
||||||
self._filter_string = ""
|
self._filter_string = ""
|
||||||
self._item_size = 150
|
self._item_size = 150
|
||||||
self._sort_order = client.MCGAlbum.SORT_BY_YEAR
|
self._sort_order = SortOrder.YEAR
|
||||||
self._sort_type = Gtk.SortType.DESCENDING
|
self._sort_type = Gtk.SortType.DESCENDING
|
||||||
self._grid_pixbufs = {}
|
self._grid_pixbufs = {}
|
||||||
self._old_ranges = {}
|
self._old_ranges = {}
|
||||||
|
|
@ -1188,9 +1187,9 @@ class LibraryPanel(client.Base):
|
||||||
# Toolbar menu
|
# Toolbar menu
|
||||||
self._toolbar_search_bar = builder.get_object('library-toolbar-search')
|
self._toolbar_search_bar = builder.get_object('library-toolbar-search')
|
||||||
self._toolbar_sort_buttons = {
|
self._toolbar_sort_buttons = {
|
||||||
client.MCGAlbum.SORT_BY_ARTIST: builder.get_object('library-toolbar-sort-artist'),
|
SortOrder.ARTIST: builder.get_object('library-toolbar-sort-artist'),
|
||||||
client.MCGAlbum.SORT_BY_TITLE: builder.get_object('library-toolbar-sort-title'),
|
SortOrder.TITLE: builder.get_object('library-toolbar-sort-title'),
|
||||||
client.MCGAlbum.SORT_BY_YEAR: builder.get_object('library-toolbar-sort-year')
|
SortOrder.YEAR: builder.get_object('library-toolbar-sort-year')
|
||||||
}
|
}
|
||||||
self._toolbar_sort_order_button = builder.get_object('library-toolbar-sort-order')
|
self._toolbar_sort_order_button = builder.get_object('library-toolbar-sort-order')
|
||||||
self._grid_scale = builder.get_object('library-toolbar-scale')
|
self._grid_scale = builder.get_object('library-toolbar-scale')
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue