Convert to a document based application
This commit is contained in:
		
							parent
							
								
									891e004a31
								
							
						
					
					
						commit
						963b18aa5c
					
				| 
						 | 
					@ -27,13 +27,6 @@ public partial class AppDelegate : NSApplicationDelegate
 | 
				
			||||||
				as MainWindow);
 | 
									as MainWindow);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	partial void NewTabMenuItemClicked(AppKit.NSMenuItem sender)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		(NSApplication.SharedApplication.KeyWindow.WindowController
 | 
					 | 
				
			||||||
			as MainWindow)
 | 
					 | 
				
			||||||
			.CreateNewTab();
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	[Action("validateMenuItem:")]
 | 
						[Action("validateMenuItem:")]
 | 
				
			||||||
	public bool ValidateMenuItem(AppKit.NSMenuItem sender)
 | 
						public bool ValidateMenuItem(AppKit.NSMenuItem sender)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										3
									
								
								Cauldron.Macos/AppDelegate.designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										3
									
								
								Cauldron.Macos/AppDelegate.designer.cs
									
									
									
										generated
									
									
									
								
							| 
						 | 
					@ -11,9 +11,6 @@ namespace Cauldron.Macos
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	partial class AppDelegate
 | 
						partial class AppDelegate
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		[Action ("NewTabMenuItemClicked:")]
 | 
					 | 
				
			||||||
		partial void NewTabMenuItemClicked (AppKit.NSMenuItem sender);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		[Action ("RunScriptMenuItemClicked:")]
 | 
							[Action ("RunScriptMenuItemClicked:")]
 | 
				
			||||||
		partial void RunScriptMenuItemClicked (AppKit.NSMenuItem sender);
 | 
							partial void RunScriptMenuItemClicked (AppKit.NSMenuItem sender);
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										67
									
								
								Cauldron.Macos/CSharpScriptDocument.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								Cauldron.Macos/CSharpScriptDocument.cs
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,67 @@
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using AppKit;
 | 
				
			||||||
 | 
					using Foundation;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Cauldron.Macos;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Register("CSharpScriptDocument")]
 | 
				
			||||||
 | 
					public class CSharpScriptDocument : NSDocument
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						public NSString _scriptText = new("");
 | 
				
			||||||
 | 
						[Export("ScriptText")]
 | 
				
			||||||
 | 
						public NSString ScriptText
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							get => this._scriptText;
 | 
				
			||||||
 | 
							set
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								this._scriptText = value;
 | 
				
			||||||
 | 
								if (this.MainWindow != null)
 | 
				
			||||||
 | 
									this.MainWindow.ContentViewController.RepresentedObject = value;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								this.MainWindow?.SetDocumentEdited(this.IsDocumentEdited);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public NSString SavedScriptText { get; set; }
 | 
				
			||||||
 | 
						public MainWindow MainWindow { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public CSharpScriptDocument() : base() { }
 | 
				
			||||||
 | 
						public CSharpScriptDocument(ObjCRuntime.NativeHandle handle) : base(handle) { }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public override void MakeWindowControllers()
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							NSStoryboard storyboard = NSStoryboard.FromName("Main", null);
 | 
				
			||||||
 | 
							MainWindow windowController = (MainWindow)storyboard
 | 
				
			||||||
 | 
								.InstantiateControllerWithIdentifier("MainWindowController");
 | 
				
			||||||
 | 
							windowController.ContentViewController.RepresentedObject = this.ScriptText;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							windowController.ScriptEditorTextBox.Value = this.ScriptText;
 | 
				
			||||||
 | 
							windowController.ScriptEditorTextBox.Formatter.Reformat();
 | 
				
			||||||
 | 
							windowController.WindowTitleForDocumentDisplayName(this.DisplayName);
 | 
				
			||||||
 | 
							windowController.SynchronizeWindowTitleWithDocumentName();
 | 
				
			||||||
 | 
							windowController.Window.Subtitle = this.FileUrl?.FilePathUrl.Path ?? "";
 | 
				
			||||||
 | 
							windowController.SetDocumentEdited(this.IsDocumentEdited);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this.AddWindowController(windowController);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public override bool IsDocumentEdited { get => this.ScriptText != this.SavedScriptText; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public override NSData GetAsData(string typeName, out NSError outError)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							outError = null;
 | 
				
			||||||
 | 
							return NSData.FromString(this.ScriptText);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public override bool ReadFromData(NSData data, string typeName, out NSError outError)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							outError = null;
 | 
				
			||||||
 | 
							this.SavedScriptText = this.ScriptText = new NSString(data, NSStringEncoding.UTF8);
 | 
				
			||||||
 | 
							return true;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						[Export("autosavesInPlace")]
 | 
				
			||||||
 | 
						public static bool AutosaveInPlace()
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return false;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -2,30 +2,71 @@
 | 
				
			||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 | 
					<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 | 
				
			||||||
<plist version="1.0">
 | 
					<plist version="1.0">
 | 
				
			||||||
<dict>
 | 
					<dict>
 | 
				
			||||||
	<key>CFBundleName</key>
 | 
						<key>CFBundleDevelopmentRegion</key>
 | 
				
			||||||
	<string>Cauldron</string>
 | 
						<string>en</string>
 | 
				
			||||||
 | 
						<key>CFBundleDocumentTypes</key>
 | 
				
			||||||
 | 
						<array>
 | 
				
			||||||
 | 
							<dict>
 | 
				
			||||||
 | 
								<key>CFBundleTypeIconFile</key>
 | 
				
			||||||
 | 
								<string></string>
 | 
				
			||||||
 | 
								<key>CFBundleTypeName</key>
 | 
				
			||||||
 | 
								<string>C# Script</string>
 | 
				
			||||||
 | 
								<key>CFBundleTypeRole</key>
 | 
				
			||||||
 | 
								<string>Editor</string>
 | 
				
			||||||
 | 
								<key>LSHandlerRank</key>
 | 
				
			||||||
 | 
								<string>Default</string>
 | 
				
			||||||
 | 
								<key>LSItemContentTypes</key>
 | 
				
			||||||
 | 
								<array>
 | 
				
			||||||
 | 
									<string>com.neilbrommer.cauldron-CsScript</string>
 | 
				
			||||||
 | 
								</array>
 | 
				
			||||||
 | 
								<key>NSDocumentClass</key>
 | 
				
			||||||
 | 
								<string>CSharpScriptDocument</string>
 | 
				
			||||||
 | 
							</dict>
 | 
				
			||||||
 | 
						</array>
 | 
				
			||||||
	<key>CFBundleIdentifier</key>
 | 
						<key>CFBundleIdentifier</key>
 | 
				
			||||||
	<string>com.neilbrommer.cauldron</string>
 | 
						<string>com.neilbrommer.cauldron</string>
 | 
				
			||||||
 | 
						<key>CFBundleInfoDictionaryVersion</key>
 | 
				
			||||||
 | 
						<string>6.0</string>
 | 
				
			||||||
 | 
						<key>CFBundleName</key>
 | 
				
			||||||
 | 
						<string>Cauldron</string>
 | 
				
			||||||
 | 
						<key>CFBundlePackageType</key>
 | 
				
			||||||
 | 
						<string>APPL</string>
 | 
				
			||||||
	<key>CFBundleShortVersionString</key>
 | 
						<key>CFBundleShortVersionString</key>
 | 
				
			||||||
	<string>1.0</string>
 | 
						<string>1.0</string>
 | 
				
			||||||
 | 
						<key>CFBundleSignature</key>
 | 
				
			||||||
 | 
						<string>????</string>
 | 
				
			||||||
	<key>CFBundleVersion</key>
 | 
						<key>CFBundleVersion</key>
 | 
				
			||||||
	<string>1</string>
 | 
						<string>1</string>
 | 
				
			||||||
	<key>LSMinimumSystemVersion</key>
 | 
						<key>LSMinimumSystemVersion</key>
 | 
				
			||||||
	<string>13.0</string>
 | 
						<string>13.0</string>
 | 
				
			||||||
	<key>CFBundleDevelopmentRegion</key>
 | 
					 | 
				
			||||||
	<string>en</string>
 | 
					 | 
				
			||||||
	<key>CFBundleInfoDictionaryVersion</key>
 | 
					 | 
				
			||||||
	<string>6.0</string>
 | 
					 | 
				
			||||||
	<key>CFBundlePackageType</key>
 | 
					 | 
				
			||||||
	<string>APPL</string>
 | 
					 | 
				
			||||||
	<key>CFBundleSignature</key>
 | 
					 | 
				
			||||||
	<string>????</string>
 | 
					 | 
				
			||||||
	<key>NSHumanReadableCopyright</key>
 | 
						<key>NSHumanReadableCopyright</key>
 | 
				
			||||||
	<string>${AuthorCopyright:HtmlEncode}</string>
 | 
						<string>${AuthorCopyright:HtmlEncode}</string>
 | 
				
			||||||
	<key>NSPrincipalClass</key>
 | 
					 | 
				
			||||||
	<string>NSApplication</string>
 | 
					 | 
				
			||||||
	<key>NSMainStoryboardFile</key>
 | 
						<key>NSMainStoryboardFile</key>
 | 
				
			||||||
	<string>Main</string>
 | 
						<string>Main</string>
 | 
				
			||||||
 | 
						<key>NSPrincipalClass</key>
 | 
				
			||||||
 | 
						<string>NSApplication</string>
 | 
				
			||||||
 | 
						<key>UTExportedTypeDeclarations</key>
 | 
				
			||||||
 | 
						<array>
 | 
				
			||||||
 | 
							<dict>
 | 
				
			||||||
 | 
								<key>UTTypeConformsTo</key>
 | 
				
			||||||
 | 
								<array>
 | 
				
			||||||
 | 
									<string>public.script</string>
 | 
				
			||||||
 | 
								</array>
 | 
				
			||||||
 | 
								<key>UTTypeDescription</key>
 | 
				
			||||||
 | 
								<string>C# Script</string>
 | 
				
			||||||
 | 
								<key>UTTypeIcons</key>
 | 
				
			||||||
 | 
								<dict/>
 | 
				
			||||||
 | 
								<key>UTTypeIdentifier</key>
 | 
				
			||||||
 | 
								<string>com.neilbrommer.cauldron-CsScript</string>
 | 
				
			||||||
 | 
								<key>UTTypeTagSpecification</key>
 | 
				
			||||||
 | 
								<dict>
 | 
				
			||||||
 | 
									<key>public.filename-extension</key>
 | 
				
			||||||
 | 
									<array>
 | 
				
			||||||
 | 
										<string>csx</string>
 | 
				
			||||||
 | 
									</array>
 | 
				
			||||||
 | 
								</dict>
 | 
				
			||||||
 | 
							</dict>
 | 
				
			||||||
 | 
						</array>
 | 
				
			||||||
	<key>XSAppIconAssets</key>
 | 
						<key>XSAppIconAssets</key>
 | 
				
			||||||
	<string>Assets.xcassets/AppIcon.appiconset</string>
 | 
						<string>Assets.xcassets/AppIcon.appiconset</string>
 | 
				
			||||||
</dict>
 | 
					</dict>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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="21701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" initialViewController="JKR-xj-8kh">
 | 
					<document type="com.apple.InterfaceBuilder3.Cocoa.Storyboard.XIB" version="3.0" toolsVersion="21701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
 | 
				
			||||||
    <dependencies>
 | 
					    <dependencies>
 | 
				
			||||||
        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21701"/>
 | 
					        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21701"/>
 | 
				
			||||||
        <plugIn identifier="com.apple.WebKit2IBPlugin" version="21701"/>
 | 
					        <plugIn identifier="com.apple.WebKit2IBPlugin" version="21701"/>
 | 
				
			||||||
| 
						 | 
					@ -67,11 +67,6 @@
 | 
				
			||||||
                                                <action selector="newDocument:" target="Ady-hI-5gd" id="4Si-XN-c54"/>
 | 
					                                                <action selector="newDocument:" target="Ady-hI-5gd" id="4Si-XN-c54"/>
 | 
				
			||||||
                                            </connections>
 | 
					                                            </connections>
 | 
				
			||||||
                                        </menuItem>
 | 
					                                        </menuItem>
 | 
				
			||||||
                                        <menuItem title="New Tab" keyEquivalent="t" id="NId-gA-yuH">
 | 
					 | 
				
			||||||
                                            <connections>
 | 
					 | 
				
			||||||
                                                <action selector="NewTabMenuItemClicked:" target="Voe-Tx-rLC" id="Uat-zk-F3C"/>
 | 
					 | 
				
			||||||
                                            </connections>
 | 
					 | 
				
			||||||
                                        </menuItem>
 | 
					 | 
				
			||||||
                                        <menuItem title="Open…" keyEquivalent="o" id="IAo-SY-fd9">
 | 
					                                        <menuItem title="Open…" keyEquivalent="o" id="IAo-SY-fd9">
 | 
				
			||||||
                                            <connections>
 | 
					                                            <connections>
 | 
				
			||||||
                                                <action selector="openDocument:" target="Ady-hI-5gd" id="bVn-NM-KNZ"/>
 | 
					                                                <action selector="openDocument:" target="Ady-hI-5gd" id="bVn-NM-KNZ"/>
 | 
				
			||||||
| 
						 | 
					@ -419,7 +414,7 @@
 | 
				
			||||||
        <!--Window Controller-->
 | 
					        <!--Window Controller-->
 | 
				
			||||||
        <scene sceneID="ktg-sd-7li">
 | 
					        <scene sceneID="ktg-sd-7li">
 | 
				
			||||||
            <objects>
 | 
					            <objects>
 | 
				
			||||||
                <windowController id="JKR-xj-8kh" customClass="MainWindow" sceneMemberID="viewController">
 | 
					                <windowController storyboardIdentifier="MainWindowController" id="JKR-xj-8kh" customClass="MainWindow" sceneMemberID="viewController">
 | 
				
			||||||
                    <window key="window" title="Cauldron" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" frameAutosaveName="" animationBehavior="default" tabbingMode="preferred" toolbarStyle="unified" id="d7K-Gm-g9N">
 | 
					                    <window key="window" title="Cauldron" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" frameAutosaveName="" animationBehavior="default" tabbingMode="preferred" toolbarStyle="unified" id="d7K-Gm-g9N">
 | 
				
			||||||
                        <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES" fullSizeContentView="YES"/>
 | 
					                        <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES" fullSizeContentView="YES"/>
 | 
				
			||||||
                        <rect key="contentRect" x="211" y="264" width="749" height="445"/>
 | 
					                        <rect key="contentRect" x="211" y="264" width="749" height="445"/>
 | 
				
			||||||
| 
						 | 
					@ -440,11 +435,6 @@
 | 
				
			||||||
                                <toolbarItem implicitItemIdentifier="8EDDDA98-E8C5-404C-9832-8C97B1DAEF5C" label="Run Script" paletteLabel="Run Script" tag="-1" image="play.fill" catalog="system" bordered="YES" sizingBehavior="auto" autovalidates="NO" id="BH3-uw-K5S"/>
 | 
					                                <toolbarItem implicitItemIdentifier="8EDDDA98-E8C5-404C-9832-8C97B1DAEF5C" label="Run Script" paletteLabel="Run Script" tag="-1" image="play.fill" catalog="system" bordered="YES" sizingBehavior="auto" autovalidates="NO" id="BH3-uw-K5S"/>
 | 
				
			||||||
                                <toolbarItem implicitItemIdentifier="NSToolbarSpaceItem" id="ib2-fU-LMb"/>
 | 
					                                <toolbarItem implicitItemIdentifier="NSToolbarSpaceItem" id="ib2-fU-LMb"/>
 | 
				
			||||||
                                <toolbarItem implicitItemIdentifier="NSToolbarFlexibleSpaceItem" id="GqC-ht-JU0"/>
 | 
					                                <toolbarItem implicitItemIdentifier="NSToolbarFlexibleSpaceItem" id="GqC-ht-JU0"/>
 | 
				
			||||||
                                <toolbarItem implicitItemIdentifier="3C40411F-C0EC-43C1-B18B-82BA5661BF11" label="New Tab" paletteLabel="New Tab" tag="-1" image="plus" catalog="system" bordered="YES" sizingBehavior="auto" id="uBe-lp-9U2">
 | 
					 | 
				
			||||||
                                    <connections>
 | 
					 | 
				
			||||||
                                        <action selector="NewTabClicked:" target="JKR-xj-8kh" id="x1O-6U-svq"/>
 | 
					 | 
				
			||||||
                                    </connections>
 | 
					 | 
				
			||||||
                                </toolbarItem>
 | 
					 | 
				
			||||||
                                <toolbarItem implicitItemIdentifier="1FDD22AF-AF38-4957-AC69-1E8377E11C5D" label="Script Status" paletteLabel="Script Status" bordered="YES" sizingBehavior="auto" autovalidates="NO" id="bj4-Kg-7Qc">
 | 
					                                <toolbarItem implicitItemIdentifier="1FDD22AF-AF38-4957-AC69-1E8377E11C5D" label="Script Status" paletteLabel="Script Status" bordered="YES" sizingBehavior="auto" autovalidates="NO" id="bj4-Kg-7Qc">
 | 
				
			||||||
                                    <nil key="toolTip"/>
 | 
					                                    <nil key="toolTip"/>
 | 
				
			||||||
                                    <segmentedControl key="view" verticalHuggingPriority="750" id="63L-Ya-hDW">
 | 
					                                    <segmentedControl key="view" verticalHuggingPriority="750" id="63L-Ya-hDW">
 | 
				
			||||||
| 
						 | 
					@ -473,7 +463,6 @@
 | 
				
			||||||
                                <toolbarItem reference="GqC-ht-JU0"/>
 | 
					                                <toolbarItem reference="GqC-ht-JU0"/>
 | 
				
			||||||
                                <toolbarItem reference="bj4-Kg-7Qc"/>
 | 
					                                <toolbarItem reference="bj4-Kg-7Qc"/>
 | 
				
			||||||
                                <toolbarItem reference="BH3-uw-K5S"/>
 | 
					                                <toolbarItem reference="BH3-uw-K5S"/>
 | 
				
			||||||
                                <toolbarItem reference="uBe-lp-9U2"/>
 | 
					 | 
				
			||||||
                            </defaultToolbarItems>
 | 
					                            </defaultToolbarItems>
 | 
				
			||||||
                        </toolbar>
 | 
					                        </toolbar>
 | 
				
			||||||
                        <connections>
 | 
					                        <connections>
 | 
				
			||||||
| 
						 | 
					@ -487,6 +476,7 @@
 | 
				
			||||||
                    </connections>
 | 
					                    </connections>
 | 
				
			||||||
                </windowController>
 | 
					                </windowController>
 | 
				
			||||||
                <customObject id="Dyo-ea-3jV" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
 | 
					                <customObject id="Dyo-ea-3jV" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
 | 
				
			||||||
 | 
					                <objectController mode="entity" entityName="CSharpScriptDocument" automaticallyPreparesContent="YES" id="IPo-2l-BeA"/>
 | 
				
			||||||
            </objects>
 | 
					            </objects>
 | 
				
			||||||
            <point key="canvasLocation" x="-23" y="73"/>
 | 
					            <point key="canvasLocation" x="-23" y="73"/>
 | 
				
			||||||
        </scene>
 | 
					        </scene>
 | 
				
			||||||
| 
						 | 
					@ -652,7 +642,6 @@
 | 
				
			||||||
        <image name="exclamationmark.triangle.fill" catalog="system" width="17" height="15"/>
 | 
					        <image name="exclamationmark.triangle.fill" catalog="system" width="17" height="15"/>
 | 
				
			||||||
        <image name="info.circle.fill" catalog="system" width="15" height="15"/>
 | 
					        <image name="info.circle.fill" catalog="system" width="15" height="15"/>
 | 
				
			||||||
        <image name="play.fill" catalog="system" width="12" height="13"/>
 | 
					        <image name="play.fill" catalog="system" width="12" height="13"/>
 | 
				
			||||||
        <image name="plus" catalog="system" width="14" height="13"/>
 | 
					 | 
				
			||||||
        <image name="sidebar.leading" catalog="system" width="18" height="14"/>
 | 
					        <image name="sidebar.leading" catalog="system" width="18" height="14"/>
 | 
				
			||||||
    </resources>
 | 
					    </resources>
 | 
				
			||||||
</document>
 | 
					</document>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,7 +2,6 @@ using System;
 | 
				
			||||||
using System.Collections.Immutable;
 | 
					using System.Collections.Immutable;
 | 
				
			||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
using System.Threading;
 | 
					using System.Threading;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					 | 
				
			||||||
using System.Timers;
 | 
					using System.Timers;
 | 
				
			||||||
using AppKit;
 | 
					using AppKit;
 | 
				
			||||||
using Cauldron.Macos.SourceWriter;
 | 
					using Cauldron.Macos.SourceWriter;
 | 
				
			||||||
| 
						 | 
					@ -14,6 +13,8 @@ namespace Cauldron.Macos;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public partial class MainWindow : NSWindowController
 | 
					public partial class MainWindow : NSWindowController
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						public CSharpScriptDocument ScriptDocument { get => (CSharpScriptDocument)this.Document; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	#region Window components
 | 
						#region Window components
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private NSSplitViewController MainContentController
 | 
						private NSSplitViewController MainContentController
 | 
				
			||||||
| 
						 | 
					@ -34,7 +35,7 @@ public partial class MainWindow : NSWindowController
 | 
				
			||||||
			.ContentView.DocumentView as NSOutlineView;
 | 
								.ContentView.DocumentView as NSOutlineView;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private SourceTextView ScriptEditorTextBox
 | 
						public SourceTextView ScriptEditorTextBox
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		get => (this.MainContentController
 | 
							get => (this.MainContentController
 | 
				
			||||||
			.SplitViewItems[0].ViewController.View as NSScrollView)
 | 
								.SplitViewItems[0].ViewController.View as NSScrollView)
 | 
				
			||||||
| 
						 | 
					@ -60,14 +61,21 @@ public partial class MainWindow : NSWindowController
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public MainWindow (ObjCRuntime.NativeHandle handle) : base (handle) { }
 | 
						public MainWindow (ObjCRuntime.NativeHandle handle) : base (handle) { }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public override void AwakeFromNib()
 | 
						public override void WindowDidLoad()
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		base.AwakeFromNib();
 | 
							base.WindowDidLoad();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this.Document ??= new CSharpScriptDocument();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (this.ScriptDocument.ScriptText == null)
 | 
				
			||||||
 | 
								this.ScriptDocument.ScriptText = new NSString(this.ScriptText);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		this.RunScriptToolbarButton.Activated += RunScript;
 | 
							this.RunScriptToolbarButton.Activated += RunScript;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		SourceTextView scriptTextBox = this.ScriptEditorTextBox;
 | 
							SourceTextView scriptTextBox = this.ScriptEditorTextBox;
 | 
				
			||||||
		scriptTextBox.OnFinishedTyping += this.BuildScript;
 | 
							scriptTextBox.OnFinishedTyping += this.BuildScript;
 | 
				
			||||||
 | 
							scriptTextBox.OnTextChanged += this.UpdateDocument;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		scriptTextBox.Font = NSFont.MonospacedSystemFont(new nfloat(14), NSFontWeight.Regular);
 | 
							scriptTextBox.Font = NSFont.MonospacedSystemFont(new nfloat(14), NSFontWeight.Regular);
 | 
				
			||||||
		scriptTextBox.AutomaticQuoteSubstitutionEnabled = false;
 | 
							scriptTextBox.AutomaticQuoteSubstitutionEnabled = false;
 | 
				
			||||||
		scriptTextBox.AutomaticDashSubstitutionEnabled = false;
 | 
							scriptTextBox.AutomaticDashSubstitutionEnabled = false;
 | 
				
			||||||
| 
						 | 
					@ -79,6 +87,14 @@ public partial class MainWindow : NSWindowController
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		scriptTextBox.Formatter = new LanguageFormatter(scriptTextBox, new CSharpDescriptor());
 | 
							scriptTextBox.Formatter = new LanguageFormatter(scriptTextBox, new CSharpDescriptor());
 | 
				
			||||||
		scriptTextBox.Formatter.Reformat();
 | 
							scriptTextBox.Formatter.Reformat();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this.SetDocumentEdited(this.ScriptDocument.IsDocumentEdited);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public void UpdateDocument(object sender, EventArgs args)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							this.ScriptDocument.ScriptText = new NSString(this.ScriptText);
 | 
				
			||||||
 | 
							this.SetDocumentEdited(this.ScriptDocument.IsDocumentEdited);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public void BuildScript(object sender, ElapsedEventArgs args)
 | 
						public void BuildScript(object sender, ElapsedEventArgs args)
 | 
				
			||||||
| 
						 | 
					@ -96,11 +112,6 @@ public partial class MainWindow : NSWindowController
 | 
				
			||||||
		this.ScriptCancellationTokenSource?.Cancel();
 | 
							this.ScriptCancellationTokenSource?.Cancel();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	partial void NewTabClicked(AppKit.NSToolbarItem sender)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		this.CreateNewTab();
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	partial void NewTabMenuItemClicked(AppKit.NSMenuItem sender)
 | 
						partial void NewTabMenuItemClicked(AppKit.NSMenuItem sender)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		this.CreateNewTab();
 | 
							this.CreateNewTab();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -120,8 +120,6 @@ public static class ScriptRunner
 | 
				
			||||||
			+ head.RenderAsString()
 | 
								+ head.RenderAsString()
 | 
				
			||||||
			+ body.RenderAsString();
 | 
								+ body.RenderAsString();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		Console.WriteLine("Contents: " + contents);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		webView.LoadHtmlString(new Foundation.NSString(contents), null);
 | 
							webView.LoadHtmlString(new Foundation.NSString(contents), null);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -452,6 +452,9 @@ public class SourceTextView : NSTextView
 | 
				
			||||||
	/// </summary>
 | 
						/// </summary>
 | 
				
			||||||
	public event ElapsedEventHandler OnFinishedTyping;
 | 
						public event ElapsedEventHandler OnFinishedTyping;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/// <summary>Triggered when the value in the textbox is changed</summary>
 | 
				
			||||||
 | 
						public event EventHandler OnTextChanged;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/// <summary>
 | 
						/// <summary>
 | 
				
			||||||
	/// Look for special keys being pressed and does specific processing based on the key.
 | 
						/// Look for special keys being pressed and does specific processing based on the key.
 | 
				
			||||||
	/// </summary>
 | 
						/// </summary>
 | 
				
			||||||
| 
						 | 
					@ -586,11 +589,14 @@ public class SourceTextView : NSTextView
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		this.Formatter.Reformat();
 | 
							this.Formatter.Reformat();
 | 
				
			||||||
 | 
							this.OnTextChanged.Invoke(this, null);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		this.InputTimoutTimer?.Stop();
 | 
							this.InputTimoutTimer?.Stop();
 | 
				
			||||||
		this.InputTimoutTimer?.Close();
 | 
							this.InputTimoutTimer?.Close();
 | 
				
			||||||
		this.InputTimoutTimer = new Timer(this.InputTimeoutInterval);
 | 
							this.InputTimoutTimer = new(this.InputTimeoutInterval)
 | 
				
			||||||
		this.InputTimoutTimer.AutoReset = false;
 | 
							{
 | 
				
			||||||
 | 
								AutoReset = false
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
		this.InputTimoutTimer.Elapsed += this.OnFinishedTyping;
 | 
							this.InputTimoutTimer.Elapsed += this.OnFinishedTyping;
 | 
				
			||||||
		this.InputTimoutTimer.Start();
 | 
							this.InputTimoutTimer.Start();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue