def __init__(self, ids, width, height, tab_width=None, tab_height=None, focusable=False, theme=None, initial_tab=None): Div.__init__(self, width, height, focusable, theme) # Find ids self.ids = ids # Setup dimensions if tab_width is None: self.tab_width = max(30, self.width / 8) else: self.tab_width = tab_width if tab_height is None: self.tab_height = min(10, self.height / 2) else: self.tab_height = tab_height self.area_height = self.height - self.tab_height # Create areas and tabs self.areas = {} self.tabs = [] for i, id in enumerate(self.ids): div = Div(self.width, self.area_height, focusable, theme) self.areas[id] = div tab = Tab(self, self.tab_width, self.tab_height, id) self.add_widget(tab, (i * self.tab_width, 0)) self.tabs.append(tab) # Set initial tab area self.current = None if initial_tab is not None: self.focus(initial_tab) elif self.areas: self.focus(self.ids[0])
def __init__(self, tab_group, width, height, id, theme=None): Div.__init__(self, width, height, False, theme) self.tab_group = tab_group self.label = TabLabel(tab_group, id, theme=self.theme) self.add_widget(self.label, AlignCenter()) self.changed = True
def draw(self): if self.image is None or self.changed: r = pygame.Rect(0, 0, self.width, self.height) if self.tab_group.current is self.tab_group[self.label.id]: self.image = self.theme.draw_selected_tab(r) else: self.image = self.theme.draw_unselected_tab(r) self.changed = False Div.draw(self)
def __init__(self, width, height, cell_height, theme=None): Div.__init__(self, width, height, False, theme=theme) self.cell_height = cell_height self.contents = [] self.start = 0 self.height_in_cells = height / cell_height self.refresh() self.changed = True self.draw()
def draw(self): if self.image is None or self.changed: end = self.start + self.height_in_cells self.scroll_bar_img = self.theme.draw_scroll_bar(self.height, self.start, end, len(self)) r = pygame.Rect(0, 0, self.get_cells_width(), self.height) #self.scroll_area_img = self.theme.draw_scroll_area(r) surf = pygame.Surface((self.width, self.height), SRCALPHA, 32) #surf.blit(self.scroll_area_img.get_surface(), (0, 0)) surf.blit(self.scroll_bar_img, (r.w, 0)) self.image = Image(surf) self.changed = False Div.draw(self)
def render(self, screen, x_offset, y_offset): Widget.render(self, screen, x_offset, y_offset) Div.render(self, screen, x_offset, y_offset)
def add_line(self): div = Div(self.width, self.cell_height, theme=self.theme) self.contents.append(div) self.refresh() return len(self.contents) - 1