[gelöst] GTK2 Stock Icons

Antworten
Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

[gelöst] GTK2 Stock Icons

Beitrag von Socke »

Hallo erstmal und ich weiß, dass es hier bereits ein paar Threads zum Thema gibt;
aber: einer nur für KDE, ein weiterer bietet nur begrenzte Icons.

Ich möchte also auf alle Icons des derzeitigen GNOME Standard Themes zugreifen (d.h. wirklich alle).
in http://www.lazarusforum.de/viewtopic.php?f=16&t=1375 gabs den Vorschlag mit

Code: Alles auswählen

LoadStockPixmap(idButtonOk,MH);
aber in LCLType.pas gibts anscheinend nur ein paar IDs für Buttons und Dialoge.

Deswegen hab ich mich mal direkt an GTK2 dran gemacht und Folgendes gebastelt:

Code: Alles auswählen

uses gtk2;
{...}
function GetGTKIcon(const StockName: String; Size: TGtkIconSize): String;
var
  icon: PGtkIconInfo;
  theme: PGtkIconTheme;
begin
  theme := gtk_icon_theme_get_default;
  icon := gtk_icon_theme_lookup_icon(theme, PChar(StockName),
    Size, GTK_ICON_LOOKUP_FORCE_SVG);
  if icon <> nil then begin
    Result := gtk_icon_info_get_filename(icon);
    gtk_icon_info_free(icon);
  end else
    Result := '';
end;
// Aufruf sieht so aus
GetGTKIcon('gdm',GTK_ICON_SIZE_DIALOG);

Jetzt ein paar Fragen dazu: Ist es normal, dass immer (also wirklich immer) eine .png Datei zurückgegeben wird? Wovon ist die Größe des Icons abhängig?
Und: Ja, ich habe GTK_ICON_LOOKUP_FORCE_SVG angegeben (ich hab es auch mit ...NO_SVG ausprobiert) und verschiedene Werte aus TGtkIconSize verwendet. Ich bekomme jedoch immer die gleiche Größe zurück.

Mein Ziel wäre es also den Pfad zu dem entsprechenden SVG-Bild zu bekommen, damit ich mir das dann passend rendern kann (meinetwegen direkt in der passenden Größe).

Kann mir da jemand helfen?
MfG Socke
Zuletzt geändert von Socke am Do 19. Mär 2009, 21:16, insgesamt 1-mal geändert.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

_X_
Beiträge: 250
Registriert: Di 16. Dez 2008, 20:13
OS, Lazarus, FPC: aptosid (aptosid.com); Lazarus SVN gtk2+qt4; FPC 2.4.0
CPU-Target: 32/64Bit

Re: GTK2 Stock Icons

Beitrag von _X_ »

Ist es normal, dass immer (also wirklich immer) eine .png Datei zurückgegeben wird?
Ich bekomme da ein XPM aus /usr/share/pixmaps
KDE 3.5.1

Sonnst kann ich leider nicht helfen.

mfg _X_

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: GTK2 Stock Icons

Beitrag von Socke »

_X_ hat geschrieben:
Ist es normal, dass immer (also wirklich immer) eine .png Datei zurückgegeben wird?
Ich bekomme da ein XPM aus /usr/share/pixmaps
KDE 3.5.1

Das könnte an KDE liegen (ich hab GNOME).
Mich wundert viel mehr, dass ich ein Rasterbild (png) bekomme, obwohl ich GTK_ICON_LOOKUP_FORCE_SVG angegeben habe.... (oder funktioniert das nur, wenn man als Größe einen bestimmten, mir unbekannten Wert angibt?)

MfG Socke

P.S. wenn ich mit gtk_icon_theme_get_default einen falschen Ansatz gewählt habe, wäre es doch ziemlich hilfreich, wenn mir das jemand mitteilen könnte...
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

DiBo33
Beiträge: 334
Registriert: Do 11. Okt 2007, 18:01

Re: GTK2 Stock Icons

Beitrag von DiBo33 »

in viewtopic.php?f=16&t=1375 gabs den Vorschlag ...

im weiteren Verlauf hatte ich meine entsprechende Unit vorgestellt, diese kannst du hier bekommen:
viewtopic.php?f=29&t=1655


Code: Alles auswählen

// Aufruf sieht so aus
GetGTKIcon('gdm',GTK_ICON_SIZE_DIALOG);


Hier übergibst du eine viel zu kleine Größe, gtk_icon_theme_lookup_icon() erwartet die Größe in Pixel und nicht die Konstanten, siehe in meiner Unit die Funktion GetIconRealSize().

svg - Dateien werden nur dann gefunden, wenn nicht schon vorher eine entsprechende XPM,PNG,JPG etc. Datei gefunden wird, sprich svg wird als letztes angenommen.

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: GTK2 Stock Icons

Beitrag von Socke »

DiBo33 hat geschrieben:
in viewtopic.php?f=16&t=1375 gabs den Vorschlag ...

im weiteren Verlauf hatte ich meine entsprechende Unit vorgestellt, diese kannst du hier bekommen:
viewtopic.php?f=29&t=1655


Code: Alles auswählen

// Aufruf sieht so aus
GetGTKIcon('gdm',GTK_ICON_SIZE_DIALOG);


Hier übergibst du eine viel zu kleine Größe, gtk_icon_theme_lookup_icon() erwartet die Größe in Pixel und nicht die Konstanten, siehe in meiner Unit die Funktion GetIconRealSize().

svg - Dateien werden nur dann gefunden, wenn nicht schon vorher eine entsprechende XPM,PNG,JPG etc. Datei gefunden wird, sprich svg wird als letztes angenommen.

Aus der GTK-API-Dokumentation war das mit der Größe leider nicht ersichtlich.
GTK_ICON_LOOKUP_FORCE_SVG implizierte mir eigentlich, dass nur svg-Bilder gesucht werden....

Mittlerweile hab ich das ganze Problem selbst gelöst, indem ich mir die TGTK2Widget.LoadStockPixmap funktion (bzw. das worauf diese basiert) modifiziert habe (unit siehe dein thread)

MfG Socke
Edit: Hier nochmal der Link http://www.lazarusforum.de/viewtopic.php?f=29&t=1655&p=28597 zu meiner Unit
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Antworten