diff --git a/photoboite/__init__.py b/photoboite/__init__.py index ce5f8a6..1782a1a 100644 --- a/photoboite/__init__.py +++ b/photoboite/__init__.py @@ -1,5 +1,5 @@ import io, os, sys, time, pygame -import photoboite.buttons +import photoboite.screens, photoboite.buttons try: import picamera @@ -75,39 +75,6 @@ class Photo: return self -class SleepMode: - def __init__(self, seconds, screen): - self.enabled = True - self.drawn = False - self.seconds = seconds - - self.screen = screen - - self.clicker = pygame.image.load(os.path.dirname(os.path.realpath(__file__)) + '/../images/clicker.png').convert_alpha() - self.clicker_rect = self.clicker.get_rect() - self.clicker_rect.topleft = ((self.screen.get_width() - self.clicker_rect.width) / 2, (self.screen.get_height() - self.clicker_rect.height) / 2) - - def move(self): - self.last_action = time.time() - - def event(self): - for event in pygame.event.get(): - if event.type == pygame.MOUSEBUTTONUP or event.type == pygame.KEYUP: - self.move() - self.enabled = False - - def draw(self): - if not self.drawn: - self.screen.fill((255,255,255)) - self.screen.blit(self.clicker, self.clicker_rect) - pygame.display.flip() - self.drawn = True - - def sleep(self): - if time.time() - self.last_action > self.seconds: - self.enabled = True - self.drawn = False - class Photoboite: def __init__(self): self.screen = self.screen() @@ -115,22 +82,10 @@ class Photoboite: pygame.mouse.set_visible(False) - self.buttons = [] - - button_size = int(self.screen.get_height() / 4) - topleft = (self.screen.get_width() - button_size) / 2, self.screen.get_height() - button_size - 10 - - self.capture_button = photoboite.buttons.CaptureButton(button_size, topleft, self) - self.buttons.append(self.capture_button) - self.buttons.append(photoboite.buttons.PowerButton(pygame.Rect(self.screen.get_width() - 50, 0, 50, 50))) - self.buttons.append(photoboite.buttons.InfoButton(pygame.Rect(0, 0, 50, 50), self)) - - camera_rect = pygame.Rect(0, 0, 800, 480) - self.camera = Camera(camera_rect) - self.clock = pygame.time.Clock() - self.sleep = SleepMode(30, self.screen) + self.sleep = photoboite.screens.Sleep(30, self) + self.capture = photoboite.screens.Capture(self, self.sleep) def screen(self): @@ -157,42 +112,16 @@ class Photoboite: return pygame.display.set_mode() - def draw(self): - self.clock.tick(60) - - self.camera.draw_on(self.screen) - - for button in self.buttons: - button.draw_on(self.screen) - - def event(self): - for event in pygame.event.get(): - self.sleep.move() - - if event.type == pygame.QUIT or event.type == pygame.KEYDOWN and event.unicode == 'q': - self.quit() - elif event.type == pygame.MOUSEBUTTONDOWN: - for button in self.buttons: - if button.is_pressed(event.pos): - button.press() - elif event.type == pygame.MOUSEBUTTONUP: - for button in self.buttons: - if button.is_pressed(event.pos): - button.unpress() def run(self): - pressed = False while True: if self.sleep.enabled: - self.sleep.event() - self.sleep.draw() - self.clock.tick(60) + self.sleep.run() else: - self.event() - self.draw() - self.sleep.sleep() - pygame.display.flip() + self.capture.run() + + self.clock.tick(60) def quit(self): - self.camera.close() + self.capture.quit() sys.exit() diff --git a/photoboite/buttons/__init__.py b/photoboite/buttons/__init__.py index 3ff2166..0de3d5c 100644 --- a/photoboite/buttons/__init__.py +++ b/photoboite/buttons/__init__.py @@ -60,7 +60,7 @@ class InfoButton(Button): texts = [ "DATE: " + self.date(), - "COUNT: " + str(self.photoboite.capture_button.count), + "COUNT: " + str(self.photoboite.capture.capture_button.count), "FPS: " + str(self.photoboite.clock.get_fps()), "DISK USAGE:" + self.disk_usage() ] @@ -122,7 +122,7 @@ class CaptureButton(Button): self.capture_mode = False self.count = 0 - self.background_rect = pygame.Rect(0, self.photoboite.screen.get_height() - 80, self.photoboite.screen.get_width(), 80) + self.background_rect = pygame.Rect(0, self.photoboite.screen().get_height() - 80, self.photoboite.screen().get_width(), 80) self.background = pygame.Surface((self.background_rect.width, self.background_rect.height)) self.background.fill((0, 0, 0)) self.background.set_alpha(150) @@ -174,8 +174,8 @@ class CaptureButton(Button): pygame.time.wait(600) for photo in capture.photos: - self.photoboite.screen.blit(photo.capture, (81, 0)) - self.photoboite.screen.blit(self.photo_film, (0, 0)) + self.photoboite.screen().blit(photo.capture, (81, 0)) + self.photoboite.screen().blit(self.photo_film, (0, 0)) pygame.display.flip() pygame.time.wait(800) self.photoboite.event() diff --git a/photoboite/screens/__init__.py b/photoboite/screens/__init__.py new file mode 100644 index 0000000..0adb77a --- /dev/null +++ b/photoboite/screens/__init__.py @@ -0,0 +1,93 @@ +import os, time, sys, pygame +import photoboite + +class Capture: + def __init__(self, main, sleep): + self.main = main + self.sleep = sleep + + self.buttons = [] + + button_size = int(self.main.screen.get_height() / 4) + topleft = (self.main.screen.get_width() - button_size) / 2, self.main.screen.get_height() - button_size - 10 + + self.capture_button = photoboite.buttons.CaptureButton(button_size, topleft, self) + self.buttons.append(self.capture_button) + self.buttons.append(photoboite.buttons.PowerButton(pygame.Rect(self.main.screen.get_width() - 50, 0, 50, 50))) + self.buttons.append(photoboite.buttons.InfoButton(pygame.Rect(0, 0, 50, 50), self)) + + camera_rect = pygame.Rect(0, 0, 800, 480) + self.camera = photoboite.Camera(camera_rect) + + def draw(self): + self.camera.draw_on(self.main.screen) + + for button in self.buttons: + button.draw_on(self.main.screen) + + def event(self): + for event in pygame.event.get(): + self.sleep.move() + + if event.type == pygame.QUIT or event.type == pygame.KEYDOWN and event.unicode == 'q': + self.main.quit() + elif event.type == pygame.MOUSEBUTTONDOWN: + for button in self.buttons: + if button.is_pressed(event.pos): + button.press() + elif event.type == pygame.MOUSEBUTTONUP: + for button in self.buttons: + if button.is_pressed(event.pos): + button.unpress() + + def screen(self): + return self.main.screen + + def quit(self): + self.camera.close() + + def run(self): + self.event() + self.draw() + self.sleep.sleep() + pygame.display.flip() + + +class Sleep: + def __init__(self, seconds, main): + self.enabled = True + self.drawn = False + self.seconds = seconds + + self.main = main + + self.clicker = pygame.image.load(os.path.dirname(os.path.realpath(__file__)) + '/../../images/clicker.png').convert_alpha() + self.clicker_rect = self.clicker.get_rect() + self.clicker_rect.topleft = ((self.main.screen.get_width() - self.clicker_rect.width) / 2, (self.main.screen.get_height() - self.clicker_rect.height) / 2) + + def move(self): + self.last_action = time.time() + + def event(self): + for event in pygame.event.get(): + if event.type == pygame.QUIT or event.type == pygame.KEYDOWN and event.unicode == 'q': + self.main.quit() + elif event.type == pygame.MOUSEBUTTONUP or event.type == pygame.KEYUP: + self.move() + self.enabled = False + + def draw(self): + if not self.drawn: + self.main.screen.fill((255,255,255)) + self.main.screen.blit(self.clicker, self.clicker_rect) + pygame.display.flip() + self.drawn = True + + def run(self): + self.event() + self.draw() + + def sleep(self): + if time.time() - self.last_action > self.seconds: + self.enabled = True + self.drawn = False