def getMergedTreeView(self): try: tv = TreeView(hide_root=True) tv.size_hint = 1, None tv.bind(minimum_height=tv.setter('height')) for key in self.config_files: merged_dict = self.config_files[key].get_merged_config() for key in merged_dict: if isinstance(merged_dict[key], dict): newnode = tv.add_node( TreeViewLabel(text=str(key), font_size=self.label_font_size, color=self.key_label_color)) self._addNodeToMergedTreeView(tv, newnode, merged_dict[key]) else: newnode = tv.add_node( TreeViewLabel(text=str(key) + ':' + str(merged_dict[key]), font_size=self.label_font_size, color=self.key_label_color)) scv = ScrollView(pos=(0, 0), bar_width=10) scv.add_widget(tv) return scv except: e = sys.exc_info()[0] self.log.exception("Error: %s" % e) raise
def populateTreeNode(self, treeview, node): try: if not node: grounds = IOT.getGrounds(True) for ground in grounds: result = TreeViewLabel(text=ground['title'],is_open=False, is_leaf=False, no_selection=True) result.ground_id=ground['id'] yield result elif hasattr(node, 'ground_id'): devices = IOT.getDevices(node.ground_id) for device in devices: result = TreeViewLabel(is_open=False, is_leaf=False, no_selection=True) result.device_id = device['id'] if device['title']: result.text=device['title'] # for old devices that didn't ahve a title yet. else: result.text=device['name'] yield result elif hasattr(node, 'device_id'): assets = IOT.getAssets(node.device_id) for asset in assets: result = TreeViewLabel(is_open=False, is_leaf=True) result.asset_id = asset['id'] if asset['title']: result.text=asset['title'] # for old devices that didn't ahve a title yet. else: result.text=asset['name'] yield result except Exception as e: showError(e)
def populate_tree_view(tree_view: TreeView, parent: Union[TreeView, TreeViewLabel, None], node: Tree) -> None: """ Populates a TreeView recursively from node data. :param tree_view: :param parent: :param node: :return: """ if parent is None: tree_node = tree_view.add_node( TreeViewLabel( text=node['node_id'], is_open=True )) else: tree_node = tree_view.add_node( TreeViewLabel( text=node['node_id'], is_open=False ), parent ) for child_node in node['children']: populate_tree_view( tree_view, tree_node, child_node )
def _load_local_documents(self): for document in DocumentDao().list(): document_label = TreeViewLabel(text="%s - %s" % (document.location, document.name)) document_label.bind(on_touch_down=partial( self._open_document, document_location=document.location)) self.add_node(document_label, parent=self.local_documents)
def build(cls): #if exists(cls.pickle_fn()): # result = pickle.load(open(cls.pickle_fn(), "rb" ) ) tv = TreeView(hide_root=True) tv.size_hint = 1, None tv.bind(minimum_height=tv.setter('height')) data = Data() groups = data.get_groups() ingredients = data.get_ingredients() def already_created(node, text): if hasattr(node, 'text'): return node.text == text else: return False for group in groups: if len( list( filter( lambda seq: already_created(seq, group['group']), tv.iterate_all_nodes()))) == 0: node_group = tv.add_node(TreeViewLabel(text=group['group'])) node_group = list( filter(lambda seq: already_created(seq, group['group']), tv.iterate_all_nodes())) if len(node_group) > 0: if len( list( filter( lambda seq: already_created( seq, group['subgroup']), tv.iterate_all_nodes()))) == 0: node_subgroup = tv.add_node( TreeViewLabel(text=group['subgroup']), node_group[0]) for ingredient in ingredients: node_subgroup = list( filter( lambda seq: already_created(seq, ingredient['food_subgroup' ]), tv.iterate_all_nodes())) if len(node_subgroup) > 0: tv.add_node( IngredientListPopupItem( prop_id=ingredient['id'], name=ingredient['name'], name_scientific=ingredient['name_scientific'], description=ingredient['description']), node_subgroup[0]) else: print('error adding {0}', ingredient['name']) cls.tv = tv
def populate_tree_view(self, parent, node): if parent is None: tree_node = self.add_node( TreeViewLabel(text=node['node_id'], is_open=True)) else: tree_node = self.add_node( TreeViewLabel(text=node['node_id'], is_open=True), parent) for child_node in node['children']: self.populate_tree_view(tree_node, child_node)
def add_nkeys(self, tree, data, n): self.lock.acquire() self.clear_tree(self.values) for key in data: node = TreeViewLabel(text=key) node.bind(on_touch_down=self.suggestion_node_clicked) self.values.add_node(node) count = count + 1 self.lock.release()
def updateDEPDisplay(self): tv = self.treeView self.clearDEPDisplay() try: groupIdx = 1 for recs, cert, cert_list in self.dep: groupNode = tv.add_node( TreeViewLabel(text=(_('Group %d') % groupIdx))) certNode = tv.add_node( TreeViewLabel(text='Signaturzertifikat'), groupNode) chainNode = tv.add_node( TreeViewLabel(text='Zertifizierungsstellen'), groupNode) receiptsNode = tv.add_node( TreeViewLabel(text='Belege-kompakt'), groupNode) if cert: serial = key_store.numSerialToKeyId(cert.serial) tv.add_node( TreeViewKeyButton(text=_('Serial: ') + serial, key_id=serial, key=cert, on_press=self.addCert), certNode) for cert in cert_list: serial = key_store.numSerialToKeyId(cert.serial) tv.add_node( TreeViewKeyButton(text=_('Serial: ') + serial, key_id=serial, key=cert, on_press=self.addCert), chainNode) receiptIdx = 0 for cr in recs: jws = depparser.expandDEPReceipt(cr) rec, prefix = receipt.Receipt.fromJWSString(jws) tv.add_node( TreeViewReceiptButton(text=rec.receiptId, group_id=groupIdx - 1, receipt_id=receiptIdx, on_press=self.viewReceipt), receiptsNode) receiptIdx += 1 groupIdx += 1 return True except receipt.ReceiptException as e: displayError(e) self.clearDEPDisplay() return False
def add_file_to_tree_view(self, _file): '''This function is used to insert py file given by it's path argument _file. It will also insert any directory node if not present. ''' self.tree_view.root_options = dict(text='') dirname = os.path.dirname(_file) dirname = dirname.replace(self.proj_loader.proj_dir, '') #The way os.path.dirname works, there will never be '/' at the end #of a directory. So, there will always be '/' at the starting #of 'dirname' variable after removing proj_dir #This algorithm first breaks path into its components #and creates a list of these components. _dirname = dirname _basename = 'a' list_path_components = [] while _basename != '': _split = os.path.split(_dirname) _dirname = _split[0] _basename = _split[1] list_path_components.insert(0, _split[1]) if list_path_components[0] == '': del list_path_components[0] #Then it traverses from root_node to its children searching from #each component in the path. If it doesn't find any component #related with node then it creates it. node = self._root_node while list_path_components != []: found = False for _node in node.nodes: if _node.text == list_path_components[0]: node = _node found = True break if not found: for component in list_path_components: _node = TreeViewLabel(text=component) self.tree_view.add_node(_node, node) node = _node list_path_components = [] else: del list_path_components[0] #Finally add file_node with node as parent. file_node = TreeViewLabel(text=os.path.basename(_file)) file_node.bind(on_touch_down=self._file_node_clicked) self.tree_view.add_node(file_node, node) self.tree_view.root_options = dict( text=os.path.basename(self.proj_loader.proj_dir))
def add_file_to_tree_view(self, _file): '''This function is used to insert py file given by it's path argument _file. It will also insert any directory node if not present. ''' self.tree_view.root_options = dict(text='') dirname = os.path.dirname(_file) dirname = dirname.replace(self.proj_loader.proj_dir, '') # The way os.path.dirname works, there will never be '/' at the end # of a directory. So, there will always be '/' at the starting # of 'dirname' variable after removing proj_dir # This algorithm first breaks path into its components # and creates a list of these components. _dirname = dirname _basename = 'a' list_path_components = [] while _basename != '': _split = os.path.split(_dirname) _dirname = _split[0] _basename = _split[1] list_path_components.insert(0, _split[1]) if list_path_components[0] == '': del list_path_components[0] # Then it traverses from root_node to its children searching from # each component in the path. If it doesn't find any component # related with node then it creates it. node = self._root_node while list_path_components != []: found = False for _node in node.nodes: if _node.text == list_path_components[0]: node = _node found = True break if not found: for component in list_path_components: _node = TreeViewLabel(text=component) self.tree_view.add_node(_node, node) node = _node list_path_components = [] else: del list_path_components[0] # Finally add file_node with node as parent. file_node = TreeViewLabel(text=os.path.basename(_file)) file_node.bind(on_touch_down=self._file_node_clicked) self.tree_view.add_node(file_node, node) self.tree_view.root_options = dict( text=os.path.basename(self.proj_loader.proj_dir))
def __init__(self, qhash, query, qid, parent): self.qhash = qhash self.query = query self.ids = [qid] self.parent = parent node = parent.query_tree.add_node( TreeViewLabel(text=parent.get_from(query))) parent.query_nodes[qhash] = node parent.query_tree.add_node(TreeViewLabel(text=query), node) self.instances = {}
def __init__(self, **kwargs): super(FileNavigator, self).__init__(hide_root=True, **kwargs) self._ctxt.file_navigator = self self.local_documents = TreeViewLabel(text="Local Documents") self.add_node(self.local_documents) remote_documents = TreeViewLabel(text="Remote Documents") self.add_node(remote_documents) self.reload_local_documents()
def populate_tree_view(tree_view, parent, node, node_dict=None): if parent is None: tree_node = tree_view.add_node( TreeViewLabel(text=node['node_id'], is_open=True)) else: tree_node = tree_view.add_node( TreeViewLabel(text=node['node_id'], is_open=True), parent) if node_dict != None: node_dict[tree_node] = node['node_id'] for child_node in node['children']: populate_tree_view(tree_view, tree_node, child_node, node_dict)
def draw_tree(self, root, root_node): '''A recursive function to traverse the complete widget tree and build the WidgetTree. Here 'root' will be the widget in question, and 'root_node' a TreeViewLabel denoting the widget''' treeview = self.treeview for child in root.children: node = TreeViewLabel(text = child.__class__.__name__) node.bind(is_selected = partial(self.notify_canvas, child)) self.widget_dict[node.uid] = child treeview.add_node(node, root_node) self.draw_tree(child, node)
def draw_tree(self, root, root_node): '''A recursive function to traverse the complete widget tree and build the WidgetTree. Here 'root' will be the widget in question, and 'root_node' a TreeViewLabel denoting the widget''' treeview = self.treeview for child in root.children: node = TreeViewLabel(text=child.__class__.__name__) node.bind(is_selected=partial(self.notify_canvas, child)) self.widget_dict[node.uid] = child treeview.add_node(node, root_node) self.draw_tree(child, node)
def _addNodeToMergedTreeView(self, tree_view, parent_node, config): for key in config: if isinstance(config[key], dict): newnode = tree_view.add_node( TreeViewLabel(text=str(key), font_size=self.label_font_size, color=self.key_label_color), parent_node) self._addNodeToMergedTreeView(tree_view, newnode, config[key]) else: newnode = tree_view.add_node( TreeViewLabel(text=str(key) + ':' + str(config[key]), font_size=self.label_font_size, color=self.key_label_color), parent_node)
def __init__(self, designer, **kwargs): '''Builds the widget_menu for the first time, and this function is never called again. While building all the widget nodes are saved in a list called 'saved_nodes' (without any binding) for future use''' super(NewWidgetsMenu, self).__init__(**kwargs) self.designer = designer self.canvas_area = designer.canvas_area self.popup = None self.keys=[] self.layout_keys = [] for cls in self.widget_list: if cls == "Camera": '''This is because there seems to be some bug in Gstreamer when we load a camera widget and don't use it ''' continue try: factory_caller = getattr(Factory, str(cls)) new_widget = factory_caller() if isinstance(new_widget, Layout): self.layout_keys.append(cls) continue if isinstance(new_widget, Widget): self.keys.append(cls) except Exception as err: pass #self.status_bar.print_status(err.message) self.keys.append('Camera') self.keys.sort() self.layout_keys.sort() '''Adding all the widgets to the menu''' node = TreeViewLabel(text= " Widgets", bold = True, \ color=[.25, .5, .6, 1]) self.treeview.add_node(node) self.saved_nodes.append(node) node = None for key in self.keys: text = '%s' % key node = TreeViewLabel(text=text) node_copy = copy.copy(node) self.saved_nodes.append(node_copy) node.bind(is_selected = self.add_new_widget) self.treeview.add_node(node) '''Adding all the Layouts to the menu''' node = TreeViewLabel(text= "Layouts ", bold = True, \ color=[.25, .5, .6, 1]) self.treeview.add_node(node) self.saved_nodes.append(node) for key in self.layout_keys: text = '%s' % key node = TreeViewLabel(text = text) node_copy = copy.copy(node) self.saved_nodes.append(node_copy) node.bind(is_selected = self.add_new_widget) self.treeview.add_node(node)
def populate(self,node=None,body=None): if hasattr(body,'orbiting_bodies'): if node: node.no_selection=True for o in body.orbiting_bodies: l = TreeViewLabel(text=o.name) l.site = None n = self.add_node(l,node) self.populate(n,o) if hasattr(body,'sites'): if node: node.no_selection=True for o in body.sites: l = TreeViewLabel(text=o.name) l.site = o n = self.add_node(l,node) self.populate(n,o)
def __init__(self, lista, nombreABM, **kwargs): # make sure we aren't overriding any important functionality super(KivyPanelABM, self).__init__(**kwargs) self.cols = 2 self.nombreABM = nombreABM self.lista = TreeView(hide_root=True, size_hint_x=0.9) self.add_widget(self.lista) self.panelbotoneraAcciones = GridLayout(cols=1, size_hint_x=0.1, size_hint_y=None, size=(0, 32)) # self.panelbotoneraAcciones.padding=[100,10,10,10] self.btnAdd = Button(background_normal="Add.png", size_hint=(None, None), size=(32, 32)) self.btnAdd.bind(on_press=self.btnEventAdd) self.btnEdit = Button(background_normal="Edit.png", size_hint=(None, None), size=(32, 32)) self.btnEdit.bind(on_press=self.btnEventEdit) self.btnDel = Button(background_normal="Delete.png", size_hint=(None, None), size=(32, 32)) self.btnDel.bind(on_press=self.btnEventDel) self.panelbotoneraAcciones.add_widget(self.btnAdd) self.panelbotoneraAcciones.add_widget(self.btnEdit) self.panelbotoneraAcciones.add_widget(self.btnDel) self.add_widget(self.panelbotoneraAcciones) for elemento in lista: self.lista.add_node(TreeViewLabel(text=elemento))
def build(self): box = BoxLayout() tree = DroppableTreeView() tree.add_node(DraggableNode(text='node1',relation_manager=tree.relation_manager)) tree.add_node(DraggableNode(text='node2',relation_manager=tree.relation_manager)) tree.add_node(DraggableNode(text='node3',relation_manager=tree.relation_manager)) tree.add_node(DraggableNode(text='node4',relation_manager=tree.relation_manager)) box.add_widget(tree) tree2 = TreeView() node = TreeViewLabel(text='node1') tree2.add_node(node) tree2.add_node(TreeViewLabel(text='node2'),node) tree2.add_node(TreeViewLabel(text='node3')) tree2.add_node(TreeViewLabel(text='node4')) box.add_widget(tree2) return box
def populate_tree_view(self, tree_view, details_list, parent, node): if parent is None: tree_node = tree_view.add_node( TreeViewLabel(text=node['node_id'], is_open=True)) elif node['children'] == []: tree_node = tree_view.add_node( TransactionTreeNode(transaction_list=node['node_id'], details_list=details_list, is_open=True), parent) else: tree_node = tree_view.add_node( TreeViewLabel(text=node['node_id'], is_open=True), parent) for child_node in node['children']: self.populate_tree_view(tree_view, details_list, tree_node, child_node)
def load_tmpl(self, tmpl): #Now add on load node = self.add_node( TreeViewLabel(text=tmpl.template_name, color_selected=(.6, .6, .6, .8))) node.is_leaf = False #add the thingy #point to the template node.template = tmpl self.tmplDict[tmpl] = node #Deal with Template Properties: for pname, editor in sorted(tmpl.vars.items()): self.add_node(TreeViewField(name=pname, editor=editor(tmpl)), node) #Deal with KV style elemebts for fname in sorted(tmpl.ids.keys()): if not isinstance(tmpl.ids[fname], BaseField): continue _wid = tmpl.ids[fname] if not _wid.editable: continue if _wid.default_attr: w = _wid.params[_wid.default_attr](_wid) if w is not None: #None when not editable self.add_node( TreeViewField(pre_label=fname, name=_wid.default_attr, editor=w), node) self.toggle_node(node) return node
def _populate_nodes(self): ''' Set up primary headers. ''' for header in ["Spectra", "Models"]: node = self.add_node(TreeViewLabel(text=header)) self.headers.append(node)
def build(self): duzen = BoxLayout(orientation='vertical') self.agac_koku = TreeView(hide_root=True) kuruyemisler = [('Sert Kabuklular', ('Ceviz', 'Fındık', 'Badem')), ('Meyve Kuruları', ('Dut', 'Vişne', 'Kayısı', 'İncir')) ] for ky in kuruyemisler: eb = self.agac_koku.add_node(TreeViewLabel(text=ky[0])) for k in ky[1]: self.agac_koku.add_node(TreeViewLabel(text=k), eb) duzen.add_widget(self.agac_koku) return duzen
def build_dir(self): self.ids.script_tree.clear_widgets() self.ids.script_tree.nodes = list() from kivy.uix.treeview import TreeViewLabel from glob import glob from os.path import join,split for script in glob(join('scripts','*.py')): self.ids.script_tree.add_node(TreeViewLabel(text=split(script)[-1]))
def populate_tree(nodes, rootnode, parent=None): if parent is not None: for node in nodes: new = rootnode.add_node(node, parent) new.id = node.id new.browsable = node.browsable new.populated = node.populated if new.browsable: rootnode.add_node(TreeViewLabel(text='fake'), new) else: for node in nodes: new = rootnode.add_node(node) new.id = node.id new.browsable = node.browsable new.populated = node.populated if new.browsable: rootnode.add_node(TreeViewLabel(text='fake'), new)
def remove_childs(self, instance, value): br = False while len(value.nodes) > 0: br = True instance.remove_node(value.nodes[0]) value.populated = False if br: instance.add_node(TreeViewLabel(text='fake'), value)
def addScreenInfo(tree_view, screen): if not screen: return False root_node = tree_view.add_node(TreeViewLabel(text='Screen', is_open=False)) t = 'Standard window width: ' + str(screen['px']) tree_view.add_node(TreeViewLabel(text=t, is_open=False), root_node) t = 'Standard window height: ' + str(screen['py']) tree_view.add_node(TreeViewLabel(text=t, is_open=False), root_node) if screen['minx'] == 0: t = 'Minimum window width: no limit' else: t = 'Minimum window width: ' + str(screen['minx']) tree_view.add_node(TreeViewLabel(text=t, is_open=False), root_node) if screen['maxx'] == 0: t = 'Maximum window width: no limit' else: t = 'Maxmimum window width: ' + str(screen['maxy']) tree_view.add_node(TreeViewLabel(text=t, is_open=False), root_node) if screen['minx'] == 0: t = 'Minimum window height: no limit' else: t = 'Minimum window height: ' + str(screen['miny']) tree_view.add_node(TreeViewLabel(text=t, is_open=False), root_node) if screen['maxy'] == 0: t = 'Maximum window height: no limit' else: t = 'Maxmimum window height: ' + str(screen['maxy']) tree_view.add_node(TreeViewLabel(text=t, is_open=False), root_node)
def split_input_file_task(self): controller.save_file_input(self.filename, self.file_input, AES_CRYPTO) self.file_view.add_node(TreeViewLabel(text=self.filename)) self.update_storage_view() try: controller.update_data(self.filename, AES_CRYPTO) except CloudTokenError as err: open_popup_error('Cloud Token', err) self.stop.set()
def generateTreeView(self, path, treeview): # "D:\dataset\img" self.labeled_data = {} iterator = treeview.iterate_all_nodes() try: for node in list(iterator): treeview.remove_node(node) except: pass if self.mode == 'server': request_result = requests.get('http://localhost:3000/api/images') image_list = request_result.json()['data'] for image in image_list: tree_node = treeview.add_node( TreeViewLabel(text=image['image_names'], is_open=True)) self.labeled_data[image['image_names']] = ( image['image_names'], tree_node, []) elif self.mode == 'local': for root, dirs, files in os.walk(path): for file in files: if root == path: tree_node = treeview.add_node( TreeViewLabel(text=file, is_open=True)) # print(root) # print(dirs) # print(file) full_path = root + '/' + file self.labeled_data[file] = (full_path, tree_node, []) # aa = treeview.add_node(TreeViewLabel(text='blah', is_open=True), tree_node) # treeview.remove_node(aa) else: break
def _addDictNodeToFileTreeView(self, tree_view, parent_node, configkey, config): newnode = tree_view.add_node( TreeViewLabel(text=str(configkey), font_size=self.label_font_size, color=self.key_label_color), parent_node) for key in config: if isinstance(config[key], dict): self._addDictNodeToFileTreeView(tree_view, newnode, key, config[key]) else: tree_view.add_node( TreeViewLabel(text='[color=#00EBDB]' + str(key) + ':[/color][color=#FFADC9]' + str(config[key]) + '[/color]', font_size=self.label_font_size, color=self.key_label_color, markup=True), newnode)
def insert_styles(self, target): style_node = self.ids.params.add_node(TreeViewLabel(text="Style")) self.ids.params.add_node( TreeViewField(name='styles', editor=target.params['styles'](target), size_hint_y=None, height=30), style_node) for style in target.styles: from styles import getStyle s_node = self.ids.params.add_node(TreeViewLabel(text=style), style_node) sklass = getStyle(style) if sklass: for param, editor in sklass.attrs.items(): self.ids.params.add_node( TreeViewField(name=param, editor=editor(target), size_hint_y=None, height=30), s_node)
def __init__(self, **kwargs): super(AssignmentsList, self).__init__(**kwargs) l = Label(text='ASSIGNMENT LIST') tv = TreeView(root_options=dict(text='Assignments'), hide_root=True) for t in tour: for node in t: if node in E: itemNameTemp = str(data[node][1]) + ' ' + str( data[node][2]) branchNameTemp = tv.add_node( TreeViewLabel(text=itemNameTemp, is_open=True)) for node in t: if node not in E: dropItem = str(data[node][1]) + ' ' + str(data[node][2]) tv.add_node(TreeViewLabel(text=dropItem), branchNameTemp) # self.add_widget(l) self.add_widget(tv) tv.bind(on_node_expand=lambda self, evt: ViewMap().nodeExpanded()) tv.bind(on_node_collapse=lambda self, evt: ViewMap().nodeColapsed())
def build(self): duzen=BoxLayout(orientation='vertical') self.agac_koku = TreeView(hide_root=True, size_hint_y=0.8) kuruyemisler=[('Sert Kabuklular',('Ceviz', 'Fındık', 'Badem')), ('Meyve Kuruları',('Dut', 'Vişne', 'Kayısı', 'İncir'))] for ky in kuruyemisler: eb=self.agac_koku.add_node(TreeViewLabel(text=ky[0])) for k in ky[1]: self.agac_koku.add_node(TreeViewLabel(text=k),eb) duzen.add_widget(self.agac_koku) dgm=Button(text='Elemanları Yaz', size_hint_y=0.2) dgm.bind(on_press=self.elemanlari_yaz) duzen.add_widget(dgm) return duzen
def _addFileNodeToFileTreeView(self, tree_view, parent_node, config_file): newnode = tree_view.add_node( TreeViewLabel(text=config_file.filename, font_size=self.label_font_size, color=self.filename_label_color), parent_node) for child_filename in config_file.child_files: self._addNodeToFileTreeView( tree_view, newnode, config_file.child_files[child_filename]) for configkey in config_file.config: if isinstance(config_file.config[configkey], dict): self._addDictNodeToFileTreeView(tree_view, newnode, configkey, config_file.config[configkey]) else: tree_view.add_node( TreeViewLabel(text=str(configkey) + ':' + str(config_file.config[configkey]), font_size=self.label_font_size, color=self.key_label_color), newnode)
def update_tables_tree(self): for node in self.root.ids.table_tree.iterate_all_nodes(): self.root.ids.table_tree.remove_node(node) self.table_dropdown = DropDown() if self.conn: for typ in ('table','view'): self.cursor.execute("SELECT name FROM sqlite_master WHERE type = '%s'" % typ) result=self.cursor.fetchall() if result: tvlabeltext='{0} ({1})'.format( _(typ.title()+'s'), len(result) ) tvlabel=TreeViewLabel(text=tvlabeltext) parent_node=self.root.ids.table_tree.add_node(tvlabel) for tb in result: tvlabel=TreeViewLabel(text=tb[0], markup=True) tvlabel.tbtype=typ tvlabel.tbname=tb[0] tb_node=self.root.ids.table_tree.add_node(tvlabel, parent_node) self.cursor.execute('PRAGMA TABLE_INFO(`%s`)' % tb[0]) #populate dropdown list in browse data tab. if not tb[0]=='sqlite_sequence': btn = Button(text=tb[0], size_hint_y=None, height=20) self.table_dropdown.add_widget(btn) btn.bind(on_release=lambda btn: self.table_dropdown.select(btn.text)) for field in self.cursor.fetchall(): tvlabeltext='[b]{0}[/b] {1}'.format( field[1], field[2] ) tvlabel=TreeViewLabel(text=tvlabeltext, markup=True) self.root.ids.table_tree.add_node(tvlabel, tb_node) self.table_dropdown.bind(on_select=self.set_browse_data_main_button_text)
def insert_games(self, req, result): "Asynch. Insert Search Results in a tree" self.ids.results.clear_widgets() xml = ET.fromstring(unicode(result).encode('utf-8')) ##wait_cursor(False) bgs=xml.findall('boardgame') isID=False if not bgs: bgs=xml.findall('item') isID=True for index,bg in enumerate(bgs): #print index, bg, bg.tag, bg.text, bg.attrib, bg.keys(), bg.tail, try: game, name, year = bg.iter() except ValueError: game,name = bg.iter() tvl = TreeViewLabel(text = "%s (%s)"%(name.text, year.text)) tvl.gid = game.attrib['objectid'] tvl.name = name.text self.ids.results.add_node(tvl) self.ids.status.text = 'Found %d result(s) for %s'%(len(bgs),self.ids.search_field.text) if len(bgs) == 1:#only one result=>select item self.selected_game = tvl.gid
def get_titles(res): t = [] if res.Result: for r in didl_decode(res.Result.encode('utf-8')): if 'object.container' in r['class']: if 'childCount' in r: if int(r['childCount']) < 1: continue # browsable = True node = TreeViewLabel( text=r['title'][:32], id=r['id']) node.browsable = True node.populated = False else: img = None if 'albumArtURI' in r: if 'text' in r['albumArtURI']: img = r['albumArtURI']['text'] if not img: if 'res1' in r: if 'image' in r['res1']['protocolInfo']: img = r['res1']['text'] if not img: if 'video' in r['class']: img = 'data/icons/movie.png' elif 'audio' in r['class']: img = 'data/icons/audio.png' else: img = 'data/icons/icon.png' node = TreeViewMedia( text=r['title'][:32]) node.img = img node.url = r['url'] node.metadata = r['metadata'] node.browsable = False node.populated = True t.append(node) return t
def build_menu(self, parent = None): '''This is a general purpose function that builds the main menu at anytime. Note that it binds each node to self.add_new_widget. I should really aim at making a build_menu function that accepts a partial object as its argument and binds it to each node. But currently the unbinding is too messy to spend time on as I am not using it anywhere else. This function's main use case is to display addable widgets and layouts to a selected layout in canvas_area. It is called from Designer.rebuild_menu() ''' treeview = self.treeview #Copy all current nodes in a temp list temp = list(treeview.iterate_all_nodes()) #Delete them. for node in temp: treeview.remove_node(node) keys = self.keys layout_keys = self.layout_keys '''Adding all the widgets to the menu''' node = TreeViewLabel(text= " Widgets", bold = True, \ color=[.25, .5, .6, 1]) self.treeview.add_node(node) for key in keys: text = '%s' % key node = TreeViewLabel(text=text) node.bind(is_selected = partial(self.add_new_widget, parent = parent)) self.treeview.add_node(node) '''Adding all the Layouts to the menu''' node = TreeViewLabel(text= "Layouts ", bold = True, \ color=[.25, .5, .6, 1]) self.treeview.add_node(node) for key in layout_keys: text = '%s' % key node = TreeViewLabel(text = text) node.bind(is_selected = partial(self.add_new_widget, parent = parent)) self.treeview.add_node(node)