Explorar o código

Window can be resized

Ander %!s(int64=11) %!d(string=hai) anos
pai
achega
ef84c52bf5
Modificáronse 2 ficheiros con 23 adicións e 9 borrados
  1. 12 4
      mopidy_touchscreen/screen_manager.py
  2. 11 5
      mopidy_touchscreen/touch_screen.py

+ 12 - 4
mopidy_touchscreen/screen_manager.py

@@ -26,11 +26,16 @@ menu_index = 5
 
 class ScreenManager():
     def __init__(self, size, core, cache):
-        self.size = size
         self.core = core
+        self.cache = cache
         self.fonts = {}
         self.background = DynamicBackground()
-        self.current_screen = 0
+        self.current_screen = library_index
+        self.init_manager(size)
+
+
+    def init_manager(self, size):
+        self.size = size
         self.base_size = self.size[1] / 8
         font = resource_filename(
             Requirement.parse("mopidy-touchscreen"),
@@ -41,7 +46,7 @@ class ScreenManager():
         try:
             self.screens = [
                 SearchScreen(size, self.base_size, self, self.fonts),
-                MainScreen(size, self.base_size, self, self.fonts, cache, core, self.background),
+                MainScreen(size, self.base_size, self, self.fonts, self.cache, self.core, self.background),
                 Tracklist(size, self.base_size, self, self.fonts),
                 LibraryScreen(size, self.base_size, self, self.fonts),
                 PlaylistScreen(size, self.base_size, self, self.fonts),
@@ -109,7 +114,7 @@ class ScreenManager():
         self.playback_state_changed(self.core.playback.state.get(),
                                     self.core.playback.state.get())
         self.screens[menu_index].check_connection()
-        self.change_screen(library_index)
+        self.change_screen(self.current_screen)
 
     def update(self):
         surface = pygame.Surface(self.size)
@@ -184,3 +189,6 @@ class ScreenManager():
 
     def search(self, query, mode):
         self.screens[search_index].search(query, mode)
+
+    def resize(self, event):
+        self.init_manager(event.size)

+ 11 - 5
mopidy_touchscreen/touch_screen.py

@@ -32,11 +32,7 @@ class TouchScreen(pykka.ThreadingActor, core.CoreListener):
         os.environ["SDL_PATH_DSP"] = config['touchscreen']['sdl_path_dsp']
         pygame.init()
         pygame.display.set_caption("Mopidy-Touchscreen")
-        if self.fullscreen:
-            self.screen = pygame.display.set_mode(self.screen_size,
-                                             pygame.FULLSCREEN)
-        else:
-            self.screen = pygame.display.set_mode(self.screen_size)
+        self.get_display_surface(self.screen_size)
         pygame.mouse.set_visible(self.cursor)
         self.screen_manager = ScreenManager(self.screen_size,
                                             self.core,
@@ -56,6 +52,13 @@ class TouchScreen(pykka.ThreadingActor, core.CoreListener):
             pins['enter'] = config['touchscreen']['gpio_enter']
             self.gpio_manager = GPIOManager(pins)
 
+    def get_display_surface(self, size):
+        if self.fullscreen:
+            self.screen = pygame.display.set_mode(size,
+                                             pygame.FULLSCREEN)
+        else:
+            self.screen = pygame.display.set_mode(size, pygame.RESIZABLE)
+
     def start_thread(self):
         clock = pygame.time.Clock()
         while self.running:
@@ -67,6 +70,9 @@ class TouchScreen(pykka.ThreadingActor, core.CoreListener):
                     self.running = False
                 elif event.type == pygame.KEYUP and event.key == pygame.K_q:
                     self.running = False
+                elif event.type == pygame.VIDEORESIZE:
+                    self.get_display_surface(event.size)
+                    self.screen_manager.resize(event)
                 else:
                     self.screen_manager.event(event)
         pygame.quit()