Seite 1 von 2

Linux Lib: notify lib (asynchronous notifications)

Verfasst: 28.10.2006 02:44
von walker
Wolltest Du schon immer asynchrone Nachrichten haben? Hier sind sie:
benötigt die libnotify und devel files...
Ein Screenshot:

Bild

diese Nachricht erscheint in der unteren rechten Ecke sofern keine GadgetID oder WindowID angegeben wurde

oder so, wenn eine GadgetID angegeben wurde:

Bild

Ein Besipel:

Code: Alles auswählen

	#NOTIFY_URGENCY_LOW         = 0;,		 /**< Low urgency.      */
	#NOTIFY_URGENCY_NORMAL   = 1;,	    /**< Normal urgency.   */
	#NOTIFY_URGENCY_CRITICAL   = 2;,       /**< Critical urgency. */

Procedure mycallback()
; if the notification is clicked somwhere, this code will be executed...
EndProcedure

pgm.s=ProgramFilename()
notify_init_(@pgm); necessary to init the notification server for your program
hwnd=OpenWindow(0,200,100,500,350,"")
CreateGadgetList(WindowID(0))
    ButtonGadget(1,10,10,100,30,"Test")
    mn=notify_show("titel","body",50,#NOTIFY_URGENCY_NORMAL,GadgetID(1)); the notification is added to a gadget
;     mn=notify_show("titel","body",50,2,0); use this line to see the difference
;if you need an action when the notification is clicked
    action.s="default"
    label.s="clicked"
    notify_add_action(mn,@action,@label,@mycallback(),0,0)
;---------------------
CloseGadgetList()
Repeat
    ev=WaitWindowEvent(1)
ForEver
End
und nun hier die Lib::
http://home.arcor.de/x-linux/pure/notify/notify_lib (am besten nach purebasic/purelibraries/userlibraries kopieren

der Sourcecode:
http://home.arcor.de/x-linux/pure/notify/notify_lib.pb

ein weiterer Befehl der Lib ist notify_close(*notify) welcher in dem Beispiel nicht verwendet wird

Ich denke, anhand des Beispieles ist zu ersehen, wie die lib funktioniert. Wenn nicht.. einfach fragen.

Kritik, Anregungen etc sind jederzeit willkommen

Verfasst: 28.10.2006 08:07
von ts-soft

Code: Alles auswählen

notify_init_(@pgm); necessary to init the notification server for your program 
Macht nen Speicherzugriffsfehler :(
Hab alle notwendigen libs (auch devel) installiert

Gruß
Thomas

Verfasst: 28.10.2006 10:34
von walker
HA... ich wusste das ich was übersehen habe.... wird repariert :wink:

[EDIT]
....sollte jetzt repariert sein... hatte einen Pfad fest eingegeben... klar das das auf einer anderen Distro ggf. zu Problemen fuhrt :freak: Habe die neuen Dateien hochgeladen (siehe 1. Post)
[/EDIT]

Verfasst: 28.10.2006 14:26
von MVXA
Habe die LibNotify leider nicht :(. Würde es sonst gerne testen.

Verfasst: 28.10.2006 14:44
von ts-soft
walker hat geschrieben:HA... ich wusste das ich was übersehen habe.... wird repariert :wink:
Keine Änderung :(

Verfasst: 28.10.2006 14:53
von vonTurnundTaxis
Ich habe den gleichen Fehler.

Verfasst: 28.10.2006 15:31
von walker
könntet Ihr beide mal bitte diesen code ausführen

Code: Alles auswählen

mypgm= RunProgram("whereis", "libnotify.so","",#PB_Program_Open|#PB_Program_Read )
While ProgramRunning(mypgm)
      output$ + ReadProgramString(mypgm) 
Wend
notifylibrary$=""
a=CountString(output$," ")
For m=2 To a+1
    tmp$= StringField(Output$,m," ")
    If GetExtensionPart(tmp$)="so"
        notifylibrary$= tmp$
    EndIf
Next 
CloseProgram(mypgm)
Debug notifylibrary$
und mir den Debug output mitteilen? (ich vermute mal ihr habt beide SusE?)

@MVXA: diese kannst Du doch über den Paketmanager Deiner Distro nachinstallieren... (nach libnotify suchen wenn's eine GUI gibt oder apt-get install libnotify-bin bzw libnotify-dev verwenden, wenn Du ne Debian Distro hast)

Verfasst: 28.10.2006 15:49
von ts-soft
>> und mir den Debug output mitteilen? (ich vermute mal ihr habt beide SusE?)
openSuSE 10.1 :wink:
Der DebugOutput ist ziemlich leer :(

Verfasst: 28.10.2006 16:56
von walker
.... und was ergibt

Code: Alles auswählen

whereis libnotify
eingegeben in einer konsole?

Verfasst: 28.10.2006 17:42
von ts-soft
walker hat geschrieben:.... und was ergibt

Code: Alles auswählen

whereis libnotify
eingegeben in einer konsole?
thomas@dhcppc0:~> whereis libnotify
libnotify:
thomas@dhcppc0:~>
// EDIT

Code: Alles auswählen

Procedure init_notify()
  notifylibrary$ = "/opt/gnome/lib/libnotify.so"
so gehts :wink: