def update_side_panel(self, item): if item == self.displayed_item: return self.displayed_item = item if self.side_panel: self.side_panel.set_parent(None) items = [a for a in item[1]] rows = [] if config.nbtTreeSettings.showAllTags.get(): meth = None else: meth = getattr(self, 'build_%s' % item[3].lower(), None) col = True if meth and len(items) == 1: rows = meth(items) else: height = 0 for itm in items: t = itm.__class__.__name__ rows.append(Row([Label("Data Type:"), Label(t)], margin=1)) fields = self.build_field(itm) for field in fields: if type(field) == TextFieldWrapped: field.set_size_for_text(self.side_panel_width) row = Row([ field, ], margin=1) rows.append(row) height += row.height if height > self.displayRow.height: col = False if rows: if col: col = Column(rows, align='l', spacing=0, height=self.displayRow.height) else: col = ScrollPanel(rows=rows, align='l', spacing=0, height=self.displayRow.height, draw_zebra=False, inner_width=self.side_panel_width - scroll_button_size) col.set_parent(self.displayRow) col.top = self.displayRow.top col.left = self.displayRow.subwidgets[0].right col.bottom = self.displayRow.subwidgets[0].bottom col.shrink_wrap() self.side_panel = col
def update_side_panel(self, item): if item == self.displayed_item: return self.displayed_item = item if self.side_panel: self.side_panel.set_parent(None) items = [a for a in item[1]] rows = [] if config.nbtTreeSettings.showAllTags.get(): meth = None else: meth = getattr(self, "build_%s" % item[3].lower(), None) col = True if meth and len(items) == 1: rows = meth(items) else: height = 0 for itm in items: t = itm.__class__.__name__ rows.append(Row([Label("Data Type:"), Label(t)], margin=1)) fields = self.build_field(itm) for field in fields: if type(field) == TextFieldWrapped: field.set_size_for_text(self.side_panel_width) row = Row([field], margin=1) rows.append(row) height += row.height if height > self.displayRow.height: col = False if rows: if col: col = Column(rows, align="l", spacing=0, height=self.displayRow.height) else: col = ScrollPanel( rows=rows, align="l", spacing=0, height=self.displayRow.height, draw_zebra=False, inner_width=self.side_panel_width - scroll_button_size, ) col.set_parent(self.displayRow) col.top = self.displayRow.top col.left = self.displayRow.subwidgets[0].right col.bottom = self.displayRow.subwidgets[0].bottom col.shrink_wrap() self.side_panel = col