Add Run Script menu item
This commit is contained in:
parent
2a9911d973
commit
719d72c8b6
|
@ -1,5 +1,4 @@
|
||||||
using System;
|
using Microsoft.CodeAnalysis.CSharp.Scripting;
|
||||||
using Microsoft.CodeAnalysis.CSharp.Scripting;
|
|
||||||
using Microsoft.CodeAnalysis.Scripting;
|
using Microsoft.CodeAnalysis.Scripting;
|
||||||
|
|
||||||
namespace Papercut.Core;
|
namespace Papercut.Core;
|
||||||
|
@ -20,22 +19,9 @@ public class RoslynHost
|
||||||
ScriptOptions options = ScriptOptions.Default
|
ScriptOptions options = ScriptOptions.Default
|
||||||
.AddImports(imports);
|
.AddImports(imports);
|
||||||
|
|
||||||
try
|
await CSharpScript.RunAsync(code, options, globals,
|
||||||
{
|
|
||||||
var result = await CSharpScript.RunAsync(code, options, globals,
|
|
||||||
cancellationToken: cancellationToken);
|
cancellationToken: cancellationToken);
|
||||||
}
|
}
|
||||||
catch (CompilationErrorException ex)
|
|
||||||
{
|
|
||||||
Console.WriteLine(code);
|
|
||||||
Console.WriteLine(ex);
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Console.WriteLine(code);
|
|
||||||
Console.WriteLine(ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class RoslynHostGlobals
|
public class RoslynHostGlobals
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
using AppKit;
|
using AppKit;
|
||||||
using Foundation;
|
using Foundation;
|
||||||
|
|
||||||
namespace Papercut.Macos;
|
namespace Papercut.Macos;
|
||||||
|
|
||||||
[Register("AppDelegate")]
|
[Register("AppDelegate")]
|
||||||
public class AppDelegate : NSApplicationDelegate
|
public partial class AppDelegate : NSApplicationDelegate
|
||||||
{
|
{
|
||||||
public AppDelegate()
|
public AppDelegate()
|
||||||
{
|
{
|
||||||
|
@ -19,4 +19,17 @@ public class AppDelegate : NSApplicationDelegate
|
||||||
{
|
{
|
||||||
// Insert code here to tear down your application
|
// Insert code here to tear down your application
|
||||||
}
|
}
|
||||||
|
|
||||||
|
partial void RunScriptMenuItemClicked(AppKit.NSMenuItem sender)
|
||||||
|
{
|
||||||
|
ScriptRunner.RunScript(
|
||||||
|
NSApplication.SharedApplication.KeyWindow.WindowController
|
||||||
|
as MainWindow);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Action("validateMenuItem:")]
|
||||||
|
public bool ValidateMenuItem(AppKit.NSMenuItem sender)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,18 +9,13 @@ using System.CodeDom.Compiler;
|
||||||
|
|
||||||
namespace Papercut.Macos
|
namespace Papercut.Macos
|
||||||
{
|
{
|
||||||
[Register ("ScriptViewController")]
|
partial class AppDelegate
|
||||||
partial class ScriptViewController
|
|
||||||
{
|
{
|
||||||
[Outlet]
|
[Action ("RunScriptMenuItemClicked:")]
|
||||||
AppKit.NSTextView ScriptTextBox { get; set; }
|
partial void RunScriptMenuItemClicked (AppKit.NSMenuItem sender);
|
||||||
|
|
||||||
void ReleaseDesignerOutlets ()
|
void ReleaseDesignerOutlets ()
|
||||||
{
|
{
|
||||||
if (ScriptTextBox != null) {
|
|
||||||
ScriptTextBox.Dispose ();
|
|
||||||
ScriptTextBox = null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -6,17 +6,17 @@
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<scenes>
|
<scenes>
|
||||||
<!--Application-->
|
<!--Papercut Application-->
|
||||||
<scene sceneID="JPo-4y-FX3">
|
<scene sceneID="JPo-4y-FX3">
|
||||||
<objects>
|
<objects>
|
||||||
<application id="hnw-xV-0zn" sceneMemberID="viewController">
|
<application id="hnw-xV-0zn" customClass="PapercutApplication" sceneMemberID="viewController">
|
||||||
<menu key="mainMenu" title="Main Menu" systemMenu="main" id="AYu-sK-qS6">
|
<menu key="mainMenu" title="Main Menu" systemMenu="main" id="AYu-sK-qS6">
|
||||||
<items>
|
<items>
|
||||||
<menuItem title="Papercut" id="1Xt-HY-uBw">
|
<menuItem title="Papercut" id="1Xt-HY-uBw">
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
<menu key="submenu" title="Papercut" systemMenu="apple" id="uQy-DD-JDr">
|
<menu key="submenu" title="Papercut" systemMenu="apple" id="uQy-DD-JDr">
|
||||||
<items>
|
<items>
|
||||||
<menuItem title="About TestStoryboard" id="5kV-Vb-QxS">
|
<menuItem title="About Papercut" id="5kV-Vb-QxS">
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
<connections>
|
<connections>
|
||||||
<action selector="orderFrontStandardAboutPanel:" target="Ady-hI-5gd" id="Exp-CZ-Vem"/>
|
<action selector="orderFrontStandardAboutPanel:" target="Ady-hI-5gd" id="Exp-CZ-Vem"/>
|
||||||
|
@ -106,7 +106,12 @@
|
||||||
</connections>
|
</connections>
|
||||||
</menuItem>
|
</menuItem>
|
||||||
<menuItem isSeparatorItem="YES" id="aJh-i4-bef"/>
|
<menuItem isSeparatorItem="YES" id="aJh-i4-bef"/>
|
||||||
<menuItem title="Run Script" keyEquivalent="r" id="JLu-BT-CR7" userLabel="Run Script"/>
|
<menuItem title="Run Script" keyEquivalent="r" id="JLu-BT-CR7" userLabel="Run Script">
|
||||||
|
<attributedString key="attributedTitle"/>
|
||||||
|
<connections>
|
||||||
|
<action selector="RunScriptMenuItemClicked:" target="Voe-Tx-rLC" id="HF3-L2-yVY"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
</items>
|
</items>
|
||||||
</menu>
|
</menu>
|
||||||
</menuItem>
|
</menuItem>
|
||||||
|
@ -140,12 +145,6 @@
|
||||||
<action selector="paste:" target="Ady-hI-5gd" id="UvS-8e-Qdg"/>
|
<action selector="paste:" target="Ady-hI-5gd" id="UvS-8e-Qdg"/>
|
||||||
</connections>
|
</connections>
|
||||||
</menuItem>
|
</menuItem>
|
||||||
<menuItem title="Paste and Match Style" keyEquivalent="V" id="WeT-3V-zwk">
|
|
||||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
|
||||||
<connections>
|
|
||||||
<action selector="pasteAsPlainText:" target="Ady-hI-5gd" id="cEh-KX-wJQ"/>
|
|
||||||
</connections>
|
|
||||||
</menuItem>
|
|
||||||
<menuItem title="Delete" id="pa3-QI-u2k">
|
<menuItem title="Delete" id="pa3-QI-u2k">
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
<connections>
|
<connections>
|
||||||
|
@ -329,268 +328,6 @@
|
||||||
</items>
|
</items>
|
||||||
</menu>
|
</menu>
|
||||||
</menuItem>
|
</menuItem>
|
||||||
<menuItem title="Format" id="jxT-CU-nIS">
|
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
|
||||||
<menu key="submenu" title="Format" id="GEO-Iw-cKr">
|
|
||||||
<items>
|
|
||||||
<menuItem title="Font" id="Gi5-1S-RQB">
|
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
|
||||||
<menu key="submenu" title="Font" systemMenu="font" id="aXa-aM-Jaq">
|
|
||||||
<items>
|
|
||||||
<menuItem title="Show Fonts" keyEquivalent="t" id="Q5e-8K-NDq">
|
|
||||||
<connections>
|
|
||||||
<action selector="orderFrontFontPanel:" target="YLy-65-1bz" id="WHr-nq-2xA"/>
|
|
||||||
</connections>
|
|
||||||
</menuItem>
|
|
||||||
<menuItem title="Bold" tag="2" keyEquivalent="b" id="GB9-OM-e27">
|
|
||||||
<connections>
|
|
||||||
<action selector="addFontTrait:" target="YLy-65-1bz" id="hqk-hr-sYV"/>
|
|
||||||
</connections>
|
|
||||||
</menuItem>
|
|
||||||
<menuItem title="Italic" tag="1" keyEquivalent="i" id="Vjx-xi-njq">
|
|
||||||
<connections>
|
|
||||||
<action selector="addFontTrait:" target="YLy-65-1bz" id="IHV-OB-c03"/>
|
|
||||||
</connections>
|
|
||||||
</menuItem>
|
|
||||||
<menuItem title="Underline" keyEquivalent="u" id="WRG-CD-K1S">
|
|
||||||
<connections>
|
|
||||||
<action selector="underline:" target="Ady-hI-5gd" id="FYS-2b-JAY"/>
|
|
||||||
</connections>
|
|
||||||
</menuItem>
|
|
||||||
<menuItem isSeparatorItem="YES" id="5gT-KC-WSO"/>
|
|
||||||
<menuItem title="Bigger" tag="3" keyEquivalent="+" id="Ptp-SP-VEL">
|
|
||||||
<connections>
|
|
||||||
<action selector="modifyFont:" target="YLy-65-1bz" id="Uc7-di-UnL"/>
|
|
||||||
</connections>
|
|
||||||
</menuItem>
|
|
||||||
<menuItem title="Smaller" tag="4" keyEquivalent="-" id="i1d-Er-qST">
|
|
||||||
<connections>
|
|
||||||
<action selector="modifyFont:" target="YLy-65-1bz" id="HcX-Lf-eNd"/>
|
|
||||||
</connections>
|
|
||||||
</menuItem>
|
|
||||||
<menuItem isSeparatorItem="YES" id="kx3-Dk-x3B"/>
|
|
||||||
<menuItem title="Kern" id="jBQ-r6-VK2">
|
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
|
||||||
<menu key="submenu" title="Kern" id="tlD-Oa-oAM">
|
|
||||||
<items>
|
|
||||||
<menuItem title="Use Default" id="GUa-eO-cwY">
|
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
|
||||||
<connections>
|
|
||||||
<action selector="useStandardKerning:" target="Ady-hI-5gd" id="6dk-9l-Ckg"/>
|
|
||||||
</connections>
|
|
||||||
</menuItem>
|
|
||||||
<menuItem title="Use None" id="cDB-IK-hbR">
|
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
|
||||||
<connections>
|
|
||||||
<action selector="turnOffKerning:" target="Ady-hI-5gd" id="U8a-gz-Maa"/>
|
|
||||||
</connections>
|
|
||||||
</menuItem>
|
|
||||||
<menuItem title="Tighten" id="46P-cB-AYj">
|
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
|
||||||
<connections>
|
|
||||||
<action selector="tightenKerning:" target="Ady-hI-5gd" id="hr7-Nz-8ro"/>
|
|
||||||
</connections>
|
|
||||||
</menuItem>
|
|
||||||
<menuItem title="Loosen" id="ogc-rX-tC1">
|
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
|
||||||
<connections>
|
|
||||||
<action selector="loosenKerning:" target="Ady-hI-5gd" id="8i4-f9-FKE"/>
|
|
||||||
</connections>
|
|
||||||
</menuItem>
|
|
||||||
</items>
|
|
||||||
</menu>
|
|
||||||
</menuItem>
|
|
||||||
<menuItem title="Ligatures" id="o6e-r0-MWq">
|
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
|
||||||
<menu key="submenu" title="Ligatures" id="w0m-vy-SC9">
|
|
||||||
<items>
|
|
||||||
<menuItem title="Use Default" id="agt-UL-0e3">
|
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
|
||||||
<connections>
|
|
||||||
<action selector="useStandardLigatures:" target="Ady-hI-5gd" id="7uR-wd-Dx6"/>
|
|
||||||
</connections>
|
|
||||||
</menuItem>
|
|
||||||
<menuItem title="Use None" id="J7y-lM-qPV">
|
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
|
||||||
<connections>
|
|
||||||
<action selector="turnOffLigatures:" target="Ady-hI-5gd" id="iX2-gA-Ilz"/>
|
|
||||||
</connections>
|
|
||||||
</menuItem>
|
|
||||||
<menuItem title="Use All" id="xQD-1f-W4t">
|
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
|
||||||
<connections>
|
|
||||||
<action selector="useAllLigatures:" target="Ady-hI-5gd" id="KcB-kA-TuK"/>
|
|
||||||
</connections>
|
|
||||||
</menuItem>
|
|
||||||
</items>
|
|
||||||
</menu>
|
|
||||||
</menuItem>
|
|
||||||
<menuItem title="Baseline" id="OaQ-X3-Vso">
|
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
|
||||||
<menu key="submenu" title="Baseline" id="ijk-EB-dga">
|
|
||||||
<items>
|
|
||||||
<menuItem title="Use Default" id="3Om-Ey-2VK">
|
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
|
||||||
<connections>
|
|
||||||
<action selector="unscript:" target="Ady-hI-5gd" id="0vZ-95-Ywn"/>
|
|
||||||
</connections>
|
|
||||||
</menuItem>
|
|
||||||
<menuItem title="Superscript" id="Rqc-34-cIF">
|
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
|
||||||
<connections>
|
|
||||||
<action selector="superscript:" target="Ady-hI-5gd" id="3qV-fo-wpU"/>
|
|
||||||
</connections>
|
|
||||||
</menuItem>
|
|
||||||
<menuItem title="Subscript" id="I0S-gh-46l">
|
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
|
||||||
<connections>
|
|
||||||
<action selector="subscript:" target="Ady-hI-5gd" id="Q6W-4W-IGz"/>
|
|
||||||
</connections>
|
|
||||||
</menuItem>
|
|
||||||
<menuItem title="Raise" id="2h7-ER-AoG">
|
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
|
||||||
<connections>
|
|
||||||
<action selector="raiseBaseline:" target="Ady-hI-5gd" id="4sk-31-7Q9"/>
|
|
||||||
</connections>
|
|
||||||
</menuItem>
|
|
||||||
<menuItem title="Lower" id="1tx-W0-xDw">
|
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
|
||||||
<connections>
|
|
||||||
<action selector="lowerBaseline:" target="Ady-hI-5gd" id="OF1-bc-KW4"/>
|
|
||||||
</connections>
|
|
||||||
</menuItem>
|
|
||||||
</items>
|
|
||||||
</menu>
|
|
||||||
</menuItem>
|
|
||||||
<menuItem isSeparatorItem="YES" id="Ndw-q3-faq"/>
|
|
||||||
<menuItem title="Show Colors" keyEquivalent="C" id="bgn-CT-cEk">
|
|
||||||
<connections>
|
|
||||||
<action selector="orderFrontColorPanel:" target="Ady-hI-5gd" id="mSX-Xz-DV3"/>
|
|
||||||
</connections>
|
|
||||||
</menuItem>
|
|
||||||
<menuItem isSeparatorItem="YES" id="iMs-zA-UFJ"/>
|
|
||||||
<menuItem title="Copy Style" keyEquivalent="c" id="5Vv-lz-BsD">
|
|
||||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
|
||||||
<connections>
|
|
||||||
<action selector="copyFont:" target="Ady-hI-5gd" id="GJO-xA-L4q"/>
|
|
||||||
</connections>
|
|
||||||
</menuItem>
|
|
||||||
<menuItem title="Paste Style" keyEquivalent="v" id="vKC-jM-MkH">
|
|
||||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
|
||||||
<connections>
|
|
||||||
<action selector="pasteFont:" target="Ady-hI-5gd" id="JfD-CL-leO"/>
|
|
||||||
</connections>
|
|
||||||
</menuItem>
|
|
||||||
</items>
|
|
||||||
</menu>
|
|
||||||
</menuItem>
|
|
||||||
<menuItem title="Text" id="Fal-I4-PZk">
|
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
|
||||||
<menu key="submenu" title="Text" id="d9c-me-L2H">
|
|
||||||
<items>
|
|
||||||
<menuItem title="Align Left" keyEquivalent="{" id="ZM1-6Q-yy1">
|
|
||||||
<connections>
|
|
||||||
<action selector="alignLeft:" target="Ady-hI-5gd" id="zUv-R1-uAa"/>
|
|
||||||
</connections>
|
|
||||||
</menuItem>
|
|
||||||
<menuItem title="Center" keyEquivalent="|" id="VIY-Ag-zcb">
|
|
||||||
<connections>
|
|
||||||
<action selector="alignCenter:" target="Ady-hI-5gd" id="spX-mk-kcS"/>
|
|
||||||
</connections>
|
|
||||||
</menuItem>
|
|
||||||
<menuItem title="Justify" id="J5U-5w-g23">
|
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
|
||||||
<connections>
|
|
||||||
<action selector="alignJustified:" target="Ady-hI-5gd" id="ljL-7U-jND"/>
|
|
||||||
</connections>
|
|
||||||
</menuItem>
|
|
||||||
<menuItem title="Align Right" keyEquivalent="}" id="wb2-vD-lq4">
|
|
||||||
<connections>
|
|
||||||
<action selector="alignRight:" target="Ady-hI-5gd" id="r48-bG-YeY"/>
|
|
||||||
</connections>
|
|
||||||
</menuItem>
|
|
||||||
<menuItem isSeparatorItem="YES" id="4s2-GY-VfK"/>
|
|
||||||
<menuItem title="Writing Direction" id="H1b-Si-o9J">
|
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
|
||||||
<menu key="submenu" title="Writing Direction" id="8mr-sm-Yjd">
|
|
||||||
<items>
|
|
||||||
<menuItem title="Paragraph" enabled="NO" id="ZvO-Gk-QUH">
|
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
|
||||||
</menuItem>
|
|
||||||
<menuItem id="YGs-j5-SAR">
|
|
||||||
<string key="title"> Default</string>
|
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
|
||||||
<connections>
|
|
||||||
<action selector="makeBaseWritingDirectionNatural:" target="Ady-hI-5gd" id="qtV-5e-UBP"/>
|
|
||||||
</connections>
|
|
||||||
</menuItem>
|
|
||||||
<menuItem id="Lbh-J2-qVU">
|
|
||||||
<string key="title"> Left to Right</string>
|
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
|
||||||
<connections>
|
|
||||||
<action selector="makeBaseWritingDirectionLeftToRight:" target="Ady-hI-5gd" id="S0X-9S-QSf"/>
|
|
||||||
</connections>
|
|
||||||
</menuItem>
|
|
||||||
<menuItem id="jFq-tB-4Kx">
|
|
||||||
<string key="title"> Right to Left</string>
|
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
|
||||||
<connections>
|
|
||||||
<action selector="makeBaseWritingDirectionRightToLeft:" target="Ady-hI-5gd" id="5fk-qB-AqJ"/>
|
|
||||||
</connections>
|
|
||||||
</menuItem>
|
|
||||||
<menuItem isSeparatorItem="YES" id="swp-gr-a21"/>
|
|
||||||
<menuItem title="Selection" enabled="NO" id="cqv-fj-IhA">
|
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
|
||||||
</menuItem>
|
|
||||||
<menuItem id="Nop-cj-93Q">
|
|
||||||
<string key="title"> Default</string>
|
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
|
||||||
<connections>
|
|
||||||
<action selector="makeTextWritingDirectionNatural:" target="Ady-hI-5gd" id="lPI-Se-ZHp"/>
|
|
||||||
</connections>
|
|
||||||
</menuItem>
|
|
||||||
<menuItem id="BgM-ve-c93">
|
|
||||||
<string key="title"> Left to Right</string>
|
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
|
||||||
<connections>
|
|
||||||
<action selector="makeTextWritingDirectionLeftToRight:" target="Ady-hI-5gd" id="caW-Bv-w94"/>
|
|
||||||
</connections>
|
|
||||||
</menuItem>
|
|
||||||
<menuItem id="RB4-Sm-HuC">
|
|
||||||
<string key="title"> Right to Left</string>
|
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
|
||||||
<connections>
|
|
||||||
<action selector="makeTextWritingDirectionRightToLeft:" target="Ady-hI-5gd" id="EXD-6r-ZUu"/>
|
|
||||||
</connections>
|
|
||||||
</menuItem>
|
|
||||||
</items>
|
|
||||||
</menu>
|
|
||||||
</menuItem>
|
|
||||||
<menuItem isSeparatorItem="YES" id="fKy-g9-1gm"/>
|
|
||||||
<menuItem title="Show Ruler" id="vLm-3I-IUL">
|
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
|
||||||
<connections>
|
|
||||||
<action selector="toggleRuler:" target="Ady-hI-5gd" id="FOx-HJ-KwY"/>
|
|
||||||
</connections>
|
|
||||||
</menuItem>
|
|
||||||
<menuItem title="Copy Ruler" keyEquivalent="c" id="MkV-Pr-PK5">
|
|
||||||
<modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
|
|
||||||
<connections>
|
|
||||||
<action selector="copyRuler:" target="Ady-hI-5gd" id="71i-fW-3W2"/>
|
|
||||||
</connections>
|
|
||||||
</menuItem>
|
|
||||||
<menuItem title="Paste Ruler" keyEquivalent="v" id="LVM-kO-fVI">
|
|
||||||
<modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
|
|
||||||
<connections>
|
|
||||||
<action selector="pasteRuler:" target="Ady-hI-5gd" id="cSh-wd-qM2"/>
|
|
||||||
</connections>
|
|
||||||
</menuItem>
|
|
||||||
</items>
|
|
||||||
</menu>
|
|
||||||
</menuItem>
|
|
||||||
</items>
|
|
||||||
</menu>
|
|
||||||
</menuItem>
|
|
||||||
<menuItem title="View" id="H8h-7b-M4v">
|
<menuItem title="View" id="H8h-7b-M4v">
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
<menu key="submenu" title="View" id="HyV-fh-RgO">
|
<menu key="submenu" title="View" id="HyV-fh-RgO">
|
||||||
|
@ -686,7 +423,7 @@
|
||||||
<rect key="frame" x="0.0" y="0.0" width="620" height="406"/>
|
<rect key="frame" x="0.0" y="0.0" width="620" height="406"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
</view>
|
</view>
|
||||||
<toolbar key="toolbar" implicitIdentifier="09D11707-F4A3-4FD5-970E-AC5832E91C2B" displayMode="iconOnly" sizeMode="regular" id="c7l-9K-zGH">
|
<toolbar key="toolbar" implicitIdentifier="09D11707-F4A3-4FD5-970E-AC5832E91C2B" showsBaselineSeparator="NO" displayMode="iconOnly" sizeMode="regular" id="c7l-9K-zGH">
|
||||||
<allowedToolbarItems>
|
<allowedToolbarItems>
|
||||||
<toolbarItem implicitItemIdentifier="CC6DE1A4-9FD5-4729-8CD5-0960D99018C8" explicitItemIdentifier="toggleSidebar" label="Show Sidebar" paletteLabel="Show Sidebar" tag="-1" image="sidebar.leading" catalog="system" bordered="YES" sizingBehavior="auto" autovalidates="NO" id="a3w-Fk-xXU">
|
<toolbarItem implicitItemIdentifier="CC6DE1A4-9FD5-4729-8CD5-0960D99018C8" explicitItemIdentifier="toggleSidebar" label="Show Sidebar" paletteLabel="Show Sidebar" tag="-1" image="sidebar.leading" catalog="system" bordered="YES" sizingBehavior="auto" autovalidates="NO" id="a3w-Fk-xXU">
|
||||||
<connections>
|
<connections>
|
||||||
|
@ -746,7 +483,7 @@
|
||||||
<splitViewItem id="W8R-VT-x8O"/>
|
<splitViewItem id="W8R-VT-x8O"/>
|
||||||
<splitViewItem id="ysW-gC-LWo"/>
|
<splitViewItem id="ysW-gC-LWo"/>
|
||||||
</splitViewItems>
|
</splitViewItems>
|
||||||
<splitView key="splitView" dividerStyle="thin" id="LII-Lb-vwD">
|
<splitView key="splitView" id="LII-Lb-vwD">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="450" height="300"/>
|
<rect key="frame" x="0.0" y="0.0" width="450" height="300"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<connections>
|
<connections>
|
||||||
|
@ -781,6 +518,16 @@
|
||||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
<size key="minSize" width="700" height="300"/>
|
<size key="minSize" width="700" height="300"/>
|
||||||
<size key="maxSize" width="700" height="10000000"/>
|
<size key="maxSize" width="700" height="10000000"/>
|
||||||
|
<attributedString key="textStorage">
|
||||||
|
<fragment content="Papercut.Dump("From Script");">
|
||||||
|
<attributes>
|
||||||
|
<color key="NSColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<font key="NSFont" size="14" name="Menlo-Regular"/>
|
||||||
|
<font key="NSOriginalFont" size="14" name="Menlo-Regular"/>
|
||||||
|
<paragraphStyle key="NSParagraphStyle" alignment="natural" lineBreakMode="wordWrapping" baseWritingDirection="natural" tighteningFactorForTruncation="0.0"/>
|
||||||
|
</attributes>
|
||||||
|
</fragment>
|
||||||
|
</attributedString>
|
||||||
<color key="insertionPointColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
<color key="insertionPointColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||||
</textView>
|
</textView>
|
||||||
</subviews>
|
</subviews>
|
||||||
|
|
|
@ -1,12 +1,13 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Threading.Tasks;
|
using System.Threading;
|
||||||
using AppKit;
|
using AppKit;
|
||||||
using Papercut.Core;
|
|
||||||
|
|
||||||
namespace Papercut.Macos;
|
namespace Papercut.Macos;
|
||||||
|
|
||||||
public partial class MainWindow : NSWindowController
|
public partial class MainWindow : NSWindowController
|
||||||
{
|
{
|
||||||
|
#region Window components
|
||||||
|
|
||||||
private NSSplitViewController MainContentController
|
private NSSplitViewController MainContentController
|
||||||
{
|
{
|
||||||
get => (this.ContentViewController as NSSplitViewController)
|
get => (this.ContentViewController as NSSplitViewController)
|
||||||
|
@ -26,15 +27,25 @@ public partial class MainWindow : NSWindowController
|
||||||
.ContentView.DocumentView as NSTextView;
|
.ContentView.DocumentView as NSTextView;
|
||||||
}
|
}
|
||||||
|
|
||||||
private NSTextView ScriptOutputTextBox
|
public NSTextView ScriptOutputTextBox
|
||||||
{
|
{
|
||||||
get => (this.MainContentController
|
get => (this.MainContentController
|
||||||
.SplitViewItems[1].ViewController.View as NSScrollView)
|
.SplitViewItems[1].ViewController.View as NSScrollView)
|
||||||
.ContentView.DocumentView as NSTextView;
|
.ContentView.DocumentView as NSTextView;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string ScriptText { get => this.ScriptEditorTextBox.Value; }
|
||||||
|
|
||||||
public MainWindow (IntPtr handle) : base (handle) { }
|
#endregion
|
||||||
|
|
||||||
|
#region Shared properties
|
||||||
|
|
||||||
|
public CancellationTokenSource ScriptCancellationTokenSource { get; set; }
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
public MainWindow (ObjCRuntime.NativeHandle handle) : base (handle) { }
|
||||||
|
|
||||||
public override void AwakeFromNib()
|
public override void AwakeFromNib()
|
||||||
{
|
{
|
||||||
|
@ -54,28 +65,24 @@ public partial class MainWindow : NSWindowController
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RunScript(object sender, EventArgs e)
|
public void RunScript(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
ScriptRunner.RunScript(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void CancelScript(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
this.ScriptCancellationTokenSource?.Cancel();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetScriptRunState(bool scriptIsRunning)
|
||||||
|
{
|
||||||
|
if (scriptIsRunning)
|
||||||
{
|
{
|
||||||
this.RunScriptToolbarButton.Enabled = false;
|
this.RunScriptToolbarButton.Enabled = false;
|
||||||
this.ScriptOutputTextBox.Value = "";
|
}
|
||||||
TaskScheduler uiThread = TaskScheduler.FromCurrentSynchronizationContext();
|
else
|
||||||
|
|
||||||
PapercutWriter writer = new(obj =>
|
|
||||||
{
|
{
|
||||||
if (obj is string str)
|
this.RunScriptToolbarButton.Enabled = true;
|
||||||
{
|
}
|
||||||
this.BeginInvokeOnMainThread(() =>
|
|
||||||
this.ScriptOutputTextBox.Value += str + "\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
return Task.CompletedTask;
|
|
||||||
});
|
|
||||||
|
|
||||||
string script = this.ScriptEditorTextBox.Value;
|
|
||||||
|
|
||||||
Task<bool> _ = Task
|
|
||||||
.Run(() => RoslynHost.RunScript(script, Array.Empty<string>(),
|
|
||||||
new RoslynHostGlobals(writer)))
|
|
||||||
.ContinueWith((t) => this.RunScriptToolbarButton.Enabled = true,
|
|
||||||
uiThread);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,8 +36,8 @@
|
||||||
<Compile Update="MainWindow.designer.cs">
|
<Compile Update="MainWindow.designer.cs">
|
||||||
<DependentUpon>MainWindow.cs</DependentUpon>
|
<DependentUpon>MainWindow.cs</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Update="ScriptViewController.designer.cs">
|
<Compile Update="AppDelegate.designer.cs">
|
||||||
<DependentUpon>ScriptViewController.cs</DependentUpon>
|
<DependentUpon>AppDelegate.cs</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
51
Papercut.Macos/ScriptRunner.cs
Normal file
51
Papercut.Macos/ScriptRunner.cs
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
using System;
|
||||||
|
using Papercut.Core;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using AppKit;
|
||||||
|
|
||||||
|
namespace Papercut.Macos;
|
||||||
|
|
||||||
|
public static class ScriptRunner
|
||||||
|
{
|
||||||
|
public static void RunScript(MainWindow window)
|
||||||
|
{
|
||||||
|
window.SetScriptRunState(true);
|
||||||
|
window.ScriptOutputTextBox.Value = "";
|
||||||
|
TaskScheduler uiThread = TaskScheduler.FromCurrentSynchronizationContext();
|
||||||
|
|
||||||
|
PapercutWriter writer = new(obj =>
|
||||||
|
{
|
||||||
|
if (obj is string str)
|
||||||
|
{
|
||||||
|
window.BeginInvokeOnMainThread(() =>
|
||||||
|
window.ScriptOutputTextBox.Value += str + "\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
return Task.CompletedTask;
|
||||||
|
});
|
||||||
|
|
||||||
|
window.ScriptCancellationTokenSource = new CancellationTokenSource();
|
||||||
|
|
||||||
|
string script = window.ScriptText;
|
||||||
|
|
||||||
|
Task task = Task
|
||||||
|
.Run(async () =>
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
await RoslynHost.RunScript(script, Array.Empty<string>(),
|
||||||
|
new RoslynHostGlobals(writer),
|
||||||
|
window.ScriptCancellationTokenSource.Token);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
window.BeginInvokeOnMainThread(() =>
|
||||||
|
window.ScriptOutputTextBox.Value += ex.ToString());
|
||||||
|
}
|
||||||
|
}, window.ScriptCancellationTokenSource.Token)
|
||||||
|
.ContinueWith((t) => window.SetScriptRunState(false),
|
||||||
|
uiThread);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
// This file has been autogenerated from a class added in the UI designer.
|
|
||||||
|
|
||||||
using System;
|
|
||||||
|
|
||||||
using Foundation;
|
|
||||||
using AppKit;
|
|
||||||
using System.Diagnostics;
|
|
||||||
|
|
||||||
namespace Papercut.Macos
|
|
||||||
{
|
|
||||||
public partial class ScriptViewController : NSViewController
|
|
||||||
{
|
|
||||||
public ScriptViewController (IntPtr handle) : base (handle)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in a new issue