Window can be resized

This commit is contained in:
Ander
2015-01-09 23:31:55 +01:00
parent e8b61e2392
commit ef84c52bf5
2 changed files with 23 additions and 9 deletions

View File

@@ -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)

View File

@@ -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()