GTK : Icon für Applikation einbinden



  • Unter Linux habe ich mit GTK verschiedene Applikationen erstellt.
    Jetzt möchte ich jeder Applikation ein eigenes Icon spendieren.
    Leider bin ich aus der Dukumentation von GTK nicht schlau geworden, wie das geht : einer Applikation ein Icon zuordnen.



  • malabarista schrieb:

    Jetzt möchte ich jeder Applikation ein eigenes Icon spendieren.

    Falls du die Icons meinst, die man im Menu anklickt, dann ist das arbeitsumgebungsabhängig. In GNOME wird das über die Desktopeintrags-Dateien gemacht.
    Falls du nur das Icon in der Fensterliste meinst, dann musst du es über die entsprechende Funktion des GtkWindow s setzen.



  • Ich meine letzteres.
    Welche Funktion ist dafür zuständig ?



  • Sie heisst gtk_window_set_icon.
    Die Frage ist nur noch, wie du den Pixbuf bekommst. Ich include immer eine XPM-Datei und erstelle ihn dann mit gdk_pixbuf_new_from_xpm_data (icon_xpm) , aber es gibt zahlreiche alternative Möglichkeiten.



  • Und wiegross oder klein muss/darf diese xpm-Datei sein ?
    16x16 pixel, 32x32 oder 64x64 ?



  • Lies den Link, den ich dir gegeben habe:

    GTK+ Reference Manual schrieb:

    ** gtk_window_set_icon_list (): **
    Recommended sizes to provide: 16x16, 32x32, 48x48 at minimum, and larger images (64x64, 128x128) if you have them.

    Ich bin zugegebenermassen etwas faul und übergebe immer ein 16x16 Icon an gtk_window_set_icon () , besser ist natürlich, wenn du mehrere Icons in den vorgegebenen Grössen hast und sie alle als GList an gtk_window_set_icon_list () übergibst.

    Der Vorteil an der XPM ist, dass du sie direkt in den Quellcode einbinden kannst und keine Ressourcen dafür brauchst. Auch hier ist besser, das dem System (bspw. in /usr/share/icons/) zu überlassen.



  • "Der Vorteil an der XPM ist, dass du sie direkt in den Quellcode einbinden kannst und keine Ressourcen dafür brauchst. "

    wie geht das : ein XPM direkt in den Quellcode einbinden ?



  • Du siehst ja, wenn du es mit einem Texteditor öffnest, dass es C-Quellcode ist:
    Beispiel aus Wikipedia:

    /* XPM */
    
    static char * example_xpm[] = {
    "24 20 3 1",
    "  c None",
    ". c #0000FF",
    "+ c #FF0000",
    "                        ",
    "    ..                  ",
    "   ....                 ",
    "  ......++++++++        ",
    " .........+++++++       ",
    " ..........+++++++      ",
    " ............++++++     ",
    " .............++++++    ",
    "  ..............++++    ",
    "   +.............+++    ",
    "   ++.............++    ",
    "   +++.............+    ",
    "   +++++.............   ",
    "   ++++++.............. ",
    "   ++++++++............ ",
    "   +++++++++........... ",
    "    +++++++++.........  ",
    "     ++++++++++.......  ",
    "      ++++++++++.....   ",
    "       +++++++++ ...    "};
    

    Also im entsprechenden File einfach

    #include "icon.xpm"
    

    und die Werte sind in der Variable example_xpm drinnen. (Alternativ kopierst du die Definition einfach in dein File, würd ich aber nicht machen.) Dann rufst du gdk_pixbuf_new_from_xpm_data (example_xpm) auf und erhältst einen pixbuf.



  • Gut....danke


Anmelden zum Antworten