TreeView woes

BlitzMax Forums/BlitzMax Programming/TreeView woes

ozak(Posted 2005) [#1]
Hi. I finally got around to doing some serious TreeView work and I have a few problems.

If I want the user to rightclick inside an empty treeview and present a popup menu for creating the item what do I do?
I don't seem to get any events when the treeview is empty.

Another problem is that I have to add an item to an item, before I can add more items. Very annoying.
I can't create a treeview with one node named Root for instance, and then just call AddTreeViewNode dynamicall from a menu handler. But if I add a node just after creating the treeview, AddTreeViewNode works. Very odd. Anyone got any ideas? (See code below)

Also notice how the event printing captures no mouseevents (at least not on my system)

Thanks in advance

Example:
' createtreeview.bmx

Strict 

Local window:TGadget=CreateWindow("My Window",50,50,240,240)
Local treeview:TGadget=CreateTreeView(0,0,200,200,window)

SetGadgetLayout treeview,2,2,2,2

Local root:TGadget=TreeViewRoot(treeview)

Global help:TGadget=AddTreeViewNode("Root",root)

Local addNodeMenu:TGadget=CreateMenu("Add node",0,Null)
CreateMenu("Add node", 100, addNodeMenu)

' Comment out below line to have the AddTreeViewNode  in EVENT_MENUACTION stop working!
AddTreeViewNode("Bla", help)


While WaitEvent()
	Print CurrentEvent.ToString()
	Select EventID()
	
		Case EVENT_WINDOWCLOSE
			End
			
		' Item menu?
		Case EVENT_GADGETMENU
		
			' Get selected gadget
			Local selNode:TGadget = SelectedTreeViewNode(treeview)
			
			' Do we need to add a new group?
			If (selNode.text = "Root")
			
				PopupWindowMenu(window,addNodeMenu)
				
			End If
			
		' Menu item selected?
		Case EVENT_MENUACTION
		
			Select EventData()
			
				' Add new group to root?
				Case 100					
																
					AddTreeViewNode("Test node", help)						
			
			End Select

	End Select
Wend




klepto2(Posted 2005) [#2]
You could do it like this :




ozak(Posted 2005) [#3]
Yeah I guess that's an ok solution :)