Arg! - Oder: Warum müssen GUIs unter Linux immer so ...

Antworten
Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Arg! - Oder: Warum müssen GUIs unter Linux immer so ...

Beitrag von Timm Thaler »

... bescheiden aussehen.

term-01.png


Das ist das gleiche Programm in Win7 mit Lazarus, Raspbian mit Lazarus und Raspbian mit Qt. Abgesehen davon, dass die Elemente unter Linux immer riesig sind - auch bei Ubuntu - und damit die Positionierung nicht mehr passt, warum übernimmt Lazarus hier nicht die Vorgaben des OS für die Darstellung?

Wie macht ihr das, um unter Linux eine konsistente Darstellung zu bekommen?

Lazarus ist jeweils 1.6, FPC ist 3.0.0.

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Arg! - Oder: Warum müssen GUIs unter Linux immer so ...

Beitrag von Michl »

Das alles ist ein sehr umfnagreiches Thema, wenn man es richtig machen will. Schon unter Windows gibt es eine Menge Möglichkeiten. WinXP, Win7 Classic / Aero Theme, Win 10 mit jeweils unterschiedlichen DPI Settings und DPI-Verhaltensregeln (neuerdings sogar Per-Monitor DPI-Aware). Linux/MAC kennen diese Regeln nicht, dort gibt es nur eine bestimmte DPI-Einstellung, die aber auch variieren kann.

Aktuell, kann man sich an dem Wiki http://wiki.lazarus.freepascal.org/High_DPI orientieren und alle Zielplatformen testen, ob es entsprechend funktioniert. Im Lazarus Trunk wird zur Zeit an einer automatischen Lösung für die Darstellungsprobleme gearbeitet, siehe http://wiki.freepascal.org/High_DPI#High_DPI_in_Lazarus_1.7_and_above.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

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

Re: Arg! - Oder: Warum müssen GUIs unter Linux immer so ...

Beitrag von Mathias »

Was vielleicht auch noch ein Tip ist, wen man den Platz für die Komponenten grosszügiger berechnet und überladene Dialog vermeidet.
Die COM-Port Parameter könnte man in ein Menü und einen separaten Dialog auslagern.

Besonders schwierig wird es, wen man Dialoge Mehrsprachig gestallten muss, das bringen vielfach nicht mal Profis richtig hin.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Arg! - Oder: Warum müssen GUIs unter Linux immer so ...

Beitrag von Christian »

Die GUI sieht bescheiden aus, weil sie bescheiden entwickelt ist.
Lazarus bietet mit Anchoring und default Schriftgrößen/arten alle Möglichkeiten die man braucht um die GUIs auf allen Plattformen vernünftig zu machen.
Oberflächen sind unter Windows oft viel zu überladen und sind viel übersichtlicher wenn man sie auf Tabs oder Fenster aufteilt weil der Nutzer eh nicht alle Controls erfassen kann.
Deshalb find ich die Entscheidung unter Linux die Controls/Schriftarten größer zu machen gar nicht so schlecht.
Wenn du die GUI im Linux entwickelst sieht sie im Windows übrigends meisst auch gut aus. Wenn du doch mal zu große Abstände hast kannst du mit Anchors die Controls "aneinander hängen"
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Re: Arg! - Oder: Warum müssen GUIs unter Linux immer so ...

Beitrag von Timm Thaler »

Mathias hat geschrieben:Was vielleicht auch noch ein Tip ist, wen man den Platz für die Komponenten grosszügiger berechnet und überladene Dialog vermeidet.


Haha, dann hast Du noch nie mit BrayTerm gearbeitet.

Ne, ich will das genau so, weil ich häufig verschiedene Geräte mit unterschiedlichen Einstellungen testen muss. Hier geht es weniger um Datenaustausch oder Konsole, sondern um Befehlsfolgen. Deswegen auch die Möglichkeiten zur Manipulation der Ausgabe.

Christian hat geschrieben:Lazarus bietet mit Anchoring und default Schriftgrößen/arten alle Möglichkeiten die man braucht um die GUIs auf allen Plattformen vernünftig zu machen.


Das rücke ich noch zurecht. Erklärt aber nicht, warum Lazarus hier eigene Darstellung verwendet (z.B. die eckigen Buttons statt der abgerundeten von Raspbian). Sollte das nicht GTK 2 sein?

Und die vergeigte Darstellung der Statusbar - dazu muss man wohl nix sagen, oder?

Allerdings sind die Anchors schon nett, z.B. das automatische Anpassen des Ausgabefensters an die Fenstergröße läuft sehr flüssig.

Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Re: Arg! - Oder: Warum müssen GUIs unter Linux immer so ...

