mirror of
https://github.com/Febbweiss/mopidy-touchscreen.git
synced 2026-03-05 06:35:43 +00:00
Mute, repeat-single, random buttons working
This commit is contained in:
69
mopidy_touchscreen/.idea/workspace.xml
generated
69
mopidy_touchscreen/.idea/workspace.xml
generated
@@ -26,8 +26,8 @@
|
|||||||
<file leaf-file-name="touch_screen.py" pinned="false" current="false" current-in-tab="false">
|
<file leaf-file-name="touch_screen.py" pinned="false" current="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/touch_screen.py">
|
<entry file="file://$PROJECT_DIR$/touch_screen.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state vertical-scroll-proportion="0.0" vertical-offset="676" max-vertical-offset="1095">
|
<state vertical-scroll-proportion="0.0" vertical-offset="691" max-vertical-offset="1185">
|
||||||
<caret line="61" column="33" selection-start-line="61" selection-start-column="33" selection-end-line="61" selection-end-column="33" />
|
<caret line="77" column="49" selection-start-line="77" selection-start-column="49" selection-end-line="77" selection-end-column="49" />
|
||||||
<folding />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
@@ -36,18 +36,28 @@
|
|||||||
<file leaf-file-name="touch_manager.py" pinned="false" current="false" current-in-tab="false">
|
<file leaf-file-name="touch_manager.py" pinned="false" current="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/touch_manager.py">
|
<entry file="file://$PROJECT_DIR$/touch_manager.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="1005">
|
<state vertical-scroll-proportion="0.0" vertical-offset="586" max-vertical-offset="1005">
|
||||||
<caret line="53" column="24" selection-start-line="53" selection-start-column="24" selection-end-line="53" selection-end-column="24" />
|
<caret line="53" column="24" selection-start-line="53" selection-start-column="24" selection-end-line="53" selection-end-column="24" />
|
||||||
<folding />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
</file>
|
</file>
|
||||||
<file leaf-file-name="screen_manager.py" pinned="false" current="false" current-in-tab="false">
|
<file leaf-file-name="screen_objects.py" pinned="false" current="false" current-in-tab="false">
|
||||||
|
<entry file="file://$PROJECT_DIR$/screen_objects.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state vertical-scroll-proportion="0.0" vertical-offset="1471" max-vertical-offset="3615">
|
||||||
|
<caret line="118" column="22" selection-start-line="118" selection-start-column="22" selection-end-line="118" selection-end-column="22" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
</file>
|
||||||
|
<file leaf-file-name="screen_manager.py" pinned="false" current="true" current-in-tab="true">
|
||||||
<entry file="file://$PROJECT_DIR$/screen_manager.py">
|
<entry file="file://$PROJECT_DIR$/screen_manager.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state vertical-scroll-proportion="0.0" vertical-offset="1411" max-vertical-offset="2010">
|
<state vertical-scroll-proportion="0.4988067" vertical-offset="841" max-vertical-offset="2565">
|
||||||
<caret line="111" column="47" selection-start-line="111" selection-start-column="47" selection-end-line="111" selection-end-column="47" />
|
<caret line="78" column="30" selection-start-line="78" selection-start-column="30" selection-end-line="78" selection-end-column="30" />
|
||||||
<folding />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
@@ -63,16 +73,6 @@
|
|||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
</file>
|
</file>
|
||||||
<file leaf-file-name="ext.conf" pinned="false" current="true" current-in-tab="true">
|
|
||||||
<entry file="file://$PROJECT_DIR$/ext.conf">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="394">
|
|
||||||
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="6" selection-end-column="45" />
|
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
</leaf>
|
</leaf>
|
||||||
</component>
|
</component>
|
||||||
<component name="FindManager">
|
<component name="FindManager">
|
||||||
@@ -89,11 +89,11 @@
|
|||||||
<option value="$PROJECT_DIR$/tracklist.py" />
|
<option value="$PROJECT_DIR$/tracklist.py" />
|
||||||
<option value="$PROJECT_DIR$/dynamic_background.py" />
|
<option value="$PROJECT_DIR$/dynamic_background.py" />
|
||||||
<option value="$PROJECT_DIR$/list_view.py" />
|
<option value="$PROJECT_DIR$/list_view.py" />
|
||||||
<option value="$PROJECT_DIR$/screen_objects.py" />
|
|
||||||
<option value="$PROJECT_DIR$/main_screen.py" />
|
<option value="$PROJECT_DIR$/main_screen.py" />
|
||||||
<option value="$PROJECT_DIR$/__init__.py" />
|
<option value="$PROJECT_DIR$/__init__.py" />
|
||||||
<option value="$PROJECT_DIR$/touch_screen.py" />
|
|
||||||
<option value="$PROJECT_DIR$/ext.conf" />
|
<option value="$PROJECT_DIR$/ext.conf" />
|
||||||
|
<option value="$PROJECT_DIR$/screen_objects.py" />
|
||||||
|
<option value="$PROJECT_DIR$/touch_screen.py" />
|
||||||
<option value="$PROJECT_DIR$/screen_manager.py" />
|
<option value="$PROJECT_DIR$/screen_manager.py" />
|
||||||
</list>
|
</list>
|
||||||
</option>
|
</option>
|
||||||
@@ -676,13 +676,6 @@
|
|||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/screen_objects.py">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state vertical-scroll-proportion="0.78520286" vertical-offset="2956" max-vertical-offset="3405">
|
|
||||||
<caret line="221" column="37" selection-start-line="221" selection-start-column="37" selection-end-line="221" selection-end-column="37" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/list_view.py">
|
<entry file="file://$PROJECT_DIR$/list_view.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state vertical-scroll-proportion="0.0" vertical-offset="525" max-vertical-offset="1215">
|
<state vertical-scroll-proportion="0.0" vertical-offset="525" max-vertical-offset="1215">
|
||||||
@@ -704,10 +697,10 @@
|
|||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/touch_screen.py">
|
<entry file="file://$PROJECT_DIR$/ext.conf">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state vertical-scroll-proportion="0.0" vertical-offset="676" max-vertical-offset="1095">
|
<state vertical-scroll-proportion="0.2284264" vertical-offset="0" max-vertical-offset="394">
|
||||||
<caret line="61" column="33" selection-start-line="61" selection-start-column="33" selection-end-line="61" selection-end-column="33" />
|
<caret line="6" column="45" selection-start-line="6" selection-start-column="45" selection-end-line="6" selection-end-column="45" />
|
||||||
<folding />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
@@ -720,6 +713,14 @@
|
|||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/screen_objects.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state vertical-scroll-proportion="0.0" vertical-offset="1471" max-vertical-offset="3615">
|
||||||
|
<caret line="118" column="22" selection-start-line="118" selection-start-column="22" selection-end-line="118" selection-end-column="22" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/touch_manager.py">
|
<entry file="file://$PROJECT_DIR$/touch_manager.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state vertical-scroll-proportion="0.0" vertical-offset="90" max-vertical-offset="1005">
|
<state vertical-scroll-proportion="0.0" vertical-offset="90" max-vertical-offset="1005">
|
||||||
@@ -728,18 +729,18 @@
|
|||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/screen_manager.py">
|
<entry file="file://$PROJECT_DIR$/touch_screen.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state vertical-scroll-proportion="0.0" vertical-offset="1411" max-vertical-offset="2010">
|
<state vertical-scroll-proportion="0.0" vertical-offset="691" max-vertical-offset="1185">
|
||||||
<caret line="111" column="47" selection-start-line="111" selection-start-column="47" selection-end-line="111" selection-end-column="47" />
|
<caret line="77" column="49" selection-start-line="77" selection-start-column="49" selection-end-line="77" selection-end-column="49" />
|
||||||
<folding />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/ext.conf">
|
<entry file="file://$PROJECT_DIR$/screen_manager.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="394">
|
<state vertical-scroll-proportion="0.4988067" vertical-offset="841" max-vertical-offset="2565">
|
||||||
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="6" selection-end-column="45" />
|
<caret line="78" column="30" selection-start-line="78" selection-start-column="30" selection-end-line="78" selection-end-column="30" />
|
||||||
<folding />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
|
|||||||
@@ -36,12 +36,12 @@ class ScreenManager():
|
|||||||
self.top_bar.fill((0, 0, 0, 128))
|
self.top_bar.fill((0, 0, 0, 128))
|
||||||
|
|
||||||
#Play/pause
|
#Play/pause
|
||||||
button = TouchAndTextItem(self.fonts['dejavusans']," ll",(0, 0), None)
|
button = TouchAndTextItem(self.fonts['dejavusans']," ll", (0, 0), None)
|
||||||
self.screen_objects_manager.set_touch_object("pause_play", button)
|
self.screen_objects_manager.set_touch_object("pause_play", button)
|
||||||
x = button.get_right_pos()
|
x = button.get_right_pos()
|
||||||
|
|
||||||
#Random
|
#Random
|
||||||
button = TouchAndTextItem(self.fonts['dejavuserif'],u"\u2928",(x,0),None)
|
button = TouchAndTextItem(self.fonts['dejavuserif'],u"\u2928", (x, 0), None)
|
||||||
self.screen_objects_manager.set_touch_object("random",button)
|
self.screen_objects_manager.set_touch_object("random",button)
|
||||||
x = button.get_right_pos()
|
x = button.get_right_pos()
|
||||||
|
|
||||||
@@ -76,6 +76,8 @@ class ScreenManager():
|
|||||||
self.down_bar = pygame.Surface((self.size[0], self.base_size),pygame.SRCALPHA)
|
self.down_bar = pygame.Surface((self.size[0], self.base_size),pygame.SRCALPHA)
|
||||||
self.down_bar.fill((0, 0, 0, 128))
|
self.down_bar.fill((0, 0, 0, 128))
|
||||||
|
|
||||||
|
self.options_changed()
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
surface = pygame.Surface(self.size)
|
surface = pygame.Surface(self.size)
|
||||||
self.background.draw_background(surface)
|
self.background.draw_background(surface)
|
||||||
@@ -110,11 +112,13 @@ class ScreenManager():
|
|||||||
elif key == "mute":
|
elif key == "mute":
|
||||||
mute = not self.core.playback.mute.get()
|
mute = not self.core.playback.mute.get()
|
||||||
self.core.playback.set_mute(mute)
|
self.core.playback.set_mute(mute)
|
||||||
#self.backend.tell({'action':'mute','value':mute})
|
self.mute_changed(mute)
|
||||||
elif key == "random":
|
elif key == "random":
|
||||||
logger.error(self.core.tracklist.random)
|
random = not self.core.tracklist.random.get()
|
||||||
self.core.tracklist.random = not self.core.tracklist.random
|
self.core.tracklist.set_random(random)
|
||||||
#self.backend.tell({'action':'random','value':random})
|
self.options_changed()
|
||||||
|
elif key == "repeat":
|
||||||
|
self.change_repeat_single()
|
||||||
elif key == "menu_main":
|
elif key == "menu_main":
|
||||||
self.current_screen = 0
|
self.current_screen = 0
|
||||||
elif key == "menu_tracklist":
|
elif key == "menu_tracklist":
|
||||||
@@ -126,12 +130,44 @@ class ScreenManager():
|
|||||||
|
|
||||||
def playback_state_changed(self, old_state, new_state):
|
def playback_state_changed(self, old_state, new_state):
|
||||||
if new_state == mopidy.core.PlaybackState.PLAYING:
|
if new_state == mopidy.core.PlaybackState.PLAYING:
|
||||||
self.screen_objects_manager.get_touch_object("pause_play").set_text(" ll",False)
|
self.screen_objects_manager.get_touch_object("pause_play").set_text(" ll", True)
|
||||||
else:
|
else:
|
||||||
self.screen_objects_manager.get_touch_object("pause_play").set_text(u" \u25B8",True)
|
self.screen_objects_manager.get_touch_object("pause_play").set_text(u" \u25B8",True)
|
||||||
|
|
||||||
def mute_changed(self, mute):
|
def mute_changed(self, mute):
|
||||||
self.touch_text_manager.get_touch_object("mute").set_active(mute)
|
self.screen_objects_manager.get_touch_object("mute").set_active(mute)
|
||||||
|
|
||||||
def tracklist_changed(self):
|
def tracklist_changed(self):
|
||||||
self.screens[1].tracklist_changed()
|
self.screens[1].tracklist_changed()
|
||||||
|
|
||||||
|
def options_changed(self):
|
||||||
|
self.screen_objects_manager.get_touch_object("random").set_active(self.core.tracklist.random.get())
|
||||||
|
repeat = self.core.tracklist.repeat.get()
|
||||||
|
single = self.core.tracklist.single.get()
|
||||||
|
repeat_button = self.screen_objects_manager.get_touch_object("repeat")
|
||||||
|
repeat_button.set_active(repeat)
|
||||||
|
if single:
|
||||||
|
repeat_button.set_text(u"\u27F21", True)
|
||||||
|
else:
|
||||||
|
repeat_button.set_text(u"\u27F2", True)
|
||||||
|
|
||||||
|
def change_repeat_single(self):
|
||||||
|
repeat = self.core.tracklist.repeat.get()
|
||||||
|
single = self.core.tracklist.single.get()
|
||||||
|
if single:
|
||||||
|
if repeat:
|
||||||
|
repeat = False
|
||||||
|
single = False
|
||||||
|
else:
|
||||||
|
repeat = True
|
||||||
|
single = False
|
||||||
|
else:
|
||||||
|
if repeat:
|
||||||
|
repeat = True
|
||||||
|
single = True
|
||||||
|
else:
|
||||||
|
repeat = False
|
||||||
|
single = True
|
||||||
|
self.core.tracklist.set_repeat(repeat)
|
||||||
|
self.core.tracklist.set_single(single)
|
||||||
|
self.options_changed()
|
||||||
|
|||||||
@@ -110,13 +110,13 @@ class TextItem(BaseItem):
|
|||||||
|
|
||||||
def render(self, surface):
|
def render(self, surface):
|
||||||
if self.fit_horizontal:
|
if self.fit_horizontal:
|
||||||
self.box
|
pass
|
||||||
else:
|
else:
|
||||||
self.box = self.font.render(self.text, True, self.color)
|
self.box = self.font.render(self.text, True, self.color)
|
||||||
surface.blit(self.box, self.pos, area=self.rect)
|
surface.blit(self.box, self.pos, area=self.rect)
|
||||||
|
|
||||||
def set_text(self, text, same_size):
|
def set_text(self, text, change_size):
|
||||||
if same_size:
|
if change_size:
|
||||||
TextItem.__init__(self, self.font, text, self.pos, None)
|
TextItem.__init__(self, self.font, text, self.pos, None)
|
||||||
else:
|
else:
|
||||||
TextItem.__init__(self, self.font, text, self.pos, self.size)
|
TextItem.__init__(self, self.font, text, self.pos, self.size)
|
||||||
@@ -140,10 +140,24 @@ class TouchAndTextItem(TouchObject, TextItem):
|
|||||||
def __init__(self, font, text, pos, size):
|
def __init__(self, font, text, pos, size):
|
||||||
TextItem.__init__(self, font, text, pos, size)
|
TextItem.__init__(self, font, text, pos, size)
|
||||||
TouchObject.__init__(self, pos, self.size)
|
TouchObject.__init__(self, pos, self.size)
|
||||||
|
self.active_color = (255, 0, 255)
|
||||||
|
self.active_box = self.font.render(text, True, self.active_color)
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
TextItem.update(self)
|
TextItem.update(self)
|
||||||
|
|
||||||
|
def render(self, surface):
|
||||||
|
if self.fit_horizontal:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
if self.active:
|
||||||
|
self.active_box = self.font.render(self.text, True, self.active_color)
|
||||||
|
else:
|
||||||
|
self.box = self.font.render(self.text, True, self.color)
|
||||||
|
if self.active:
|
||||||
|
surface.blit(self.active_box, self.pos, area=self.rect)
|
||||||
|
else:
|
||||||
|
surface.blit(self.box, self.pos, area=self.rect)
|
||||||
|
|
||||||
class Progressbar(TouchObject):
|
class Progressbar(TouchObject):
|
||||||
|
|
||||||
|
|||||||
@@ -72,3 +72,9 @@ class TouchScreen(pykka.ThreadingActor, core.CoreListener):
|
|||||||
self.screen_manager.tracklist_changed()
|
self.screen_manager.tracklist_changed()
|
||||||
except:
|
except:
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
|
|
||||||
|
def options_changed(self):
|
||||||
|
try:
|
||||||
|
self.screen_manager.options_changed()
|
||||||
|
except:
|
||||||
|
traceback.print_exc()
|
||||||
|
|||||||
Reference in New Issue
Block a user