; Module/File: LIG_ColumnsHeaderClickableSimple.pb ; Function: All LIG-columns clickable, simple version - Linux ; Author: Omi ; Date: Jun. 17, 2017 ; Version: 0.2 ; Target Compiler: PureBasic 5.22/5.31/5.40/5.5x/5.6x ; Target OS: Linux: (X/K/L)ubuntu, Mint, 32/64, Ascii/Uni ;-------------------------------------------------------------- ; simple version, no single column handling ;-) EnableExplicit ImportC "" gtk_tree_view_column_get_tree_view(*Column.GtkTreeViewColumn) g_signal_connect(*instance, detailed_signal.p-utf8, *c_handler, *data, destroy= 0, flags= 0) As "g_signal_connect_data" EndImport ; Object constants #MainWin= 0 #LIG = 0 Global.i gEvent, gQuit ;- extern Function ... Procedure.i TV_ColumnsCount(Gadget); count LIG-column gtk2+gtk3 Protected *ColumnList= gtk_tree_view_get_columns_(GadgetID(Gadget)); pointer on columns Protected Columns= g_list_length_(*ColumnList) g_list_free_(*ColumnList) ProcedureReturn Columns EndProcedure ;- Functions ... ProcedureC Callback_TV_HeaderClicked(*Column.GtkTreeViewColumn, Colmn); callback: LIG-column-header clicked If gtk_tree_view_column_get_tree_view(*Column) = GadgetID(#LIG) Debug "Click on column-header ..." Debug "Column-Index : " + Str(Colmn) Debug "Column-path @ : " + Str(*Column) Debug "TreeView @ : " + gtk_tree_view_column_get_tree_view(*Column) Debug "" EndIf EndProcedure Procedure TV_HeaderClickable(Gadget); LIG-Header (all columns) clickable (Clickable= #True) or not (Clickable= #False) Protected.i I Protected *Column gtk_tree_view_set_headers_clickable_(GadgetID(Gadget), #True) For I= 0 To TV_ColumnsCount(Gadget)- 1 *Column= gtk_tree_view_get_column_(GadgetID(Gadget), I); LINUX-API - get pointer to column If *Column g_signal_connect(*Column, "clicked", @Callback_TV_HeaderClicked(), I); LINUX-API - Signal on click to '#LIG'-Header @ LIG_ColumnClick() (specific name) EndIf Next I EndProcedure ;- Example Procedure CreateWindow_Main() Protected.l I, O If OpenWindow(#MainWin, 200, 200, 500, 400, "ColumnsHeader clickable, simple", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) ListIconGadget(#LIG, 5, 10, 490, 380, "Column 0", 80, #PB_ListIcon_AlwaysShowSelection | #PB_ListIcon_GridLines) For O= 1 To 4 AddGadgetColumn(#LIG, O, "Column " + Str(O), 80) Next O For I= 0 To 19 AddGadgetItem(#LIG, -1, Str(I) + " - 0") Next I For O= 1 To 4 For I= 0 To 19 SetGadgetItemText(#LIG, I, Str(I) + "- " + Str(O), O) Next I Next O EndIf TV_HeaderClickable(#LIG); #LIG-Header clickable EndProcedure CreateWindow_Main() Repeat gEvent= WaitWindowEvent() Select gEvent Case #PB_Event_CloseWindow gQuit= #True Case #PB_Event_Gadget Select EventGadget() Case #LIG If EventType() = #PB_EventType_Change Debug GetGadgetState(#LIG) EndIf EndSelect EndSelect Until gQuit ; IDE Options = PureBasic 5.45 LTS (Linux - x86) ; CursorPosition = 101 ; FirstLine = 18 ; Folding = - ; EnableUnicode ; EnableXP