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 desGtkWindow
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 mitgdk_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 angtk_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 dugdk_pixbuf_new_from_xpm_data (example_xpm)
auf und erhältst einen pixbuf.
-
Gut....danke