Repository navigation
Panels nach außen reichen: Liste, schwebend setzen, Fenster (für Longpath) - #72
Merged
Merged
Conversation
Betreiber 2026-11-04: "jedes panel vom contestprogramm sollte in longpath eigens hinzuzufuegen sein, das waere die beste version." Longpath bettet das Hauptfenster ein (README "Als Fenster in Longpath") und will jedes Panel EINZELN als eigenes Fenster holen -- auch ohne das Hauptfenster zu zeigen. MainWindow::panelEintraege() (dieselbe Tabelle wie Fenster > Panels, jetzt an einer Stelle), istPanelSchwebend(), setzePanelSchwebend() (holt ein Panel vorher aus dem Seitenbereich; ein nie gezeigtes Hauptfenster hat keine ausgelegte Flaeche, dann bekommt das Panel die Groesse des Entwurfs), panelFenster(). Der Weg ist derselbe wie im Menue "Als eigenes Fenster": Qt::Tool-Kind des Hauptfensters. test_einbettung: panelsLassenSichVonAussenAbloesen (Hauptfenster nie gezeigt, Panel kommt mit Groesse, aus dem Seitenbereich heraus, zurueck). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
oe5sos
added a commit
to oe5sos/Longpath
that referenced
this pull request
Nov 4, 2026
Betreiber 2026-11-04, mit dem Tools-Menue auf dem Bild: "am besten
waere, wenn hier alle auch vom logprogramm contestprogramm stehen" --
"jedes panel vom contestprogramm sollte in longpath eigens hinzuzufuegen
sein, das waere die beste version" -- "wir haben dann auf der einen
seite das eigene contest programm, wenn es probleme gibt und wenn ich
will, kann ich dies eigens mit longpath nutzen."
Beobachtet am Geraet: ist das Logbuch das aktive Fenster, zeigt die
Menueleiste nur "Apple" und "Longpath" -- weder Longpaths Menues noch
das Fenster-Menue des Contestprogramms ("Als eigenes Fenster"). Darum
liegt die Liste in Longpaths Tools-Menue.
Tools > Contest logbook panels: je Panel ein Haken "als eigenes
Fenster", dazu alle / alle zurueck; gefuellt beim Aufklappen. Das
Logbuch-Hauptfenster muss dafuer nicht aufgehen: ContestFenster::lade()
baut Controller, Datenbank und Fenster verborgen; zeigePanelAlsFenster()
holt das Panel (Qt::Tool-Kind des verborgenen Logbuchs, das am
Hauptfenster haengt) und stellt es gestaffelt neben das Hauptfenster.
Gegenseite: oe5sos/Contestprogramm#72 (panelEintraege,
setzePanelSchwebend, ...), Submodul darauf gepinnt.
Mitziehen, Schutzrahmen und Dock-Ablage zaehlen jetzt ueber die
Fensterkette (schwebtUnter): auch Fenster, die ueber das Logbuch am
Hauptfenster haengen, nicht nur direkte Kinder.
Pruefstand tst_contestfenster::einPanelOhneLogbuchFenster;
tst_oberflaeche_englisch gruen. Nicht live gesehen -- offen am Geraet,
ob macOS ein Werkzeugfenster mit verborgenem Elternfenster zeigt.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Zwei Betreiberwuensche vom 2026-11-04, mit den Panels als eigene Fenster in Longpath: "alle panels haben hier noch runde kanten, dies bitte auf eckig umstellen" -- PanelContainerWidget::setzeRahmenlosSchwebend(): ein schwebendes Panel wird Qt::Tool | FramelessWindowHint, der Panelrahmen bekommt Radius 0 (applyPanelFrameStyle mit Radius), die Kopfzeile den Rueckweg ↙ (PanelHeaderBar::setDockAffordanceEnabled; chromlose Panels wie die Karte einen Knopf neben dem Schloss), weil das ✕ des Systems wegfaellt. Zug und Anfasser klemmen ein schwebendes Panel an den Schirm, nicht mehr an das Elternfenster. Eigenstaendig (Fahne aus) bleibt der Systemrahmen; Longpath setzt die Fahne beim Laden. "das fenster rotoren muss sehr gross gezogen werden, um grad eigens zu sehen. bitte um loesungen, um fenster klein ziehen zu koennen" -- RotorRowWidget statt QHBoxLayout: Mindestbreite ist die EINES Rotors, nebeneinander wenn die Breite reicht, sonst untereinander. Und die Gradzahlen am Zifferblatt fallen unter r = 84 nicht mehr weg, sondern werden bis r = 54 eine Stufe kleiner gezeichnet. Pruefstaende: test_einbettung::rahmenlosSchwebendIstEckigMitRueckweg, test_rotorzeile (4 Faelle; alte Fassung: Mindestbreite = Summe, nie untereinander). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ittig Betreiber 2026-11-04, Rotoren als eigenes Fenster in Longpath: "die kaestchen fuer die gradanzahl bei rotoren koennen kleiner sein, so waere dann alles auch gemeinsam kleiner." Das Ablesefeld (Aktuell / Ziel / Entfernung) hatte eine Hoehe (46 px Wert + 14 px Beschriftung, fuer die 38-px-Schrift) und fiel unter 300 px Breite erst auf 28 px, dann ganz weg. Jetzt drei Stufen nach der Breite -- 38 / 28 / 16 px Wertschrift mit 46 / 34 / 22 px Zeilenhoehe -- und am Mindestmass des Zifferblatts ist das Feld DA, klein, statt weg. readoutStufeFontPx() rechnet aus width(), nicht aus readoutBlockRect() (das fragte textAreaHeight(), das die Hoehen fragt: ein Kreis). Und: "bei karte und verbindungen sollten die rotoren eher mittig sein, sonst sieht es eigenartig aus." Die Rotorscheiben in der Spalte der Karte (samt ROTOR n und "zurueck N°") stehen jetzt in der Spaltenmitte statt am linken Rand. test_rotorwidget: minimumSizeHintFitsTheThreeColumnReadoutBlock prueft die drei Stufen (klein < mittel < gross); readoutGivesWayBeforeTheDial rechnet seine Hoehen aus dem Block der Stufe statt aus festen Zahlen. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
oe5sos
added a commit
to oe5sos/Longpath
that referenced
this pull request
Nov 4, 2026
…fenster; jedes Contestprogramm-Panel einzeln (#386) * Logbuch-Fenster auf die Ebene der Panels Betreiber 2026-11-04: "wenn ich contestprogramm oeffne, soll das nach anklicken im vordergrund bleiben!" Das Logbuch (#381) war ein gewoehnliches, elternloses Fenster -- und das liegt auf macOS IMMER unter einem NSPanel derselben Anwendung, also unter Longpaths schwebenden Panels (Qt::Tool), egal wer zuletzt geklickt wurde. ContestFenster::oeffne(grund, elternFenster): mit Longpaths Hauptfenster als Eltern wird das Logbuch ein Qt::Tool -- die Ebene der Panels, dort gilt die Klickreihenfolge -- und bekommt WA_MacAlwaysShowToolWindow, damit es stehen bleibt, wenn Longpath nicht vorn ist. Die Dock-Ablage nimmt es mit; hinter die Connect-Maske soll es nicht. Prueffall mitElternfensterLiegtEsAufDerEbeneDerPanels (4/4 gruen); Vollbau mit main (#371, #379) gruen. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * Schwebende Fenster folgen dem Hauptfenster; Logbuch auf ihrer Ebene Betreiber 2026-11-04: "sobald ich das _ oder das + usw. links oben verwenden muss sich das ganze!!!! Fenster bewegen! auch die freischwebenden im verhältnis!" -- und: "wenn ich contestprogramm oeffne, soll das nach anklicken im vordergrund bleiben!" MainWindow::schwebendeMitziehen(): jedes schwebende Fenster (Aufzaehlung wie beim Schutzrahmen) wird von seiner Lage im Verhaeltnis zum alten Rahmen des Hauptfensters auf den neuen abgebildet -- ein Zug wird zum gleichen Versatz, eine Groessenaenderung ("+", Vollbild) haelt das Verhaeltnis; die Groesse bleibt dem Betreiber. Laeuft im 250-ms-Nachlauf des Schutzrahmens, vor dem Herausholen aus den Sperrstreifen. Eigene Bewegungen (Profil, Aufbau, Raster) ziehen nicht: eigeneBewegungLebt() neu in WindowPlacement. Falle: das Raster rueckt das Hauptfenster nach einer FREMDEN Bewegung um wenige Pixel nach, als eigene -- das ist der Nachhall, erkannt an "Nachlauf laeuft noch, Sprung < Rasterweite". Das Contest-Logbuch (vorheriger Commit) ist als Qt::Tool-Kind des Hauptfensters Teil dieser Aufzaehlung und zieht mit. Pruefstand tst_schwebende_folgen_dem_hauptfenster (Zug, Wachsen, eigene Bewegung); Gegenprobe mit stillgelegtem Mitziehen: Faelle 1 und 2 rot. Dafuer ein 1920x1200-Schirm fuer DIESEN Pruefstand (offscreen:configfile=tests/offscreen-grosser-schirm.json): das offscreen-Plugin hat 800x800, das Hauptfenster braucht 800x600. Blatt: docs/architecture/2026-11-04-schwebende-fenster-folgen-dem-hauptfenster.md Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * Mitziehen nur nach einer fremden Bewegung, nie nach dem Aufbau Geraetelog 2026-11-04 12:09:43, erster Start mit dem Mitziehen: "Hauptfenster QRect(0,48 1470x863) -> QRect(0,33 1470x863): 5 schwebende Fenster mitgezogen" -- Betreiber: "wieder irgendeine zusammensetzung der panels". Das Raster hatte das frisch maximierte Hauptfenster um 15 px nachgerueckt; der Sprung war klein und der Nachlauf lief, also galt er faelschlich als Nachhall einer fremden Bewegung. Beim Aufbau ist jede Bewegung eigen. Jetzt merkt sich der Nachlauf, ob ihn eine FREMDE Bewegung angestossen hat (m_fremdeBewegungAnhaengig); nur dann wird gezogen, und nur dann ist ein kleiner eigener Sprung danach der Nachhall des Rasters. Prueffall 3 faehrt den Versatz jetzt NEBEN dem Raster (-93,-41), damit das Raster nachrueckt -- genau dieser Weg. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * Jedes Panel des Contestprogramms einzeln als Fenster in Longpath Betreiber 2026-11-04, mit dem Tools-Menue auf dem Bild: "am besten waere, wenn hier alle auch vom logprogramm contestprogramm stehen" -- "jedes panel vom contestprogramm sollte in longpath eigens hinzuzufuegen sein, das waere die beste version" -- "wir haben dann auf der einen seite das eigene contest programm, wenn es probleme gibt und wenn ich will, kann ich dies eigens mit longpath nutzen." Beobachtet am Geraet: ist das Logbuch das aktive Fenster, zeigt die Menueleiste nur "Apple" und "Longpath" -- weder Longpaths Menues noch das Fenster-Menue des Contestprogramms ("Als eigenes Fenster"). Darum liegt die Liste in Longpaths Tools-Menue. Tools > Contest logbook panels: je Panel ein Haken "als eigenes Fenster", dazu alle / alle zurueck; gefuellt beim Aufklappen. Das Logbuch-Hauptfenster muss dafuer nicht aufgehen: ContestFenster::lade() baut Controller, Datenbank und Fenster verborgen; zeigePanelAlsFenster() holt das Panel (Qt::Tool-Kind des verborgenen Logbuchs, das am Hauptfenster haengt) und stellt es gestaffelt neben das Hauptfenster. Gegenseite: oe5sos/Contestprogramm#72 (panelEintraege, setzePanelSchwebend, ...), Submodul darauf gepinnt. Mitziehen, Schutzrahmen und Dock-Ablage zaehlen jetzt ueber die Fensterkette (schwebtUnter): auch Fenster, die ueber das Logbuch am Hauptfenster haengen, nicht nur direkte Kinder. Pruefstand tst_contestfenster::einPanelOhneLogbuchFenster; tst_oberflaeche_englisch gruen. Nicht live gesehen -- offen am Geraet, ob macOS ein Werkzeugfenster mit verborgenem Elternfenster zeigt. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * Contestprogramm-Panels rahmenlos und eckig; Submodul auf #72 (3261fd8) Betreiber 2026-11-04: "alle panels haben hier noch runde kanten, dies bitte auf eckig umstellen" -- ContestFenster::lade() setzt PanelContainerWidget::setzeRahmenlosSchwebend(true), wenn ein Elternfenster da ist: die Panels des Contestprogramms schweben dann wie Longpaths eigene Fenster (Qt::Tool | FramelessWindowHint, eckig, Rueckweg in der Kopfzeile). Dazu aus dem Submodul die Rotorzeile, die sich bis auf einen Rotor Breite ziehen laesst ("das fenster rotoren muss sehr gross gezogen werden, um grad eigens zu sehen"). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * Submodul auf Contestprogramm #72 (8f0ac07): Ablesekaestchen in Stufen, Kartenrotoren mittig Betreiber 2026-11-04: "die kaestchen fuer die gradanzahl bei rotoren koennen kleiner sein, so waere dann alles auch gemeinsam kleiner" und "bei karte und verbindungen sollten die rotoren eher mittig sein". Beides liegt im Contestprogramm; hier nur der Stand des Submoduls und der Nachtrag im Blatt. Bau mit diesen Quellen gruen, tst_contestfenster gruen. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * CI und Release holen die Submodule: sonst fehlt das Contestprogramm Gefunden am Geraet, 2026-11-04 13:57: der Updater holte 0.9.0 (von main, Release-Lauf #384), und darin fehlte Tools > Contest Logbook -- Betreiber: "hier ist nun nichts mehr zu finden". Die Release- und CI-Laeufe checkten ohne Submodule aus, LONGPATH_CONTESTPROGRAMM stand damit auf AUS, und das seit #381 gemergte Fenster kam in keine Fassung. Die Option "AUS, wenn das Submodul fehlt" war fuer lokale Baeume ohne Submodul gedacht, nicht fuer die Fassungen. Jeder actions/checkout in ci.yml und release.yml bekommt `submodules: recursive`. Damit bauen CI und Release das Contestprogramm mit (Qt Sql und Multimedia kommen aus dem aqt-Paket, der SQLite-Treiber liegt bei qtbase), und tst_contestfenster laeuft in der CI. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * Ein Haken ist ein Haken: Haekchen und Punkt im Hausstil sichtbar Betreiber 2026-11-04, am Update-Dialog: "man sieht nicht, ob das Haekchen an ist oder nicht. das sollte ueberall kontrolliert werden." Style::kCheckBoxStyle zeichnete "an" als etwas helleren Rand (#55555e statt #2c2c31) auf fast demselben schwarzen Grund; kRadioButtonStyle genauso. Auf einem dunklen Schirm nicht zu unterscheiden. Jetzt traegt "an" ein Haekchen (resources/icons/check.svg, Textfarbe) und der Rundknopf einen Punkt (radio-dot.svg); abgeschaltet dasselbe in der gedaempften Schrift (check-dim.svg, radio-dot-dim.svg). Die Mulde bleibt. Ueberall: der Stil haengt an der Anwendung (AppTheme.h) und an den Seiten, die ihn selbst setzen; die Stellen, die nur Breite/Hoehe des Indikators setzen (SpotHub, RX-Applet, ClientChain, Overlay-Menue), erben ihn. AddCustomRadioDialog fuellt "an" mit kAccent und war schon sichtbar. Pruefstand tst_haekchen_sichtbar: misst die Helligkeit im Indikator aus/an fuer Haekchen und Rundknopf (>= 25 bzw. 20 Stufen Unterschied). Gegenprobe mit der alten Fassung: beide Faelle rot. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * Windows-CI/-Release: zlib via vcpkg fuer das Contestprogramm Erster CI-Lauf mit Submodul (41836921911), Build (Windows x64), Configure: "Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR)" aus third_party/contestprogramm/CMakeLists.txt:83 -- das Contestprogramm braucht zlib fuer die gzip-Kacheln des SRTM-Gelaendes. Linux und macOS haben es im Werkzeugkasten, der Windows-Laeufer nicht. Derselbe Weg wie in der eigenen CI des Contestprogramms: vcpkg install zlib:x64-windows-static-md (statisch, dynamische CRT wie MSVCs /MD), dann -DZLIB_ROOT auf den vcpkg-Ordner. Nur ZLIB_ROOT, nicht die vcpkg-Toolchain: die wuerde jedes andere find_package in Longpath mit umlenken. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * Windows-CI baut mit MinGW: zlib aus der Quelle statt vcpkg Zweiter Lauf (41838372903): "Could NOT find ZLIB (missing: ZLIB_LIBRARY) (found version 1.3.2)" -- die Kopfdatei aus vcpkg war da, die Bibliothek nicht. ci.yml baut Longpath mit MinGW (Qt win64_mingw, tools_mingw1310), und das vcpkg-Archiv ist ein MSVC-zlib.lib. Jetzt holt der CI-Lauf zlib 1.3.1 aus der Quelle (madler/zlib v1.3.1), baut es mit demselben MinGW und bindet es statisch ein (ZLIB_USE_STATIC_LIBS=ON: libzlibstatic.a, kein zlib1.dll beizulegen). release.yml bleibt bei vcpkg: der Release-Lauf baut mit MSVC. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * Submodul auf Contestprogramm main nach #72 Panels nach aussen, rahmenlos und eckig, Rotorzeile, Ablesekaestchen in Stufen, Kartenrotoren mittig -- jetzt als Squash-Commit auf main, nicht mehr der Zweig (der ist geloescht). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Betreiber 2026-11-04: „jedes panel vom contestprogramm sollte in longpath eigens hinzuzufügen sein, das wäre die beste version."
Longpath bettet das Hauptfenster ein (README „Als Fenster in Longpath") und will jedes Panel EINZELN als eigenes Fenster holen, auch ohne das Hauptfenster zu zeigen. Dafür reicht
MainWindownach außen:panelEintraege()— dieselbe Tabelle wie Fenster › Panels, jetzt an EINER Stelle (das Menü liest sie von dort).istPanelSchwebend(id),setzePanelSchwebend(id, bool)— derselbe Weg wie „Als eigenes Fenster" (Qt::Tool-Kind des Hauptfensters); ein Panel im Seitenbereich wird vorher herausgeholt; ein nie gezeigtes Hauptfenster hat keine ausgelegte Fläche, dann bekommt das Panel die Größe des Entwurfs (mindestens 320×240).panelFenster(id).Eigenständig ändert sich an der Bedienung nichts. Die Longpath-Seite (Tools › Contest logbook panels) liegt in oe5sos/Longpath#386 als Folge-Commit.
Belege
test_einbettung::panelsLassenSichVonAussenAbloesen: Hauptfenster nie gezeigt, Panel kommt als Qt::Tool-Fenster mit Größe, aus dem Seitenbereich heraus, zurück.test_jedes_panel_ausblendbargrün.Nachtrag (f432e0a): rahmenlos und eckig; Rotorzeile untereinander
Zwei weitere Wünsche, mit den Panels als eigene Fenster in Longpath:
PanelContainerWidget::setzeRahmenlosSchwebend(): schwebend =Qt::Tool | FramelessWindowHint, Panelrahmen mit Radius 0, Rückweg ↙ in der Kopfzeile (PanelHeaderBar::setDockAffordanceEnabled; chromlose Panels wie die Karte bekommen einen Knopf neben dem Schloss), weil das ✕ des Systems wegfällt. Zug und Anfasser klemmen ein schwebendes Panel an den Schirm statt ans Elternfenster. Eigenständig bleibt der Systemrahmen (Fahne aus).RotorRowWidgetstatt QHBoxLayout: Mindestbreite ist die EINES Rotors, nebeneinander wenn die Breite reicht, sonst untereinander; die Gradzahlen am Zifferblatt fallen unter r = 84 nicht mehr weg, sondern werden bis r = 54 eine Stufe kleiner gezeichnet.test_einbettung::rahmenlosSchwebendIstEckigMitRueckweg,test_rotorzeile(4 Fälle). Gegenprobe gefahren (alte Fassung nachgestellt: Mindestbreite = Summe, nie untereinander): 3 von 4 Fällen rot, mit der Behebung 4/4 grün.Nachtrag 2: Ablesekästchen in drei Stufen; Rotorscheiben der Karte mittig
test_rotorwidgetprüft klein < mittel < groß und rechnet die Höhen des „gibt nach"-Falls aus der Stufe.🤖 Generated with Claude Code