Wenn man ein Event-Abfragen will das von PB nicht zu Verfügung gestellt wird, von GTK aber schon, kann man es bewerkstelligen:
Code: Alles auswählen
;
; ------------------------------------------------------------
;
; PureBasic - Window example file
;
; (c) 2001 - Fantaisie Software
;
; ------------------------------------------------------------
;
Procedure bu_cb( *widget.GtkWidget ,ggfdatenpointerhier.l)
PrintN("tree-select-row signal")
EndProcedure
If OpenWindow(0, 100, 100, 395, 260, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget, "PureBasic Window")
CreateGadgetList(WindowID())
bu.l=ButtonGadget(2,320,10,50,25,"tesd");
tg.l=TreeGadget(1, 10 ,10, 300, 200 )
CloseGadgetList()
AddGadgetItem(1, 1,"Item 1")
AddGadgetItem(1, 1,"Item 2")
OpenTreeGadgetNode(1)
AddGadgetItem(1, -1, "Sub-Item 1")
AddGadgetItem(1, -1, "Sub-Item 2")
AddGadgetItem(1, -1, "Sub-Item 3")
AddGadgetItem(1, -1, "Sub-Item 4")
CloseTreeGadgetNode(1)
;tree-select-row" signal mit der Funktion bu_cb verbinden
;Dieses Signal wird gesendet wenn eine Zeile gewählt wird, Standartmässig durch einen Rechtsclick
;Rechtsclick auf eine Node bewirkt das gleiche.
gtk_signal_connect_(tg, "tree-select-row",@bu_cb(),ggfdatenpointerhier.l);
Repeat
EventID.l = WaitWindowEvent()
If EventID = #PB_EventCloseWindow ; If the user has pressed on the close button
Quit = 1
EndIf
Until Quit = 1
EndIf
End ; All the opened windows are closed automatically by PureBasic
So werden in GTK Events mit Funktionen verknüpft, und es funktioniert auch in PB.
Verschidenen Gadgets können auf verschidene Events reagieren.
Leider ist GTK nicht so ganz einfach wie PB, kann nicht erwarten das man sich in 3-Tagen in GTK einarbeiten kann.
Die beste Adress was die GTK-Fragen angeht ist wohl (was sonst):
http://www.gtk.org
Schau unter API Reference. Da gibt es auch einen Tutorial.
Man muss aber oft wo anders suchen um herauszufinden wie etwas Programmiert wird. Eine zentrale Anlaufstelle für die Linux-Programmierung Fragen (ähnlich der MSDN für Windows) gibt es nicht.
Die besagte LiDN ist eines der vielen Projekte, und kann (zuzeit ?) mit MSDN keinesfalls gleichgesetzt werden.
Erwähnenswert ist sicher glib(und glib2) mit vielen nutzlichen Funktionen:
http://developer.gnome.org/doc/API/glib/
z.B leicht verwendbare Timer.
Also viel Spass mit Linux-Programmierung.