; Module/File: LV_SearchNative.pb ; Function: native Search in ListViewGadget - Linux ; Author: Omi ; Date: Aug. 16, 2014 ; 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 ;Window Variablen #MainWin= 0 #LIG= 0 #Txt= 1 #WinX= 200 #WinY= 200 #WinW= 500 #WinH= 400 Global.i gEvent, gQuit Global.s Dim Zeile(20) DeclareC SearchInTreeView(*model, column, *key, iter, *search_data) Procedure CreateWindow_Main() Protected.i I If OpenWindow(#MainWin, #WinX, #WinY, #WinW, #WinH, "native Search in LVG", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) ListViewGadget(#LIG, 5, 30, 480, 355) TextGadget(#Txt, 5, 5, 300, 20, "select row and type the search entry ...") Restore Surnames For I= 0 To 20 Read.s Zeile(I) Next I SortArray(Zeile(), #PB_Sort_NoCase) For I= 0 To 20 AddGadgetItem(#LIG, -1, Zeile(I)) Next I ;gtk_tree_view_set_enable_search_(GadgetID(#LIG), #True); must be ON gtk_tree_view_set_search_column_(GadgetID(#LIG), 0); set column for search - must be 0 in LVG gtk_tree_view_set_search_equal_func_(GadgetID(#LIG), @SearchInTreeView(), #Null, 0); set function for verification EndIf EndProcedure Procedure.s UTF8ToSys(UTF8.s); converts UTF8 to current Std.String-Mode Protected *mem= AllocateMemory(StringByteLength(UTF8, #PB_UTF8) + 1) Protected *len= PokeS(*mem, UTF8, -1) Protected.s SAscii= PeekS(*mem, -1, #PB_UTF8) FreeMemory(*mem) ProcedureReturn SAscii EndProcedure ProcedureC SearchInTreeView(*model, column, *key, iter, *search_data) ; every path (line) which partially agrees in systemsearch is sent to this function ; om every change of editfield Protected.i I, Indices, Found= #True Protected *path Protected.s Search= PeekS(*key); current search-string in UTF8-Format Search= UTF8ToSys(Search); convert search-string to System-String-Mode *path= gtk_tree_model_get_path_(*model, iter); get path from iter Indices= PeekL(gtk_tree_path_get_indices_(*Path)); get index (LVG-line) from path If FindString(GetGadgetItemText(#LIG, Indices, column), Search, 1, #PB_String_NoCase); own check to verify the suggestion Found= #False EndIf ProcedureReturn Found; #False = Ok ! EndProcedure CreateWindow_Main() Repeat gEvent= WaitWindowEvent() Select gEvent Case #PB_Event_CloseWindow gQuit= #True EndSelect Until gQuit DataSection Surnames: Data.s "Bauer", "Müller", "Meier", "Maier", "Huber", "Schmidt", "Schreiner", "Taler", "Bach", "Binder", "Hofer", "Schneider", "Bader", "Berger", "Klein", "Groß", "Kaiser", "König", "Graf", "Weber", "Urban" EndDataSection ; IDE Options = PureBasic 5.40 LTS Beta 9 (Linux - x86) ; CursorPosition = 8 ; FirstLine = 22 ; Folding = - ; EnableUnicode ; EnableXP ; CurrentDirectory = /home/charly-xubuntu/Programming/PureBasic/purebasic/