Cleanup: gitignore Rhino-Testdateien, Layout-Skip-Versuch zurueck (WebView-Bug)

This commit is contained in:
2026-05-27 20:56:22 +02:00
parent f8d1cfe3fe
commit d9589e99f5
2 changed files with 37 additions and 0 deletions
+6
View File
@@ -26,6 +26,12 @@ __pycache__/
*.pyc *.pyc
*.pyo *.pyo
# Rhino-Testdateien (rhino/-Ordner)
rhino/*.3dm
rhino/*.3dm.thumb.png
rhino/*.3dmbak
rhino/dossier.project.json
# Claude Code # Claude Code
.claude/ .claude/
+31
View File
@@ -763,6 +763,32 @@ def _layout_name_to_guid(name):
_LAYOUT_MARKER_PATH = os.path.expanduser( _LAYOUT_MARKER_PATH = os.path.expanduser(
"~/Library/Application Support/ch.gabrielevarano.Dossier/layout_marker.json") "~/Library/Application Support/ch.gabrielevarano.Dossier/layout_marker.json")
_RHINO_SETTINGS_XML = os.path.expanduser(
"~/Library/Application Support/McNeel/Rhinoceros/8.0/settings/"
"settings-Scheme__Default.xml")
def _rhino_last_restored_layout_guid():
"""Liest aus Rhinos settings-Scheme__Default.xml die zuletzt restorete
Layout-GUID. Rhino schreibt diesen Eintrag nach jedem erfolgreichen
Restore (sowohl beim App-Start als auch nach `_-WindowLayout`-Command).
Wenn die GUID == unser Ziel ist, hat Rhino's Auto-Restore das Layout
schon beim Cold-Start angewendet → wir koennen den teuren Command-
Apply skippen."""
try:
if not os.path.isfile(_RHINO_SETTINGS_XML): return None
with open(_RHINO_SETTINGS_XML, "rb") as f:
txt = f.read().decode("utf-8", errors="replace")
# <entry key="LastRestoredWindowLayout">b6b68c03-...</entry>
import re
m = re.search(
r'<entry\s+key="LastRestoredWindowLayout">\s*([0-9a-fA-F\-]+)\s*</entry>',
txt)
if m: return m.group(1).strip().lower()
except Exception as ex:
print("[OBERLEISTE] last-restored read:", ex)
return None
def _is_layout_recently_applied(name, max_age_sec=600): def _is_layout_recently_applied(name, max_age_sec=600):
"""True wenn das gegebene Layout vor < max_age_sec Sekunden via DOSSIER """True wenn das gegebene Layout vor < max_age_sec Sekunden via DOSSIER
@@ -812,6 +838,11 @@ def _apply_window_layout(name):
if not name: if not name:
print("[OBERLEISTE] apply_window_layout: leerer Name") print("[OBERLEISTE] apply_window_layout: leerer Name")
return False return False
# KEIN Content-Skip mehr: Mac Rhino's Auto-Restore aus LastRestoredWindow
# Layout dockt Eto-WebView-Panels NICHT korrekt — sie spawnen floating in
# der Mitte statt an die persistierte Dock-Position. Nur der explizite
# `_-WindowLayout`-RunScript triggert den vollen Re-Dock-Cycle der auch
# WebViews korrekt platziert. Die 3s sind der Preis fuer korrektes UI.
import time as _t_wl import time as _t_wl
_t_wl_start = _t_wl.time() _t_wl_start = _t_wl.time()
_ret = False _ret = False