trayicon modul / Unklarheiten / kein Standard

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
joneZ
User
Beiträge: 6
Registriert: Mittwoch 6. Juli 2005, 17:00

Mittwoch 6. Juli 2005, 18:52

Hallo,

Ich habe mal ne Frage zu Trayicon Module was sich in python-gnome extras befindet. Vielleicht was ja jemand bescheid.


1. Es gibt doch ein modull egg.trayicon im python-gnome-extras Package, warum binden dann Applicationen wie straw oder gajim ihre TrayIcon Sachen
extra rein und machen dann daraus ein eigenes Module.

Ich kann leider keine Doku zum Modul egg.trayicon im python-gnome-extras Paket finden. Weiß da jemand was.

2. Weis jemand ob es verschiedene Module für's Gnome TrayIcon gibt, wahrscheinlich ja, denn hier:
http://research.iiit.net/~vkrishna/data/trayicon1.html

Ist ein TrayIcon Modul vom RedHat/Fedora das eine ganzen andere Technik benützt oder sehe ich das falsch.

3. Hier: http://www-106.ibm.com/developerworks/l ... ry/l-wrap/
gibt es die möglich das trayicon.c in seiner Application zu nutzen, das
machen doch die Applicationen wie straw usw.

4. Warum gibt es denn dann überhaupt das trayicon modul in python- gnome-extras bzw ist es nicht dasselbe wie unter 3 ?

Irgendwie stehe ich ich auf dem Schlauch, ich will zum Trayicon ein Menü per rechter Maustaste machen, ähnlich wie beim Code-Beispiel Punkt 2.

Hatt vielleicht irgend jemand ein Doku oder vielleicht nur ein paar Code-Beispiele damit ich aus dem Wald ein bisschen rauskomme.
:shock:

Danke
Erik
joneZ
User
Beiträge: 6
Registriert: Mittwoch 6. Juli 2005, 17:00

Mittwoch 6. Juli 2005, 23:13

Hallo,

Ich habe die Lösung gefunden, das "neue" egg.trayicon Modul in
python-gnome2-extras ist praktisch ein Weiterentwicklung bzw. nun
Upstream eingefügt von:

von http://www-106.ibm.com/developerworks/l ... ry/l-wrap/

Bisher musste man dies immer so machen, wie im obigen Howto
beschrieben,deshalb gibt es Programme die dieses so benutzen. Die
zukünftigen, denke ich mal, werden das neuen Modul benutzen.

RedHat hatte schon mal auf eigene Faust sowas für ihr RedHatNetwork
up2date gemacht. Deshalb gab es da mehrere bzw. verschiedene
Syntaxen.

In einem ChangeLog zu python-gnome-extras habe ich gelesen, das
dieses genau das selbe ist wie im DeveloperWorks Howto beschrieben,
mit "many improvments" wie dort stand. Was für welche das sind
oder ein Documentation fehlt (leider) noch.

Naja ... Anbei der Code vom einem simplen TrayIcon wie es RedHat
gemacht aber jetzt mit der Syntax vom neuen Modul.

Code: Alles auswählen

#!/usr/bin/python

import pygtk
pygtk.require("2.0")
import gtk
import egg.trayicon


def exit_applet( *args ):
    gtk.main_quit();
    return;

def applet_face_click( window, event, *data ):
    if event.button == 1 :
        menu.popup( None, None, None, 0, event.time );
    return;


event_box = gtk.EventBox( );
image_widget = gtk.Image( );

# Hier kann man ein Bild setzen ...
image_widget.set_from_file("1.png");

event_box.set_events( gtk.gdk.BUTTON_PRESS_MASK |
    gtk.gdk.POINTER_MOTION_MASK |
    gtk.gdk.POINTER_MOTION_HINT_MASK | gtk.gdk.CONFIGURE );

event_box.add( image_widget );
event_box.connect("button_press_event", applet_face_click );

menu_items = (
    ("Menu 1", exit_applet ),
    ("Menu 2", exit_applet ),
    ("Menu 3", exit_applet ),
    ("Menu 4", exit_applet ),
    None,
    ("Menu 5", exit_applet ),
    ("Menu 6", exit_applet),
    );

menu = gtk.Menu()
for i in menu_items:
    if i is None:
        menu.add(gtk.SeparatorMenuItem());
    else:
        menu_items = gtk.MenuItem( i[0] );
        menu_items.connect( 'activate', i[1] );
        menu.add( menu_items );

menu.show_all()

t = egg.trayicon.TrayIcon("MyFirstTrayIcon")
t.add(event_box)
t.show_all()

gtk.main()

Danke an alle die siche Gedanken gemacht haben oder
immer noch machen :D

greetZ
Erik
fresch
User
Beiträge: 1
Registriert: Montag 14. August 2006, 18:14

Montag 14. August 2006, 18:17

Ich hab das Problem mit solcher Art entwickelten Applets, dass sie den Logout aus GNOME um mehr als eine Minute verzögern. Hat das auch schon jemand bemerkt und vielleicht sogar eine Lösung gefunden?
Antworten