Exemple #1
0
    def internal_render(self, screen):
        screen.fill(self.BG_COLOR)

        text_size = 18

        lines = self.body_text.split('\n')
        line_height = get_font(size=text_size).get_linesize()

        block_height = len(lines) * line_height
        block_pad = (self.surface.get_height() - block_height) / 2

        for k, line in enumerate(lines):
            label = render_text(line,
                                size=text_size,
                                fg=self.TEXT_COLOR,
                                bg=None)
            label_pos = ((self.surface.get_width() - label.get_width()) / 2,
                         k * line_height + block_pad)

            shadow = render_text(line,
                                 size=text_size,
                                 fg=self.SHADOW_COLOR,
                                 bg=None)
            shadow_pos = (label_pos[0] + 1, label_pos[1] + 1)

            screen.blits(blit_sequence=((shadow, shadow_pos), (label,
                                                               label_pos)))
Exemple #2
0
 def render(self, screen):
     screen.fill(self.BG_COLOR)
     text = render_text('Dashboard pls',
                        size=24,
                        font='./assets/HelveticaNeueBold.ttf',
                        bg=None)
     screen.blit(text, (0, 0))
Exemple #3
0
 def render(self, screen):
     screen.fill(self.BG_COLOR)
     text = render_text('SETTINGS',
                        size=16,
                        font='./assets/HelveticaNeue.ttf',
                        bg=None)
     screen.blit(text, (0, 0))
Exemple #4
0
    def internal_render(self):
        if not self.btn_text == 'OFF':
            color = self.LINK_HOLD_COLOR if self.pressed else self.LINK_COLOR
        else:
            color = (150, 0, 0) if self.pressed else (255, 0, 0)

        self.surface = render_text(self.btn_text, size=self.size, fg=color, bg=None)
        self.surface_pressed = self.pressed
Exemple #5
0
    def internal_render(self, screen):
        # Draw button
        btn_color = self.BTN_HOLD_COLOR if self.pressed else self.BTN_COLOR
        screen.fill(btn_color)

        label_size = 24

        btn_label = render_text(self.text, size=label_size, bg=None)
        btn_label_pos = align(btn_label.get_rect(), self.surface.get_rect())

        btn_label_shadow = render_text(self.text,
                                       size=label_size,
                                       fg=(0, 0, 0),
                                       bg=None)
        btn_label_shadow_pos = (btn_label_pos[0] + 1, btn_label_pos[1] + 1)

        screen.blits(blit_sequence=((btn_label_shadow, btn_label_shadow_pos),
                                    (btn_label, btn_label_pos)))

        btn_edge_color = self.BTN_EDGE_HOLD_COLOR if self.pressed else self.BTN_EDGE_COLOR
        pygame.draw.rect(screen, btn_edge_color, self.surface.get_rect(), 5)
Exemple #6
0
    def draw_components(self, screen):
        screen.fill(self.BG_COLOR)

        # Draw title bar
        titlebar_rect = (0, 0, self.win_width(), self.TITLEBAR_HEIGHT)
        pygame.draw.rect(screen, self.ACCENT_COLOR, titlebar_rect)

        # Draw title text
        title = render_text(self.title_text,
                            size=20,
                            font='./assets/HelveticaNeue.ttf',
                            bg=None)
        title_pos = align(title.get_rect(),
                          titlebar_rect,
                          horizontal=ALIGN_LEFT,
                          hpad=15)
        screen.blit(title, title_pos)

        # Draw close button
        if self.dismissable:
            self.draw_closebtn(screen)
            titlebar_rect = (0, 0, self.win_width() - self.TITLEBAR_HEIGHT,
                             self.TITLEBAR_HEIGHT)

        # Draw dialog count
        d_count = self.controller.dialog_count()
        if d_count > 1:
            d_count_label = render_text(f'({d_count})',
                                        size=16,
                                        font='./assets/HelveticaNeue.ttf',
                                        fg=(128, 128, 128),
                                        bg=None)
            d_count_pos = align(d_count_label.get_rect(),
                                titlebar_rect,
                                horizontal=ALIGN_RIGHT,
                                hpad=-10)
            screen.blit(d_count_label, d_count_pos)
Exemple #7
0
    def internal_render(self):
        color = self.LINK_HOLD_COLOR if self.pressed else self.LINK_COLOR
        text = render_text(self.btn_text, size=self.size, fg=color, bg=None)
        
        fill(self.back_icon, color)

        _, _, tw, th = text.get_rect()
        _, _, iw, ih = self.back_icon.get_rect()

        self.surface = pygame.Surface((tw+iw, max(th, ih)), pygame.SRCALPHA, 32)
        self.surface_pressed = self.pressed

        self.surface.blits(blit_sequence=(
            (self.back_icon, (0, 0)),
            (text, (iw, abs(ih-th)/2))
        ))
Exemple #8
0
    def render(self, screen):
        screen.fill(self.BG_COLOR)

        # Left Button
        if self.controller.is_view(SettingsView):
            about_btn_pos = align(self.about_btn.get_rect(),
                                  self.rect,
                                  horizontal=ALIGN_RIGHT,
                                  hpad=-15)
            self.about_btn.render(screen, about_btn_pos)
        elif not self.controller.is_view(AboutView):
            freq_btn_pos = align(self.freq_btn.get_rect(),
                                 self.rect,
                                 horizontal=ALIGN_RIGHT,
                                 hpad=-15)
            self.freq_btn.render(screen, freq_btn_pos)

        # Right Button
        if self.controller.is_root():
            settings_btn_pos = align(self.settings_btn.get_rect(),
                                     self.rect,
                                     horizontal=ALIGN_LEFT,
                                     hpad=15)
            self.settings_btn.render(screen, settings_btn_pos)
        else:
            back_btn_pos = align(self.back_btn.get_rect(),
                                 self.rect,
                                 horizontal=ALIGN_LEFT,
                                 hpad=5)
            self.back_btn.render(screen, back_btn_pos)

        # Title
        title = render_text(
            self.title_text,
            size=self.TITLE_FONT_SIZE[self.controller.get_screen_scale()],
            font='./assets/HelveticaNeueBold.ttf',
            bg=None)
        title_pos = align(title.get_rect(), self.rect)
        screen.blit(title, title_pos)
Exemple #9
0
 def internal_render(self):
     color = self.LINK_HOLD_COLOR if self.pressed else self.LINK_COLOR
     self.surface = render_text(self.btn_text, size=self.size, fg=color, bg=None)
     self.surface_pressed = self.pressed
Exemple #10
0
 def draw_fps(self, screen):
     fps_label = render_text(f'{self.app.clock.get_fps():.1f} fps', size=16)
     fps_label.set_alpha(100)
     screen.blit(fps_label,
                 fps_label.get_rect(bottomleft=(0, self.app.resolution[1])))