diff --git a/Neon Vision Editor.xcodeproj/project.pbxproj b/Neon Vision Editor.xcodeproj/project.pbxproj index 7d46558..3b064bc 100644 --- a/Neon Vision Editor.xcodeproj/project.pbxproj +++ b/Neon Vision Editor.xcodeproj/project.pbxproj @@ -361,7 +361,7 @@ CODE_SIGNING_ALLOWED = YES; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 333; + CURRENT_PROJECT_VERSION = 334; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = CS727NF72U; ENABLE_APP_SANDBOX = YES; @@ -442,7 +442,7 @@ CODE_SIGNING_ALLOWED = YES; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 333; + CURRENT_PROJECT_VERSION = 334; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = CS727NF72U; ENABLE_APP_SANDBOX = YES; diff --git a/Neon Vision Editor/App/NeonVisionEditorApp.swift b/Neon Vision Editor/App/NeonVisionEditorApp.swift index ff6bde5..fc00ba2 100644 --- a/Neon Vision Editor/App/NeonVisionEditorApp.swift +++ b/Neon Vision Editor/App/NeonVisionEditorApp.swift @@ -366,7 +366,7 @@ struct NeonVisionEditorApp: App { Button("Settings…") { showSettingsWindow() } - .keyboardShortcut(",", modifiers: .command) + .keyboardShortcut("+", modifiers: .command) } CommandGroup(replacing: .newItem) { @@ -497,8 +497,10 @@ struct NeonVisionEditorApp: App { Divider() - Button("Show Welcome Tour") { + Button { postWindowCommand(.showWelcomeTourRequested) + } label: { + Label("Show Welcome Tour", systemImage: "sparkles.rectangle.stack") } } @@ -635,11 +637,13 @@ struct NeonVisionEditorApp: App { private func showSettingsWindow() { #if os(macOS) NSApp.activate(ignoringOtherApps: true) - if !NSApp.sendAction(Selector(("showSettingsWindow:")), to: nil, from: nil) { - if !NSApp.sendAction(Selector(("showPreferencesWindow:")), to: nil, from: nil) { - postWindowCommand(.showSettingsRequested) - } + let handledBySystemSettings = NSApp.sendAction(Selector(("showSettingsWindow:")), to: nil, from: nil) + || NSApp.sendAction(Selector(("showPreferencesWindow:")), to: nil, from: nil) + if !handledBySystemSettings { + postWindowCommand(.showSettingsRequested) + return } + postWindowCommand(.showSettingsRequested) #endif } @@ -648,17 +652,12 @@ struct NeonVisionEditorApp: App { guard !settingsShortcutMonitorInstalled else { return } settingsShortcutMonitorInstalled = true settingsShortcutMonitorToken = NSEvent.addLocalMonitorForEvents(matching: .keyDown) { event in - guard event.modifierFlags.intersection(.deviceIndependentFlagsMask).contains(.command) else { + let flags = event.modifierFlags.intersection(.deviceIndependentFlagsMask) + guard flags.contains(.command) else { return event } let chars = event.characters ?? "" - let charsIgnoringModifiers = event.charactersIgnoringModifiers ?? "" - if chars == "+" - || chars == "=" - || chars == "," - || charsIgnoringModifiers == "+" - || charsIgnoringModifiers == "=" - || charsIgnoringModifiers == "," { + if chars == "+" { showSettingsWindow() return nil } diff --git a/Neon Vision Editor/UI/ContentView+Toolbar.swift b/Neon Vision Editor/UI/ContentView+Toolbar.swift index 39e4766..0581241 100644 --- a/Neon Vision Editor/UI/ContentView+Toolbar.swift +++ b/Neon Vision Editor/UI/ContentView+Toolbar.swift @@ -207,8 +207,8 @@ extension ContentView { Button(action: { showSettingsSheet = true }) { Image(systemName: "gearshape") } - .help("Settings (Cmd+,)") - .keyboardShortcut(",", modifiers: .command) + .help("Settings (Cmd+)") + .keyboardShortcut("+", modifiers: .command) } @ViewBuilder diff --git a/Neon Vision Editor/de.lproj/Localizable.strings b/Neon Vision Editor/de.lproj/Localizable.strings index dbea620..4189037 100644 --- a/Neon Vision Editor/de.lproj/Localizable.strings +++ b/Neon Vision Editor/de.lproj/Localizable.strings @@ -157,3 +157,77 @@ "The application does not automatically transmit full project folders, unrelated files, entire file system contents, contact data, location data, or device-specific identifiers." = "Die Anwendung überträgt nicht automatisch ganze Projektordner, nicht zusammenhängende Dateien, vollständige Dateisysteminhalte, Kontaktdaten, Standortdaten oder gerätespezifische Kennungen."; "Authentication credentials (API keys) for external AI providers are stored securely in the system keychain and are transmitted only to the user-selected provider for the purpose of completing the AI request." = "Authentifizierungsdaten (API-Schlüssel) für externe KI-Anbieter werden sicher im System-Schlüsselbund gespeichert und nur an den vom Benutzer gewählten Anbieter zur Bearbeitung der KI-Anfrage übertragen."; "All external communication is performed over encrypted HTTPS connections. If AI completion is disabled, the application performs no external AI-related network requests." = "Sämtliche externe Kommunikation erfolgt über verschlüsselte HTTPS-Verbindungen. Wenn KI-Vervollständigung deaktiviert ist, führt die Anwendung keine externen KI-bezogenen Netzwerkanfragen aus."; + +"Welcome Tour" = "Willkommens-Tour"; +"Show Welcome Tour" = "Willkommens-Tour anzeigen"; +"Settings…" = "Einstellungen…"; +"Check for Updates…" = "Auf Updates prüfen…"; +"New Window" = "Neues Fenster"; +"New Tab" = "Neuer Tab"; +"Open File..." = "Datei öffnen..."; +"Save As..." = "Sichern unter..."; +"Rename" = "Umbenennen"; +"Close Tab" = "Tab schließen"; +"API Settings…" = "API-Einstellungen…"; +"Toggle Sidebar" = "Seitenleiste ein-/ausblenden"; +"Toggle Project Structure Sidebar" = "Projektstruktur-Seitenleiste ein-/ausblenden"; +"Brain Dump Mode" = "Brain-Dump-Modus"; +"Toggle Translucent Window Background" = "Transparenten Fensterhintergrund ein-/ausblenden"; +"Quick Open…" = "Schnell öffnen…"; +"Toggle Vim Mode" = "Vim-Modus ein-/ausblenden"; +"Tools" = "Werkzeuge"; +"Suggest Code" = "Code vorschlagen"; +"Use Apple Intelligence" = "Apple Intelligence verwenden"; +"Diag" = "Diagnose"; +"Inspect Whitespace Scalars at Caret" = "Whitespace-Scalars an der Cursorposition prüfen"; +"Run AI Check" = "KI-Prüfung ausführen"; +"Undo" = "Rückgängig"; +"Redo" = "Wiederholen"; +"Settings (Cmd+)" = "Einstellungen (Cmd+)"; +"Insert Template for Current Language" = "Vorlage für aktuelle Sprache einfügen"; +"Enable Wrap / Disable Wrap (Cmd+Opt+L)" = "Zeilenumbruch aktivieren/deaktivieren (Cmd+Opt+L)"; +"Open File… (Cmd+O)" = "Datei öffnen… (Cmd+O)"; +"Undo (Cmd+Z)" = "Rückgängig (Cmd+Z)"; +"Save File" = "Datei speichern"; +"Save File (Cmd+S)" = "Datei speichern (Cmd+S)"; +"Find & Replace (Cmd+F)" = "Suchen & Ersetzen (Cmd+F)"; +"Performance Mode" = "Performance-Modus"; +"Save As…" = "Sichern unter…"; +"Hide Keyboard" = "Tastatur ausblenden"; +"Blue Toolbar Icons" = "Blaue Toolbar-Symbole"; +"More Actions" = "Mehr Aktionen"; +"Insert Template" = "Vorlage einfügen"; +"Enable Wrap / Disable Wrap" = "Zeilenumbruch aktivieren/deaktivieren"; +"Settings" = "Einstellungen"; +"Markdown Preview" = "Markdown-Vorschau"; +"Toggle Markdown Preview" = "Markdown-Vorschau ein-/ausblenden"; +"Default" = "Standard"; +"Docs" = "Doks"; +"Article" = "Artikel"; +"Compact" = "Kompakt"; +"Preview Style" = "Vorschau-Stil"; +"Markdown Preview Template" = "Markdown-Vorlage für Vorschau"; +"Open" = "Öffnen"; +"Open File…" = "Datei öffnen…"; +"Clear Editor" = "Editor leeren"; +"Check for Updates" = "Auf Updates prüfen"; +"New Tab (Cmd+T)" = "Neuer Tab (Cmd+T)"; +"New Window (Cmd+N)" = "Neues Fenster (Cmd+N)"; +"Font -" = "Schrift -"; +"Decrease Font Size" = "Schriftgröße verringern"; +"Font +" = "Schrift +"; +"Increase Font Size" = "Schriftgröße erhöhen"; +"Clear" = "Leeren"; +"Template" = "Vorlage"; +"Toggle Sidebar (Cmd+Opt+S)" = "Seitenleiste ein-/ausblenden (Cmd+Opt+S)"; +"Sidebar" = "Seitenleiste"; +"Project" = "Projekt"; +"Brackets" = "Klammern"; +"Code Completion" = "Code-Vervollständigung"; +"Keyboard Snippet Bar" = "Tastatur-Snippet-Leiste"; +"Hide Bracket Helper Bar" = "Klammer-Hilfeleiste ausblenden"; +"Show Bracket Helper Bar" = "Klammer-Hilfeleiste anzeigen"; +"Bracket Helper Bar" = "Klammer-Hilfeleiste"; +"Brain Dump" = "Brain Dump"; +"Open Folder…" = "Ordner öffnen…"; +"Refresh Folder Tree" = "Ordnerbaum aktualisieren";