using BeDesignerSCADA.Helper; using Microsoft.Win32; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace BeDesignerSCADA.Controls { /// /// CodeCanvasPanel.xaml 的交互逻辑 /// public partial class CodeCanvasPanel : UserControl { public CodeCanvasPanel() { InitializeComponent(); } #region 变量 string _currentFile; public string File { get { if (string.IsNullOrEmpty(_currentFile)) _currentFile = IniFile.ReadValue("Editor", "LastOpen"); return _currentFile; } set { _currentFile = value; IniFile.WriteValue("Editor", "LastOpen", value); } } string _lastFolder = null; public string LastFolder { get { if (string.IsNullOrEmpty(_lastFolder)) { _lastFolder = IniFile.ReadValue("Editor", "LastFolder"); } if (string.IsNullOrEmpty(_lastFolder)) { _lastFolder = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "VisualCodeEditor"); } return _lastFolder; } set { _lastFolder = value; IniFile.WriteValue("Editor", "LastFolder", value); } } #endregion #region 操作按钮 private void OnNew(object sender, RoutedEventArgs e) { e.Handled = true; File = null; //Title = "Visual Code Editor"; //using (var stream = GetType().Assembly.GetManifestResourceStream("ScratchNet.scripts.main.vsc")) //{ // //Script script = Serialization.Load(stream) as Script; // //SetupScriptToolbar(script); // //Editor.Script = script; // stream.Close(); //} //Editor.IsEnabled = true; ButtonOpen.IsEnabled = true; ButtonSave.IsEnabled = true; ButtonStart.IsEnabled = true; ButtonSaveAs.IsEnabled = true; ButtonPrint.IsEnabled = true; //Editor.IsModified = true; } private void OnOpen(object sender, RoutedEventArgs e) { e.Handled = true; OpenFileDialog dlg = new OpenFileDialog(); dlg.DefaultExt = ".vsc"; dlg.Filter = "Visual Script Files (*.vsc)|*.vsc|All Files (*.*)|*.*"; dlg.Multiselect = false; dlg.InitialDirectory = LastFolder; Nullable result = dlg.ShowDialog(); if (result == true) { //Editor.Script = null; //Editor.IsEnabled = false; //File = dlg.FileName; //LastFolder = new FileInfo(dlg.FileName).DirectoryName; //try //{ // Script script = Serialization.Load(File) as Script; // SetupScriptToolbar(script); // Editor.Script = script; // if (script == null) // return; // this.Title = Properties.Resources.VisualCodeEditor + " - " + File; // Editor.IsModified = false; // ShowMessage(toast.ShowSuccess, string.Format(Properties.Resources.SuccessLodFile, File)); //} //catch (Exception ex) //{ // MessageBox.Show(string.Format(Properties.Resources.ExceptionLoadFile, File)); // return; //} //Editor.IsEnabled = true; ButtonOpen.IsEnabled = true; ButtonSave.IsEnabled = true; ButtonStart.IsEnabled = true; ButtonSaveAs.IsEnabled = true; ButtonPrint.IsEnabled = true; ButtonStart.IsEnabled = true; } } private void OnSave(object sender, RoutedEventArgs e) { //if (string.IsNullOrEmpty(File)) //{ // SaveFileDialog dlg = new SaveFileDialog(); // dlg.DefaultExt = ".vsc"; // dlg.Filter = "Visual Script Files (*.vsc)|*.vsc|All Files (*.*)|*.*"; // //dlg.Multiselect = false; // if (!string.IsNullOrEmpty(LastFolder)) // dlg.InitialDirectory = LastFolder; // Nullable result = dlg.ShowDialog(); // if (result != true) // { // return; // } // File = dlg.FileName; // Title = Properties.Resources.VisualCodeEditor + " - " + File; // LastFolder = new FileInfo(dlg.FileName).DirectoryName; //} //Serialization.Save((Script)Editor.Script, File); //ShowMessage(toast.ShowSuccess, string.Format(Properties.Resources.SuccessLodFile, File)); //Editor.IsModified = false; //ButtonOpen.IsEnabled = true; //ButtonSave.IsEnabled = true; //ButtonStart.IsEnabled = true; //ButtonSaveAs.IsEnabled = true; //ButtonPrint.IsEnabled = true; } private void OnSaveAs(object sender, RoutedEventArgs e) { //e.Handled = true; //SaveFileDialog dlg = new SaveFileDialog(); //dlg.DefaultExt = ".vsc"; //dlg.Filter = "Visual Script Files (*.vsc)|*.vsc|All Files (*.*)|*.*"; ////dlg.Multiselect = false; //dlg.InitialDirectory = LastFolder; //Nullable result = dlg.ShowDialog(); //if (result != true) //{ // return; //} //File = dlg.FileName; //LastFolder = new FileInfo(dlg.FileName).DirectoryName; //Serialization.Save((Script)Editor.Script, File); //Title = Properties.Resources.VisualCodeEditor + " - " + File; //ShowMessage(toast.ShowSuccess, string.Format(Properties.Resources.SuccessLodFile, File)); //Editor.IsModified = false; //ButtonOpen.IsEnabled = true; //ButtonSave.IsEnabled = true; //ButtonStart.IsEnabled = true; //ButtonSaveAs.IsEnabled = true; //ButtonPrint.IsEnabled = true; } private void OnPrint(object sender, RoutedEventArgs e) { //e.Handled = true; //Editor.Print(); } private void OnCopy(object sender, RoutedEventArgs e) { //Editor.Copy(); } private void OnPaste(object sender, RoutedEventArgs e) { //Editor.Paste(new Point()); } private void OnStartRun(object sender, RoutedEventArgs e) { //Editor.ClearHighlight(); //stackTrace.Clear(); ////check main function //bool hasMain = false; //foreach (var f in Editor.Script.Functions) //{ // if (f.Name.Equals("main", StringComparison.OrdinalIgnoreCase)) // { // hasMain = true; // break; // } //} //if (!hasMain) //{ // MessageBox.Show(Properties.Resources.MainNotFound, Properties.Resources.NoMain, MessageBoxButton.OK, MessageBoxImage.Warning); // return; //} //ButtonClearError.IsEnabled = false; //IsHighlightStep = ButtonHighligh.IsChecked.Value; //stackTrace.Clear(); //engine = new ExecutionEnvironment(); //engine.EnterNode += Engine_EnterNode; //engine.LeaveNode += Engine_LeaveNode; //ButtonStart.IsEnabled = false; //ButtonStop.IsEnabled = true; ////Editor.IsEnabled = false; //engine.ExecutionCompleted += Engine_ExecutionCompleted; //engine.ExecutionAborted += Engine_ExecutionAborted; //engine.ExecuteAsync(Editor.Script); //Console.WriteLine("Start run"); return; } private void OnStopRun(object sender, RoutedEventArgs e) { //if (engine != null) //{ // engine.EnterNode -= Engine_EnterNode; // engine.LeaveNode -= Engine_LeaveNode; // //Editor.IsEnabled = false; // engine.ExecutionCompleted -= Engine_ExecutionCompleted; // engine.ExecutionAborted -= Engine_ExecutionAborted; // engine.Stop(); // PrintLnStatement.Stop(); // engine = null; // ButtonStart.IsEnabled = true; // ButtonStop.IsEnabled = false; //} } private void OnClearError(object sender, RoutedEventArgs e) { //ButtonClearError.IsEnabled = false; //Editor.ClearHighlight(); } private void OnHighlightClicked(object sender, RoutedEventArgs e) { // IsHighlightStep = ButtonHighligh.IsChecked.Value; } private void OnSpeedValueChanged(object sender, RoutedPropertyChangedEventArgs e) { } #endregion } }