forked from Tim-Craig/zm-applet
-
Notifications
You must be signed in to change notification settings - Fork 0
/
display.py
74 lines (64 loc) · 2.55 KB
/
display.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import pygame
from app_config import *
class PygameDisplay(object):
def __init__(self, app_config, mouse_visible=False):
super(self.__class__, self).__init__()
self.display = None
self.view = None
self.overlay = None
self.mouse_visible = mouse_visible
self.app_config = app_config
def init(self):
def get_desired_screen_size():
if self.app_config.config[SCREEN_SIZE] == SCREEN_SIZE_VALUE_FULLSCREEN or \
self.app_config.config[WINDOW_MODE] == WINDOW_MODE_VALUE_FULLSCREEN:
display_info = pygame.display.Info()
size = (display_info.current_w, display_info.current_h)
else:
size_setting = self.app_config.config[SCREEN_SIZE].split('x')
size = (int(size_setting[0]), int(size_setting[1]))
return size
def get_screen_mode_flags():
mode_flags = None
window_mode = self.app_config.config[WINDOW_MODE]
if window_mode == WINDOW_MODE_VALUE_BORDERLESS:
mode_flags = pygame.NOFRAME
elif window_mode == WINDOW_MODE_VALUE_FULLSCREEN:
mode_flags = pygame.FULLSCREEN
return mode_flags
pygame.init()
screen_size = get_desired_screen_size()
flags = get_screen_mode_flags()
if flags:
self.display = pygame.display.set_mode(screen_size, flags)
else:
self.display = pygame.display.set_mode(screen_size)
pygame.mouse.set_visible(self.mouse_visible)
if self.view:
self.view.start_view(self.get_display_size())
def get_display_size(self):
size = None
if self.display:
size = self.display.get_size()
return size
def set_view(self, view):
if self.view:
self.view.close()
self.view = view
self.view.start_view(self.get_display_size())
def set_overlay(self, overlay):
if self.overlay:
self.overlay.close()
self.overlay = overlay
if self.overlay:
self.overlay.start_view(self.get_display_size())
def update(self):
if self.display:
view_repainted = False
if self.view.check_if_repaint_needed():
self.view.paint((0, 0), self.display)
view_repainted = True
if self.overlay:
if self.overlay.check_if_repaint_needed() or view_repainted:
self.overlay.paint((0, 0), self.display)
pygame.display.flip()