; Module/File: SysTray_ExtendedTooltipGtk3.pb
; Function: Set extended SysTray tooltip - Linux Gtk3
; Author: Omi
; Date: Dec. 27, 2016
; Version: 0.1
; Target Compiler: PureBasic 5.22/5.3/5.4/5.5
; Target OS: Linux: (X/K/L)ubuntu, Mint, 32/64, Ascii/Uni
;--------------------------------------------------------------
EnableExplicit
ImportC ""
gtk_tooltip_set_text(*tooltip, text.p-utf8)
gtk_tooltip_set_markup(*tooltip, markup.p-utf8)
gtk_tooltip_set_icon_from_stock(*tooltip, icon_name.p-utf8, size); gtk2
gtk_tooltip_set_icon_from_icon_name(*tooltip, icon_name.p-utf8, size); gtk3
g_type_check_instance_is_a(*instance.GTypeInstance, *type.GTypeClass)
g_signal_connect(*instance, detailed_signal.p-utf8, *c_handler, *pdata, destroy= 0, flags= 0) As "g_signal_connect_data"
EndImport
Macro G_TYPE_MAKE_FUNDAMENTAL(x)
((x) << 2)
EndMacro
;GType ...
#G_TYPE_OBJECT = G_TYPE_MAKE_FUNDAMENTAL(20)
; Object constants
#Win_Main = 0
#SysTrayEntry1= 0
Global.i gEvent, gQuit
Global *gScreen.GdkScreen, gArea.GdkRectangle, *gOrientation
Global *gSysTrayEntry
Global.s gSysTrayIcon1= #PB_Compiler_Home + "examples/sources/Data/Drive.bmp"
ProcedureC Callback_SysTrayQueryTooltip(*status_icon, x, y, keyboard_mode, *tooltip, user_data)
; gtk_tooltip_set_text(*tooltip, "This is a pimped SysTray-tooltip!")
gtk_tooltip_set_markup(*tooltip, ~"This is a pimped SysTray-tooltip\nwith a markedup word,\n" +
~"and some line wraps.")
gtk_tooltip_set_icon_from_icon_name(*tooltip, "dialog-information", #GTK_ICON_SIZE_BUTTON)
ProcedureReturn #True
EndProcedure
; Procedure SysTray_IdIsValid(*object)
; ProcedureReturn g_type_check_instance_is_a(*object, #G_TYPE_OBJECT)
; EndProcedure
Procedure Create_WinMain()
If OpenWindow(#Win_Main, 300, 200, 500, 100, "SysTray icon enhanced tooltip", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
TextGadget(#PB_Any, 5, 5, 490, 40, "Hold mouse on new SysTray icon w. Tooltip 'PureBasic icon' to get Tooltip.")
*gSysTrayEntry= AddSysTrayIcon(#SysTrayEntry1, WindowID(#Win_Main), LoadImage(0, gSysTrayIcon1)); Return is GtkStatusIcon -> NOT DOCUMENTED
SysTrayIconToolTip(#SysTrayEntry1, "PureBasic icon")
g_signal_connect(*gSysTrayEntry, "query-tooltip", @Callback_SysTrayQueryTooltip(), #SysTrayEntry1)
EndIf
EndProcedure
Create_WinMain()
Repeat
gEvent= WaitWindowEvent()
Select gEvent
Case #PB_Event_CloseWindow
gQuit= #True
EndSelect
Until gQuit
; IDE Options = PureBasic 5.70 beta 1 (Linux - x64)
; CursorPosition = 37
; Folding = -
; EnableXP
; EnableUnicode