; Module/File: LIG_TooltipOnCells.pb ; Function: Show tooltips on individual TreeView-cells - Linux gtk2,gtk3 ; Author: Omi ; Date: Sep. 29, 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 ImportC "" gtk_tree_view_set_tooltip_column(*GtkTreeView, Column) gtk_tooltip_set_text(*tooltip, text.p-utf8) gtk_tooltip_set_icon_from_icon_name(*tooltip, stock_id.p-utf8, size) g_signal_connect(*instance, detailed_signal.p-utf8, *c_handler, *data, destroy= 0, flags= 0) As "g_signal_connect_data" gtk_tree_view_convert_widget_to_bin_window_coords(*tree_view, wx, wy, *bx, *by) EndImport ; Object constants #MainWin= 0 #LIG1= 0 #WinX= 200 #WinY= 200 #WinW= 400 #WinH= 330 Global.i gEvent, gQuit, I Structure TREEVIEWDATA Path.l ItemIndex.l EndStructure ProcedureC Callback_TreeForEachPath2Index(*Model, *Path, *Iter, *user_data.TREEVIEWDATA) If gtk_tree_path_compare_(*Path, *user_data\Path) = 0 ProcedureReturn #True Else *user_data\ItemIndex + 1 ProcedureReturn #False EndIf EndProcedure ProcedureC Callback_ListIconCheckTooltip(*Widget.GtkWidget, mX, mY, key, *tooltip, Gadget); user_data= Gadget Protected ItemIndex, ColumnIndex Protected Show= #False Protected *tModel= gtk_tree_view_get_model_(*Widget) Protected *tPath, *tColumn, *ColumnList.GList Protected TreeForEach_Data.TREEVIEWDATA gtk_tree_view_convert_widget_to_bin_window_coords(*Widget, mX, mY, @mX, @mY) If gtk_tree_view_get_path_at_pos_(*Widget, mX, mY, @*tPath, @*tColumn, #Null, #Null) If GadgetType(Gadget) = #PB_GadgetType_ListIcon *ColumnList = gtk_tree_view_get_columns_(GadgetID(Gadget)) ColumnIndex = g_list_index_(*ColumnList, *tColumn); TreeForEach_Data\ItemIndex = 0 TreeForEach_Data\Path = *tPath gtk_tree_model_foreach_(*tModel, @Callback_TreeForEachPath2Index(), @TreeForEach_Data) ItemIndex= TreeForEach_Data\ItemIndex If ItemIndex > -1 And ItemIndex < CountGadgetItems(Gadget) gtk_tooltip_set_text(*tooltip, "Own dynamic textes: " + #LF$ + "This is line " + Str(ItemIndex) + " and column " + ColumnIndex) ;you wanna icon? ... gtk_tooltip_set_icon_from_icon_name(*tooltip, "gtk-info", #GTK_ICON_SIZE_MENU); "dialog-information" "gtk-info" Show= #True EndIf gtk_tree_path_free_(*tPath) EndIf EndIf ProcedureReturn Show EndProcedure Procedure CreateWindow_Main() Protected.i I If OpenWindow(#MainWin, #WinX, #WinY, #WinW, #WinH, "ListIconGadget - Tooltip on cells", #PB_Window_SystemMenu) ListIconGadget(#LIG1, 5, 5, #WinW-10, #WinH-10, "column0", 130, #PB_ListIcon_GridLines) AddGadgetColumn(#LIG1, 1, "column2", 130) AddGadgetColumn(#LIG1, 2, "column3", 100) For I = 0 To 10 AddGadgetItem (#LIG1, -1, "Line " + Str(I) + " | Column 0" + #LF$ + "Line " + Str(I) + " | Column 1" + #LF$ + "Line " + Str(I) + " | Column 2") Next I EndIf gtk_tree_view_set_tooltip_column(GadgetID(#LIG1), 0) g_signal_connect(GadgetID(#LIG1), "query-tooltip", @Callback_ListIconCheckTooltip(), #LIG1, #Null, #Null) EndProcedure CreateWindow_Main() Repeat gEvent= WaitWindowEvent() Select gEvent Case #PB_Event_CloseWindow gQuit= #True EndSelect Until gQuit ; IDE Options = PureBasic 5.44 LTS (Linux - x86) ; CursorPosition = 15 ; Folding = - ; EnableUnicode ; EnableXP