From ac2a1b2171144f60a2d6e26b67d57ada66008381 Mon Sep 17 00:00:00 2001 From: Andrew Dunai Date: Tue, 9 Jan 2018 20:49:50 +0200 Subject: [PATCH] Docs --- clay/app.py | 15 +++---- clay/hotkeys.py | 4 +- clay/pages/__init__.py | 0 clay/{ => pages}/mylibrary.py | 4 +- clay/{ => pages}/myplaylists.py | 4 +- clay/{ => pages}/page.py | 2 +- clay/{ => pages}/playerqueue.py | 4 +- clay/{ => pages}/search.py | 4 +- clay/pages/settings.py | 64 ++++++++++++++++++++++++++++++ clay/settings.py | 69 ++++----------------------------- docs/source/index.rst | 3 +- docs/source/ref/appsettings.rst | 8 ++++ docs/source/ref/mylibrary.rst | 2 +- docs/source/ref/myplaylists.rst | 2 +- docs/source/ref/page.rst | 6 +-- docs/source/ref/playerqueue.rst | 2 +- docs/source/ref/search.rst | 8 ++++ docs/source/ref/settings.rst | 2 +- 18 files changed, 115 insertions(+), 88 deletions(-) create mode 100644 clay/pages/__init__.py rename clay/{ => pages}/mylibrary.py (94%) rename clay/{ => pages}/myplaylists.py (97%) rename clay/{ => pages}/page.py (94%) rename clay/{ => pages}/playerqueue.py (93%) rename clay/{ => pages}/search.py (96%) create mode 100644 clay/pages/settings.py create mode 100644 docs/source/ref/appsettings.rst create mode 100644 docs/source/ref/search.rst diff --git a/clay/app.py b/clay/app.py index 9dbb15e..bb9ec83 100755 --- a/clay/app.py +++ b/clay/app.py @@ -13,11 +13,12 @@ import urwid from clay.player import Player from clay.playbar import PlayBar -from clay.mylibrary import MyLibraryPage -from clay.myplaylists import MyPlaylistsPage -from clay.playerqueue import QueuePage -from clay.search import SearchPage -from clay.settings import SettingsPage +from clay.pages.mylibrary import MyLibraryPage +from clay.pages.myplaylists import MyPlaylistsPage +from clay.pages.playerqueue import QueuePage +from clay.pages.search import SearchPage +from clay.pages.settings import SettingsPage +from clay.settings import Settings from clay.notifications import NotificationArea from clay.gp import GP @@ -179,8 +180,8 @@ class AppWidget(urwid.Frame): Request user authorization. """ - if SettingsPage.is_config_valid(): - config = SettingsPage.get_config() + if Settings.is_config_valid(): + config = Settings.get_config() self._login_notification = NotificationArea.notify('Logging in...') GP.get().login_async( config['username'], diff --git a/clay/hotkeys.py b/clay/hotkeys.py index 4b2557d..da9a95f 100644 --- a/clay/hotkeys.py +++ b/clay/hotkeys.py @@ -21,7 +21,7 @@ except Exception as error: else: IS_INIT = True -from clay.settings import SettingsPage +from clay.settings import Settings from clay.eventhook import EventHook from clay.notifications import NotificationArea @@ -74,7 +74,7 @@ class HotkeyManager(object): """ Load hotkey config from settings. """ - config = SettingsPage.get_config() + config = Settings.get_config() hotkeys = config.get('hotkeys', {}) for operation, default_key in HotkeyManager.DEFAULT_HOTKEYS.items(): if operation not in hotkeys or not hotkeys[operation]: diff --git a/clay/pages/__init__.py b/clay/pages/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/clay/mylibrary.py b/clay/pages/mylibrary.py similarity index 94% rename from clay/mylibrary.py rename to clay/pages/mylibrary.py index 3cc349b..35c13a7 100644 --- a/clay/mylibrary.py +++ b/clay/pages/mylibrary.py @@ -6,10 +6,10 @@ import urwid from clay.gp import GP from clay.songlist import SongListBox from clay.notifications import NotificationArea -from clay.page import Page +from clay.pages.page import AbstractPage -class MyLibraryPage(urwid.Columns, Page): +class MyLibraryPage(urwid.Columns, AbstractPage): """ My library page. diff --git a/clay/myplaylists.py b/clay/pages/myplaylists.py similarity index 97% rename from clay/myplaylists.py rename to clay/pages/myplaylists.py index 6a2531c..1f75b3e 100644 --- a/clay/myplaylists.py +++ b/clay/pages/myplaylists.py @@ -6,7 +6,7 @@ import urwid from clay.gp import GP from clay.songlist import SongListBox from clay.notifications import NotificationArea -from clay.page import Page +from clay.pages.page import AbstractPage class MyPlaylistListItem(urwid.Columns): @@ -107,7 +107,7 @@ class MyPlaylistListBox(urwid.ListBox): urwid.emit_signal(self, 'activate', myplaylistlistitem) -class MyPlaylistsPage(urwid.Columns, Page): +class MyPlaylistsPage(urwid.Columns, AbstractPage): """ Playlists page. diff --git a/clay/page.py b/clay/pages/page.py similarity index 94% rename from clay/page.py rename to clay/pages/page.py index 6b397fe..924e692 100644 --- a/clay/page.py +++ b/clay/pages/page.py @@ -4,7 +4,7 @@ Generic page classes. # pylint: disable=too-few-public-methods -class Page(object): +class AbstractPage(object): """ Represents app page. """ diff --git a/clay/playerqueue.py b/clay/pages/playerqueue.py similarity index 93% rename from clay/playerqueue.py rename to clay/pages/playerqueue.py index 7b86c1a..54748b2 100644 --- a/clay/playerqueue.py +++ b/clay/pages/playerqueue.py @@ -5,10 +5,10 @@ import urwid from clay.songlist import SongListBox from clay.player import Player -from clay.page import Page +from clay.pages.page import AbstractPage -class QueuePage(urwid.Columns, Page): +class QueuePage(urwid.Columns, AbstractPage): """ Queue page. """ diff --git a/clay/search.py b/clay/pages/search.py similarity index 96% rename from clay/search.py rename to clay/pages/search.py index 729d0e5..b1c3345 100644 --- a/clay/search.py +++ b/clay/pages/search.py @@ -6,7 +6,7 @@ import urwid from clay.gp import GP from clay.songlist import SongListBox from clay.notifications import NotificationArea -from clay.page import Page +from clay.pages.page import AbstractPage class ArtistListBox(urwid.ListBox): @@ -41,7 +41,7 @@ class SearchBox(urwid.Columns): return super(SearchBox, self).keypress(size, key) -class SearchPage(urwid.Columns, Page): +class SearchPage(urwid.Columns, AbstractPage): """ Search page. diff --git a/clay/pages/settings.py b/clay/pages/settings.py new file mode 100644 index 0000000..8fef585 --- /dev/null +++ b/clay/pages/settings.py @@ -0,0 +1,64 @@ +""" +Components for "Settings" page. +""" +import urwid + +from clay.pages.page import AbstractPage +from clay.settings import Settings + + +class SettingsPage(urwid.Columns, AbstractPage): + """ + Settings page. + """ + @property + def name(self): + return 'Settings' + + @property + def key(self): + return 9 + + def __init__(self, app): + self.app = app + config = Settings.get_config() + self.username = urwid.Edit( + edit_text=config.get('username', '') + ) + self.password = urwid.Edit( + mask='*', edit_text=config.get('password', '') + ) + self.device_id = urwid.Edit( + edit_text=config.get('device_id', '') + ) + super(SettingsPage, self).__init__([urwid.ListBox(urwid.SimpleListWalker([ + urwid.Text('Settings'), + urwid.Divider(' '), + urwid.Text('Username'), + urwid.AttrWrap(self.username, 'input', 'input_focus'), + urwid.Divider(' '), + urwid.Text('Password'), + urwid.AttrWrap(self.password, 'input', 'input_focus'), + urwid.Divider(' '), + urwid.Text('Device ID'), + urwid.AttrWrap(self.device_id, 'input', 'input_focus'), + urwid.Divider(' '), + urwid.AttrWrap(urwid.Button( + 'Save', on_press=self.on_save + ), 'input', 'input_focus') + ]))]) + + def on_save(self, *_): + """ + Called when "Save" button is pressed. + """ + Settings.set_config(dict( + username=self.username.edit_text, + password=self.password.edit_text, + device_id=self.device_id.edit_text + )) + self.app.set_page('MyLibrary') + self.app.log_in() + + def activate(self): + pass diff --git a/clay/settings.py b/clay/settings.py index d08a138..9713443 100644 --- a/clay/settings.py +++ b/clay/settings.py @@ -1,69 +1,17 @@ """ -Components for "Settings" page. +Application settings manager. """ import os import errno import yaml import appdirs -import urwid - -from clay.page import Page -class SettingsPage(urwid.Columns, Page): +class Settings(object): """ - Settings page. + Settings management class. """ - @property - def name(self): - return 'Settings' - - @property - def key(self): - return 9 - - def __init__(self, app): - self.app = app - config = self.__class__.get_config() - self.username = urwid.Edit( - edit_text=config.get('username', '') - ) - self.password = urwid.Edit( - mask='*', edit_text=config.get('password', '') - ) - self.device_id = urwid.Edit( - edit_text=config.get('device_id', '') - ) - super(SettingsPage, self).__init__([urwid.ListBox(urwid.SimpleListWalker([ - urwid.Text('Settings'), - urwid.Divider(' '), - urwid.Text('Username'), - urwid.AttrWrap(self.username, 'input', 'input_focus'), - urwid.Divider(' '), - urwid.Text('Password'), - urwid.AttrWrap(self.password, 'input', 'input_focus'), - urwid.Divider(' '), - urwid.Text('Device ID'), - urwid.AttrWrap(self.device_id, 'input', 'input_focus'), - urwid.Divider(' '), - urwid.AttrWrap(urwid.Button( - 'Save', on_press=self.on_save - ), 'input', 'input_focus') - ]))]) - - def on_save(self, *_): - """ - Called when "Save" button is pressed. - """ - self.__class__.set_config(dict( - username=self.username.edit_text, - password=self.password.edit_text, - device_id=self.device_id.edit_text - )) - self.app.set_page('StartUp') - # self.app.set_page('MyLibrary') - @classmethod def get_config_filename(cls): """ @@ -88,7 +36,7 @@ class SettingsPage(urwid.Columns, Page): """ Read config dictionary. """ - with open(cls.get_config_filename(), 'r') as settings: + with open(Settings.get_config_filename(), 'r') as settings: return yaml.load(settings.read()) @classmethod @@ -96,9 +44,9 @@ class SettingsPage(urwid.Columns, Page): """ Write config dictionary. """ - config = cls.get_config() + config = Settings.get_config() config.update(new_config) - with open(cls.get_config_filename(), 'w') as settings: + with open(Settings.get_config_filename(), 'w') as settings: settings.write(yaml.dump(config, default_flow_style=False)) @classmethod @@ -106,12 +54,9 @@ class SettingsPage(urwid.Columns, Page): """ Return True if existing config is enough to log in, False otherwise. """ - config = cls.get_config() + config = Settings.get_config() return all([ config.get(x, None) for x in ('username', 'password', 'device_id') ]) - - def activate(self): - pass diff --git a/docs/source/index.rst b/docs/source/index.rst index 4f93754..83d9acf 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -11,14 +11,15 @@ Welcome to Clay's documentation! :caption: Contents: ref/app + ref/appsettings ref/gp ref/player ref/songlist ref/playbar - ref/startup ref/mylibrary ref/myplaylists ref/playerqueue + ref/search ref/settings ref/page ref/notifications diff --git a/docs/source/ref/appsettings.rst b/docs/source/ref/appsettings.rst new file mode 100644 index 0000000..f0bdd10 --- /dev/null +++ b/docs/source/ref/appsettings.rst @@ -0,0 +1,8 @@ +appsettings.py +############## + +.. automodule:: clay.settings + :members: + :private-members: + :special-members: + diff --git a/docs/source/ref/mylibrary.rst b/docs/source/ref/mylibrary.rst index a0073d2..c3ea604 100644 --- a/docs/source/ref/mylibrary.rst +++ b/docs/source/ref/mylibrary.rst @@ -1,7 +1,7 @@ mylibrary.py ############ -.. automodule:: clay.mylibrary +.. automodule:: clay.pages.mylibrary :members: :private-members: :special-members: diff --git a/docs/source/ref/myplaylists.rst b/docs/source/ref/myplaylists.rst index 9d4587f..91d0ec4 100644 --- a/docs/source/ref/myplaylists.rst +++ b/docs/source/ref/myplaylists.rst @@ -1,7 +1,7 @@ myplaylists.py ############## -.. automodule:: clay.myplaylists +.. automodule:: clay.pages.myplaylists :members: :private-members: :special-members: diff --git a/docs/source/ref/page.rst b/docs/source/ref/page.rst index 1a1ad58..f8823d4 100644 --- a/docs/source/ref/page.rst +++ b/docs/source/ref/page.rst @@ -1,7 +1,7 @@ -pages.py -######## +page +#### -.. automodule:: clay.page +.. automodule:: clay.pages.page :members: :private-members: :special-members: diff --git a/docs/source/ref/playerqueue.rst b/docs/source/ref/playerqueue.rst index a36a97b..a4143e7 100644 --- a/docs/source/ref/playerqueue.rst +++ b/docs/source/ref/playerqueue.rst @@ -1,7 +1,7 @@ playerqueue.py ############## -.. automodule:: clay.playerqueue +.. automodule:: clay.pages.playerqueue :members: :private-members: :special-members: diff --git a/docs/source/ref/search.rst b/docs/source/ref/search.rst new file mode 100644 index 0000000..76d6e01 --- /dev/null +++ b/docs/source/ref/search.rst @@ -0,0 +1,8 @@ +settings.py +########### + +.. automodule:: clay.pages.search + :members: + :private-members: + :special-members: + diff --git a/docs/source/ref/settings.rst b/docs/source/ref/settings.rst index 3d4a730..61fe1d0 100644 --- a/docs/source/ref/settings.rst +++ b/docs/source/ref/settings.rst @@ -1,7 +1,7 @@ settings.py ########### -.. automodule:: clay.settings +.. automodule:: clay.pages.settings :members: :private-members: :special-members: