Erste Gehversuche mit GTK2

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Erste Gehversuche mit GTK2

Beitrag von af0815 »

Mathias hat geschrieben:
Do 2. Feb 2023, 15:00
Bei Win3x sah es anderes aus, da war schon ein Widget an Board ?
Ja, Widgetset sind alt, nur der Begriff ist etwas neuer. Das (standisierte) grafische Interface war ja die "Neuerung". Bei OS/2 und WinNT, wobei die ja eine mehr oder minder gemeinsame Vergangenheit gehabt haben. Wobei so neu war das nicht, es wurde dann Hardwareunabhängiger durch die sogenannten Treiberschichten.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Erste Gehversuche mit GTK2

Beitrag von theo »

Winni hat geschrieben:
Do 2. Feb 2023, 12:39

Code: Alles auswählen

| KDE • Gnome • XFCE • ..... | Desktop Umgebung
| gtk*     •  qt*            | Widget Set
|         X11                | Window-Manager & Netzwerkprotoll
| Unix • Linux • FreeBSD •...| Betriebssystem
Jede Schicht hat seine Aufgabe und reicht seine Befehle an die höhere Schicht weiter, die für bestimmte Aufgaben zuständig ist.

Für die z.B. Fenster-Dekoration ist die Desktop-Umgebung zuständig.
Frühe KDE-Versionen lieferten z.B. die Möglichkeit, Fenster mit bayrischen Schindeldächern zu verzieren.
Das mit dem Window-Manager könnte etwas verwirrend sein.
Denn eigentlich gehört der ja meistens zur Desktop Umgebung. X11 ist ja noch kein WM.
Und für die Fenster-Dekoration ist eben der WM als eigenständiges Programm zuständig.
Z.B. für KDE ist es normalerweise KWin https://en.wikipedia.org/wiki/KWin
Auch TWM etc. https://de.wikipedia.org/wiki/Twm

Nur zur Klarstellung. Sonst ist's schon gut.

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Erste Gehversuche mit GTK2

Beitrag von Winni »

Hi!

Na, das ist mehrstufig:

* X11 sagt z.B.: Zeichne ein Fenster an x/y mit der Breite w und der Höhe h
* Das Widget Set stellt die logische Verbindung nach draussen her und stellt die Widgets zur Verfügung
* Der Desktop zeichnet endgültig das Fenster nach seinen Vorstellungen

Winni

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Erste Gehversuche mit GTK2

Beitrag von Mathias »

* Der Desktop zeichnet endgültig das Fenster nach seinen Vorstellungen
Habe ich mich da getäuscht, ich dachte der Desktop zeichnet nur die Fensterrahmen inkl. der Systembuttons. Und was er noch macht, er gibt die Events-Handle an das Programm weiter. Und das ausfüllen der Fenster, das macht das Widget-Set ?
Und die uralten Widgets, zeichnen direkt mit X11-Befehlen und die Modernen zeichnen in ein Bitmap und dies zT. Hardware beschleunigt und geben dann die ganze Bitmap an X11 weiter.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Erste Gehversuche mit GTK2

Beitrag von theo »

Hier ist viel Halbwahrheit im Umlauf, auch von Winni. :wink:
Lies doch einfach mal das: https://de.wikipedia.org/wiki/X_Window_System
Da steht alles drin.
X11 ist in erster Linie ein Netzwerkprotokoll.

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Erste Gehversuche mit GTK2

Beitrag von Mathias »

Mit GTK stehe ich wieder mal an. :oops:

Ich wollte folgendes Beispiel in Pascal umsetzten: "Image menus, mnemonics & accelerators"
Die Seite zum Beispiel: https://zetcode.com/gui/gtk2/menusandtoolbars/
Wen ich es unter C compiliere, läuft es einwandfrei.

Aber starte ich die Pascal-Version im Anhang direkt in der Lazarus-IDE, schmiert mir der ganze Fenstermanger ab, sobald ich aufs Menu clicke. Die Maus bewegt sich dann noch, aber reagiert auf nichts mehr. Einzig es kommt noch eine Meldung mit "unknow exception 8".
Dann kann ich den FM nur noch mit <Ctrl+Alt+Backspace> beenden.
Starte ich es aber von der Konsole, dann kommt folgendes und der FM bleibt stabil.

Code: Alles auswählen

