; Module/File: TV_ItemIndex2PathString_native.pb ; Function: Get TreeView-Path-String from PB-Item-Index - Linux gtk2/gtk3 ; Author: Omi ; Date: Mar. 17, 2015 ; Version: 0.1 ; Target Compiler: PureBasic 5.22/5.31/5.40 ; Target OS: Linux: (X/K/L)ubuntu, Mint, 32/64, Ascii/Uni ;-------------------------------------------------------------- EnableExplicit ; Object constants #MainWin= 0 #TG1 = 0 #SG1 = 1 Global.i gEvent, gQuit Structure TREEVIEWDATA Path.l SearchIndex.l ItemIndex.l PathString.s EndStructure Global TreeForEach_Data.TREEVIEWDATA ProcedureC Callback_TreeForEach2String(*Model, *Path, *Iter, *userdata.TREEVIEWDATA) If *userdata\ItemIndex= *userdata\SearchIndex *userdata\PathString= PeekS(gtk_tree_path_to_string_(*Path), -1 ,#PB_UTF8) ProcedureReturn #True Else *userdata\ItemIndex + 1 *userdata\PathString= "" ProcedureReturn #False EndIf EndProcedure Procedure.S TV_PathStringFromItemIndex(Gadget, ItemIndex); path-string from TV-item, native Protected iter.GtkTreeIter Protected tPath Protected *tModel= gtk_tree_view_get_model_(GadgetID(Gadget)) gtk_tree_model_get_iter_first_(*tModel, @iter) tPath= gtk_tree_model_get_path_(*tModel, iter) If tPath TreeForEach_Data\ItemIndex = 0 TreeForEach_Data\Path = tPath TreeForEach_Data\SearchIndex = ItemIndex gtk_tree_model_foreach_(*tModel, @Callback_TreeForEach2String(), @TreeForEach_Data) gtk_tree_path_free_(tPath); ??? EndIf ProcedureReturn TreeForEach_Data\PathString EndProcedure ; ***** Procedure CreateWindow_Main() Protected.i I If OpenWindow(#MainWin, 200, 200, 450, 330, "TreeGadget - PathString from Item-Index", #PB_Window_SystemMenu) TreeGadget(#TG1, 10, 30, 430, 280) For I = 0 To 10 AddGadgetItem (#TG1, -1, "Normal Item "+Str(I), 0, 0) AddGadgetItem(#TG1, -1, "Sub-Item 0", 0, 1) AddGadgetItem(#TG1, -1, "Sub-Item 1", 0, 1) AddGadgetItem(#TG1, -1, "Sub-Item 2", 0, 1) AddGadgetItem(#TG1, -1, "Sub-Item 3", 0, 1) If I= 2 AddGadgetItem(#TG1, -1, "Sub-Item 30", 0, 2) AddGadgetItem(#TG1, -1, "Sub-Item 31", 0, 2) AddGadgetItem(#TG1, -1, "Sub-Item 310", 0, 3) AddGadgetItem(#TG1, -1, "Sub-Item 311", 0, 3) EndIf Next I EndIf gtk_tree_view_expand_all_(GadgetID(#TG1)) EndProcedure CreateWindow_Main() SetGadgetState(#TG1, 17) Debug "Item 17-path-string: " + TV_PathStringFromItemIndex(#TG1, 17) Repeat gEvent= WaitWindowEvent() Select gEvent Case #PB_Event_CloseWindow gQuit= #True EndSelect Until gQuit ; IDE Options = PureBasic 5.45 LTS (Linux - x86) ; CursorPosition = 15 ; FirstLine = 4 ; Folding = - ; EnableUnicode ; EnableXP