Make preferences non-modal

This commit is contained in:
Davide De Rosa 2021-04-10 15:07:29 +02:00
parent 830b8d8a60
commit 83e3138ddc
7 changed files with 39 additions and 19 deletions

View File

@ -10,7 +10,7 @@
<scene sceneID="5Pm-Xi-FR8"> <scene sceneID="5Pm-Xi-FR8">
<objects> <objects>
<windowController storyboardIdentifier="OrganizerWindowController" id="qvz-MB-haa" sceneMemberID="viewController"> <windowController storyboardIdentifier="OrganizerWindowController" id="qvz-MB-haa" sceneMemberID="viewController">
<window key="window" title="Passepartout" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" frameAutosaveName="" animationBehavior="default" id="iHm-B8-M67"> <window key="window" title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" frameAutosaveName="" animationBehavior="default" id="iHm-B8-M67">
<windowStyleMask key="styleMask" titled="YES" closable="YES" resizable="YES"/> <windowStyleMask key="styleMask" titled="YES" closable="YES" resizable="YES"/>
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/> <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="196" y="240" width="480" height="270"/> <rect key="contentRect" x="196" y="240" width="480" height="270"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.Storyboard.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" initialViewController="zUN-WZ-Zgv"> <document type="com.apple.InterfaceBuilder3.Cocoa.Storyboard.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" initialViewController="SOo-ww-yjs">
<dependencies> <dependencies>
<deployment identifier="macosx"/> <deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/> <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
@ -383,6 +383,31 @@
</objects> </objects>
<point key="canvasLocation" x="473" y="375"/> <point key="canvasLocation" x="473" y="375"/>
</scene> </scene>
<!--Window Controller-->
<scene sceneID="fan-9l-p2s">
<objects>
<windowController storyboardIdentifier="PreferencesWindowController" showSeguePresentationStyle="single" id="SOo-ww-yjs" sceneMemberID="viewController">
<window key="window" title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" frameAutosaveName="" animationBehavior="default" id="9hQ-OD-a0i">
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="196" y="239" width="480" height="270"/>
<rect key="screenRect" x="0.0" y="0.0" width="1440" height="875"/>
<view key="contentView" id="fer-NB-U3E">
<rect key="frame" x="0.0" y="0.0" width="480" height="270"/>
<autoresizingMask key="autoresizingMask"/>
</view>
<connections>
<outlet property="delegate" destination="SOo-ww-yjs" id="t5d-Qc-Bh8"/>
</connections>
</window>
<connections>
<segue destination="zUN-WZ-Zgv" kind="relationship" relationship="window.shadowedContentViewController" id="0hy-xW-q29"/>
</connections>
</windowController>
<customObject id="Aae-SU-7xE" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-915" y="609"/>
</scene>
<!--Preferences View Controller--> <!--Preferences View Controller-->
<scene sceneID="ioR-N8-zYC"> <scene sceneID="ioR-N8-zYC">
<objects> <objects>

View File

@ -22,7 +22,9 @@ internal enum StoryboardScene {
internal enum Preferences: StoryboardType { internal enum Preferences: StoryboardType {
internal static let storyboardName = "Preferences" internal static let storyboardName = "Preferences"
internal static let initialScene = InitialSceneType<PreferencesViewController>(storyboard: Preferences.self) internal static let initialScene = InitialSceneType<AppKit.NSWindowController>(storyboard: Preferences.self)
internal static let preferencesWindowController = SceneType<AppKit.NSWindowController>(storyboard: Preferences.self, identifier: "PreferencesWindowController")
} }
internal enum Purchase: StoryboardType { internal enum Purchase: StoryboardType {
internal static let storyboardName = "Purchase" internal static let storyboardName = "Purchase"

View File

@ -31,24 +31,22 @@ class WindowManager: NSObject {
private var organizer: NSWindowController? private var organizer: NSWindowController?
// private var preferences: NSWindowController? private var preferences: NSWindowController?
private override init() { private override init() {
} }
@discardableResult func showOrganizer() -> NSWindowController? { @discardableResult func showOrganizer() -> NSWindowController? {
organizer = presentWindowController(StoryboardScene.Main.organizerWindowController, existing: organizer) organizer = presentWindowController(StoryboardScene.Main.organizerWindowController, existing: organizer)
organizer?.window?.title = "Passepartout"
return organizer return organizer
} }
// @discardableResult func showPreferences() -> NSWindowController? { @discardableResult func showPreferences() -> NSWindowController? {
// preferences = presentWindowController( preferences = presentWindowController(StoryboardScene.Preferences.preferencesWindowController, existing: preferences)
// StoryboardScene.Preferences.initialScene.instantiate(), preferences?.window?.title = L10n.App.Preferences.title
// existing: preferences, return preferences
// title: L10n.App.Preferences.title }
// )
// return preferences
// }
func showAbout() { func showAbout() {
NSApp.orderFrontStandardAboutPanel(nil) NSApp.orderFrontStandardAboutPanel(nil)

View File

@ -27,8 +27,6 @@ import Cocoa
class MainMenu: NSObject { class MainMenu: NSObject {
@IBAction private func showPreferences(_ sender: Any?) { @IBAction private func showPreferences(_ sender: Any?) {
let organizer = WindowManager.shared.showOrganizer() WindowManager.shared.showPreferences()
let preferences = StoryboardScene.Preferences.initialScene.instantiate()
organizer?.contentViewController?.presentAsModalWindow(preferences)
} }
} }

View File

@ -395,9 +395,7 @@ class StatusMenu: NSObject {
} }
@objc private func showPreferences() { @objc private func showPreferences() {
let organizer = WindowManager.shared.showOrganizer() WindowManager.shared.showPreferences()
let preferences = StoryboardScene.Preferences.initialScene.instantiate()
organizer?.contentViewController?.presentAsModalWindow(preferences)
} }
@objc private func switchActiveProfile(_ sender: Any?) { @objc private func switchActiveProfile(_ sender: Any?) {

View File

@ -32,7 +32,6 @@ class PreferencesViewController: NSViewController {
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
title = L10n.App.Preferences.title
let labels = [ let labels = [
L10n.App.Preferences.Sections.General.header, L10n.App.Preferences.Sections.General.header,
L10n.Core.Service.Sections.Diagnostics.header L10n.Core.Service.Sections.Diagnostics.header