mirror of
https://github.com/vale981/clay
synced 2025-03-04 09:11:37 -05:00
Docs
This commit is contained in:
parent
423b85afb4
commit
ac2a1b2171
18 changed files with 115 additions and 88 deletions
15
clay/app.py
15
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'],
|
||||
|
|
|
@ -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]:
|
||||
|
|
0
clay/pages/__init__.py
Normal file
0
clay/pages/__init__.py
Normal file
|
@ -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.
|
||||
|
|
@ -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.
|
||||
|
|
@ -4,7 +4,7 @@ Generic page classes.
|
|||
# pylint: disable=too-few-public-methods
|
||||
|
||||
|
||||
class Page(object):
|
||||
class AbstractPage(object):
|
||||
"""
|
||||
Represents app page.
|
||||
"""
|
|
@ -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.
|
||||
"""
|
|
@ -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.
|
||||
|
64
clay/pages/settings.py
Normal file
64
clay/pages/settings.py
Normal file
|
@ -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
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
8
docs/source/ref/appsettings.rst
Normal file
8
docs/source/ref/appsettings.rst
Normal file
|
@ -0,0 +1,8 @@
|
|||
appsettings.py
|
||||
##############
|
||||
|
||||
.. automodule:: clay.settings
|
||||
:members:
|
||||
:private-members:
|
||||
:special-members:
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
mylibrary.py
|
||||
############
|
||||
|
||||
.. automodule:: clay.mylibrary
|
||||
.. automodule:: clay.pages.mylibrary
|
||||
:members:
|
||||
:private-members:
|
||||
:special-members:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
myplaylists.py
|
||||
##############
|
||||
|
||||
.. automodule:: clay.myplaylists
|
||||
.. automodule:: clay.pages.myplaylists
|
||||
:members:
|
||||
:private-members:
|
||||
:special-members:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
pages.py
|
||||
########
|
||||
page
|
||||
####
|
||||
|
||||
.. automodule:: clay.page
|
||||
.. automodule:: clay.pages.page
|
||||
:members:
|
||||
:private-members:
|
||||
:special-members:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
playerqueue.py
|
||||
##############
|
||||
|
||||
.. automodule:: clay.playerqueue
|
||||
.. automodule:: clay.pages.playerqueue
|
||||
:members:
|
||||
:private-members:
|
||||
:special-members:
|
||||
|
|
8
docs/source/ref/search.rst
Normal file
8
docs/source/ref/search.rst
Normal file
|
@ -0,0 +1,8 @@
|
|||
settings.py
|
||||
###########
|
||||
|
||||
.. automodule:: clay.pages.search
|
||||
:members:
|
||||
:private-members:
|
||||
:special-members:
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
settings.py
|
||||
###########
|
||||
|
||||
.. automodule:: clay.settings
|
||||
.. automodule:: clay.pages.settings
|
||||
:members:
|
||||
:private-members:
|
||||
:special-members:
|
||||
|
|
Loading…
Add table
Reference in a new issue