Stupid question about treeviewnode

BlitzMax Forums/BlitzMax GUI Programming/Stupid question about treeviewnode

i'm debugging a piece of code and not find where is my error. So my stupid question. Is Maxgui change the others nodes value when you delete, insert something ?

in others words in the treeview is the node values are fixed ?

for example :

Node1 = AddTreeViewNode "project 1", projects

next if i work with anothers nodes (delete or insert), are you sure than Node1 have always the same value ?

Many thanks, i know that is a stupid question !

What do you mean by "value"? Do you mean the gadget type reference returned by AddTreeViewNode() or the index of the node?

the gadget type reference at runtime. (not the index of the node)

Sure, if you save in Node1 the Tgadget returned by AddTreeViewNode it will always stay the same, doesn't matter if you insert or delete something in the treeview.

thanks, in fact i trying to debug this code to swap two node into my game editor.
Don't know why this not works. (have e1 and e2 data swapped, but not works on the treeview ! if i comment the lines

' permutation des noeuds

'e.Noeud = e1. Noeud
'e1.Noeud = e2. Noeud
'e2.Noeud = e. Noeud

it's works ! it's not logic !!! i don't find my mistakes !

	Function Permuter_ennemi : Int (e1:TE_Ennemi, e2:TE_Ennemi)
	
		' permutation de noeud : attention ne fonctionne que pour les ennemis dans un même groupe !
		
		If e1.Noeud_Groupe <> e2.Noeud_Groupe Then
		
			Notify "impossible de permuter deux ennemis de groupe différent !"
			Return False
		
		Else
		
			ActivateGadget Treeview
		
			Local e:TE_Ennemi = New TE_Ennemi
		
			' permutation des valeurs
			
			Notify "e1=" + e1.label + "/e2=" + e2.label
			
		
			e.Liste_Projectiles    = e1.Liste_Projectiles
			e.Liste_tirs           = e1.Liste_tirs
		
			e. Liste_tirs_lasers   = e1. Liste_tirs_lasers
			e. Liste_tirs_boulets  = e1. Liste_tirs_boulets
			e. Liste_tirs_missiles = e1. Liste_tirs_missiles
			e. Liste_trajectoires  = e1. Liste_trajectoires
			e. Liste_navpoints     = e1. Liste_navpoints
		
			e. id = e1. id
			
			e. Label              = e1. Label
			
			e. Modele             = e1. Modele
			e. PosX               = e1. PosX
			e. PosY               = e1. PosY
			e. bRotation          = e1. bRotation
			e. Angle              = e1. Angle
			e. bSuivreScrolling   = e1. bSuivreScrolling
			e. bBloquerScrolling  = e1. bBloquerScrolling
			e. bNavTrajectoire    = e1. bNavTrajectoire
			e. PauseDebut         = e1. PauseDebut
			e. ModeleBonus        = e1. ModeleBonus
		    e. NomPartie          = e1. NomPartie
			e. OrdrePartie        = e1. OrdrePartie
			e. Deplacements       = e1. Deplacements
			
			e. NbSuiveurs         = e1. NbSuiveurs
			e. TempsEntreSuiveurs = e1. TempsEntreSuiveurs
			
			' --------------------------------------------
			
			e1.Liste_Projectiles    = e2.Liste_Projectiles
			e1.Liste_tirs           = e2.Liste_tirs
		
			e1. Liste_tirs_lasers   = e2. Liste_tirs_lasers
			e1. Liste_tirs_boulets  = e2. Liste_tirs_boulets
			e1. Liste_tirs_missiles = e2. Liste_tirs_missiles
			e1. Liste_trajectoires  = e2. Liste_trajectoires
			e1. Liste_navpoints     = e2. Liste_navpoints
		
			e1. id                 = e2. id
			
			e1. Label              = e2. Label
			
			e1. Modele             = e2. Modele
			e1. PosX               = e2. PosX
			e1. PosY               = e2. PosY
			e1. bRotation          = e2. bRotation
			e1. Angle              = e2. Angle
			e1. bSuivreScrolling   = e2. bSuivreScrolling
			e1. bBloquerScrolling  = e2. bBloquerScrolling
			e1. bNavTrajectoire    = e2. bNavTrajectoire
			e1. PauseDebut         = e2. PauseDebut
			e1. ModeleBonus        = e2. ModeleBonus
		    e1. NomPartie          = e2. NomPartie
			e1. OrdrePartie        = e2. OrdrePartie
			e1. Deplacements       = e2. Deplacements
			
			e1. NbSuiveurs         = e2. NbSuiveurs
			e1. TempsEntreSuiveurs = e2. TempsEntreSuiveurs
			
			' ------------------------
			
			e2.Liste_Projectiles    = e.Liste_Projectiles
			e2.Liste_tirs           = e.Liste_tirs
		
			e2. Liste_tirs_lasers   = e. Liste_tirs_lasers
			e2. Liste_tirs_boulets  = e. Liste_tirs_boulets
			e2. Liste_tirs_missiles = e. Liste_tirs_missiles
			e2. Liste_trajectoires  = e. Liste_trajectoires
			e2. Liste_navpoints     = e. Liste_navpoints
		
			e2. id                 = e. id
			
			e2. Label              = e. Label
			
			e2. Modele             = e. Modele
			e2. PosX               = e. PosX
			e2. PosY               = e. PosY
			e2. bRotation          = e. bRotation
			e2. Angle              = e. Angle
			e2. bSuivreScrolling   = e. bSuivreScrolling
			e2. bBloquerScrolling  = e. bBloquerScrolling
			e2. bNavTrajectoire    = e. bNavTrajectoire
			e2. PauseDebut         = e. PauseDebut
			e2. ModeleBonus        = e. ModeleBonus
		    e2. NomPartie          = e. NomPartie
			e2. OrdrePartie        = e. OrdrePartie
			e2. Deplacements       = e. Deplacements
			
			e2. NbSuiveurs         = e. NbSuiveurs
			e2. TempsEntreSuiveurs = e. TempsEntreSuiveurs
			
			Notify "e1=" + e1.label + "/e2=" + e2.label
			
			
			' suppression des anciens noeuds
			
			FreeTreeViewNode e1. Noeud_parametres   
			FreeTreeViewNode e1. Noeud_navpoints    
			FreeTreeViewNode e1. Noeud_trajectoire  
			FreeTreeViewNode e1. Noeud_Tir          
			FreeTreeViewNode e1. Noeud_Tir_lasers   
			FreeTreeViewNode e1. Noeud_Tir_boulets  
			FreeTreeViewNode e1. Noeud_Tir_missiles 

			
			FreeTreeViewNode e2. Noeud_parametres   
			FreeTreeViewNode e2. Noeud_navpoints    
			FreeTreeViewNode e2. Noeud_trajectoire  
			FreeTreeViewNode e2. Noeud_Tir          
			FreeTreeViewNode e2. Noeud_Tir_lasers   
			FreeTreeViewNode e2. Noeud_Tir_boulets  
			FreeTreeViewNode e2. Noeud_Tir_missiles 

			' permutation des noeuds

			e.Noeud = e1. Noeud
			e1.Noeud = e2. Noeud
			e2.Noeud = e. Noeud
			
			'création des sous-noeuds de e1

			e1. Noeud_parametres   = AddTreeViewNode (Tl.Donner("Paramètres ",503) , e1. Noeud)
			e1. Noeud_navpoints    = AddTreeViewNode (Tl.Donner("Nav points",504)  , e1. Noeud)
			e1. Noeud_trajectoire  = AddTreeViewNode (Tl.Donner("Trajectoires",505), e1. Noeud)
			e1. Noeud_Tir          = AddTreeViewNode (Tl.Donner("Tirs",506)        , e1. Noeud)
			e1. Noeud_Tir_lasers   = AddTreeViewNode (Tl.Donner("Tir lasers",507)  , e1. Noeud_Tir)
			e1. Noeud_Tir_boulets  = AddTreeViewNode (Tl.Donner("Tir boulets",508) , e1. Noeud_Tir)
			e1. Noeud_Tir_missiles = AddTreeViewNode (Tl.Donner("Tir missiles",509), e1. Noeud_Tir)
			AddTreeViewNode "e1", e1.Noeud
	
			' création des sous-noeuds de e2
			
			e2. Noeud_parametres   = AddTreeViewNode (Tl.Donner("Paramètres ",503) , e2. Noeud)
			e2. Noeud_navpoints    = AddTreeViewNode (Tl.Donner("Nav points",504)  , e2. Noeud)
			e2. Noeud_trajectoire  = AddTreeViewNode (Tl.Donner("Trajectoires",505), e2. Noeud)
			e2. Noeud_Tir          = AddTreeViewNode (Tl.Donner("Tirs",506)        , e2. Noeud)
			e2. Noeud_Tir_lasers   = AddTreeViewNode (Tl.Donner("Tir lasers",507)  , e2. Noeud_Tir)
			e2. Noeud_Tir_boulets  = AddTreeViewNode (Tl.Donner("Tir boulets",508) , e2. Noeud_Tir)
			e2. Noeud_Tir_missiles = AddTreeViewNode (Tl.Donner("Tir missiles",509), e2. Noeud_Tir)
			AddTreeViewNode "e2", e2.Noeud
			
			' modification du nom
			
			ModifyTreeViewNode (e1.Noeud, "[" + String (e1.id) + "] " + e1.Label)
			ModifyTreeViewNode (e2.Noeud, "[" + String (e2.id) + "] " + e2.Label)			

			' affectation des objets créés pour e1
			
			For Local n:TE_Navpoint = EachIn e1. Liste_navpoints
				n.noeud = AddTreeViewNode (Tl.Donner("nav ",564) + String (n.Id), e1.Noeud_navpoints)
			Next
			
			For Local t:TE_Trajectoire = EachIn e1.Liste_trajectoires
				AddTreeViewNode (t.Id + " : " + t. Niveau_trajectoire_label, e1.Noeud_trajectoire)
			Next
			
			For Local n:TE_Laser = EachIn e1.Liste_tirs_lasers
				n.noeud = AddTreeViewNode (Tl.Donner("laser ", 565) + String (n.Id) , e1.Noeud_Tir_lasers) 
			Next
			
			For Local n:TE_Boulet = EachIn e1.Liste_tirs_boulets
				n.noeud = AddTreeViewNode (Tl.Donner("boulet ",566) + String (n.Id) , e1.Noeud_Tir_boulets)
			Next
			
			For Local n:TE_Missile = EachIn e1.Liste_tirs_missiles
				n.noeud = AddTreeViewNode (Tl.Donner("missile ",567) + String (n.Id) , e1.Noeud_Tir_missiles)
			Next
	
			' affectation des objets créés pour e2
			
			
			For Local n:TE_Navpoint = EachIn e2. Liste_navpoints
				n.noeud = AddTreeViewNode (Tl.Donner("nav ",564) + String (n.Id), e2.Noeud_navpoints)
			Next
			
			For Local t:TE_Trajectoire = EachIn e2.Liste_trajectoires
				AddTreeViewNode (t.Id + " : " + t. Niveau_trajectoire_label, e2.Noeud_trajectoire)
			Next
			
			For Local n:TE_Laser = EachIn e2.Liste_tirs_lasers
				n.noeud = AddTreeViewNode (Tl.Donner("laser ", 565) + String (n.Id) , e2.Noeud_Tir_lasers) 
			Next
			
			For Local n:TE_Boulet = EachIn e2.Liste_tirs_boulets
				n.noeud = AddTreeViewNode (Tl.Donner("boulet ",566) + String (n.Id) , e2.Noeud_Tir_boulets)
			Next
			
			For Local n:TE_Missile = EachIn e2.Liste_tirs_missiles
				n.noeud = AddTreeViewNode (Tl.Donner("missile ",567) + String (n.Id) , e2.Noeud_Tir_missiles)
			Next
			
			' efface e
			
			e = Null
			
			' actualise le treeview
			
			Treeview.activate(ACTIVATE_REDRAW)
			
			Return True
			
		End If
		
	
	End Function



Does this may help

Thanks to share this jsp. I'm using your swapnode function inside my previous code and now it works very well !

into your swap node function what is .context ?

Oh, the tools are collected/written from Jake not me, so the thanks goes to him :)
The context is a field of the TGadget
Field context:Object

You can use it for your own objects to store. So far MaxGui uses it only itself when a filter is set on a texfield/textarea.
This is extremely useful for storing references, which can be used when a user clicks on a treeview node. Just remember to cast it to your type again.
To set it:
MyNode:TGadget = AddTreeViewNode...
MyNode.Context = “MyNode selected”
to retrieve it:
Temp:TGadget = SelectedTreeViewNode...
Print String(TGadget.Context) 'Prints MyNode selected

String is here just an example, could be of course your own complex type.