mirror of
https://github.com/Febbweiss/mopidy-touchscreen.git
synced 2026-03-04 22:25:39 +00:00
Window can be resized
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user