$ ./project1 
An unhandled exception occurred at $00007FB26895E4DB:
EInvalidOp: Invalid floating point operation
  $00007FB26895E4DB
Was mache ich wieder falsch ?
Ich habe das Programm zig mal mit der C-Version verglichen, aber ich kann kein Fehler finden. :oops:
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Erste Gehversuche mit GTK2

Beitrag von Winni »

Mathias hat geschrieben:
Fr 3. Feb 2023, 16:26

Und die uralten Widgets, zeichnen direkt mit X11-Befehlen und die Modernen zeichnen in ein Bitmap und dies zT. Hardware beschleunigt und geben dann die ganze Bitmap an X11 weiter.
Hi!

Trenne Dich mal von Deinem "uralt"-Quatsch.

Das Rad ist mindestens 6000 Jahre alt und noch immer in Benutzung.

Motif hat schon 1989 callbacks zum X11 Server gemacht.

Winni

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Erste Gehversuche mit GTK2

Beitrag von af0815 »

Mathias hat geschrieben:
Fr 3. Feb 2023, 16:38
Ich wollte folgendes Beispiel in Pascal umsetzten: "Image menus, mnemonics & accelerators"
Die Seite zum Beispiel: https://zetcode.com/gui/gtk2/menusandtoolbars/
Wen ich es unter C compiliere, läuft es einwandfrei.
Wir finden auch keinen Fehler, weil wenn man keinen Quellcode hat zum nachvollziehen, dann kann man keinen Fehler suchen.
Stell das mal als File ein, C und Pas Quellcode zum selbstkompilieren.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Erste Gehversuche mit GTK2

Beitrag von theo »

Mathias hat geschrieben:
Fr 3. Feb 2023, 16:38

Code: Alles auswählen

$ ./project1 
An unhandled exception occurred at $00007FB26895E4DB:
EInvalidOp: Invalid floating point operation
  $00007FB26895E4DB
Was mache ich wieder falsch ?
Ich habe das Programm zig mal mit der C-Version verglichen, aber ich kann kein Fehler finden. :oops:
Habe den Code nicht angeschaut, aber wahrscheinlich fehlt SetExceptionMask(...);
Siehe Screenshot hier:
viewtopic.php?f=29&t=14665&p=132279

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Erste Gehversuche mit GTK2

Beitrag von Mathias »

Stell das mal als File ein, C und Pas Quellcode zum selbstkompilieren.
Ich dachte ich hätte es angehängt. Somit probiere ich es nochmals.
Dateianhänge
30-Image_menus.zip
(1.85 KiB) 33-mal heruntergeladen
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Erste Gehversuche mit GTK2

Beitrag von af0815 »

Die Zeile hier meinst du

Code: Alles auswählen

  SetExceptionMask([exDenormalized, exInvalidOp, exOverflow, exPrecision, exUnderflow, exZeroDivide]);
Kann gtk2 unter Windows nicht sinnvoll testen :-)
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Erste Gehversuche mit GTK2

Beitrag von theo »

af0815 hat geschrieben:
Fr 3. Feb 2023, 17:27
Die Zeile hier meinst du
Ja.

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Erste Gehversuche mit GTK2

Beitrag von Winni »

Hi!

SetExecptionMask dient doch nur dazu, Programmierfehler zu verschleiern.

Unter C-Programmierern weit verbreitet.
Und man wundert sich über den nächsten Windows-Bluescreen

Winni

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Erste Gehversuche mit GTK2

Beitrag von theo »

af0815 hat geschrieben:
Fr 3. Feb 2023, 17:27
Kann gtk2 unter Windows nicht sinnvoll testen :-)
Kann man schon: https://www.osboxes.org/opensuse/
Ich habe auch unter Linux noch ein Rolling-Release-Linux in der Virtualbox, z.B. um Qt6 zu testen.
Die Qt6 Libs sind in der normalen Version (Leap) noch nicht verfügbar.

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Erste Gehversuche mit GTK2

Beitrag von Mathias »

af0815 hat geschrieben:
Fr 3. Feb 2023, 17:27
Die Zeile hier meinst du

Code: Alles auswählen

  SetExceptionMask([exDenormalized, exInvalidOp, exOverflow, exPrecision, exUnderflow, exZeroDivide]);
Kann gtk2 unter Windows nicht sinnvoll testen :-)
Ich dachte gtk gibt es auch bei Windows ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten