mirror of
https://github.com/Febbweiss/mopidy-touchscreen.git
synced 2026-03-04 22:25:39 +00:00
Screen size and cursor on config file
This commit is contained in:
@@ -39,6 +39,9 @@ Mopidy-Touchscreen to your Mopidy configuration file::
|
||||
|
||||
[touchscreen]
|
||||
enabled = true
|
||||
screen_width = 800
|
||||
screen_height = 600
|
||||
cursor = False
|
||||
|
||||
Features
|
||||
=============
|
||||
@@ -56,7 +59,6 @@ Working
|
||||
Planned
|
||||
-------
|
||||
|
||||
* Resolution on config file
|
||||
* Shuffle on/off
|
||||
* Repeat one/on/off
|
||||
* Playback list and control
|
||||
|
||||
86
mopidy_touchscreen/.idea/workspace.xml
generated
86
mopidy_touchscreen/.idea/workspace.xml
generated
@@ -23,43 +23,11 @@
|
||||
</component>
|
||||
<component name="FileEditorManager">
|
||||
<leaf>
|
||||
<file leaf-file-name="screen_manager.py" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/screen_manager.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.0" vertical-offset="0" max-vertical-offset="1440">
|
||||
<caret line="13" column="0" selection-start-line="13" selection-start-column="0" selection-end-line="13" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="list_view.py" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/list_view.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="270" max-vertical-offset="705">
|
||||
<caret line="33" column="69" selection-start-line="33" selection-start-column="69" selection-end-line="33" selection-end-column="69" />
|
||||
<folding>
|
||||
<element signature="e#0#48#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<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="285" max-vertical-offset="2910">
|
||||
<caret line="20" column="60" selection-start-line="20" selection-start-column="60" selection-end-line="20" selection-end-column="60" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="tracklist.py" pinned="false" current="true" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/tracklist.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.50119334" vertical-offset="0" max-vertical-offset="419">
|
||||
<caret line="14" column="29" selection-start-line="14" selection-start-column="29" selection-end-line="14" selection-end-column="29" />
|
||||
<state vertical-scroll-proportion="0.53699285" vertical-offset="30" max-vertical-offset="990">
|
||||
<caret line="25" column="24" selection-start-line="25" selection-start-column="24" selection-end-line="25" selection-end-column="24" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
@@ -78,13 +46,13 @@
|
||||
<option value="$PROJECT_DIR$/touch_text_manager.py" />
|
||||
<option value="$PROJECT_DIR$/__init__.py" />
|
||||
<option value="$PROJECT_DIR$/touch_manager.py" />
|
||||
<option value="$PROJECT_DIR$/touch_screen.py" />
|
||||
<option value="$PROJECT_DIR$/touch_screen_backend.py" />
|
||||
<option value="$PROJECT_DIR$/main_screen.py" />
|
||||
<option value="$PROJECT_DIR$/screen_objects.py" />
|
||||
<option value="$PROJECT_DIR$/screen_manager.py" />
|
||||
<option value="$PROJECT_DIR$/screen_objects.py" />
|
||||
<option value="$PROJECT_DIR$/list_view.py" />
|
||||
<option value="$PROJECT_DIR$/tracklist.py" />
|
||||
<option value="$PROJECT_DIR$/touch_screen.py" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
@@ -120,7 +88,6 @@
|
||||
<sortByType />
|
||||
</navigator>
|
||||
<panes>
|
||||
<pane id="Scope" />
|
||||
<pane id="ProjectPane">
|
||||
<subPane>
|
||||
<PATH>
|
||||
@@ -141,6 +108,7 @@
|
||||
</PATH>
|
||||
</subPane>
|
||||
</pane>
|
||||
<pane id="Scope" />
|
||||
</panes>
|
||||
</component>
|
||||
<component name="PropertiesComponent">
|
||||
@@ -325,11 +293,11 @@
|
||||
<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="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="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" />
|
||||
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
|
||||
<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" />
|
||||
</layout>
|
||||
</component>
|
||||
<component name="Vcs.Log.UiProperties">
|
||||
@@ -374,7 +342,6 @@
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="75" 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 />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
@@ -413,7 +380,6 @@
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="75" 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 />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
@@ -694,7 +660,6 @@
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="360">
|
||||
<caret line="20" column="33" selection-start-line="20" selection-start-column="33" selection-end-line="20" selection-end-column="33" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
@@ -702,15 +667,6 @@
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="-0.03937008" vertical-offset="300" max-vertical-offset="1845">
|
||||
<caret line="31" column="0" selection-start-line="31" selection-start-column="0" selection-end-line="31" selection-end-column="0" />
|
||||
<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.75179" vertical-offset="360" max-vertical-offset="870">
|
||||
<caret line="11" column="36" selection-start-line="11" selection-start-column="0" selection-end-line="11" selection-end-column="36" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
@@ -724,26 +680,32 @@
|
||||
</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="196" max-vertical-offset="2910">
|
||||
<caret line="20" column="60" selection-start-line="20" selection-start-column="60" selection-end-line="20" selection-end-column="60" />
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="2821" max-vertical-offset="3285">
|
||||
<caret line="203" column="41" selection-start-line="203" selection-start-column="41" selection-end-line="203" selection-end-column="41" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/list_view.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="270" max-vertical-offset="705">
|
||||
<caret line="33" column="69" selection-start-line="33" selection-start-column="69" selection-end-line="33" selection-end-column="69" />
|
||||
<folding>
|
||||
<element signature="e#0#48#0" expanded="true" />
|
||||
</folding>
|
||||
<state vertical-scroll-proportion="0.0" vertical-offset="59" max-vertical-offset="720">
|
||||
<caret line="36" column="0" selection-start-line="36" selection-start-column="0" selection-end-line="36" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/tracklist.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.50119334" vertical-offset="0" max-vertical-offset="419">
|
||||
<caret line="14" column="29" selection-start-line="14" selection-start-column="29" selection-end-line="14" selection-end-column="29" />
|
||||
<state vertical-scroll-proportion="0.33251232" vertical-offset="0" max-vertical-offset="406">
|
||||
<caret line="9" column="132" selection-start-line="9" selection-start-column="132" selection-end-line="9" selection-end-column="132" />
|
||||
<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.53699285" vertical-offset="30" max-vertical-offset="990">
|
||||
<caret line="25" column="24" selection-start-line="25" selection-start-column="24" selection-end-line="25" selection-end-column="24" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
|
||||
@@ -26,6 +26,9 @@ class Extension(ext.Extension):
|
||||
|
||||
def get_config_schema(self):
|
||||
schema = super(Extension, self).get_config_schema()
|
||||
schema['screen_width'] = config.Integer()
|
||||
schema['screen_height'] = config.Integer()
|
||||
schema['cursor'] = config.Boolean()
|
||||
# TODO: Comment in and edit, or remove entirely
|
||||
#schema['username'] = config.String()
|
||||
#schema['password'] = config.Secret()
|
||||
|
||||
@@ -17,14 +17,15 @@ class ListView():
|
||||
self.list_size = 0
|
||||
self.list = []
|
||||
self.set_list([])
|
||||
self.scroll_bar_back = pygame.Surface((self.base_size,self.size[1]))
|
||||
self.scroll_bar_back.fill((255,255,255))
|
||||
|
||||
|
||||
|
||||
def set_list(self, item_list):
|
||||
self.list = item_list
|
||||
self.list_size = len(item_list)
|
||||
self.load_new_item_position(0)
|
||||
logger.error(self.list_size)
|
||||
self.screen_objects.add_scroll_bar("scroll", (self.pos[0]+self.size[0]-self.base_size,self.pos[1]), (self.base_size, self.size[1]),self.list_size,self.max_rows)
|
||||
|
||||
def load_new_item_position(self, item_pos):
|
||||
self.current_item = item_pos
|
||||
@@ -33,8 +34,8 @@ class ListView():
|
||||
while i < self.list_size and i - self.current_item < self.max_rows:
|
||||
self.screen_objects.add_touch_object(str(i),self.fonts['dejavusans'], str(self.list[i]), (self.pos[0],self.pos[1]+self.base_size*i),None, (255, 255, 255))
|
||||
i += 1
|
||||
|
||||
def render(self, surface):
|
||||
surface.blit(self.scroll_bar_back,(self.pos[0]+self.size[0]-self.base_size,self.pos[1]))
|
||||
self.screen_objects.render(surface)
|
||||
|
||||
|
||||
|
||||
@@ -28,6 +28,9 @@ class ScreenObjectsManager():
|
||||
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 add_scroll_bar(self, key, pos, size, max, items_on_screen):
|
||||
self.touch_objects[key] = ScrollBar(pos,size,max,items_on_screen)
|
||||
|
||||
def render(self, surface):
|
||||
for key in self.text_objects:
|
||||
self.text_objects[key].update()
|
||||
@@ -187,4 +190,26 @@ class Progressbar(TouchObject, TextItem):
|
||||
return x * self.max / self.size[0]
|
||||
|
||||
def set_text(self, text):
|
||||
self.text.set_text(text , True)
|
||||
self.text.set_text(text , True)
|
||||
|
||||
class ScrollBar(TouchObject):
|
||||
|
||||
def __init__(self, pos, size, max, items_on_screen):
|
||||
self.pos = pos
|
||||
self.size = size
|
||||
self.max = max
|
||||
self.items_on_screen = items_on_screen
|
||||
self.current_item = 0
|
||||
self.back_bar = pygame.Surface(self.size)
|
||||
self.back_bar.fill((255,255,255))
|
||||
if self.max < 1:
|
||||
self.barsize = self.size[1]
|
||||
else:
|
||||
self.barsize = float(self.items_on_screen)/float(self.max) * float(self.size[1])
|
||||
logger.error(self.barsize)
|
||||
self.bar = pygame.Surface((self.size[0],self.barsize))
|
||||
self.bar.fill((255,255,0))
|
||||
|
||||
def render(self, surface):
|
||||
surface.blit(self.back_bar, self.pos)
|
||||
surface.blit(self.bar,self.pos)
|
||||
@@ -21,8 +21,16 @@ class TouchScreen(pykka.ThreadingActor, core.CoreListener):
|
||||
self.core = core
|
||||
self.running = False
|
||||
#self.screen_size=(320, 240)
|
||||
self.screen_size=(800, 600)
|
||||
try:
|
||||
self.screen_size = (config['touchscreen']['screen_width'],config['touchscreen']['screen_height'])
|
||||
except KeyError:
|
||||
self.screen_size=(320, 240)
|
||||
logger.warning("Screen size not defined. Using default size: " + str(self.screen_size))
|
||||
pygame.init()
|
||||
try:
|
||||
pygame.mouse.set_visible(config['touchscreen']['cursor'])
|
||||
except KeyError:
|
||||
pygame.mouse.set_visible(True)
|
||||
self.screen_manager = ScreenManager(self.screen_size,self.core, self.backend)
|
||||
|
||||
def start_thread(self):
|
||||
|
||||
@@ -7,7 +7,7 @@ class Tracklist():
|
||||
self.size = size
|
||||
self.base_size = base_size
|
||||
self.list_view = ListView((0,self.base_size),(self.size[0],self.size[1]-2*self.base_size), self.base_size, manager.fonts)
|
||||
self.list_view.set_list(["track 1","track 2"])
|
||||
self.list_view.set_list(["track 1","track 2","track 1","track 2","track 1","track 2","track 1","track 2","track 1","track 2"])
|
||||
|
||||
def update(self, screen):
|
||||
pass
|
||||
|
||||
Reference in New Issue
Block a user