IDE Search Panel

Rund um die LCL und andere Komponenten
Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: IDE Search Panel

Beitrag von theo »

fliegermichl hat geschrieben:
So 4. Dez 2022, 16:04
Ich hatte gedacht, daß würde zusammenhängen. Es wäre schön, wenn ich das Eingabefeld per Tastatur Shortcut fokussieren könnte.
Dann muss man nicht immer erst nach der Maus greifen.
"Suchen -> Inkrementelle Suche" ist in der IDE eingebaut.
Die ist auch noch da, wenn das Suchpanel deinstalliert ist.
Ich finde das einfach ein ziemlich nerdiges User Interface für eine an-sich nützliche Funktion.
Den meisten Benutzern ist das Ding noch gar nie aufgefallen. Dir wohl auch nicht! :wink:

Das Suchpanel ist tatsächlich etwas mehr Maus-orientiert und ich werde das auch nicht mit noch einem Shortcut versehen, den sich keiner merken kann.
Ich bevorzuge gerade auf Notebooks das Touchpad gegenüber den Funktionstasten. Das war ein Grund für das Suchpanel.

Du hast die Auswahl:
1. Normale Suche mit CTRL+F
2. Inkrementelle Suche mit CTRL+E
3. Suchpanel mit der Maus.

Ist doch schön, wenn man wählen kann! :D

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: IDE Search Panel

Beitrag von wp_xyz »

theo hat geschrieben:
So 4. Dez 2022, 14:37
Ich kann das einfach nicht nachstellen.
Habe es eben auf Leap mit GTK2 probiert und dann noch auf Tumbleweed mit Qt6.
Ich sehe kein Problem.
Ich bin ja jetzt auch schon ein paar Tage an diesem Projekt und mir ist die IDE noch nie abgeschmiert.

Da wird schon etwas faul sein, aber wenn der Fehler bei mir nicht auftaucht, was soll ich da machen?

Hast du vielleicht auf deinen Installationen etwas Spezielles installiert, was im Zusammenspiel Probleme macht?
Hast du AnchorDockDesign drin? (Ich ja.)
Oder ähnliches?
Kein Anchor-Docking, je nach Installation aber unterschiedliche Komponenten.

Hab jetzt auf meiner OpenSuse VM (Tumbleweed) auch das Searchpanel in Laz/main installiert, und wieder derselbe Fehler. OK - da sind vielleicht auch ein paar externe Packages drin.

Daher habe ich dann auf Windows Laz/main von GitLab frisch gecloned und unter Verwendung von FPC 3.2.2 eine brandneue IDE gebaut. Nichts geändert, nur das SearchPanel installiert --> es kracht wieder.

Der Test war: Das Projekt aus dem zip weiter oben (wp-test) in die IDE laden und dann aber gleich ein neues Projekt erzeugen --> bäng.

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

Re: IDE Search Panel

Beitrag von theo »

wp_xyz hat geschrieben:
So 4. Dez 2022, 19:37
Kein Anchor-Docking, je nach Installation aber unterschiedliche Komponenten.
Ja, jetzt sehe ich es auch. Der Unterschied ist beim Anchor-Docking.
Das hätte ich eher umgekehrt erwartet, dass das Anchor-Docking Ärger macht.
Mach mal mit AnchorDockDesign, dann flutscht alles.
Ich schaue mir das nächste Woche an, könnte aber knifflig werden zum debuggen.

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: IDE Search Panel

Beitrag von wp_xyz »

Hatte gerade Lust auf etwas Gehirntraining, und nachdem ich ohnehin gerade eine frische IDE aufgebaut habe, wollte ich anfangen, diese zu debuggen.

Ein Bug kam schon in der Registrierungs-Prozedur:

Code: Alles auswählen

procedure Register;
begin
  ASearchPanel := TIDESearchPanel.Create;
  cmd := RegisterIDEMenuCommand(itmSearchFindReplace, 'showSearchPanel',
    mnuShowPanel, @ASearchPanel.OnCmdClick, nil, nil, '');
