[gelöst] 1.9: Desktops speichern und umschalten

Für Fragen rund um die Ide und zum Debugger
Antworten
Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 1214
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Manjaro Linux, Mint und Windows 10 ,Lazarus 4.99, FPC-Version: 3.3.1
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

[gelöst] 1.9: Desktops speichern und umschalten

Beitrag von kralle »

Moin,

es ist ja möglich für verschiedene Arbeiten sich verschiedene Desktops zu erstellen und diese dann zu speichern.
Die Grundidee ist ja toll, aber die Umsetzung klappt leider nicht so.

Folgende Situation:
Desktop 1 (Code): Menübar von Lazarus ganz Oben volle Breite. Quelltexteditor volle Breite, Höhe was den restlichen Bildschirm. Unten das Nachrichtenfester.
Desktop 2 (Design): Menübar von Lazarus ganz Oben, Links in voller Bildschirmhöhe der Objektinspektor , Mitte das Formular, rechts Komponentenfenster.
Schaltet man jetzt zwischen den Desktops her, muß man zusätzlich noch mittels F12 zwischen Formular und Quelltext umschalten, obwohl man in den Desktops doch festgelegt hat, das mal das eine und mal das andere Fenster nur vorhanden sein soll.

Da müsste man noch etwas nacharbeiten. Nur wie gibt man sowas an das Entwicklerteam weiter? Besonders wenn man im englischen nicht so bewandert ist?
Bei der Gelegenheit, könnte man auch gleich die Möglichkeit schaffen, das man für Quelltext und Formular , Desktops definieren kann, die dann aktiv werden.

Gruß Heiko
OS: MX Linux, Linux Mint und Windows 10
FPC-Version: 3.3.1 , Lazarus 3.99
+ Delphi XE7SP1

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

Re: 1.9: Desktops speichern und umschalten

Beitrag von Michl »

kralle hat geschrieben:Da müsste man noch etwas nacharbeiten. Nur wie gibt man sowas an das Entwicklerteam weiter?
Generell ist der Bugtracker https://bugs.freepascal.org/view_all_bug_page.php der Anlaufpunkt.

Pro Bugeintrag sollte immer nur ein Fehler gemeldet werden. Ein gut nachstellbarer Fehler mit Schritt-für-Schritt-Anleitung wird oft sehr schnell gefixt.
kralle hat geschrieben:Besonders wenn man im englischen nicht so bewandert ist?
Soweit man kann, sollte man Englisch verwenden (notfalls mit Hilfe eines Online-Translators). Wenn man sich nicht sicher ist, ob das Problem in Englisch klar genug herausgestellt wurde, kann man in der Beschreibung neben der englischen Variante einen deutschen Text schreiben. Einige Entwickler verstehen Deutsch.
kralle hat geschrieben:Bei der Gelegenheit, könnte man auch gleich die Möglichkeit schaffen, das man für Quelltext und Formular , Desktops definieren kann, die dann aktiv werden.
Hier gilt das Gleiche, wie bei einem Fehler. Ein "Feature Request" kann ebenfalls im Bugtracker gemeldet werden. Je genauer dieses Feauture beschrieben, dessen Mehrwert herausgestellt wird, desto wahrscheinlicher ist es, daß sich ein Entwickler hinsetzt und versucht dies umzusetzen.

Patches sind eine weitere Möglichkeit, die man im Bugtracker einreichen kann. Gleicher Grundsatz, wie zuvor: Man sollte ganz genau beschreiben, warum dieser Patch benötigt wird, welchen Mehrwert er bringt, daß er gut getestet wurde und keinen anderen Code bricht.


Neben dem Bugtracker lesen alle aktiven Entwickler die Lazarus-Mailing-List https://lists.lazarus-ide.org/listinfo/lazarus. Allerdings ist diese für Bugs eher nicht geeignet (werden diese nicht sofort gefixt, werden sie auf lange Sicht vergessen). Für Feature Requests, besonders wenn man plant selber ein Feature einzuarbeiten (ob dieses dann auch von den Entwicklern eingepflegt wird - nicht daß man sich umsonst müht oder schon jemand daran arbeitet), ist die Mailing-List gut.

Code: Alles auswählen

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

Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 1214
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Manjaro Linux, Mint und Windows 10 ,Lazarus 4.99, FPC-Version: 3.3.1
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

Re: 1.9: Desktops speichern und umschalten

Beitrag von kralle »

