Skip to content

Commit 7f8553d

Browse files
committed
Add rich text editor fallback on mono
1 parent b769519 commit 7f8553d

File tree

3 files changed

+16
-10
lines changed

3 files changed

+16
-10
lines changed

Bonsai.Scripting.IronPython.Design/Bonsai.Scripting.IronPython.Design.csproj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,13 @@
66
<PackageTags>Bonsai Rx Scripting Iron Python Design</PackageTags>
77
<UseWindowsForms>true</UseWindowsForms>
88
<TargetFramework>net462</TargetFramework>
9-
<VersionPrefix>2.7.1</VersionPrefix>
9+
<VersionPrefix>2.8.0</VersionPrefix>
1010
</PropertyGroup>
1111
<ItemGroup>
1212
<PackageReference Include="jacobslusser.ScintillaNET" Version="3.6.3" />
1313
</ItemGroup>
1414
<ItemGroup>
15+
<ProjectReference Include="..\Bonsai.Design\Bonsai.Design.csproj" />
1516
<ProjectReference Include="..\Bonsai.Scripting.IronPython\Bonsai.Scripting.IronPython.csproj" />
1617
</ItemGroup>
1718
</Project>

Bonsai.Scripting.IronPython.Design/PythonScriptEditor.cs

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,18 @@
33
using System.ComponentModel;
44
using System.Windows.Forms.Design;
55
using System.Windows.Forms;
6+
using Bonsai.Design;
67

78
namespace Bonsai.Scripting.IronPython.Design
89
{
910
/// <summary>
1011
/// Provides a user interface editor that displays a dialog box for editing
1112
/// the Python script.
1213
/// </summary>
13-
public class PythonScriptEditor : UITypeEditor
14+
public class PythonScriptEditor : RichTextEditor
1415
{
16+
static readonly bool IsRunningOnMono = Type.GetType("Mono.Runtime") != null;
17+
1518
/// <inheritdoc/>
1619
public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
1720
{
@@ -21,15 +24,17 @@ public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext contex
2124
/// <inheritdoc/>
2225
public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
2326
{
24-
var editorService = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));
25-
if (editorService != null)
27+
if (provider != null && !IsRunningOnMono)
2628
{
27-
var script = value as string;
28-
var editorDialog = new PythonScriptEditorDialog();
29-
editorDialog.Script = script;
30-
if (editorService.ShowDialog(editorDialog) == DialogResult.OK)
29+
var editorService = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));
30+
if (editorService != null)
3131
{
32-
return editorDialog.Script;
32+
using var editorDialog = new PythonScriptEditorDialog();
33+
editorDialog.Script = (string)value;
34+
if (editorService.ShowDialog(editorDialog) == DialogResult.OK)
35+
{
36+
return editorDialog.Script;
37+
}
3338
}
3439
}
3540

Bonsai.Scripting.IronPython/Bonsai.Scripting.IronPython.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<Description>Bonsai Scripting Library containing IronPython scripting infrastructure for Bonsai.</Description>
66
<PackageTags>Bonsai Rx Scripting Iron Python</PackageTags>
77
<TargetFramework>net462</TargetFramework>
8-
<VersionPrefix>2.7.1</VersionPrefix>
8+
<VersionPrefix>2.8.0</VersionPrefix>
99
</PropertyGroup>
1010
<ItemGroup>
1111
<PackageReference Include="IronPython" Version="2.7.5" />

0 commit comments

Comments
 (0)