Da wird cmd nach dem ASearchPanel erzeugt, in dessen constructor aber LoadStates aufgerufen wird, das wiederrum an OnCmdClick weitergibt, und dort steht "DoChangePanelVisibility(not Cmd.Checked)". Aber Cmd ist ja noch gar nicht erzeugt... Mit einer nil-Prüfung kann man das abfangen, evtl. muss LoadStates noch in Register-Prozedur separat aufgerufen werden, wenn cmd erzeugt ist.

Dann krachte es beim Beenden noch in UpdateDockState, wo fPanel.Visible abgefragt wird. Zu diesem Zeitpunkt ist fPanel anscheinend schon nil. Noch eine nil-Prüfung und schon lief es.

Ich muss sagen, das war das erste Mal, dass ich ernsthaft die IDE durch den Debugger laufen ließ, und ich bin ziemlich begeistert wie leicht das war. Was ich vorher anscheinend immer falsch gemacht hatte, war, dass ich versucht habe, den Quellcode der aktuell laufenden Instanz zu debuggen. Aber da ich nun ein zweites unabhängiges Lazarus-Quellcode-Verzeichnis hatte, war die erzeugte exe von der aktiven exe unabhängig. Das größte Problem ist, zu unterscheiden in welcher IDE man sich gerade befindet.
Dateianhänge
searchpanel.patch
(1.2 KiB) 33-mal heruntergeladen

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

Re: IDE Search Panel

Beitrag von theo »

Danke, hab mir das noch eben angeschaut vor dem Schlafen gehen.
Bei mir kracht's aber immer noch mit der Undocked IDE.
Ich glaube auch nicht, dass es so simple und eindeutige Fehler sind, sonst würde die Docked IDE nicht absolut ohne Fehlermeldungen laufen.

Ich werde den Teil nächste Woche noch einmal aufbauen in der Undocked IDE.

Danke und gute Nacht!

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

Re: IDE Search Panel

Beitrag von theo »

Ich glaube ich hab den Bock.
Werde noch etwas testen und putzen, aber bei mir schmiert es schon mal nicht ab auf der Undocked IDE.
Vielleicht gibt es am Abend ein Update auf Git.

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1432
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: IDE Search Panel

Beitrag von fliegermichl »

Ja, ohne Anchordocking scheppert's auch bei mir.

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

Re: IDE Search Panel

Beitrag von theo »

So, müsste jetzt funktionieren:
https://github.com/theo222/laz_idesearchpanel

Gerne testen!

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: IDE Search Panel

Beitrag von wp_xyz »

Genau, kein Crash mehr. Sehr gut.

Eine Kleinigkeit ist noch (in der nicht-gedockten IDE): Wenn ich früher (ohne SearchPanel) ein neues Projekt erzeuge, ist das leere Formular vor dem Code-Editor. Wenn ich jetzt (mit SearchPanel) ein neues Projekt erzeuge, liegt das leere Formular kurz vor dem Code-Editor, verschwindet dann aber hinter dem Editor, wenn alles geladen ist, zumindest unter Windows.

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

Re: IDE Search Panel

Beitrag von theo »

wp_xyz hat geschrieben:
Mo 5. Dez 2022, 18:47
Eine Kleinigkeit ist noch (in der nicht-gedockten IDE): Wenn ich früher (ohne SearchPanel) ein neues Projekt erzeuge, ist das leere Formular vor dem Code-Editor. Wenn ich jetzt (mit SearchPanel) ein neues Projekt erzeuge, liegt das leere Formular kurz vor dem Code-Editor, verschwindet dann aber hinter dem Editor, wenn alles geladen ist, zumindest unter Windows.
Besser? https://github.com/theo222/laz_idesearchpanel

Habe noch den Close Button "gethemed".
Kannst du da bei Gelegenheit mal mit High DPI drauf schauen?

dj_leinad
Beiträge: 33
Registriert: Sa 1. Okt 2022, 05:27
OS, Lazarus, FPC: Win10 pro (Laz 3.2 / FPC 3.2.2)
CPU-Target: Win 64Bit
Wohnort: CH

Re: IDE Search Panel

Beitrag von dj_leinad »

Hallo Theo,

was mir noch aufgefallen ist, ist dass das Statistikfeld nach einer ersten Suche nicht zurückgesetzt wird. Ansonsten Klasse IDE-Erweiterung, danke dafür.
Unbenannt.PNG
Unbenannt.PNG (5.19 KiB) 867 mal betrachtet
Erfahrung heißt gar nichts. Man kann eine Sache auch 35 Jahre schlecht machen.

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

