Fixed C# a bit

This commit is contained in:
CreepyCrafter24 2019-11-29 22:55:54 +01:00
parent 194af87a8e
commit 6a19967c46
3 changed files with 299 additions and 296 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,5 @@
using ICSharpCode.Decompiler; using CC_Functions.Misc;
using ICSharpCode.Decompiler;
using ICSharpCode.Decompiler.CSharp; using ICSharpCode.Decompiler.CSharp;
using ICSharpCode.TextEditor.Document; using ICSharpCode.TextEditor.Document;
using IronPython.Hosting; using IronPython.Hosting;
@ -18,6 +19,7 @@ using System.Linq;
using System.Reflection; using System.Reflection;
using System.Runtime.Serialization.Formatters.Binary; using System.Runtime.Serialization.Formatters.Binary;
using System.Text; using System.Text;
using System.Threading;
using System.Windows.Forms; using System.Windows.Forms;
#pragma warning disable IDE1006 #pragma warning disable IDE1006
@ -41,7 +43,7 @@ namespace cashew
InitializeComponent(); InitializeComponent();
metroControls = new IMetroControl[] { nmtext, languageTabControl, cstab, infotab, nightmodeToggle, cseditopen, cseditrun, cseditsave, csediterrorpanel, csediterrors, cseditref, infoPanel, htmltab, htmltitle, htmlOptionsTile, htmlOptionsMenu, htmlRefreshTile, htmlLoad, htmlSave, htmlLoadIndicator, htmlUpdateToggle, htmlLiveLabel, livehider, nightmodehide, pythontab, metroControls = new IMetroControl[] { nmtext, languageTabControl, cstab, infotab, nightmodeToggle, cseditopen, cseditrun, cseditsave, csediterrorpanel, csediterrors, cseditref, infoPanel, htmltab, htmltitle, htmlOptionsTile, htmlOptionsMenu, htmlRefreshTile, htmlLoad, htmlSave, htmlLoadIndicator, htmlUpdateToggle, htmlLiveLabel, livehider, nightmodehide, pythontab,
pythonSave, pythonRun, pythonOpen}; pythonSave, pythonRun, pythonOpen};
normalControls = new Control[] { htmlSep, htmldisplay, cseditcode, pythonCode, htmlText }; normalControls = new Control[] { htmlSep, htmldisplay, cseditCode, pythonCode, htmlText };
menuItems = new ToolStripMenuItem[] { hTMLToolStripMenuItem, javaScriptToolStripMenuItem, cSSToolStripMenuItem, pHPToolStripMenuItem, hTMLStructureSetupToolStripMenuItem, javaStructureSetupToolStripMenuItem, cSSStructureSetupToolStripMenuItem, pHPStructureSetupToolStripMenuItem, linkToolStripMenuItem, imageToolStripMenuItem, textToolStripMenuItem, tableToolStripMenuItem, menuItems = new ToolStripMenuItem[] { hTMLToolStripMenuItem, javaScriptToolStripMenuItem, cSSToolStripMenuItem, pHPToolStripMenuItem, hTMLStructureSetupToolStripMenuItem, javaStructureSetupToolStripMenuItem, cSSStructureSetupToolStripMenuItem, pHPStructureSetupToolStripMenuItem, linkToolStripMenuItem, imageToolStripMenuItem, textToolStripMenuItem, tableToolStripMenuItem,
listsToolStripMenuItem, functionToolStripMenuItem, textToolStripMenuItem1, alertBoxToolStripMenuItem, timeoutToolStripMenuItem, randomNumberToolStripMenuItem, cSSCustomizeTagToolStripMenuItem, cSSCustomTagPropertiesToolStripMenuItem, textToolStripMenuItem3, headingsToolStripMenuItem, boldbToolStripMenuItem, underlineuToolStripMenuItem, italiciToolStripMenuItem, listsToolStripMenuItem, functionToolStripMenuItem, textToolStripMenuItem1, alertBoxToolStripMenuItem, timeoutToolStripMenuItem, randomNumberToolStripMenuItem, cSSCustomizeTagToolStripMenuItem, cSSCustomTagPropertiesToolStripMenuItem, textToolStripMenuItem3, headingsToolStripMenuItem, boldbToolStripMenuItem, underlineuToolStripMenuItem, italiciToolStripMenuItem,
deleteddelToolStripMenuItem, subscriptedSubToolStripMenuItem, superscriptedsupToolStripMenuItem, tableFormatSetupToolStripMenuItem, tableHeadingthToolStripMenuItem, newHorizontalItemtdToolStripMenuItem, newRowtrToolStripMenuItem, orderedListSetupolToolStripMenuItem, unorderedListSetupulToolStripMenuItem, listItemliToolStripMenuItem, heading1h1ToolStripMenuItem, deleteddelToolStripMenuItem, subscriptedSubToolStripMenuItem, superscriptedsupToolStripMenuItem, tableFormatSetupToolStripMenuItem, tableHeadingthToolStripMenuItem, newHorizontalItemtdToolStripMenuItem, newRowtrToolStripMenuItem, orderedListSetupolToolStripMenuItem, unorderedListSetupulToolStripMenuItem, listItemliToolStripMenuItem, heading1h1ToolStripMenuItem,
@ -53,6 +55,9 @@ namespace cashew
metroToggle1_CheckedChanged(this, new EventArgs()); metroToggle1_CheckedChanged(this, new EventArgs());
languageTabControl.SelectedTab = infotab; languageTabControl.SelectedTab = infotab;
splash.Hide(); splash.Hide();
cseditCode.SetHighlighting("C#");
pythonCode.SetHighlighting("Python");
htmlText.SetHighlighting("HTML");
} }
private void MAIN_Load(object sender, EventArgs e) => BringToFront(); private void MAIN_Load(object sender, EventArgs e) => BringToFront();
@ -107,8 +112,7 @@ namespace cashew
#region CS #region CS
private MethodInfo script; Thread script;
private void metroLabel2_Click(object sender, EventArgs e) => MetroMessageBox.Show(this, csediterrors.Text, "Errors", MessageBoxButtons.OK, MessageBoxIcon.Error); private void metroLabel2_Click(object sender, EventArgs e) => MetroMessageBox.Show(this, csediterrors.Text, "Errors", MessageBoxButtons.OK, MessageBoxIcon.Error);
private void metroPanel1_Click(object sender, EventArgs e) => MetroMessageBox.Show(this, csediterrors.Text, "Errors", MessageBoxButtons.OK, MessageBoxIcon.Error); private void metroPanel1_Click(object sender, EventArgs e) => MetroMessageBox.Show(this, csediterrors.Text, "Errors", MessageBoxButtons.OK, MessageBoxIcon.Error);
@ -123,11 +127,11 @@ namespace cashew
{ {
if (cseditref.Text == "Code") if (cseditref.Text == "Code")
{ {
cseditrefl = cseditcode.Text.Split(new string[] { "\r\n" }, StringSplitOptions.None); cseditrefl = cseditCode.Text.Split(new string[] { "\r\n" }, StringSplitOptions.None);
} }
else else
{ {
cseditcodel = cseditcode.Text.Split(new string[] { "\r\n" }, StringSplitOptions.None); cseditcodel = cseditCode.Text.Split(new string[] { "\r\n" }, StringSplitOptions.None);
} }
Stream s = File.OpenWrite(csSaveFileDialog.FileName); Stream s = File.OpenWrite(csSaveFileDialog.FileName);
new BinaryFormatter().Serialize(s, new string[][] { cseditcodel, cseditrefl }); new BinaryFormatter().Serialize(s, new string[][] { cseditcodel, cseditrefl });
@ -138,11 +142,11 @@ namespace cashew
csediterrors.Text = ""; csediterrors.Text = "";
if (cseditref.Text == "Code") if (cseditref.Text == "Code")
{ {
cseditrefl = cseditcode.Text.Split(new string[] { "\r\n" }, StringSplitOptions.None); cseditrefl = cseditCode.Text.Split(new string[] { "\r\n" }, StringSplitOptions.None);
} }
else else
{ {
cseditcodel = cseditcode.Text.Split(new string[] { "\r\n" }, StringSplitOptions.None); cseditcodel = cseditCode.Text.Split(new string[] { "\r\n" }, StringSplitOptions.None);
} }
CSharpCodeProvider provider = new CSharpCodeProvider(); CSharpCodeProvider provider = new CSharpCodeProvider();
CompilerParameters parameters = new CompilerParameters CompilerParameters parameters = new CompilerParameters
@ -173,18 +177,22 @@ namespace cashew
private void cseditrun_Click(object sender, EventArgs e) private void cseditrun_Click(object sender, EventArgs e)
{ {
if (cseditrun.Text == "Run") if ((script != null) && script.ThreadState == System.Threading.ThreadState.Running)
{
script.Abort();
}
else
{ {
try try
{ {
csediterrors.Text = ""; csediterrors.Text = "";
if (cseditref.Text == "Code") if (cseditref.Text == "Code")
{ {
cseditrefl = cseditcode.Text.Split(new string[] { "\r\n" }, StringSplitOptions.None); cseditrefl = cseditCode.Text.Split(new string[] { "\r\n" }, StringSplitOptions.None);
} }
else else
{ {
cseditcodel = cseditcode.Text.Split(new string[] { "\r\n" }, StringSplitOptions.None); cseditcodel = cseditCode.Text.Split(new string[] { "\r\n" }, StringSplitOptions.None);
} }
CompilerParameters parameters = new CompilerParameters CompilerParameters parameters = new CompilerParameters
{ {
@ -195,9 +203,22 @@ namespace cashew
CompilerResults results = new CSharpCodeProvider().CompileAssemblyFromSource(parameters, string.Join("\r\n", cseditcodel)); CompilerResults results = new CSharpCodeProvider().CompileAssemblyFromSource(parameters, string.Join("\r\n", cseditcodel));
if (results.Errors.HasErrors) if (results.Errors.HasErrors)
throw new InvalidOperationException(string.Join("\r\n\r\n", results.Errors.OfType<CompilerError>().Select(s => "Error in line " + s.Line.ToString() + ": " + s.ErrorNumber + " - " + s.ErrorText).ToArray())); throw new InvalidOperationException(string.Join("\r\n\r\n", results.Errors.OfType<CompilerError>().Select(s => "Error in line " + s.Line.ToString() + ": " + s.ErrorNumber + " - " + s.ErrorText).ToArray()));
script = results.CompiledAssembly.EntryPoint;
cseditrun.Text = "Stop"; cseditrun.Text = "Stop";
cseditexecutor.RunWorkerAsync(); script = new Thread(() =>
{
try
{
_ = results.CompiledAssembly.EntryPoint.Invoke(null, null);
}
finally
{
Invoke((MethodInvoker)delegate ()
{
cseditrun.Text = "Run";
});
}
});
script.Start();
csediterrors.Text = "Ready"; csediterrors.Text = "Ready";
} }
catch (Exception e1) catch (Exception e1)
@ -205,10 +226,7 @@ namespace cashew
csediterrors.Text = e1.Message; csediterrors.Text = e1.Message;
} }
} }
else cseditrun.Text = script.ThreadState == System.Threading.ThreadState.Running ? "Stop" : "Run";
{
cseditexecutor.CancelAsync();
}
} }
private void cseditopen_Click(object sender, EventArgs e) private void cseditopen_Click(object sender, EventArgs e)
@ -225,9 +243,9 @@ namespace cashew
cseditcodel = tmp[0]; cseditcodel = tmp[0];
cseditrefl = tmp[1]; cseditrefl = tmp[1];
if (cseditref.Text == "References") if (cseditref.Text == "References")
cseditcode.Text = string.Join("\r\n", cseditcodel); cseditCode.Text = string.Join("\r\n", cseditcodel);
else else
cseditcode.Text = string.Join("\r\n", cseditrefl); cseditCode.Text = string.Join("\r\n", cseditrefl);
} }
else else
{ {
@ -235,9 +253,9 @@ namespace cashew
cseditcodel = decompiler.DecompileWholeModuleAsString().Split(new string[] { "\r\n" }, StringSplitOptions.None); cseditcodel = decompiler.DecompileWholeModuleAsString().Split(new string[] { "\r\n" }, StringSplitOptions.None);
cseditrefl = new string[] { }; cseditrefl = new string[] { };
if (cseditref.Text == "References") if (cseditref.Text == "References")
cseditcode.Text = string.Join("\r\n", cseditcodel); cseditCode.Text = string.Join("\r\n", cseditcodel);
else else
cseditcode.Text = string.Join("\r\n", cseditrefl); cseditCode.Text = string.Join("\r\n", cseditrefl);
} }
} }
catch (Exception e1) catch (Exception e1)
@ -251,28 +269,20 @@ namespace cashew
{ {
if (cseditref.Text == "References") if (cseditref.Text == "References")
{ {
cseditcodel = cseditcode.Text.Split(new string[] { "\r\n" }, StringSplitOptions.None); cseditcodel = cseditCode.Text.Split(new string[] { "\r\n" }, StringSplitOptions.None);
cseditcode.Text = string.Join("\r\n", cseditrefl); cseditCode.Text = string.Join("\r\n", cseditrefl);
cseditcode.Refresh(); cseditCode.Refresh();
cseditref.Text = "Code"; cseditref.Text = "Code";
} }
else else
{ {
cseditrefl = cseditcode.Text.Split(new string[] { "\r\n" }, StringSplitOptions.None); cseditrefl = cseditCode.Text.Split(new string[] { "\r\n" }, StringSplitOptions.None);
cseditcode.Text = string.Join("\r\n", cseditcodel); cseditCode.Text = string.Join("\r\n", cseditcodel);
cseditcode.Refresh(); cseditCode.Refresh();
cseditref.Text = "References"; cseditref.Text = "References";
} }
} }
private void cseditexecutor_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
{
if (!cseditexecutor.CancellationPending)
_ = script.Invoke(null, null);
}
private void cseditexecutor_RunWorkerCompleted(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e) => cseditrun.Text = "Run";
#endregion CS #endregion CS
#region HTML #region HTML
@ -514,19 +524,23 @@ namespace cashew
private void pythonRun_Click(object sender, EventArgs e) private void pythonRun_Click(object sender, EventArgs e)
{ {
ScriptEngine engine = Python.CreateEngine(); new Thread(() =>
try
{ {
engine.Execute(pythonCode.Text); ScriptEngine engine = Python.CreateEngine();
} try
catch (Exception e1) {
{ engine.Execute(pythonCode.Text);
MetroMessageBox.Show(this, e1.Message, "Execution Failed", MessageBoxButtons.OK, MessageBoxIcon.Error); }
} catch (Exception e1)
{
Invoke((MethodInvoker)delegate ()
{
MetroMessageBox.Show(this, e1.Message, "Execution Failed", MessageBoxButtons.OK, MessageBoxIcon.Error);
});
}
}).Start();
} }
#endregion Python #endregion Python
} }
} }
//Fix HTML Tab; Add syntax tree to cs?

View File

@ -146,9 +146,6 @@ IF YOU WANT A PROFESSIONAL PROGRAM, DON'T USE THIS!</value>
<metadata name="csOpenFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="csOpenFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>153, 17</value> <value>153, 17</value>
</metadata> </metadata>
<metadata name="cseditexecutor.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>293, 17</value>
</metadata>
<metadata name="htmlOptionsMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="htmlOptionsMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>423, 17</value> <value>423, 17</value>
</metadata> </metadata>