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 add_line(self): div = Div(self.width, self.cell_height, theme=self.theme) self.contents.append(div) self.refresh() return len(self.contents) - 1