Ich habe das heute als "Feature Request" (ID 0032242) gemeldet.
Aber, ich soll das selber entwickeln und einen Patch zur Verfügung stellen.
a) keine Ahnung wie ich das programmieren soll
b) ein Patch würde ja nur für eie Version gelten.

Gruß Heiko
OS: MX Linux, Linux Mint und Windows 10
FPC-Version: 3.3.1 , Lazarus 3.99
+ Delphi XE7SP1

Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 1214
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Manjaro Linux, Mint und Windows 10 ,Lazarus 4.99, FPC-Version: 3.3.1
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

Re: 1.9: Desktops speichern und umschalten

Beitrag von kralle »

Moin.

Die Lösung ist gefunden.
Besser gesagt, pluto hat das quasi nebenbei beim 4. Norddeutschen Lazarustreffen viewtopic.php?f=66&t=16799, programmiert.

Laz-Version: 3.4 und 4.99
Die Lösung wird in die "main.pp" eingebunden.
Mein "main.pp" liegt z.B. hier: "/home/lazman/Downloads/fpcupdeluxe/fpcupdeluxe/lazarus/ide/"

Damit man die Funktion aber auch sieht, sollte man unter "Fenster / Desktops ...", mindestens zwei Desktops anlegen.
Umgeschaltet wird nur zwischen den beiden obersten Desktops.
Der oberste Desktop ist für den "Code-Editor" und darunter für den "Form-Designer".

Jetzt in der "main.pp" zu Zeile 3196 gehen und zwischen "procedure" und "TempDesktopOpt:=EnvironmentGuiOpts.Desktops.Find(DesktopName); "
diesen Code einfügen:

Code: Alles auswählen

// New Code
var
  DesktopName:String;
  TempDesktopOpt:TCustomDesktopOpt;
begin
  DesktopName:=EnvironmentGuiOpts.ActiveDesktop.Name;
  if DesktopName = EnvironmentGuiOpts.Desktops[0].Name then
	begin
      DesktopName:=EnvironmentGuiOpts.Desktops[1].Name;
    end
  else
	begin
	  DesktopName:=EnvironmentGuiOpts.Desktops[0].Name;
	end;
  // Original Code
Die ganze Procedure sieht dann so aus:

Code: Alles auswählen

procedure TMainIDE.mnuToggleFormUnitClicked(Sender: TObject);
// New Code
var
  DesktopName:String;
  TempDesktopOpt:TCustomDesktopOpt;
begin
  DesktopName:=EnvironmentGuiOpts.ActiveDesktop.Name;
  if DesktopName = EnvironmentGuiOpts.Desktops[0].Name then
	begin
      DesktopName:=EnvironmentGuiOpts.Desktops[1].Name;
    end
  else
	begin
	  DesktopName:=EnvironmentGuiOpts.Desktops[0].Name;
	end;
  // Original Code
 TempDesktopOpt:=EnvironmentGuiOpts.Desktops.Find(DesktopName); 
 if TempDesktopOpt is TDesktopOpt then
	EnvironmentGuiOpts.UseDesktop( TempDesktopOpt as TDesktopOpt);
 
 if IDETabMaster <> nil then
    IDETabMaster.ToggleFormUnit
  else
    DoBringToFrontFormOrUnit;
end;
Jetzt noch unter "Werkzeuge / Kompiliere Lazarus mit Profil: Normale IDE" ausführen und dann sollte auch bei das Umschalten funktionieren.
Zum Abschalten, im "Desktop-Manager" zweimal den gleichen Desktop nach oben schieben :D

Sollte es nach dem Kompilieren nicht funktionieren, hat Lazarus vielleicht eine alte "main.ppu" genutzt.
Dann in dem entsprechenden Verzeichnis bei Euch (bei mir ist es "/home/lazman/Downloads/fpcupdeluxe/fpcupdeluxe/lazarus/units/x86_64-linux/gtk2/")
die "main.ppu" und die "main.o" löschen, werden dann beim Kompilieren neu erstellt.

Man könnte das jetzt natürlich noch erweitern in dem man z.B. in den Optionen einen Punkt zum Aktivieren/Deaktivieren schafft und dort die Auswahl für die Desktops möglich macht.

Aber, ich wäre schon froh, wenn diese Variante dauerhaft Bestandteil der "main.pp" werden würde.

Gruß Kralle
OS: MX Linux, Linux Mint und Windows 10
FPC-Version: 3.3.1 , Lazarus 3.99
+ Delphi XE7SP1

Antworten