From ea0b4076b30e140974bd55be5de3aa49ad4c352b Mon Sep 17 00:00:00 2001 From: Luke Date: Fri, 18 Mar 2022 17:36:48 +0100 Subject: [PATCH 1/3] Added global settings for color/monochrome style on file icons --- CodeEdit.xcodeproj/project.pbxproj | 8 ++++---- CodeEdit/Breadcrumbs/BreadcrumbsComponent.swift | 4 +++- CodeEdit/Settings/GeneralSettingsView.swift | 8 ++++++++ CodeEdit/Settings/Models/FileIconStyle.swift | 16 ++++++++++++++++ CodeEdit/SideBar/SideBarItem.swift | 4 +++- 5 files changed, 34 insertions(+), 6 deletions(-) create mode 100644 CodeEdit/Settings/Models/FileIconStyle.swift diff --git a/CodeEdit.xcodeproj/project.pbxproj b/CodeEdit.xcodeproj/project.pbxproj index 50fe3f958a..96fdfe06dc 100644 --- a/CodeEdit.xcodeproj/project.pbxproj +++ b/CodeEdit.xcodeproj/project.pbxproj @@ -13,8 +13,6 @@ 04540D5B27DD08C300E91B77 /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F2BF0E27DBB28E0024EAB1 /* SettingsView.swift */; }; 04540D5C27DD08C300E91B77 /* GeneralSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F2BF1127DBB3C10024EAB1 /* GeneralSettingsView.swift */; }; 04540D5E27DD08C300E91B77 /* WorkspaceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B658FB3127DA9E0F00EA4DBD /* WorkspaceView.swift */; }; - 04540D5F27DD08C300E91B77 /* EditorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 043DF9C127DD045800CA0FC3 /* EditorView.swift */; }; - 04540D6127DD08C300E91B77 /* CodeFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 348313FB27DC8C070016D42C /* CodeFile.swift */; }; 04660F6427E3ACAF00477777 /* Appearances.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04660F6327E3ACAF00477777 /* Appearances.swift */; }; 04660F6627E3ACEF00477777 /* ReopenBehavior.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04660F6527E3ACEF00477777 /* ReopenBehavior.swift */; }; 286620A527E4AB6900E18C2B /* BreadcrumbsComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 286620A427E4AB6900E18C2B /* BreadcrumbsComponent.swift */; }; @@ -23,6 +21,7 @@ 287776E927E34BC700D46668 /* TabBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 287776E827E34BC700D46668 /* TabBar.swift */; }; 287776ED27E350D800D46668 /* SideBarItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 287776EC27E350D800D46668 /* SideBarItem.swift */; }; 287776EF27E3515300D46668 /* TabBarItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 287776EE27E3515300D46668 /* TabBarItem.swift */; }; + 289978ED27E4E97E00BB0357 /* FileIconStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 289978EC27E4E97E00BB0357 /* FileIconStyle.swift */; }; 28B0A19827E385C300B73177 /* SideBarToolbarTop.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28B0A19727E385C300B73177 /* SideBarToolbarTop.swift */; }; 28FFE1BF27E3A441001939DB /* SideBarToolbarBottom.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28FFE1BE27E3A441001939DB /* SideBarToolbarBottom.swift */; }; 2B7A583527E4BA0100D25D4E /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0468438427DC76E200F8E88E /* AppDelegate.swift */; }; @@ -69,6 +68,7 @@ 287776E827E34BC700D46668 /* TabBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabBar.swift; sourceTree = ""; }; 287776EC27E350D800D46668 /* SideBarItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SideBarItem.swift; sourceTree = ""; }; 287776EE27E3515300D46668 /* TabBarItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabBarItem.swift; sourceTree = ""; }; + 289978EC27E4E97E00BB0357 /* FileIconStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileIconStyle.swift; sourceTree = ""; }; 28B0A19727E385C300B73177 /* SideBarToolbarTop.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SideBarToolbarTop.swift; sourceTree = ""; }; 28FFE1BE27E3A441001939DB /* SideBarToolbarBottom.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SideBarToolbarBottom.swift; sourceTree = ""; }; 345F667427DF6C180069BD69 /* FileTabRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileTabRow.swift; sourceTree = ""; }; @@ -126,6 +126,7 @@ children = ( 04660F6327E3ACAF00477777 /* Appearances.swift */, 04660F6527E3ACEF00477777 /* ReopenBehavior.swift */, + 289978EC27E4E97E00BB0357 /* FileIconStyle.swift */, ); path = Models; sourceTree = ""; @@ -401,12 +402,11 @@ 287776EF27E3515300D46668 /* TabBarItem.swift in Sources */, 287776E727E3413200D46668 /* SideBar.swift in Sources */, 287776ED27E350D800D46668 /* SideBarItem.swift in Sources */, + 289978ED27E4E97E00BB0357 /* FileIconStyle.swift in Sources */, 04660F6627E3ACEF00477777 /* ReopenBehavior.swift in Sources */, 043C321627E3201F006AE443 /* WorkspaceDocument.swift in Sources */, 28B0A19827E385C300B73177 /* SideBarToolbarTop.swift in Sources */, 345F667527DF6C180069BD69 /* FileTabRow.swift in Sources */, - 043C321827E32246006AE443 /* CodeFileEditor.swift in Sources */, - 0439FEF527DD104500528317 /* WorkspaceEditorView.swift in Sources */, 28FFE1BF27E3A441001939DB /* SideBarToolbarBottom.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/CodeEdit/Breadcrumbs/BreadcrumbsComponent.swift b/CodeEdit/Breadcrumbs/BreadcrumbsComponent.swift index 8ca45b0b7f..23e2cc8971 100644 --- a/CodeEdit/Breadcrumbs/BreadcrumbsComponent.swift +++ b/CodeEdit/Breadcrumbs/BreadcrumbsComponent.swift @@ -8,6 +8,8 @@ import SwiftUI struct BreadcrumbsComponent: View { + + @AppStorage(FileIconStyle.storageKey) var iconStyle: FileIconStyle = .default private let title: String private let image: String @@ -25,7 +27,7 @@ struct BreadcrumbsComponent: View { .resizable() .aspectRatio(contentMode: .fit) .frame(width: 12) - .foregroundStyle(color) + .foregroundStyle(iconStyle == .color ? color : .secondary) Text(title) .foregroundStyle(.primary) .font(.system(size: 11)) diff --git a/CodeEdit/Settings/GeneralSettingsView.swift b/CodeEdit/Settings/GeneralSettingsView.swift index d761fd5edd..bf4bf7897b 100644 --- a/CodeEdit/Settings/GeneralSettingsView.swift +++ b/CodeEdit/Settings/GeneralSettingsView.swift @@ -12,6 +12,7 @@ import SwiftUI struct GeneralSettingsView: View { @AppStorage(Appearances.storageKey) var appearance: Appearances = Appearances.default @AppStorage(ReopenBehavior.storageKey) var reopenBehavior: ReopenBehavior = ReopenBehavior.default + @AppStorage(FileIconStyle.storageKey) var fileIconStyle: FileIconStyle = FileIconStyle.default var body: some View { Form { @@ -27,6 +28,13 @@ struct GeneralSettingsView: View { .onChange(of: appearance) { tag in tag.applyAppearance() } + + Picker("File Icon Style", selection: $fileIconStyle) { + Text("Color") + .tag(FileIconStyle.color) + Text("Monochrome") + .tag(FileIconStyle.monochrome) + } Picker("Reopen Behavior", selection: $reopenBehavior) { Text("Open Panel") diff --git a/CodeEdit/Settings/Models/FileIconStyle.swift b/CodeEdit/Settings/Models/FileIconStyle.swift new file mode 100644 index 0000000000..21964fb533 --- /dev/null +++ b/CodeEdit/Settings/Models/FileIconStyle.swift @@ -0,0 +1,16 @@ +// +// FileIconStyle.swift +// CodeEdit +// +// Created by Lukas Pistrol on 18.03.22. +// + +import Foundation + +enum FileIconStyle: String, CaseIterable, Hashable { + case color + case monochrome + + static let `default` = FileIconStyle.color + static let storageKey = "fileIconStyle" +} diff --git a/CodeEdit/SideBar/SideBarItem.swift b/CodeEdit/SideBar/SideBarItem.swift index 2d31e7c041..a18c871774 100644 --- a/CodeEdit/SideBar/SideBarItem.swift +++ b/CodeEdit/SideBar/SideBarItem.swift @@ -11,6 +11,8 @@ import CodeFile struct SideBarItem: View { + @AppStorage(FileIconStyle.storageKey) var iconStyle: FileIconStyle = .default + var item: WorkspaceClient.FileItem @ObservedObject var workspace: WorkspaceDocument var windowController: NSWindowController @@ -44,7 +46,7 @@ struct SideBarItem: View { .onAppear { workspace.openFile(item: item) } } label: { Label(item.url.lastPathComponent, systemImage: item.systemImage) - .accentColor(item.iconColor) + .accentColor(iconStyle == .color ? item.iconColor : .secondary) .font(.callout) } } From d306a0b8cc28d05415576e83c2d6ec732cebed65 Mon Sep 17 00:00:00 2001 From: Luke Date: Fri, 18 Mar 2022 17:36:48 +0100 Subject: [PATCH 2/3] Added global settings for color/monochrome style on file icons --- CodeEdit.xcodeproj/project.pbxproj | 8 ++++---- CodeEdit/Breadcrumbs/BreadcrumbsComponent.swift | 4 +++- CodeEdit/Settings/GeneralSettingsView.swift | 8 ++++++++ CodeEdit/Settings/Models/FileIconStyle.swift | 16 ++++++++++++++++ CodeEdit/SideBar/SideBarItem.swift | 4 +++- 5 files changed, 34 insertions(+), 6 deletions(-) create mode 100644 CodeEdit/Settings/Models/FileIconStyle.swift diff --git a/CodeEdit.xcodeproj/project.pbxproj b/CodeEdit.xcodeproj/project.pbxproj index 50fe3f958a..96fdfe06dc 100644 --- a/CodeEdit.xcodeproj/project.pbxproj +++ b/CodeEdit.xcodeproj/project.pbxproj @@ -13,8 +13,6 @@ 04540D5B27DD08C300E91B77 /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F2BF0E27DBB28E0024EAB1 /* SettingsView.swift */; }; 04540D5C27DD08C300E91B77 /* GeneralSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F2BF1127DBB3C10024EAB1 /* GeneralSettingsView.swift */; }; 04540D5E27DD08C300E91B77 /* WorkspaceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B658FB3127DA9E0F00EA4DBD /* WorkspaceView.swift */; }; - 04540D5F27DD08C300E91B77 /* EditorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 043DF9C127DD045800CA0FC3 /* EditorView.swift */; }; - 04540D6127DD08C300E91B77 /* CodeFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 348313FB27DC8C070016D42C /* CodeFile.swift */; }; 04660F6427E3ACAF00477777 /* Appearances.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04660F6327E3ACAF00477777 /* Appearances.swift */; }; 04660F6627E3ACEF00477777 /* ReopenBehavior.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04660F6527E3ACEF00477777 /* ReopenBehavior.swift */; }; 286620A527E4AB6900E18C2B /* BreadcrumbsComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 286620A427E4AB6900E18C2B /* BreadcrumbsComponent.swift */; }; @@ -23,6 +21,7 @@ 287776E927E34BC700D46668 /* TabBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 287776E827E34BC700D46668 /* TabBar.swift */; }; 287776ED27E350D800D46668 /* SideBarItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 287776EC27E350D800D46668 /* SideBarItem.swift */; }; 287776EF27E3515300D46668 /* TabBarItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 287776EE27E3515300D46668 /* TabBarItem.swift */; }; + 289978ED27E4E97E00BB0357 /* FileIconStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 289978EC27E4E97E00BB0357 /* FileIconStyle.swift */; }; 28B0A19827E385C300B73177 /* SideBarToolbarTop.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28B0A19727E385C300B73177 /* SideBarToolbarTop.swift */; }; 28FFE1BF27E3A441001939DB /* SideBarToolbarBottom.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28FFE1BE27E3A441001939DB /* SideBarToolbarBottom.swift */; }; 2B7A583527E4BA0100D25D4E /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0468438427DC76E200F8E88E /* AppDelegate.swift */; }; @@ -69,6 +68,7 @@ 287776E827E34BC700D46668 /* TabBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabBar.swift; sourceTree = ""; }; 287776EC27E350D800D46668 /* SideBarItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SideBarItem.swift; sourceTree = ""; }; 287776EE27E3515300D46668 /* TabBarItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabBarItem.swift; sourceTree = ""; }; + 289978EC27E4E97E00BB0357 /* FileIconStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileIconStyle.swift; sourceTree = ""; }; 28B0A19727E385C300B73177 /* SideBarToolbarTop.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SideBarToolbarTop.swift; sourceTree = ""; }; 28FFE1BE27E3A441001939DB /* SideBarToolbarBottom.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SideBarToolbarBottom.swift; sourceTree = ""; }; 345F667427DF6C180069BD69 /* FileTabRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileTabRow.swift; sourceTree = ""; }; @@ -126,6 +126,7 @@ children = ( 04660F6327E3ACAF00477777 /* Appearances.swift */, 04660F6527E3ACEF00477777 /* ReopenBehavior.swift */, + 289978EC27E4E97E00BB0357 /* FileIconStyle.swift */, ); path = Models; sourceTree = ""; @@ -401,12 +402,11 @@ 287776EF27E3515300D46668 /* TabBarItem.swift in Sources */, 287776E727E3413200D46668 /* SideBar.swift in Sources */, 287776ED27E350D800D46668 /* SideBarItem.swift in Sources */, + 289978ED27E4E97E00BB0357 /* FileIconStyle.swift in Sources */, 04660F6627E3ACEF00477777 /* ReopenBehavior.swift in Sources */, 043C321627E3201F006AE443 /* WorkspaceDocument.swift in Sources */, 28B0A19827E385C300B73177 /* SideBarToolbarTop.swift in Sources */, 345F667527DF6C180069BD69 /* FileTabRow.swift in Sources */, - 043C321827E32246006AE443 /* CodeFileEditor.swift in Sources */, - 0439FEF527DD104500528317 /* WorkspaceEditorView.swift in Sources */, 28FFE1BF27E3A441001939DB /* SideBarToolbarBottom.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/CodeEdit/Breadcrumbs/BreadcrumbsComponent.swift b/CodeEdit/Breadcrumbs/BreadcrumbsComponent.swift index 8ca45b0b7f..23e2cc8971 100644 --- a/CodeEdit/Breadcrumbs/BreadcrumbsComponent.swift +++ b/CodeEdit/Breadcrumbs/BreadcrumbsComponent.swift @@ -8,6 +8,8 @@ import SwiftUI struct BreadcrumbsComponent: View { + + @AppStorage(FileIconStyle.storageKey) var iconStyle: FileIconStyle = .default private let title: String private let image: String @@ -25,7 +27,7 @@ struct BreadcrumbsComponent: View { .resizable() .aspectRatio(contentMode: .fit) .frame(width: 12) - .foregroundStyle(color) + .foregroundStyle(iconStyle == .color ? color : .secondary) Text(title) .foregroundStyle(.primary) .font(.system(size: 11)) diff --git a/CodeEdit/Settings/GeneralSettingsView.swift b/CodeEdit/Settings/GeneralSettingsView.swift index d761fd5edd..bf4bf7897b 100644 --- a/CodeEdit/Settings/GeneralSettingsView.swift +++ b/CodeEdit/Settings/GeneralSettingsView.swift @@ -12,6 +12,7 @@ import SwiftUI struct GeneralSettingsView: View { @AppStorage(Appearances.storageKey) var appearance: Appearances = Appearances.default @AppStorage(ReopenBehavior.storageKey) var reopenBehavior: ReopenBehavior = ReopenBehavior.default + @AppStorage(FileIconStyle.storageKey) var fileIconStyle: FileIconStyle = FileIconStyle.default var body: some View { Form { @@ -27,6 +28,13 @@ struct GeneralSettingsView: View { .onChange(of: appearance) { tag in tag.applyAppearance() } + + Picker("File Icon Style", selection: $fileIconStyle) { + Text("Color") + .tag(FileIconStyle.color) + Text("Monochrome") + .tag(FileIconStyle.monochrome) + } Picker("Reopen Behavior", selection: $reopenBehavior) { Text("Open Panel") diff --git a/CodeEdit/Settings/Models/FileIconStyle.swift b/CodeEdit/Settings/Models/FileIconStyle.swift new file mode 100644 index 0000000000..21964fb533 --- /dev/null +++ b/CodeEdit/Settings/Models/FileIconStyle.swift @@ -0,0 +1,16 @@ +// +// FileIconStyle.swift +// CodeEdit +// +// Created by Lukas Pistrol on 18.03.22. +// + +import Foundation + +enum FileIconStyle: String, CaseIterable, Hashable { + case color + case monochrome + + static let `default` = FileIconStyle.color + static let storageKey = "fileIconStyle" +} diff --git a/CodeEdit/SideBar/SideBarItem.swift b/CodeEdit/SideBar/SideBarItem.swift index 2d31e7c041..a18c871774 100644 --- a/CodeEdit/SideBar/SideBarItem.swift +++ b/CodeEdit/SideBar/SideBarItem.swift @@ -11,6 +11,8 @@ import CodeFile struct SideBarItem: View { + @AppStorage(FileIconStyle.storageKey) var iconStyle: FileIconStyle = .default + var item: WorkspaceClient.FileItem @ObservedObject var workspace: WorkspaceDocument var windowController: NSWindowController @@ -44,7 +46,7 @@ struct SideBarItem: View { .onAppear { workspace.openFile(item: item) } } label: { Label(item.url.lastPathComponent, systemImage: item.systemImage) - .accentColor(item.iconColor) + .accentColor(iconStyle == .color ? item.iconColor : .secondary) .font(.callout) } } From 0eb74332f184c2861ae6bc9de2b6f8284fb606c1 Mon Sep 17 00:00:00 2001 From: Luke Date: Fri, 18 Mar 2022 18:40:07 +0100 Subject: [PATCH 3/3] Localized Settings panel --- .../Localization/en.lproj/Localizable.strings | 19 ++++++++++++++++++ CodeEdit/Settings/GeneralSettingsView.swift | 20 +++++++++---------- CodeEdit/Settings/SettingsView.swift | 2 +- 3 files changed, 30 insertions(+), 11 deletions(-) diff --git a/CodeEdit/Localization/en.lproj/Localizable.strings b/CodeEdit/Localization/en.lproj/Localizable.strings index dbb06ec700..94bbe51d20 100644 --- a/CodeEdit/Localization/en.lproj/Localizable.strings +++ b/CodeEdit/Localization/en.lproj/Localizable.strings @@ -1 +1,20 @@ "Hello, world!"="Hello, world!"; + +// Settings - General Tab +"General"="General"; + +// Settings - File Icon Style +"File Icon Style"="File Icon Style"; +"Color"="Color"; +"Monochrome"="Monochrome"; + +// Settings - Appearance +"Appearance"="Appearance"; +"System"="System"; +"Light"="Light"; +"Dark"="Dark"; + +// Settings Reopen Behavior +"Reopen Behavior"="Reopen Behavior"; +"Open Panel"="Open Panel"; +"New Document"="New Document"; diff --git a/CodeEdit/Settings/GeneralSettingsView.swift b/CodeEdit/Settings/GeneralSettingsView.swift index bf4bf7897b..edcca35083 100644 --- a/CodeEdit/Settings/GeneralSettingsView.swift +++ b/CodeEdit/Settings/GeneralSettingsView.swift @@ -16,30 +16,30 @@ struct GeneralSettingsView: View { var body: some View { Form { - Picker("Appearance", selection: $appearance) { - Text("System") + Picker("Appearance".localized(), selection: $appearance) { + Text("System".localized()) .tag(Appearances.system) Divider() - Text("Light") + Text("Light".localized()) .tag(Appearances.light) - Text("Dark") + Text("Dark".localized()) .tag(Appearances.dark) } .onChange(of: appearance) { tag in tag.applyAppearance() } - Picker("File Icon Style", selection: $fileIconStyle) { - Text("Color") + Picker("File Icon Style".localized(), selection: $fileIconStyle) { + Text("Color".localized()) .tag(FileIconStyle.color) - Text("Monochrome") + Text("Monochrome".localized()) .tag(FileIconStyle.monochrome) } - Picker("Reopen Behavior", selection: $reopenBehavior) { - Text("Open Panel") + Picker("Reopen Behavior".localized(), selection: $reopenBehavior) { + Text("Open Panel".localized()) .tag(ReopenBehavior.openPanel) - Text("New Document") + Text("New Document".localized()) .tag(ReopenBehavior.newDocument) } } diff --git a/CodeEdit/Settings/SettingsView.swift b/CodeEdit/Settings/SettingsView.swift index 24bedd9c65..6549f479a9 100644 --- a/CodeEdit/Settings/SettingsView.swift +++ b/CodeEdit/Settings/SettingsView.swift @@ -12,7 +12,7 @@ struct SettingsView: View { TabView { GeneralSettingsView() .tabItem { - Label("General", systemImage: "gearshape") + Label("General".localized(), systemImage: "gearshape") } } .padding()