GTK2 Widget mit LCL nutzen

Rund um die LCL und andere Komponenten
Antworten
Socke
Lazarusforum e. V.
Beiträge: 3178
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:

GTK2 Widget mit LCL nutzen

Beitrag von Socke »

Hallo,
ich möchte das GTK2 Widget "GtkFileChooserButton" in einer LCL-Anwendung benutzen, jedoch hab' ich keinen Plan, wie ich das am Besten/Einfachsten anstelle.

Gibt es irgendwie die Möglichkeit, dass ich das PGtkWidget einfach einem Handle eines Controls zuweise? (wäre sicherlich am Einfachsten; hat aber nicht funktioniert) oder muss den ganzen Umweg über TGtk2WSControl (oder so ähnlich) machen (wo ich aber kaum durchblicke).

Die Funktion zum Erstellen des Widgets lautet:

Code: Alles auswählen

function gtk_file_chooser_button_new(title: Pgchar; action: TGtkFileChooserAction): PGtkWidget; cdecl; external;
Also immer her mit den Ideen
MfG Socke
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Re: GTK2 Widget mit LCL nutzen

Beitrag von monta »

ich hab es noch nie gemacht, aber es gibt für GTK auch eine Art Anleitung um es mit FPC zu nutzen, kennst du die schon?

http://www.freepascal.org/packages/gtk/ ... tents.html" onclick="window.open(this.href);return false;

Da gibts auch was zu Buttons usw. eventuell kannst du dir da was raus ziehen, wie das ganze funktionieren könnte?
(Im FPC-Verzeichnis gibts auch ein paar Beispiele zu GTK1/2 aber ich glaub, keines mit der Komponente direkt)
Johannes

Socke
Lazarusforum e. V.
Beiträge: 3178
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 Widget mit LCL nutzen

Beitrag von Socke »

monta hat geschrieben:ich hab es noch nie gemacht, aber es gibt für GTK auch eine Art Anleitung um es mit FPC zu nutzen, kennst du die schon?

http://www.freepascal.org/packages/gtk/ ... tents.html" onclick="window.open(this.href);return false;

Da gibts auch was zu Buttons usw. eventuell kannst du dir da was raus ziehen, wie das ganze funktionieren könnte?
(Im FPC-Verzeichnis gibts auch ein paar Beispiele zu GTK1/2 aber ich glaub, keines mit der Komponente direkt)
Danke, die kenn ich noch nicht; werd sie mir mal ansehen.
Dass es für dieses Widget keine Beispiel in Freepascal gibt, wundert mich nicht - schließlich hab ich in 2.2.2 quellen den api-call nicht gefunden (keine Ahnung, wie das mit 2.2.4 (neuste version) ist, gibts noch nicht in den Debian-Repositories).

MfG Socke

Edit: Das oben verlinkte Dokument zeigt eigentlich nichts anderes als direkt mit der GTK1-API zu arbeiten. Das wollte ich eigentlich vermeiden, da ich die LCL doch sehr nett finde. Wenn keiner eine Idee hat, wie ich das GTK2 Widget GtkFileChooserButton mit einem LCL-Control benutzen kann (zwecks Positioning/Verankerung usw), habe ich entweder einen Grund libgtkmm nach FreePascal zu porten oder doch noch C/C++ zu lernen :cry:
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: GTK2 Widget mit LCL nutzen

Beitrag von pluto »

/usr/share/fpcsrc/2.2.2/packages/gtk2/examples/filechooser
da gibt es ein Beispiel. Aber das ist doch eine normales OpenDialog oder ?
MFG
Michael Springwald

Socke
Lazarusforum e. V.
Beiträge: 3178
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 Widget mit LCL nutzen

Beitrag von Socke »

pluto hat geschrieben:/usr/share/fpcsrc/2.2.2/packages/gtk2/examples/filechooser
da gibt es ein Beispiel. Aber das ist doch eine normales OpenDialog oder ?
Naja, die ganzen Beispiele in dort sowie der Link, den monta gepostet hat, behandeln die direkte Programmierung in GTK/GTK2. Ich würde aber gerne als Grundlage weiterhin die LCL (die ganzen Komponenten) wegen der vertrauten API verwenden.

Als alternative dürfte es aber auch ein eher geringes Problem sein sich in GTK2 einzuarbeiten. Und da wir gerade schon dabei sind: man kann nicht zufällig ein LCL-Control (mit GTK2 Interface) irgendwie in einen GTK2-Container platzieren (ich will in FreePascal bleiben; also keine Sprachhindernisse)?

MfG Socke
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: GTK2 Widget mit LCL nutzen

Beitrag von pluto »

Bei meiner XINE Klasse habe ich es so versucht:

Code: Alles auswählen

xid: TWindow;
xid:=PGdkWindowPrivate(PGtkWidget(myWidget.Handle)^.window)^.xwindow;
   uses:
   xlib, Controls, x,Graphics,xvlib,xv,gtk,
  LCLIntf,LCLType, Forms,xatom,glib,libc,LCLClasses,GtkWSControls,gdk,
  WSLCLClasses, GTKDef,GtkInt, InterfaceBase, gdkpixbuf,xutil,pkghandler,
  Gtk1WSPrivate,GtkExtra,GtkWSPrivate,LCLProc,GTKProc;
Bei den Unit bin ich mir nicht sicher wie ich die einbinden könnte. Aber das hat klappte ganz gut. Diese Anweisung erzeugt ein handel mit dem XINE bzw. GTK was anfangen kann. Ich glaube das müsste so auch bei GTK2 klappen. mywidget wird so definiert: myWidget : TWinControl;
Evlt. kannst du dieses Beispiel so anpassen das es bei dir passt.
MFG
Michael Springwald

Socke
Lazarusforum e. V.
Beiträge: 3178
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 Widget mit LCL nutzen

Beitrag von Socke »

Dann hoffe ich mal, dass das mit GTK2 immer noch funktioniert, habe zur Zeit keine Zeit zum Testen...
Und noch was: welche Units brauche ich wirklich?

Code: Alles auswählen

TWindow -> x
TWinControl -> controls
PGtkWidget -> gtk2
PGdkWindowPrivate -> gdk (das scheint gtk1 spezifisch zu sein)
Wie gesagt, ich beschäftige mich später intensiver damit, aber schonmal vielen Danke für die Idee.

MfG Socke
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Antworten