Re: IDE Search Panel

Beitrag von theo »

fliegermichl hat geschrieben:
So 4. Dez 2022, 16:04
Es wäre schön, wenn ich das Eingabefeld per Tastatur Shortcut fokussieren könnte.
Dann muss man nicht immer erst nach der Maus greifen.
Die neue Version hört nun auf CTRL-P wie "Panel".
Ich wollte das zuerst gar nicht machen, aber jetzt gefällt es mir auch sehr gut. :D
Ist schon praktisch, auch um es wieder verschwinden zu lassen.
dj_leinad hat geschrieben:
Mo 5. Dez 2022, 21:58
was mir noch aufgefallen ist, ist dass das Statistikfeld nach einer ersten Suche nicht zurückgesetzt wird. Ansonsten Klasse IDE-Erweiterung, danke dafür.
Danke für das Kompliment.
Das Label sollte nun 0/0 anzeigen, wenn das Suchfeld leer ist

https://github.com/theo222/laz_idesearchpanel

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: IDE Search Panel

Beitrag von wp_xyz »

theo hat geschrieben:
Mo 5. Dez 2022, 20:03
Besser?
Ja
theo hat geschrieben:
Mo 5. Dez 2022, 20:03
Habe noch den Close Button "gethemed".
Kannst du da bei Gelegenheit mal mit High DPI drauf schauen?
Der neue Button wird nicht skaliert. Vergleiche Screenshots searchpanel_96ppi und _192ppi - der Button is gleich groß (sollte bei 192 ppi um 50% größer sein). Hier wird alles zur Laufzeit erzeugt, und da muss man mit der Skalierung nachhelfen, indem man alle Längen-Angaben selbst umskaliert. Die ThemeServices geben manchmal mit GetDetailsSize die unskalierte Größe (bei 96ppi) zurück. Ich würde die mit MulDiv auf die aktuelle Auflösung hochrechnen:

Code: Alles auswählen

constructor TThemedControl.Create(AOwner: TComponent; Detail: TThemedWindow);
var Size:TSize;
  ppi: Integer;
begin
  inherited Create(AOwner);
  fDetails := ThemeServices.GetElementDetails(Detail);
  Size:=ThemeServices.GetDetailSize(fDetails);
  ppi:=Screen.PixelsPerInch;
  Width:=MulDiv(Size.cx, ppi, 96);
  Height:=MulDiv(Size.cy, ppi, 96);
end;
Das ist im 2. 196ppi-Screenshot eingebaut. Wie du siehst, wird nun das Quadrat größer, aber das Kreuzchen bleibt unverändert. Nicht alle Theme-Elemente skalieren sich, eine Checkbox macht's, das kleine Kreuz (twSmallCloseButtonNormal) offenbar nicht.

Daher weiß ich nicht, ob die Verwendung der ThemeServices hier eine gute Idee ist.
Dateianhänge
searchpanel_96ppi.png
searchpanel_96ppi.png (2.64 KiB) 851 mal betrachtet
searchpanel_192ppi.png
searchpanel_192ppi.png (4.42 KiB) 851 mal betrachtet
searchpanel_192ppi_2.png
searchpanel_192ppi_2.png (4.33 KiB) 851 mal betrachtet

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

Re: IDE Search Panel

Beitrag von theo »

wp_xyz hat geschrieben:
Mo 5. Dez 2022, 23:34
Daher weiß ich nicht, ob die Verwendung der ThemeServices hier eine gute Idee ist.
Der Hintergrund ist: ich möchte nach Möglichkeit die gleichen Close-Buttons wie die gedockte IDE hat.
Diese sind nun mal gethemed.
Bei mir sehen die jetzt alle gleich aus.
Ich bin mir nicht sicher, ob man die skalieren muss. Mich stört's nicht, wenn die so klein bleiben.

Aber danke für die Tipps. Ich schaue dann noch beim Anchordocking rein, wie das dort gemacht ist.

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1432
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: IDE Search Panel

Beitrag von fliegermichl »

Klasse! Ctrl+P funktioniert super und es crasht auch nicht mehr.
++1

Antworten