Gnome2 Applet Example

Ich werde hier einfach kurz den Code erklären, der in ExampleApplet.c drinsteckt:

Zuerst kommen die Header-Dateien, die eingebunden werden müssen:

#include <stdlib.h>
#include <string.h>
#include <time.h>

#include <panel-applet.h>
#include <gtk/gtk.h>
#include <gtk/gtklabel.h>
#include <libbonoboui.h>

Das hier sind die globalen Variablen, unter denen wir später zwei Sachen ansprechen können: das Label (also der Text unseres Applets) und den Zähler, der einfach mal alle drei Sekunden hochzählt.

GtkWidget *Label;

int Counter=0;

Dieser Codeschnipsel wird alle drei Sekunden ausgeführt:

gboolean Timer(gpointer Data) {
    char Buffer[256];

    Counter++;
    snprintf(Buffer,255,"My Applet counted %d times!",Counter);
    gtk_label_set(GTK_LABEL(Label),Buffer);
    return TRUE;
}

Das hier wird die eigentliche Hauptprozedur. Ein Sanity-Check wird gemacht, das Label generiert, das Laben ins Panel hinzugefügt und dann angezeigt. Zuletzt wird der Callback für den Timer gesetzt.

static int Init_Applet(PanelApplet *Applet, const gchar *IId, gpointer data) {
    if (strcmp(IId,"OAFIID:ExampleApplet")!=0) return FALSE;

    Label=gtk_label_new("My Applet");

    gtk_container_add(GTK_CONTAINER(Applet),Label);

    gtk_widget_show_all(GTK_WIDGET(Applet));

    g_timeout_add(3000,Timer,Applet);
    return TRUE;
}

Und dieser Schnipsel Code registriert uns schlußendlich das ganze Applet. Sehr wichtig!

PANEL_APPLET_BONOBO_FACTORY("OAFIID:ExampleApplet_Factory",
                            PANEL_TYPE_APPLET,
                            "Example Applet",
                            "0", Init_Applet, NULL);

Verfügbare Dateien: