mirror of
https://github.com/Febbweiss/mopidy-touchscreen.git
synced 2026-03-04 22:25:39 +00:00
Progressbar color
Volume control working
This commit is contained in:
334
mopidy_touchscreen/.idea/workspace.xml
generated
334
mopidy_touchscreen/.idea/workspace.xml
generated
@@ -23,13 +23,23 @@
|
||||
</component>
|
||||
<component name="FileEditorManager">
|
||||
<leaf>
|
||||
<file leaf-file-name="main_screen.py" pinned="false" current="true" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/main_screen.py">
|
||||
<file leaf-file-name="touch_screen.py" pinned="false" current="true" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/touch_screen.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.77832514" vertical-offset="1199" max-vertical-offset="1620">
|
||||
<caret line="101" column="105" selection-start-line="101" selection-start-column="105" selection-end-line="101" selection-end-column="105" />
|
||||
<state vertical-scroll-proportion="0.6085919" vertical-offset="90" max-vertical-offset="810">
|
||||
<caret line="31" column="16" selection-start-line="31" selection-start-column="16" selection-end-line="31" selection-end-column="16" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="touch_screen_backend.py" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/touch_screen_backend.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="345">
|
||||
<caret line="5" column="0" selection-start-line="5" selection-start-column="0" selection-end-line="5" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="e#0#13#0" expanded="true" />
|
||||
<element signature="e#0#12#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
@@ -38,11 +48,9 @@
|
||||
<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="-4.477612" vertical-offset="105" max-vertical-offset="2625">
|
||||
<caret line="27" column="17" selection-start-line="27" selection-start-column="17" selection-end-line="27" selection-end-column="17" />
|
||||
<folding>
|
||||
<element signature="e#0#13#0" expanded="true" />
|
||||
</folding>
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="2071" max-vertical-offset="2760">
|
||||
<caret line="146" column="36" selection-start-line="146" selection-start-column="36" selection-end-line="146" selection-end-column="36" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
@@ -50,8 +58,8 @@
|
||||
<file leaf-file-name="screen_manager.py" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/screen_manager.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="121" max-vertical-offset="540">
|
||||
<caret line="24" column="53" selection-start-line="24" selection-start-column="53" selection-end-line="24" selection-end-column="53" />
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="570" max-vertical-offset="1065">
|
||||
<caret line="57" column="93" selection-start-line="57" selection-start-column="93" selection-end-line="57" selection-end-column="93" />
|
||||
<folding>
|
||||
<element signature="e#0#35#0" expanded="true" />
|
||||
</folding>
|
||||
@@ -59,30 +67,6 @@
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="touch_manager.py" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/touch_manager.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="120" max-vertical-offset="570">
|
||||
<caret line="30" column="13" selection-start-line="30" selection-start-column="13" selection-end-line="30" selection-end-column="13" />
|
||||
<folding>
|
||||
<element signature="e#0#13#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="touch_screen.py" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/touch_screen.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="346" max-vertical-offset="855">
|
||||
<caret line="23" column="71" selection-start-line="23" selection-start-column="71" selection-end-line="23" selection-end-column="71" />
|
||||
<folding>
|
||||
<element signature="e#0#12#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
</leaf>
|
||||
</component>
|
||||
<component name="FindManager">
|
||||
@@ -94,11 +78,13 @@
|
||||
<option name="changedFiles">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/touch_text_manager.py" />
|
||||
<option value="$PROJECT_DIR$/touch_screen.py" />
|
||||
<option value="$PROJECT_DIR$/screen_manager.py" />
|
||||
<option value="$PROJECT_DIR$/touch_manager.py" />
|
||||
<option value="$PROJECT_DIR$/screen_objects.py" />
|
||||
<option value="$PROJECT_DIR$/main_screen.py" />
|
||||
<option value="$PROJECT_DIR$/__init__.py" />
|
||||
<option value="$PROJECT_DIR$/touch_screen_backend.py" />
|
||||
<option value="$PROJECT_DIR$/screen_manager.py" />
|
||||
<option value="$PROJECT_DIR$/screen_objects.py" />
|
||||
<option value="$PROJECT_DIR$/touch_screen.py" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
@@ -134,6 +120,7 @@
|
||||
<sortByType />
|
||||
</navigator>
|
||||
<panes>
|
||||
<pane id="Scope" />
|
||||
<pane id="ProjectPane">
|
||||
<subPane>
|
||||
<PATH>
|
||||
@@ -154,7 +141,6 @@
|
||||
</PATH>
|
||||
</subPane>
|
||||
</pane>
|
||||
<pane id="Scope" />
|
||||
</panes>
|
||||
</component>
|
||||
<component name="PropertiesComponent">
|
||||
@@ -330,7 +316,6 @@
|
||||
<window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.32884902" sideWeight="0.49961567" order="1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.24980783" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
|
||||
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||
@@ -340,6 +325,7 @@
|
||||
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.32884902" sideWeight="0.49961567" order="1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
|
||||
@@ -368,13 +354,179 @@
|
||||
</breakpoint-manager>
|
||||
</component>
|
||||
<component name="editorHistoryManager">
|
||||
<entry file="file://$PROJECT_DIR$/main_screen.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="1680">
|
||||
<caret line="96" column="89" selection-start-line="96" selection-start-column="12" selection-end-line="96" selection-end-column="89" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/touch_manager.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="780" max-vertical-offset="1050">
|
||||
<caret line="52" column="32" selection-start-line="52" selection-start-column="32" selection-end-line="52" selection-end-column="32" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</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="2610" max-vertical-offset="2775">
|
||||
<caret line="174" column="33" selection-start-line="174" selection-start-column="33" selection-end-line="174" selection-end-column="33" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/screen_manager.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="464" max-vertical-offset="1020">
|
||||
<caret line="54" column="29" selection-start-line="54" selection-start-column="29" selection-end-line="54" selection-end-column="29" />
|
||||
<folding>
|
||||
<element signature="e#0#35#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/touch_screen.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="810" max-vertical-offset="900">
|
||||
<caret line="54" column="50" selection-start-line="54" selection-start-column="50" selection-end-line="54" selection-end-column="50" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/main_screen.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="1770">
|
||||
<caret line="111" column="54" selection-start-line="111" selection-start-column="54" selection-end-line="111" selection-end-column="54" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/touch_manager.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="720" max-vertical-offset="1050">
|
||||
<caret line="48" column="11" selection-start-line="48" selection-start-column="11" selection-end-line="48" selection-end-column="11" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</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="2190" max-vertical-offset="2490">
|
||||
<caret line="146" column="30" selection-start-line="146" selection-start-column="30" selection-end-line="146" selection-end-column="30" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/screen_manager.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="195" max-vertical-offset="540">
|
||||
<caret line="13" column="25" selection-start-line="13" selection-start-column="25" selection-end-line="13" selection-end-column="25" />
|
||||
<folding>
|
||||
<element signature="e#0#35#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/touch_screen.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="135" max-vertical-offset="735">
|
||||
<caret line="29" column="25" selection-start-line="29" selection-start-column="25" selection-end-line="29" selection-end-column="25" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/main_screen.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="1665">
|
||||
<caret line="38" column="25" selection-start-line="38" selection-start-column="25" selection-end-line="38" selection-end-column="25" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</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="1193" max-vertical-offset="2490">
|
||||
<caret line="146" column="30" selection-start-line="146" selection-start-column="30" selection-end-line="146" selection-end-column="30" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/screen_manager.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="360" max-vertical-offset="540">
|
||||
<caret line="24" column="53" selection-start-line="24" selection-start-column="53" selection-end-line="24" selection-end-column="53" />
|
||||
<folding>
|
||||
<element signature="e#0#35#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/touch_manager.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="450" max-vertical-offset="570">
|
||||
<caret line="30" column="13" selection-start-line="30" selection-start-column="13" selection-end-line="30" selection-end-column="13" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/touch_screen.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="345" max-vertical-offset="855">
|
||||
<caret line="23" column="71" selection-start-line="23" selection-start-column="71" selection-end-line="23" selection-end-column="71" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/main_screen.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="315" max-vertical-offset="1665">
|
||||
<caret line="26" column="25" selection-start-line="26" selection-start-column="25" selection-end-line="26" selection-end-column="25" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</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="1193" max-vertical-offset="2490">
|
||||
<caret line="146" column="30" selection-start-line="146" selection-start-column="30" selection-end-line="146" selection-end-column="30" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/screen_manager.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="360" max-vertical-offset="540">
|
||||
<caret line="24" column="53" selection-start-line="24" selection-start-column="53" selection-end-line="24" selection-end-column="53" />
|
||||
<folding>
|
||||
<element signature="e#0#35#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/touch_manager.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="450" max-vertical-offset="570">
|
||||
<caret line="30" column="13" selection-start-line="30" selection-start-column="13" selection-end-line="30" selection-end-column="13" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/touch_screen.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="345" max-vertical-offset="855">
|
||||
<caret line="23" column="71" selection-start-line="23" selection-start-column="71" selection-end-line="23" selection-end-column="71" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/main_screen.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="1185">
|
||||
<caret line="26" column="100" selection-start-line="26" selection-start-column="100" selection-end-line="26" selection-end-column="100" />
|
||||
<folding>
|
||||
<element signature="e#0#13#0" expanded="true" />
|
||||
</folding>
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
@@ -392,9 +544,7 @@
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="301" max-vertical-offset="855">
|
||||
<caret line="27" column="27" selection-start-line="27" selection-start-column="27" selection-end-line="27" selection-end-column="27" />
|
||||
<folding>
|
||||
<element signature="e#0#12#0" expanded="true" />
|
||||
</folding>
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
@@ -402,9 +552,7 @@
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="1335">
|
||||
<caret line="31" column="28" selection-start-line="31" selection-start-column="28" selection-end-line="31" selection-end-column="28" />
|
||||
<folding>
|
||||
<element signature="e#0#13#0" expanded="true" />
|
||||
</folding>
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
@@ -422,9 +570,7 @@
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="300" max-vertical-offset="855">
|
||||
<caret line="20" column="9" selection-start-line="20" selection-start-column="9" selection-end-line="20" selection-end-column="9" />
|
||||
<folding>
|
||||
<element signature="e#0#12#0" expanded="true" />
|
||||
</folding>
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
@@ -432,9 +578,7 @@
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="899" max-vertical-offset="1350">
|
||||
<caret line="67" column="30" selection-start-line="67" selection-start-column="30" selection-end-line="67" selection-end-column="30" />
|
||||
<folding>
|
||||
<element signature="e#0#13#0" expanded="true" />
|
||||
</folding>
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
@@ -452,9 +596,7 @@
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="285" max-vertical-offset="855">
|
||||
<caret line="19" column="34" selection-start-line="19" selection-start-column="34" selection-end-line="19" selection-end-column="34" />
|
||||
<folding>
|
||||
<element signature="e#0#12#0" expanded="true" />
|
||||
</folding>
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
@@ -462,9 +604,7 @@
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="1230">
|
||||
<caret line="60" column="52" selection-start-line="60" selection-start-column="52" selection-end-line="60" selection-end-column="52" />
|
||||
<folding>
|
||||
<element signature="e#0#13#0" expanded="true" />
|
||||
</folding>
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
@@ -472,9 +612,7 @@
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="376" max-vertical-offset="795">
|
||||
<caret line="45" column="0" selection-start-line="45" selection-start-column="0" selection-end-line="45" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="e#0#12#0" expanded="true" />
|
||||
</folding>
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
@@ -482,59 +620,69 @@
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="1245">
|
||||
<caret line="28" column="46" selection-start-line="28" selection-start-column="46" selection-end-line="28" selection-end-column="46" />
|
||||
<folding>
|
||||
<element signature="e#0#13#0" expanded="true" />
|
||||
</folding>
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/touch_screen.py">
|
||||
<entry file="file://$PROJECT_DIR$/main_screen.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="436" max-vertical-offset="855">
|
||||
<caret line="23" column="71" selection-start-line="23" selection-start-column="71" selection-end-line="23" selection-end-column="71" />
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="1094" max-vertical-offset="1500">
|
||||
<caret line="96" column="89" selection-start-line="96" selection-start-column="12" selection-end-line="96" selection-end-column="89" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/touch_manager.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="616" max-vertical-offset="1035">
|
||||
<caret line="52" column="32" selection-start-line="52" selection-start-column="32" selection-end-line="52" selection-end-column="32" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/__init__.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.6778043" vertical-offset="226" max-vertical-offset="645">
|
||||
<caret line="34" column="45" selection-start-line="34" selection-start-column="45" selection-end-line="34" selection-end-column="45" />
|
||||
<folding>
|
||||
<element signature="e#0#12#0" expanded="true" />
|
||||
<element signature="e#0#39#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/screen_manager.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="121" max-vertical-offset="540">
|
||||
<caret line="24" column="53" selection-start-line="24" selection-start-column="53" selection-end-line="24" selection-end-column="53" />
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="570" max-vertical-offset="1065">
|
||||
<caret line="57" column="93" selection-start-line="57" selection-start-column="93" selection-end-line="57" selection-end-column="93" />
|
||||
<folding>
|
||||
<element signature="e#0#35#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/touch_manager.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="120" max-vertical-offset="570">
|
||||
<caret line="30" column="13" selection-start-line="30" selection-start-column="13" selection-end-line="30" selection-end-column="13" />
|
||||
<folding>
|
||||
<element signature="e#0#13#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/screen_objects.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="-4.477612" vertical-offset="105" max-vertical-offset="2625">
|
||||
<caret line="27" column="17" selection-start-line="27" selection-start-column="17" selection-end-line="27" selection-end-column="17" />
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="2071" max-vertical-offset="2760">
|
||||
<caret line="146" column="36" selection-start-line="146" selection-start-column="36" selection-end-line="146" selection-end-column="36" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/touch_screen_backend.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="345">
|
||||
<caret line="5" column="0" selection-start-line="5" selection-start-column="0" selection-end-line="5" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="e#0#13#0" expanded="true" />
|
||||
<element signature="e#0#12#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/main_screen.py">
|
||||
<entry file="file://$PROJECT_DIR$/touch_screen.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.77832514" vertical-offset="1199" max-vertical-offset="1620">
|
||||
<caret line="101" column="105" selection-start-line="101" selection-start-column="105" selection-end-line="101" selection-end-column="105" />
|
||||
<folding>
|
||||
<element signature="e#0#13#0" expanded="true" />
|
||||
</folding>
|
||||
<state vertical-scroll-proportion="0.6085919" vertical-offset="90" max-vertical-offset="810">
|
||||
<caret line="31" column="16" selection-start-line="31" selection-start-column="16" selection-end-line="31" selection-end-column="16" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
|
||||
@@ -3,14 +3,10 @@ from __future__ import unicode_literals
|
||||
import logging
|
||||
import os
|
||||
|
||||
# TODO: Remove entirely if you don't register GStreamer elements below
|
||||
import pygst
|
||||
pygst.require('0.10')
|
||||
import gst
|
||||
import gobject
|
||||
|
||||
from mopidy import config, ext
|
||||
|
||||
from .touch_screen import TouchScreen
|
||||
from .touch_screen_backend import TouchScreenBackend
|
||||
|
||||
__version__ = '0.1.0'
|
||||
|
||||
@@ -36,8 +32,6 @@ class Extension(ext.Extension):
|
||||
return schema
|
||||
|
||||
def setup(self, registry):
|
||||
# You will typically only implement one of the following things
|
||||
# in a single extension.
|
||||
from .touch_screen import TouchScreen
|
||||
registry.add('frontend', TouchScreen)
|
||||
registry.add('backend', TouchScreenBackend)
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ import urllib
|
||||
import urllib2
|
||||
import json
|
||||
from mopidy.audio import PlaybackState
|
||||
from .touch_manager import TouchManager
|
||||
from .screen_objects import ScreenObjectsManager
|
||||
from .dynamic_background import DynamicBackground
|
||||
|
||||
@@ -16,38 +17,36 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
class MainScreen():
|
||||
|
||||
def __init__(self,size,manager,cache,core):
|
||||
def __init__(self,size,manager,cache,core, fonts):
|
||||
self.core = core
|
||||
self.size = size
|
||||
self.base_size = self.size[1]/12
|
||||
self.base_size = self.size[1]/8
|
||||
self.fonts = fonts
|
||||
self.manager = manager
|
||||
self.background = DynamicBackground()
|
||||
self.track = None
|
||||
self.cache = cache
|
||||
self.image = None
|
||||
self.touch_text_manager = ScreenObjectsManager(size,self.base_size)
|
||||
self.touch_text_manager.add_touch_object("pause_play","Play",(0,0),(255,255,255))
|
||||
|
||||
|
||||
def update(self):
|
||||
screen = pygame.Surface(self.size)
|
||||
def update(self, screen):
|
||||
self.background.drawBackground(screen)
|
||||
|
||||
if self.track is not None:
|
||||
if self.image is not None:
|
||||
screen.blit(self.image, (self.base_size, self.base_size*3))
|
||||
screen.blit(self.image, (self.base_size, self.base_size*2))
|
||||
self.touch_text_manager.get_touch_object("time_progress").set_value(self.core.playback.time_position.get()/1000)
|
||||
self.touch_text_manager.get_object("track_time").set_text(time.strftime('%M:%S', time.gmtime(self.core.playback.time_position.get()/1000))+"/"+time.strftime('%M:%S', time.gmtime(self.track.length/1000)))
|
||||
self.touch_text_manager.get_touch_object("time_progress").set_text(time.strftime('%M:%S', time.gmtime(self.core.playback.time_position.get()/1000))+"/"+time.strftime('%M:%S', time.gmtime(self.track.length/1000)))
|
||||
self.touch_text_manager.render(screen)
|
||||
return screen
|
||||
|
||||
def track_started(self, track):
|
||||
|
||||
self.image = None
|
||||
self.touch_text_manager.add_object("track_name",track.name,(self.size[0]/2,self.base_size*3), (self.size[0]-self.base_size,self.size[1]), (255, 255, 255))
|
||||
self.touch_text_manager.add_object("album_name",track.album.name,(self.size[0]/2,self.base_size*4), (self.size[0]-self.base_size,self.size[1]), (255, 255, 255))
|
||||
self.touch_text_manager.add_object("artist_name",self.getFirstArtist(track),(self.size[0]/2,self.base_size*5), (self.size[0]-self.base_size,self.size[1]), (255, 255, 255))
|
||||
self.touch_text_manager.add_object("track_time",time.strftime('%M:%S', time.gmtime(0))+"/"+time.strftime('%M:%S', time.gmtime(0)),(self.size[0]/2,self.base_size*6), (self.size[0]-self.base_size,self.base_size * 7), (255, 255, 255))
|
||||
self.touch_text_manager.add_progressbar("time_progress", (self.size[0]/2,self.base_size*7), (self.size[0]-self.base_size,self.base_size*8),track.length/1000)
|
||||
self.touch_text_manager.add_object("track_name",self.fonts['dejavusans'],track.name,(self.size[0]/2,self.base_size*2), (self.size[0]-self.base_size,self.size[1]), (255, 255, 255))
|
||||
self.touch_text_manager.add_object("album_name",self.fonts['dejavusans'],track.album.name,(self.size[0]/2,self.base_size*3), (self.size[0]-self.base_size,self.size[1]), (255, 255, 255))
|
||||
self.touch_text_manager.add_object("artist_name",self.fonts['dejavusans'],self.getFirstArtist(track),(self.size[0]/2,self.base_size*4), (self.size[0]-self.base_size,self.size[1]), (255, 255, 255))
|
||||
self.touch_text_manager.add_progressbar("time_progress", self.fonts['dejavusans'],time.strftime('%M:%S', time.gmtime(0))+"/"+time.strftime('%M:%S', time.gmtime(0)),(0,self.base_size*6), (self.size[0],self.base_size*7),track.length/1000, False)
|
||||
self.track = track
|
||||
if not self.is_image_in_cache():
|
||||
thread = Thread(target=self.downloadImage())
|
||||
@@ -90,14 +89,19 @@ class MainScreen():
|
||||
self.loadImage()
|
||||
|
||||
def loadImage(self):
|
||||
size = self.base_size*6
|
||||
size = self.base_size*3
|
||||
self.image = pygame.transform.scale(pygame.image.load(self.getCoverFolder()+self.getImageFileName()).convert(),(size,size))
|
||||
|
||||
def touch_event(self, event):
|
||||
objects = self.touch_text_manager.get_touch_objects_in_pos(event.current_pos)
|
||||
logger.error(objects)
|
||||
if objects is not None:
|
||||
for key in objects:
|
||||
if key == "time_progress":
|
||||
value = self.touch_text_manager.get_touch_object(key).get_pos_value(event.current_pos) * 1000
|
||||
self.core.playback.seek(value)
|
||||
if event.type == TouchManager.click:
|
||||
objects = self.touch_text_manager.get_touch_objects_in_pos(event.current_pos)
|
||||
if objects is not None:
|
||||
for key in objects:
|
||||
if key == "time_progress":
|
||||
value = self.touch_text_manager.get_touch_object(key).get_pos_value(event.current_pos) * 1000
|
||||
self.core.playback.seek(value)
|
||||
elif event.type == TouchManager.swipe:
|
||||
if event.direction == TouchManager.left:
|
||||
self.core.playback.next()
|
||||
elif event.direction == TouchManager.right:
|
||||
self.core.playback.previous()
|
||||
@@ -1,5 +1,6 @@
|
||||
from .main_screen import MainScreen
|
||||
from .touch_manager import TouchManager
|
||||
from .screen_objects import ScreenObjectsManager
|
||||
import pygame
|
||||
import logging
|
||||
|
||||
@@ -8,14 +9,37 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
class ScreenManager():
|
||||
|
||||
def __init__(self, size, core):
|
||||
self.screen_size = size
|
||||
self.screens = [MainScreen(size, self, "/home/ander", core)]
|
||||
def __init__(self, size, core, backend):
|
||||
self.size = size
|
||||
self.core = core
|
||||
self.backend = backend
|
||||
self.fonts = {}
|
||||
self.base_size = self.size[1] / 8
|
||||
self.fonts['dejavuserif'] = pygame.font.SysFont("dejavuserif", self.base_size)
|
||||
self.fonts['dejavusans'] = pygame.font.SysFont("dejavusans", self.base_size)
|
||||
self.screens = [MainScreen(size, self, "/home/ander", core,self.fonts)]
|
||||
self.track = None
|
||||
self.touch_manager = TouchManager()
|
||||
self.touch_manager = TouchManager(size)
|
||||
self.screen_objects_manager = ScreenObjectsManager(size,self.base_size)
|
||||
x = self.screen_objects_manager.add_touch_object("pause_play",self.fonts['dejavusans'],u" ll",(0,0),(255,255,255))
|
||||
x = x + self.base_size / 2
|
||||
x = self.screen_objects_manager.add_touch_object("random",self.fonts['dejavuserif'],u"\u2928",(x,0),(255,255,255))
|
||||
x = x + self.base_size / 2
|
||||
x = self.screen_objects_manager.add_touch_object("repeat",self.fonts['dejavuserif'],u"\u27F21",(x,0),(255,255,255))
|
||||
x = x + self.base_size / 2
|
||||
x = self.screen_objects_manager.add_touch_object("mute",self.fonts['dejavusans'],"Mute",(x,0),(255,255,255))
|
||||
x = x + self.base_size / 2
|
||||
self.screen_objects_manager.add_progressbar("volume",self.fonts['dejavusans'],"100", (x,0), (self.size[0],self.base_size),100, True)
|
||||
self.screen_objects_manager.get_touch_object("volume").set_value(self.core.playback.volume.get())
|
||||
self.top_bar = pygame.Surface((self.size[0],self.base_size),pygame.SRCALPHA)
|
||||
self.top_bar.fill((0,0,0,128))
|
||||
|
||||
def update(self):
|
||||
return self.screens[0].update()
|
||||
surface = pygame.Surface(self.size)
|
||||
self.screens[0].update(surface)
|
||||
surface.blit(self.top_bar,(0,0))
|
||||
self.screen_objects_manager.render(surface)
|
||||
return surface
|
||||
|
||||
def track_started(self, track):
|
||||
self.track = track
|
||||
@@ -24,7 +48,18 @@ class ScreenManager():
|
||||
def event(self, event):
|
||||
touch_event = self.touch_manager.event(event)
|
||||
if touch_event is not None:
|
||||
if touch_event.type == TouchManager.click:
|
||||
objects = self.screen_objects_manager.get_touch_objects_in_pos(touch_event.current_pos)
|
||||
if objects is not None:
|
||||
for key in objects:
|
||||
if key == "volume":
|
||||
value = self.screen_objects_manager.get_touch_object(key).get_pos_value(touch_event.current_pos)
|
||||
self.backend.tell({'action':'volume','value':value})
|
||||
self.screen_objects_manager.get_touch_object(key).set_value(value)
|
||||
self.screens[0].touch_event(touch_event)
|
||||
|
||||
def volume_changed(self, volume):
|
||||
self.screen_objects_manager.get_touch_object("volume").set_value(volume)
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -13,20 +13,21 @@ class ScreenObjectsManager():
|
||||
self.touch_objects = {}
|
||||
self.text_objects = {}
|
||||
|
||||
def add_object(self, key, text, pos, pos2, color):
|
||||
self.text_objects[key] = TextItem(text, pos,pos2,color,self.base_size)
|
||||
def add_object(self, key, font, text, pos, pos2, color):
|
||||
self.text_objects[key] = TextItem(font, text, pos,pos2,color,self.base_size)
|
||||
|
||||
def get_object(self, key):
|
||||
return self.text_objects[key]
|
||||
|
||||
def add_touch_object(self, key, text, pos, color):
|
||||
self.touch_objects[key] = TouchAndTextItem(text, pos, color, self.base_size)
|
||||
def add_touch_object(self, key, font, text, pos, color):
|
||||
self.touch_objects[key] = TouchAndTextItem(font, text, pos, color, self.base_size)
|
||||
return self.touch_objects[key].get_right_pos()
|
||||
|
||||
def get_touch_object(self,key):
|
||||
return self.touch_objects[key]
|
||||
|
||||
def add_progressbar(self, key, pos, pos2, max):
|
||||
self.touch_objects[key] = Progressbar(pos,pos2,max)
|
||||
def add_progressbar(self, key, font, text, pos, pos2, max,value_text):
|
||||
self.touch_objects[key] = Progressbar(font, text,pos,pos2,max,self.base_size,value_text)
|
||||
|
||||
def render(self, surface):
|
||||
for key in self.text_objects:
|
||||
@@ -54,14 +55,17 @@ class BaseItem():
|
||||
self.rect = pygame.Rect(0,0,self.size[0],self.size[1])
|
||||
self.rect_in_pos = pygame.Rect(self.pos[0],self.pos[1],self.size[0],self.size[1])
|
||||
|
||||
def get_right_pos(self):
|
||||
return self.pos2[0]
|
||||
|
||||
|
||||
class TextItem(BaseItem):
|
||||
|
||||
def __init__(self, text, pos,pos2, color,text_size):
|
||||
def __init__(self, font, text, pos,pos2, color,text_size):
|
||||
if pos2 is not None:
|
||||
BaseItem.__init__(self,pos,pos2)
|
||||
self.text_size = text_size
|
||||
self.font = pygame.font.SysFont("arial", text_size)
|
||||
self.font = font
|
||||
self.text = text
|
||||
self.color = color
|
||||
self.box = self.font.render(text, True, self.color)
|
||||
@@ -108,62 +112,69 @@ class TextItem(BaseItem):
|
||||
self.box = self.font.render(self.text, True, self.color)
|
||||
surface.blit(self.box,self.pos,area=self.rect)
|
||||
|
||||
def set_text(self, text):
|
||||
self.__init__(text,self.pos,self.pos2,self.color,self.text_size)
|
||||
def set_text(self, text, size_mantain):
|
||||
if size_mantain:
|
||||
self.__init__(self.font, text,self.pos,None,self.color,self.text_size)
|
||||
else:
|
||||
self.__init__(self.font, text,self.pos,self.pos2,self.color,self.text_size)
|
||||
|
||||
class TouchObject(BaseItem):
|
||||
|
||||
def __init__(self,pos,pos2):
|
||||
BaseItem.__init__(self,pos,pos2)
|
||||
self.active = False
|
||||
self.background_box = pygame.Surface(self.size)
|
||||
self.background_box.fill((0,128,255))
|
||||
|
||||
def render(self,surface):
|
||||
surface.blit(self.background_box, self.pos)
|
||||
|
||||
def is_pos_inside(self, pos):
|
||||
return self.rect_in_pos.collidepoint(pos)
|
||||
|
||||
class TouchAndTextItem(TouchObject, TextItem):
|
||||
|
||||
def __init__(self, text, pos, color,text_size):
|
||||
TextItem.__init__(self,text, pos,None, color,text_size)
|
||||
def __init__(self, font, text, pos, color,text_size):
|
||||
TextItem.__init__(self, font, text, pos,None, color,text_size)
|
||||
TouchObject.__init__(self,pos,self.pos2)
|
||||
|
||||
def update(self):
|
||||
TextItem.update()
|
||||
|
||||
def render(self,surface):
|
||||
TouchObject.render(self,surface)
|
||||
TextItem.render(self,surface)
|
||||
class Progressbar(TouchObject, TextItem):
|
||||
|
||||
class Progressbar(TouchObject):
|
||||
|
||||
def __init__(self, pos, pos2, max):
|
||||
def __init__(self,font,text, pos, pos2, max,size, value_text):
|
||||
BaseItem.__init__(self, pos, pos2)
|
||||
logger.error(pos2)
|
||||
self.value = 0
|
||||
self.max = max
|
||||
self.back_color = (0,0,0,128)
|
||||
self.main_color = (255,255,255)
|
||||
self.main_color = (0,150,255)
|
||||
self.surface = pygame.Surface(self.size, pygame.SRCALPHA)
|
||||
self.surface.fill(self.back_color)
|
||||
self.value_text = value_text
|
||||
if value_text:
|
||||
self.text = TextItem(font,str(self.max),pos,None,(255,255,255),size)
|
||||
self.text.set_text(str(self.value),True)
|
||||
else:
|
||||
self.text = TextItem(font,text,pos,None,(255,255,255),size)
|
||||
self.text.pos = (self.pos[0] + self.size[0] / 2 - self.text.size[0] /2,self.text.pos[1])
|
||||
|
||||
def update(self):
|
||||
pass
|
||||
|
||||
def render(self, surface):
|
||||
surface.blit(self.surface, self.pos)
|
||||
self.text.render(surface)
|
||||
|
||||
def set_value(self, value):
|
||||
self.value = value
|
||||
self.surface.fill(self.back_color)
|
||||
pos_pixel = value * self.size[0] / self.max
|
||||
rect = pygame.Rect(0,0,pos_pixel,self.size[1])
|
||||
self.surface.fill(self.main_color, rect)
|
||||
if value != self.value:
|
||||
self.value = value
|
||||
if self.value_text:
|
||||
self.set_text(str(self.value))
|
||||
self.surface.fill(self.back_color)
|
||||
pos_pixel = value * self.size[0] / self.max
|
||||
rect = pygame.Rect(0,0,pos_pixel,self.size[1])
|
||||
self.surface.fill(self.main_color, rect)
|
||||
|
||||
def get_pos_value(self, pos):
|
||||
x = pos[0] - self.pos[0]
|
||||
return x * self.max / self.size[0]
|
||||
|
||||
def set_text(self, text):
|
||||
self.text.set_text(text , True)
|
||||
@@ -7,15 +7,25 @@ logger = logging.getLogger(__name__)
|
||||
class TouchManager():
|
||||
|
||||
click = 1
|
||||
swipe = 2
|
||||
|
||||
def __init__(self):
|
||||
up = 0
|
||||
down = 1
|
||||
left = 2
|
||||
right = 3
|
||||
|
||||
def __init__(self,size):
|
||||
self.down_pos = (0, 0)
|
||||
self.up_pos = (0, 0)
|
||||
self.screen_size = size
|
||||
self.max_move_margin = self.screen_size[1] / 6
|
||||
self.min_swipe_move = self.screen_size[1] / 3
|
||||
|
||||
def event(self, event):
|
||||
if event.type == pygame.MOUSEBUTTONUP:
|
||||
return self.mouse_up(event)
|
||||
elif event.type == pygame.MOUSEBUTTONDOWN:
|
||||
self.mouse_down(event)
|
||||
return None
|
||||
|
||||
def mouse_down(self, event):
|
||||
@@ -23,11 +33,33 @@ class TouchManager():
|
||||
|
||||
def mouse_up(self,event):
|
||||
self.up_pos = event.pos
|
||||
return TouchEvent(TouchManager.click, self.down_pos, self.up_pos)
|
||||
if abs(self.down_pos[0] - self.up_pos[0]) < self.max_move_margin:
|
||||
if abs(self.down_pos[1] - self.up_pos[1]) < self.max_move_margin:
|
||||
return TouchEvent(TouchManager.click, self.down_pos, self.up_pos, None)
|
||||
elif abs(self.down_pos[1] - self.up_pos[1]) > self.min_swipe_move:
|
||||
return TouchEvent(TouchManager.swipe, self.down_pos, self.up_pos, True)
|
||||
elif self.down_pos[1] - self.up_pos[1] < self.max_move_margin:
|
||||
logger.error("hemen nago")
|
||||
logger.error( abs(self.down_pos[1] - self.up_pos[1]))
|
||||
if abs(self.down_pos[0] - self.up_pos[0]) > self.min_swipe_move:
|
||||
logger.error("kaixo")
|
||||
return TouchEvent(TouchManager.swipe, self.down_pos, self.up_pos, False)
|
||||
|
||||
|
||||
class TouchEvent():
|
||||
|
||||
def __init__(self, event_type, down_pos, current_pos):
|
||||
def __init__(self, event_type, down_pos, current_pos, vertical):
|
||||
self.type = event_type
|
||||
self.down_pos = down_pos
|
||||
self.current_pos = current_pos
|
||||
self.current_pos = current_pos
|
||||
if event_type is TouchManager.swipe:
|
||||
if vertical:
|
||||
if self.down_pos[1] < self.current_pos[1]:
|
||||
self.direction = TouchManager.down
|
||||
else:
|
||||
self.direction = TouchManager.up
|
||||
else:
|
||||
if self.down_pos[0] < self.current_pos[0]:
|
||||
self.direction = TouchManager.right
|
||||
else:
|
||||
self.direction = TouchManager.left
|
||||
@@ -16,18 +16,20 @@ class TouchScreen(pykka.ThreadingActor, core.CoreListener):
|
||||
|
||||
def __init__(self, config, core):
|
||||
super(TouchScreen, self).__init__()
|
||||
self.backend = pykka.ActorRegistry.get_by_class_name("TouchScreenBackend")[0]
|
||||
logger.error(self.backend)
|
||||
self.core = core
|
||||
self.running = False
|
||||
#self.screen_size=(320, 240)
|
||||
self.screen_size=(800, 600)
|
||||
pygame.init()
|
||||
self.screen_manager = ScreenManager(self.screen_size,self.core)
|
||||
self.screen_manager = ScreenManager(self.screen_size,self.core, self.backend)
|
||||
|
||||
def start_thread(self):
|
||||
clock = pygame.time.Clock()
|
||||
screen = pygame.display.set_mode(self.screen_size)
|
||||
while self.running:
|
||||
clock.tick(30)
|
||||
clock.tick(15)
|
||||
screen.blit(self.screen_manager.update(),(0,0))
|
||||
pygame.display.flip()
|
||||
for event in pygame.event.get():
|
||||
@@ -49,4 +51,7 @@ class TouchScreen(pykka.ThreadingActor, core.CoreListener):
|
||||
try:
|
||||
self.screen_manager.track_started(tl_track)
|
||||
except:
|
||||
traceback.print_exc()
|
||||
traceback.print_exc()
|
||||
|
||||
def volume_changed(self, volume):
|
||||
self.screen_manager.volume_changed(volume)
|
||||
18
mopidy_touchscreen/touch_screen_backend.py
Normal file
18
mopidy_touchscreen/touch_screen_backend.py
Normal file
@@ -0,0 +1,18 @@
|
||||
import pykka
|
||||
from mopidy import backend
|
||||
import logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
class TouchScreenBackend(pykka.ThreadingActor, backend.Backend):
|
||||
|
||||
def __init__(self, config, audio):
|
||||
super(TouchScreenBackend, self).__init__()
|
||||
self.audio = audio
|
||||
logger.error("backend funciona")
|
||||
|
||||
def on_receive(self, message):
|
||||
logger.error("heldu naiz")
|
||||
if message['action'] == 'volume':
|
||||
logger.error("bolumena aldatzen")
|
||||
self.audio.set_volume(message['value'])
|
||||
Reference in New Issue
Block a user