2019-11-29 22:55:54 +01:00
using CC_Functions.Misc ;
using ICSharpCode.Decompiler ;
2019-11-29 22:32:24 +01:00
using ICSharpCode.Decompiler.CSharp ;
2019-12-01 14:54:38 +01:00
using ICSharpCode.TextEditor ;
2019-11-29 22:32:24 +01:00
using ICSharpCode.TextEditor.Document ;
using IronPython.Hosting ;
2018-08-28 14:55:27 +02:00
using MetroFramework ;
using MetroFramework.Forms ;
2019-11-29 22:32:24 +01:00
using MetroFramework.Interfaces ;
using Microsoft.CSharp ;
using Microsoft.Scripting.Hosting ;
using System ;
using System.CodeDom.Compiler ;
2018-11-28 21:08:43 +01:00
using System.Collections.Generic ;
2019-11-29 22:32:24 +01:00
using System.Drawing ;
using System.IO ;
using System.IO.Compression ;
2018-11-28 21:08:43 +01:00
using System.Linq ;
using System.Reflection ;
2019-09-10 11:20:36 +02:00
using System.Runtime.Serialization.Formatters.Binary ;
2019-11-29 22:55:54 +01:00
using System.Threading ;
2019-11-29 22:32:24 +01:00
using System.Windows.Forms ;
2019-12-01 14:54:38 +01:00
using System.Xml.Linq ;
2019-11-29 23:17:46 +01:00
using ThreadState = System . Threading . ThreadState ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
#pragma warning disable IDE1006
2018-11-28 21:08:43 +01:00
2019-11-29 22:32:24 +01:00
namespace cashew
{
public partial class MainForm : MetroForm
{
2018-08-28 14:55:27 +02:00
#region General
2019-11-29 23:56:28 +01:00
private readonly ThreadState [ ] runningStates = new ThreadState [ ] { ThreadState . Background , ThreadState . Running , ThreadState . StopRequested , ThreadState . WaitSleepJoin } ;
private readonly IMetroControl [ ] metroControls ;
private readonly Control [ ] normalControls ;
private readonly ToolStripMenuItem [ ] menuItems ;
2019-11-29 22:32:24 +01:00
private string [ ] cseditcodel ;
private string [ ] cseditrefl ;
public MainForm ( )
{
2019-11-29 23:56:28 +01:00
using ( Splash splash = new Splash ( ) )
{
splash . Show ( ) ;
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 ,
2018-11-28 21:08:43 +01:00
pythonSave , pythonRun , pythonOpen } ;
2019-11-29 23:56:28 +01:00
normalControls = new Control [ ] { htmlSep , htmldisplay , cseditCode , pythonCode , htmlText } ;
menuItems = new ToolStripMenuItem [ ] { hTMLToolStripMenuItem , javaScriptToolStripMenuItem , cSSToolStripMenuItem , pHPToolStripMenuItem , hTMLStructureSetupToolStripMenuItem , javaStructureSetupToolStripMenuItem , cSSStructureSetupToolStripMenuItem , pHPStructureSetupToolStripMenuItem , linkToolStripMenuItem , imageToolStripMenuItem , textToolStripMenuItem , tableToolStripMenuItem ,
2018-08-28 14:55:27 +02:00
listsToolStripMenuItem , functionToolStripMenuItem , textToolStripMenuItem1 , alertBoxToolStripMenuItem , timeoutToolStripMenuItem , randomNumberToolStripMenuItem , cSSCustomizeTagToolStripMenuItem , cSSCustomTagPropertiesToolStripMenuItem , textToolStripMenuItem3 , headingsToolStripMenuItem , boldbToolStripMenuItem , underlineuToolStripMenuItem , italiciToolStripMenuItem ,
deleteddelToolStripMenuItem , subscriptedSubToolStripMenuItem , superscriptedsupToolStripMenuItem , tableFormatSetupToolStripMenuItem , tableHeadingthToolStripMenuItem , newHorizontalItemtdToolStripMenuItem , newRowtrToolStripMenuItem , orderedListSetupolToolStripMenuItem , unorderedListSetupulToolStripMenuItem , listItemliToolStripMenuItem , heading1h1ToolStripMenuItem ,
heading2h2ToolStripMenuItem , heading3h3ToolStripMenuItem , heading4h4ToolStripMenuItem , heading5h5ToolStripMenuItem , heading6h6ToolStripMenuItem , textToolStripMenuItem2 , backgroundToolStripMenuItem , backgroundRepeatToolStripMenuItem , backgroundPositionToolStripMenuItem , backgroundImageToolStripMenuItem , backgroundColorToolStripMenuItem , backgroundAttachmentToolStripMenuItem ,
fontToolStripMenuItem , sizeToolStripMenuItem , weightToolStripMenuItem , colorToolStripMenuItem , directionToolStripMenuItem , lineHeightToolStripMenuItem , alignToolStripMenuItem , letterSpacingToolStripMenuItem , decorationToolStripMenuItem , indentToolStripMenuItem , shadowToolStripMenuItem , transformToolStripMenuItem , wordspacingToolStripMenuItem , centercenterToolStripMenuItem ,
paragraphpToolStripMenuItem } ;
2019-11-29 23:56:28 +01:00
cseditrefl = new string [ 1 ] { "System.Windows.Forms.dll" } ;
htmldisplay . DocumentText = htmlText . Text ;
metroToggle1_CheckedChanged ( this , new EventArgs ( ) ) ;
languageTabControl . SelectedTab = infotab ;
splash . Hide ( ) ;
}
2019-11-29 22:55:54 +01:00
cseditCode . SetHighlighting ( "C#" ) ;
pythonCode . SetHighlighting ( "Python" ) ;
htmlText . SetHighlighting ( "HTML" ) ;
2019-12-01 14:54:38 +01:00
if ( Directory . Exists ( Path . Combine ( Path . GetTempPath ( ) , "Cashew" ) ) )
Directory . Delete ( Path . Combine ( Path . GetTempPath ( ) , "Cashew" ) , true ) ;
using ( MemoryStream ms = new MemoryStream ( Resources . IronPythonBCL ) )
using ( ZipArchive ar = new ZipArchive ( ms ) )
{
ar . ExtractToDirectory ( Path . Combine ( Path . GetTempPath ( ) , "Cashew\\Python" ) ) ;
}
2019-12-01 15:14:40 +01:00
infoPanel . Text = "This Program uses:" + string . Join ( "" , XDocument . Parse ( Resources . packages ) . Element ( "packages" ) . Elements ( "package" ) . Select ( s = > "\r\n- " + s . Attribute ( "id" ) . Value + " " + s . Attribute ( "version" ) . Value ) . OrderBy ( s = > s ) ) ;
2018-08-28 14:55:27 +02:00
}
2019-09-10 11:20:36 +02:00
private void MAIN_Load ( object sender , EventArgs e ) = > BringToFront ( ) ;
2019-11-29 22:32:24 +01:00
private void metroToggle1_CheckedChanged ( object sender , EventArgs e )
{
if ( nightmodeToggle . Checked )
{
2018-08-28 14:55:27 +02:00
Theme = MetroThemeStyle . Dark ;
Style = MetroColorStyle . Magenta ;
2019-11-29 22:32:24 +01:00
}
else
{
2018-08-28 14:55:27 +02:00
Theme = MetroThemeStyle . Light ;
Style = MetroColorStyle . Blue ;
}
2019-11-29 22:32:24 +01:00
foreach ( IMetroControl c in metroControls )
{
2018-08-28 14:55:27 +02:00
c . Style = Style ;
c . Theme = Theme ;
}
2019-11-29 22:32:24 +01:00
foreach ( Control c in normalControls )
{
if ( Theme = = MetroThemeStyle . Dark )
{
2018-08-28 14:55:27 +02:00
c . BackColor = Color . Black ;
c . ForeColor = Color . Black ;
2019-11-29 22:32:24 +01:00
}
else
{
2018-08-28 14:55:27 +02:00
c . BackColor = Color . White ;
c . ForeColor = Color . White ;
}
}
2019-11-29 22:32:24 +01:00
foreach ( ToolStripMenuItem t in menuItems )
{
if ( Theme = = MetroThemeStyle . Dark )
{
2018-08-28 14:55:27 +02:00
t . BackColor = Color . Black ;
t . ForeColor = Color . FromArgb ( 255 , 0 , 151 ) ;
}
2019-11-29 22:32:24 +01:00
else
{
2018-08-28 14:55:27 +02:00
t . BackColor = Color . White ;
t . ForeColor = Color . FromArgb ( 45 , 137 , 239 ) ;
}
}
Refresh ( ) ;
}
2019-11-29 22:32:24 +01:00
2019-11-29 23:17:46 +01:00
private void buttonFix_Tick ( object sender , EventArgs e )
{
pythonRun . Text = pythonScript ! = null & & runningStates . Contains ( pythonScript . ThreadState ) ? "Stop" : "Run" ;
cseditrun . Text = csScript ! = null & & runningStates . Contains ( csScript . ThreadState ) ? "Stop" : "Run" ;
2019-11-29 23:33:32 +01:00
htmlOptionsTile . Enabled = htmlText . ActiveTextAreaControl . TextArea . SelectionManager . HasSomethingSelected ;
2019-11-29 23:17:46 +01:00
}
2019-11-29 22:32:24 +01:00
#endregion General
2018-09-09 09:49:07 +02:00
2018-08-28 14:55:27 +02:00
#region CS
2019-11-29 22:32:24 +01:00
2019-11-29 23:17:46 +01:00
Thread csScript ;
2019-11-29 22:32:24 +01:00
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 cseditsave_Click ( object sender , EventArgs e )
{
if ( csSaveFileDialog . ShowDialog ( ) = = DialogResult . OK )
{
try
{
if ( csSaveFileDialog . FilterIndex = = 1 )
{
if ( cseditref . Text = = "Code" )
{
2019-11-29 22:55:54 +01:00
cseditrefl = cseditCode . Text . Split ( new string [ ] { "\r\n" } , StringSplitOptions . None ) ;
2019-11-29 22:32:24 +01:00
}
else
{
2019-11-29 22:55:54 +01:00
cseditcodel = cseditCode . Text . Split ( new string [ ] { "\r\n" } , StringSplitOptions . None ) ;
2019-11-29 22:32:24 +01:00
}
Stream s = File . OpenWrite ( csSaveFileDialog . FileName ) ;
new BinaryFormatter ( ) . Serialize ( s , new string [ ] [ ] { cseditcodel , cseditrefl } ) ;
s . Dispose ( ) ;
}
else
{
2019-11-29 23:56:28 +01:00
File . Copy ( compileCS ( false ) . PathToAssembly , csSaveFileDialog . FileName ) ;
2018-08-28 14:55:27 +02:00
}
2019-11-29 22:32:24 +01:00
}
catch ( Exception e1 )
{
MetroMessageBox . Show ( this , e1 . Message , "Failed to Save" , MessageBoxButtons . OK , MessageBoxIcon . Error ) ;
2018-08-28 14:55:27 +02:00
}
}
}
2019-11-29 22:32:24 +01:00
private void cseditrun_Click ( object sender , EventArgs e )
{
2019-11-29 23:17:46 +01:00
if ( ( csScript ! = null ) & & runningStates . Contains ( csScript . ThreadState ) )
2019-11-29 22:55:54 +01:00
{
2019-11-29 23:17:46 +01:00
csScript . Abort ( ) ;
2019-11-29 22:55:54 +01:00
}
else
2019-11-29 22:32:24 +01:00
{
try
{
2019-11-29 23:56:28 +01:00
CompilerResults results = compileCS ( ) ;
2018-08-28 14:55:27 +02:00
cseditrun . Text = "Stop" ;
2019-11-29 23:56:28 +01:00
csScript = new Thread ( ( ) = >
2019-11-29 22:55:54 +01:00
{
2019-11-29 23:56:28 +01:00
try
{
_ = results . CompiledAssembly . EntryPoint . Invoke ( null , null ) ;
}
catch ( Exception e1 )
{
if ( ! e1 . tryCast ( out ThreadAbortException ex ) )
Invoke ( ( MethodInvoker ) delegate ( )
{
MetroMessageBox . Show ( this , e1 . Message , "Execution Failed" , MessageBoxButtons . OK , MessageBoxIcon . Error ) ;
} ) ;
}
} ) ;
2019-11-29 23:17:46 +01:00
csScript . Start ( ) ;
2018-08-28 14:55:27 +02:00
csediterrors . Text = "Ready" ;
2019-11-29 22:32:24 +01:00
}
catch ( Exception e1 )
{
2018-08-28 14:55:27 +02:00
csediterrors . Text = e1 . Message ;
}
2019-11-29 22:32:24 +01:00
}
2018-08-28 14:55:27 +02:00
}
2019-11-29 22:32:24 +01:00
2019-11-29 23:56:28 +01:00
private CompilerResults compileCS ( bool memory = true )
{
csediterrors . Text = "" ;
if ( cseditref . Text = = "Code" )
{
cseditrefl = cseditCode . Text . Split ( new string [ ] { "\r\n" } , StringSplitOptions . None ) ;
}
else
{
cseditcodel = cseditCode . Text . Split ( new string [ ] { "\r\n" } , StringSplitOptions . None ) ;
}
CompilerParameters parameters = new CompilerParameters
{
GenerateInMemory = memory ,
GenerateExecutable = true ,
} ;
parameters . ReferencedAssemblies . AddRange ( cseditrefl ) ;
CompilerResults results ;
using ( CSharpCodeProvider provider = new CSharpCodeProvider ( ) )
{
results = provider . CompileAssemblyFromSource ( parameters , string . Join ( "\r\n" , cseditcodel ) ) ;
if ( results . Errors . HasErrors )
2019-12-01 14:54:38 +01:00
{
IEnumerable < CompilerError > err = results . Errors . OfType < CompilerError > ( ) ;
/ * err . ToList ( ) . ForEach ( s = >
{
TextMarker marker = new TextMarker ( 0 , 5 , TextMarkerType . WaveLine , Color . Red ) ;
cseditCode . Document . MarkerStrategy . AddMarker ( marker ) ;
} ) ;
cseditCode . Update ( ) ; * /
throw new InvalidOperationException ( string . Join ( "\r\n\r\n" ,
err . Select ( s = > "Error in line " + s . Line . ToString ( ) + ": " + s . ErrorNumber + " - " + s . ErrorText ) . ToArray ( ) ) ) ;
}
2019-11-29 23:56:28 +01:00
}
return results ;
}
2019-11-29 22:32:24 +01:00
private void cseditopen_Click ( object sender , EventArgs e )
{
if ( csOpenFileDialog . ShowDialog ( ) = = DialogResult . OK )
{
try
{
if ( csOpenFileDialog . FilterIndex = = 1 )
{
2019-09-10 11:20:36 +02:00
Stream s = File . OpenRead ( csOpenFileDialog . FileName ) ;
string [ ] [ ] tmp = ( string [ ] [ ] ) new BinaryFormatter ( ) . Deserialize ( s ) ;
s . Dispose ( ) ;
2018-11-28 21:08:43 +01:00
cseditcodel = tmp [ 0 ] ;
cseditrefl = tmp [ 1 ] ;
if ( cseditref . Text = = "References" )
2019-11-29 22:55:54 +01:00
cseditCode . Text = string . Join ( "\r\n" , cseditcodel ) ;
2018-11-28 21:08:43 +01:00
else
2019-11-29 22:55:54 +01:00
cseditCode . Text = string . Join ( "\r\n" , cseditrefl ) ;
2019-11-29 22:32:24 +01:00
}
else
{
2018-11-28 21:08:43 +01:00
CSharpDecompiler decompiler = new CSharpDecompiler ( csOpenFileDialog . FileName , new DecompilerSettings ( ) ) ;
2019-09-10 11:20:36 +02:00
cseditcodel = decompiler . DecompileWholeModuleAsString ( ) . Split ( new string [ ] { "\r\n" } , StringSplitOptions . None ) ;
2019-11-29 23:56:28 +01:00
cseditrefl = Assembly . LoadFrom ( csOpenFileDialog . FileName )
. GetReferencedAssemblies ( ) . Where ( s = > ! new string [ ] { "mscorlib" } . Contains ( s . Name ) )
. Select ( s = > string . IsNullOrWhiteSpace ( s . CodeBase ) ? ( s . Name + ".dll" ) : s . CodeBase ) . ToArray ( ) ;
2018-11-28 21:08:43 +01:00
if ( cseditref . Text = = "References" )
2019-11-29 22:55:54 +01:00
cseditCode . Text = string . Join ( "\r\n" , cseditcodel ) ;
2018-11-28 21:08:43 +01:00
else
2019-11-29 22:55:54 +01:00
cseditCode . Text = string . Join ( "\r\n" , cseditrefl ) ;
2018-08-28 14:55:27 +02:00
}
2019-11-29 22:32:24 +01:00
}
catch ( Exception e1 )
{
MetroMessageBox . Show ( this , e1 . ToString ( ) , "Failed to Load" , MessageBoxButtons . OK , MessageBoxIcon . Error ) ;
2018-08-28 14:55:27 +02:00
}
}
}
2019-11-29 22:32:24 +01:00
private void cseditref_Click ( object sender , EventArgs e )
{
if ( cseditref . Text = = "References" )
{
2019-11-29 22:55:54 +01:00
cseditcodel = cseditCode . Text . Split ( new string [ ] { "\r\n" } , StringSplitOptions . None ) ;
cseditCode . Text = string . Join ( "\r\n" , cseditrefl ) ;
cseditCode . Refresh ( ) ;
2018-08-28 14:55:27 +02:00
cseditref . Text = "Code" ;
2019-11-29 22:32:24 +01:00
}
else
{
2019-11-29 22:55:54 +01:00
cseditrefl = cseditCode . Text . Split ( new string [ ] { "\r\n" } , StringSplitOptions . None ) ;
cseditCode . Text = string . Join ( "\r\n" , cseditcodel ) ;
cseditCode . Refresh ( ) ;
2018-08-28 14:55:27 +02:00
cseditref . Text = "References" ;
}
}
2019-11-29 22:32:24 +01:00
#endregion CS
2018-08-28 14:55:27 +02:00
#region HTML
2019-11-29 22:32:24 +01:00
2019-11-29 23:33:32 +01:00
private Point sels = Point . Empty ;
private Point sele = Point . Empty ;
private bool htmlHasSelection = false ;
2019-11-29 22:32:24 +01:00
private bool UpdateHTML = true ;
private void htmldisplay_DocumentCompleted ( object sender , WebBrowserDocumentCompletedEventArgs e )
{
2018-08-28 14:55:27 +02:00
htmlLoadIndicator . Visible = false ;
htmltitle . Text = htmldisplay . DocumentTitle ;
}
private void metroToggle2_CheckedChanged ( object sender , EventArgs e ) = > UpdateHTML = htmlUpdateToggle . Checked ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void htmldisplay_Navigating ( object sender , WebBrowserNavigatingEventArgs e ) = > htmlLoadIndicator . Visible = true ;
2019-09-10 11:20:36 +02:00
private void HtmlText_TextChanged_1 ( object sender , EventArgs e )
{
if ( UpdateHTML )
{
2018-11-28 21:08:43 +01:00
htmldisplay . DocumentText = htmlText . Text ;
2018-08-28 14:55:27 +02:00
htmltitle . Text = htmldisplay . DocumentTitle ;
}
}
2019-11-29 22:32:24 +01:00
private void htmlRefreshTile_Click ( object sender , EventArgs e )
{
2018-11-28 21:08:43 +01:00
htmldisplay . DocumentText = htmlText . Text ;
2018-08-28 14:55:27 +02:00
htmltitle . Text = htmldisplay . DocumentTitle ;
}
private void htmlOptionsTile_Click ( object sender , EventArgs e ) = > htmlOptionsMenu . Show ( htmlOptionsTile . Location ) ;
2019-11-29 22:32:24 +01:00
private void htmlOptionsTile_MouseEnter ( object sender , EventArgs e )
{
2019-11-29 23:33:32 +01:00
htmlHasSelection = htmlText . ActiveTextAreaControl . TextArea . SelectionManager . HasSomethingSelected ;
if ( htmlHasSelection )
2019-11-29 22:32:24 +01:00
{
2018-11-28 21:08:43 +01:00
ISelection sel = htmlText . ActiveTextAreaControl . SelectionManager . SelectionCollection [ 0 ] ;
2019-11-29 23:33:32 +01:00
sels . Y = sel . StartPosition . Line ;
sels . X = sel . StartPosition . Column ;
sele . Y = sel . EndPosition . Line ;
sele . X = sel . EndPosition . Column ;
2019-11-29 22:32:24 +01:00
}
2018-08-28 14:55:27 +02:00
}
2019-11-29 22:32:24 +01:00
private void addToHTMLBox ( string inFront , string atEnd )
{
2019-11-29 23:33:32 +01:00
if ( htmlHasSelection )
{
List < string > temp = htmlText . Text . Split ( new string [ ] { "\r\n" } , StringSplitOptions . None ) . ToList ( ) ;
temp [ sele . Y ] = temp [ sele . Y ] . Insert ( sele . X , atEnd ) ;
temp [ sels . Y ] = temp [ sels . Y ] . Insert ( sels . X , inFront ) ;
htmlText . Text = string . Join ( "\r\n" , temp . ToArray ( ) ) ;
}
2018-08-28 14:55:27 +02:00
}
2019-11-29 22:32:24 +01:00
private void htmlSave_Click ( object sender , EventArgs e )
{
if ( htmlSaveFileDialog . ShowDialog ( ) = = DialogResult . OK )
{
try
{
2019-09-10 11:20:36 +02:00
File . WriteAllText ( htmlSaveFileDialog . FileName , htmlText . Text ) ;
2019-11-29 22:32:24 +01:00
}
catch ( Exception e1 )
{
MetroMessageBox . Show ( this , e1 . Message , "Saving Failed" , MessageBoxButtons . OK , MessageBoxIcon . Error ) ;
2018-08-28 14:55:27 +02:00
}
}
}
2019-11-29 22:32:24 +01:00
private void htmlLoad_Click ( object sender , EventArgs e )
{
if ( htmlOpenFileDialog . ShowDialog ( ) = = DialogResult . OK )
{
try
{
2019-09-10 11:20:36 +02:00
htmlText . Text = File . ReadAllText ( htmlOpenFileDialog . FileName ) ;
2019-11-29 22:32:24 +01:00
}
catch ( Exception e1 )
{
MetroMessageBox . Show ( this , e1 . Message , "Loading Failed" , MessageBoxButtons . OK , MessageBoxIcon . Error ) ;
2018-08-28 14:55:27 +02:00
}
}
}
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
#region Menu - HTML
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void hTMLStructureSetupToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "<html>\r\n<head>\r\n<title>Title</title>\r\n</head>\r\n<body>\r\n" , "\r\n</body>\r\n</html>" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void linkToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "<a href='http://www.example.com'>" , "</a>" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void imageToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "<img scr='" , "' alt='Alternative Text'" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void centercenterToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "<center>" , "</center>" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void heading1h1ToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "<h1>" , "</h1>" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void heading2h2ToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "<h2>" , "</h2>" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void heading3h3ToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "<h3>" , "</h3>" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void heading4h4ToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "<h4>" , "</h4>" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void heading5h5ToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "<h5>" , "</h5>" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void heading6h6ToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "<h6>" , "</h6>" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void paragraphpToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "<p>" , "</p>" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void boldbToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "<b>" , "</b>" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void underlineuToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "<u>" , "</u>" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void italiciToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "<i>" , "</i>" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void deleteddelToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "<del>" , "</del>" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void subscriptedSubToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "<sub>" , "</sub>" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void superscriptedsupToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "<sup>" , "</sup>" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void tableFormatSetupToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "<table border='1'>\r\n" , "\r\n</table>" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void tableHeadingthToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "<th>" , "</th>" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void newRowtrToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "<tr>" , "" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void newHorizontalItemtdToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "<td>" , "</td>" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void orderedListSetupolToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "<ol>\r\n" , "\r\n</ol>" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void unorderedListSetupulToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "<ul>\r\n" , "</ul>\r\n" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void listItemliToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "<li>" , "</li>" ) ;
2019-11-29 22:32:24 +01:00
#endregion Menu - HTML
2018-08-28 14:55:27 +02:00
#region Menu - Java
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void javaStructureSetupToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "<script type = 'text/javascript'>\r\n" , "\r\n</script>" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void functionToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "function " , "()\r\n{\r\n\r\n}" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void textToolStripMenuItem1_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "document.write('" , "')" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void alertBoxToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "alert('" , "')" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void timeoutToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "setTimeout('" , "',TIME HERE)" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void randomNumberToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "Math.floor(Math.random()*MAXIMUM HERE)+MINIMUM HERE" , "" ) ;
2019-11-29 22:32:24 +01:00
#endregion Menu - Java
2018-08-28 14:55:27 +02:00
#region Menu - CSS
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void cSSStructureSetupToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "<style type='text/css'>\r\n" , "\r\n</style>" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void cSSCustomizeTagToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "" , "\r\n{\r\n\r\n}" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void backgroundAttachmentToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "background-attachment:" , ";" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void backgroundColorToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "background-color:" , ";" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void backgroundImageToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "background-image:url('" , "');" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void backgroundPositionToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "background-position:" , ";" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void backgroundRepeatToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "background-repeat:" , ";" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void fontToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "font-family:'" , "';" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void sizeToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "font-size:" , ";" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void weightToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "font-weight:" , ";" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void colorToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "color:" , ";" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void directionToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "direction:" , ";" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void lineHeightToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "line-height:" , ";" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void letterSpacingToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "letter-spacing:" , ";" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void alignToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "text-align:" , ";" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void decorationToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "text-decoration:" , ";" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void indentToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "text-indent:" , ";" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void shadowToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "text-shadow: COLOR_HERE X_IN_PX Y_IN_PX RADIUS_IN_PX;" , "" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void transformToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "text-transform:" , ";" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void wordspacingToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "word-spacing:" , ";" ) ;
2019-11-29 22:32:24 +01:00
#endregion Menu - CSS
2018-08-28 14:55:27 +02:00
#region Menu - PHP
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void pHPStructureSetupToolStripMenuItem_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "<?php\r\n" , "\r\n?>" ) ;
2019-11-29 22:32:24 +01:00
2018-08-28 14:55:27 +02:00
private void textToolStripMenuItem3_Click ( object sender , EventArgs e ) = > addToHTMLBox ( "echo '" , "';" ) ;
2019-11-29 22:32:24 +01:00
#endregion Menu - PHP
#endregion HTML
2018-08-28 14:55:27 +02:00
#region Python
2019-11-29 23:17:46 +01:00
Thread pythonScript ;
2019-11-29 22:32:24 +01:00
private void pythonOpen_Click ( object sender , EventArgs e )
{
if ( pythonOpenFileDialog . ShowDialog ( ) = = DialogResult . OK )
{
try
{
2019-09-10 11:20:36 +02:00
pythonCode . Text = File . ReadAllText ( pythonOpenFileDialog . FileName ) ;
2019-11-29 22:32:24 +01:00
}
catch ( Exception e1 )
{
MetroMessageBox . Show ( this , e1 . Message , "Loading Failed" , MessageBoxButtons . OK , MessageBoxIcon . Error ) ;
2018-09-09 09:49:07 +02:00
}
}
}
2019-11-29 22:32:24 +01:00
private void pythonSave_Click ( object sender , EventArgs e )
{
if ( pythonSaveFileDialog . ShowDialog ( ) = = DialogResult . OK )
{
try
{
2019-09-10 11:20:36 +02:00
File . WriteAllText ( pythonSaveFileDialog . FileName , pythonCode . Text ) ;
2018-09-09 09:49:07 +02:00
}
2019-11-29 22:32:24 +01:00
catch ( Exception e1 )
{
MetroMessageBox . Show ( this , e1 . Message , "Saving Failed" , MessageBoxButtons . OK , MessageBoxIcon . Error ) ;
2018-09-09 09:49:07 +02:00
}
}
}
2019-11-29 22:32:24 +01:00
private void pythonRun_Click ( object sender , EventArgs e )
{
2019-11-29 23:17:46 +01:00
if ( ( pythonScript ! = null ) & & runningStates . Contains ( pythonScript . ThreadState ) )
2019-11-29 22:32:24 +01:00
{
2019-11-29 23:17:46 +01:00
pythonScript . Abort ( ) ;
}
else
{
pythonScript = new Thread ( ( ) = >
2019-11-29 22:55:54 +01:00
{
2019-11-29 23:17:46 +01:00
ScriptEngine engine = Python . CreateEngine ( ) ;
2019-12-01 14:54:38 +01:00
engine . SetSearchPaths ( new string [ ] { Path . Combine ( Path . GetTempPath ( ) , "Cashew\\Python" ) } ) ;
2019-11-29 23:17:46 +01:00
try
2019-11-29 22:55:54 +01:00
{
2019-11-29 23:17:46 +01:00
engine . Execute ( pythonCode . Text ) ;
}
catch ( Exception e1 )
{
if ( ! e1 . tryCast ( out ThreadAbortException ex ) )
Invoke ( ( MethodInvoker ) delegate ( )
{
MetroMessageBox . Show ( this , e1 . Message , "Execution Failed" , MessageBoxButtons . OK , MessageBoxIcon . Error ) ;
} ) ;
}
} ) ;
pythonScript . Start ( ) ;
}
2018-09-09 09:49:07 +02:00
}
2019-11-29 22:32:24 +01:00
#endregion Python
2019-12-01 14:54:38 +01:00
private void MainForm_FormClosed ( object sender , FormClosedEventArgs e )
{
if ( Directory . Exists ( Path . Combine ( Path . GetTempPath ( ) , "Cashew" ) ) )
Directory . Delete ( Path . Combine ( Path . GetTempPath ( ) , "Cashew" ) , true ) ;
}
2018-08-28 14:55:27 +02:00
}
2019-11-29 22:55:54 +01:00
}