Beitrag von Timm Thaler »

term-02.png


Noch ein paar Anker zugewiesen und die Statusbar durch TStaticTest ersetzt. Macht unter Raspbian noch den falschen Rahmen.

creed steiger
Beiträge: 957
Registriert: Mo 11. Sep 2006, 22:56

Re: Arg! - Oder: Warum müssen GUIs unter Linux immer so ...

Beitrag von creed steiger »

Mit dem gnome-color-chooser kannst du das alles auf dem PI einstellen.

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

Re: Arg! - Oder: Warum müssen GUIs unter Linux immer so ...

Beitrag von pluto »

Es sieht unterschiedlich aus auf verschiedenen Linux wegen verschiedener Gründe:
1. Welchen Fenster Manager? Die einen Zeichnen so, die anderen wieder so und der dritte ganz anders.
2. Welches Themen hast du geladen? Letztes hatte ich in Inkscape ein Fehler: Ich konnte keine Führungslinien erstellen. Jedes mal wurde das Fenster verschoben wer war schuld? Der GTK2 Style. Style geändert und siehe da: Es läuft...

Oft sind es Kleinigkeiten.

Das ist ja das schöne an HTML, da hier in der Regel alles Automatisch Positioniert wird. Was auch nicht immer toll ist.
Ich habe so was was du gerade machst mit einem WebSocketServer mal gemacht... der Konnte auch mit mehren Device's umgehen...
weiß aber nicht wo ich stehengeblieben bin.

Jetzt kann man sagen: Packt eure Fenster nicht zu voll, dann wird es unübersichtlich das ist aber nicht immer die Lösung.
Die Lösung wäre, die GUI selbst zu zeichnen, dann sieht die immer gleich aus.

Es gibt eine Komponenten Lib, die Zeichnet einige Komponenten selbst, die Wichtigsten. Mir fällt gerade der Name nicht ein.
MFG
Michael Springwald

Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Re: Arg! - Oder: Warum müssen GUIs unter Linux immer so ...

Beitrag von Timm Thaler »

Das Autoskale und die Positionierung über Anker ist schon so schlecht nicht. Was mich eher verwirrt ist:

- Warum sehen die Buttons anders (spitze Ecken, weisser Innenrand) aus als bei den nativen Raspbian-Fenstern, oder bei Cutecom, oder wenn ich die gleiche Oberfläche mit Qt und C++ erstelle (Buttons mit runden Ecken)?
- Warum ist eine editierbare ComboBox höher als eine nicht editierbare, wenn ich Autosize einstelle? Ist bei Cutecom z.B. nicht so.
- Warum hat eine ComboBox spitze Ecken, sobald sie editierbar ist sind die Ecken rund?
- Warum werden Elemente mit spitzen und runden Ecken lustig gemischt (Buttons vs. Checkboxes)?

Das erscheint irgendwie inkonsistent.

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

Re: Arg! - Oder: Warum müssen GUIs unter Linux immer so ...

Beitrag von pluto »

- Warum sehen die Buttons anders (spitze Ecken, weisser Innenrand) aus als bei den nativen Raspbian-Fenstern, oder bei Cutecom, oder wenn ich die gleiche Oberfläche mit Qt und C++ erstelle (Buttons mit runden Ecken)?

Wie gesagt: Es gibt unterschiedlichen Themen, unterschiedliche GTK2 Style und Unterschiedliche Fenster Manager.
Das führt dazu, dass alles unterschiedlich aussieht.

- Warum ist eine editierbare ComboBox höher als eine nicht editierbare, wenn ich Autosize einstelle? Ist bei Cutecom z.B. nicht so.

Eine Spannende Frage....

- Warum hat eine ComboBox spitze Ecken, sobald sie editierbar ist sind die Ecken rund?

Vielleicht, damit man sehen kann, dass editierbar ist.

- Warum werden Elemente mit spitzen und runden Ecken lustig gemischt (Buttons vs. Checkboxes)?

Damit nicht alles gleich aussieht.

Ich würde mir auch eher eine Einheitlichere GUI wünschen.

Habe schon einige GUI Konzepte entwickelt, aber das Thema ist nicht so einfach...
MFG
Michael Springwald

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

Re: Arg! - Oder: Warum müssen GUIs unter Linux immer so ...

Beitrag von Mathias »

- Warum ist eine editierbare ComboBox höher als eine nicht editierbare, wenn ich Autosize einstelle? Ist bei Cutecom z.B. nicht so.

Über die Höhe ComboBox wurde hier auch schon diskutiert.

viewtopic.php?f=18&t=10287&p=90602&hilit=combobox#p90602
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten