#!/usr/bin/python # Copyright (C) 2013 Patrick Totzke <*****@*****.**> # This file is released under the GNU GPL, version 3 or a later revision. from example1 import construct_example_tree, palette # example data from decoration import ArrowTree # for Decoration from widgets import TreeBox import urwid if __name__ == "__main__": # get example tree stree = construct_example_tree() # Here, we add some decoration by wrapping the tree using ArrowTree. atree = ArrowTree(stree, # customize at will.. # arrow_hbar_char=u'\u2550', # arrow_vbar_char=u'\u2551', # arrow_tip_char=u'\u25B7', # arrow_connector_tchar=u'\u2560', # arrow_connector_lchar=u'\u255A', ) # put the into a treebox treebox = TreeBox(atree) rootwidget = urwid.AttrMap(treebox, 'body') urwid.MainLoop(rootwidget, palette).run() # go
if __name__ == "__main__": cwd = os.getcwd() # get current working directory dtree = DirectoryTree() # get a directory walker # Use CollapsibleArrowTree for decoration. # define initial collapse: as_deep_as_cwd = lambda pos: dtree.depth(pos) >= dtree.depth(cwd) # We hide the usual arrow tip and use a customized collapse-icon. decorated_tree = CollapsibleArrowTree( dtree, is_collapsed=as_deep_as_cwd, arrow_tip_char=None, icon_frame_left_char=None, icon_frame_right_char=None, icon_collapsed_char=u'\u25B6', icon_expanded_char=u'\u25B7', ) # stick it into a TreeBox and use 'body' color attribute for gaps tb = TreeBox(decorated_tree, focus=cwd) root_widget = urwid.AttrMap(tb, 'body') #add a text footer footer = urwid.AttrMap(urwid.Text('Q to quit'), 'focus') #enclose all in a frame urwid.MainLoop(urwid.Frame(root_widget, footer=footer), palette, unhandled_input=unhandled_input).run() # go
# given position. # We want all grandchildren collapsed initially if_grandchild = lambda pos: stree.depth(pos) > 1 # We use CollapsibleIndentedTree around the original example tree. # This uses Indentation to indicate the tree structure and squeezes in # text-icons to indicate the collapsed status. # Also try CollapsibleTree or CollapsibleArrowTree.. tree = CollapsibleIndentedTree( stree, is_collapsed=if_grandchild, icon_focussed_att='focus', # indent=6, # childbar_offset=1, # icon_frame_left_char=None, # icon_frame_right_char=None, # icon_expanded_char='-', # icon_collapsed_char='+', ) # put the tree into a treebox treebox = TreeBox(tree) rootwidget = urwid.AttrMap(treebox, 'body') #add a text footer footer = urwid.AttrMap(urwid.Text('Q to quit'), 'focus') #enclose all in a frame urwid.MainLoop(urwid.Frame(rootwidget, footer=footer), palette, unhandled_input=unhandled_input).run() # go
def construct_example_tree(selectable_nodes=True, children=2): # define a list of tree structures to be passed on to SimpleTree forrest = [ construct_example_simpletree_structure(selectable_nodes, children) ] # stick out test tree into a SimpleTree and return return SimpleTree(forrest) def unhandled_input(k): #exit on q if k in ['q', 'Q']: raise urwid.ExitMainLoop() if __name__ == "__main__": # get example tree stree = construct_example_tree() # put the tree into a treebox treebox = TreeBox(stree) # add some decoration rootwidget = urwid.AttrMap(treebox, 'body') #add a text footer footer = urwid.AttrMap(urwid.Text('Q to quit'), 'focus') #enclose all in a frame urwid.MainLoop(urwid.Frame(rootwidget, footer=footer), palette, unhandled_input=unhandled_input).run() # go
arrow_connector_lchar=u'\u255A') # define outmost tree outertree = SimpleTree( [ (FocusableText('Outer ROOT'), [ (FocusableText('Child One'), None), (middletree, None), (FocusableText('last outer child'), None), ] ) ] ) # end SimpleTree constructor # add some Arrow decoration outertree = ArrowTree(outertree) # wrap the whole thing into a Nested Tree outertree = NestedTree(outertree, # show covered nodes like XXX interpret_covered=False ) # put it into a treebox and run treebox = TreeBox(outertree) rootwidget = urwid.AttrMap(treebox, 'body') #add a text footer footer = urwid.AttrMap(urwid.Text('Q to quit'), 'focus') #enclose all in a frame urwid.MainLoop(urwid.Frame(rootwidget, footer=footer), palette, unhandled_input = unhandled_input).run() # go