/// <summary> /// 创建代码事件 /// </summary> /// <param name="data"></param> private void TreeView_CreateCallback(IItemBox data) { if (mainContent.GetActiveDocument() != null) { StackingMainLayout script = mainContent.GetActiveDocument() as StackingMainLayout; script.DataTree_CreateCallback(data); } }
/// <summary> /// 删除一个脚本 /// </summary> /// <param name="script"></param> public void DelScript(StackingMainLayout script) { if (Scripts.Contains(script) == true) { Scripts.Remove(script); ItemRemoveEvent?.Invoke(script); } }
/// <summary> /// 添加一个脚本 /// </summary> /// <param name="script"></param> public void AddScript(StackingMainLayout script) { if (Scripts.Contains(script) == false) { Scripts.Add(script); ItemAddEvent?.Invoke(script); } }
/// <summary> /// 加载事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ScriptItem_Loaded(object sender, RoutedEventArgs e) { script = this.DataContext as StackingMainLayout; if (script != null) { script.PropertyChanged += Script_PropertyChanged; } }
/// <summary> /// 键盘按下 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void UserControl_KeyDown(object sender, KeyEventArgs e) { StackingMainLayout script = mainContent.GetActiveDocument() as StackingMainLayout; if (script != null) { script.IScriptLayout_KeyDown(script, e); } }
/// <summary> /// 添加一个脚本 /// </summary> /// <param name="script"></param> public StackingMainLayout AddScript() { IScriptLayout script = new IScriptLayout(); script.ScriptName = GetScriptName(); StackingMainLayout stackingMainLayout = StackingMainLayout.InstanceStackingMainLayout(script); Scripts.Add(stackingMainLayout); ItemAddEvent?.Invoke(stackingMainLayout); return(stackingMainLayout); }
/// <summary> /// 脚本删除事件 /// </summary> /// <param name="selectedItem"></param> private void ScriptControl_ItemRemoveEvent(object selectedItem) { StackingMainLayout script = selectedItem as StackingMainLayout; script.IItemBoxSelected -= IItemBoxSelected; script.ScriptLayout.ComipleMessageCall -= LogBox.WritLog; mainContent.DelUserExtendByKey(script.Id); script.ScriptLayout.ScriptBreakPoint -= ScriptBreakPoint; script.ScriptLayout.IScriptInterpreter.ScriptRequest -= ScriptRequest; script.ScriptLayout.IScriptInterpreter.ScriptReponse -= ScriptReponse; }
/// <summary> /// 脚本双击事件 /// </summary> /// <param name="selectedItem"></param> private void ScriptControl_ItemMouseDoubleClickEvent(object selectedItem) { StackingMainLayout script = selectedItem as StackingMainLayout; if (mainContent.GetUserExtendByKey(script.Id) != null) { mainContent.ShowPane(script.Id); } else { mainContent.AddUserControl(script.Id, script, Layout.Content, script.ScriptName); } PropertyItControl.SetIScriptLayout(script); mainContent.SetActiveDocument(script.Id); }
/// <summary> /// 脚本添加事件 /// </summary> /// <param name="selectedItem"></param> private void ScriptControl_ItemAddEvent(object selectedItem) { StackingMainLayout script = selectedItem as StackingMainLayout; if (script.IItemBoxSelected == null) { script.IItemBoxSelected += IItemBoxSelected; } if (script.ScriptLayout.ComipleMessageCall == null) { script.ScriptLayout.ComipleMessageCall = LogBox.WritLog; } script.ScriptLayout.ScriptBreakPoint += ScriptBreakPoint; script.ScriptLayout.IScriptInterpreter.ScriptRequest += ScriptRequest; script.ScriptLayout.IScriptInterpreter.ScriptReponse += ScriptReponse; }
/// <summary> /// 加载脚本 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Load_Click(object sender, RoutedEventArgs e) { System.Windows.Forms.OpenFileDialog openFileDialog = new System.Windows.Forms.OpenFileDialog(); openFileDialog.Filter = "脚本项目文件 (*.sProject)|*.sProject"; if (openFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { ScriptConfig = JsonConvert.DeserializeObject <ScriptConfig>(openFileDialog.FileName.GetStringFromFile()); string path = System.IO.Path.GetDirectoryName(openFileDialog.FileName); foreach (var item in ScriptConfig.ScriptFiles) { IScriptLayout scriptLayout = new IScriptLayout(); scriptLayout.LoadFromJson(System.IO.Path.Combine(path, item + ".script")); scriptContent.ScriptControl.AddScript(StackingMainLayout.InstanceStackingMainLayout(scriptLayout)); } } }
/// <summary> /// 删除所有脚本 /// </summary> public void RemoveAll() { if (Scripts.Count == 0) { return; } StackingMainLayout script = Scripts.First(); while (script != null) { DelScript(script); if (Scripts.Count == 0) { break; } script = Scripts.First(); } }
/// <summary> /// 单击事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Item_OnceMouseDown(object sender, MouseButtonEventArgs e) { StackingMainLayout spt = ((sender as FrameworkElement).DataContext as StackingMainLayout); if (spt.ScriptName == script.ScriptName) { double seconds = (DateTime.Now - forntTime).TotalSeconds; if (seconds > 0.4 && seconds < 1.8) { this.scriptName.BorderThickness = new Thickness(2); this.scriptName.Background = new SolidColorBrush(Colors.White); this.scriptName.IsEnabled = true; } else if (seconds <= 0.4) { ItemMouseDoubleClickEvent?.Invoke(this.DataContext); } Console.WriteLine("时间:" + seconds); Console.WriteLine("对象:" + spt.ScriptName + ",本对象:" + script.ScriptName); forntTime = DateTime.Now; //forntObject = scriptname; } }
/// <summary> /// 脚本名称修改事件 /// </summary> /// <param name="selectedItem"></param> private void ScriptControl_ItemScriptNameChanged(object selectedItem) { StackingMainLayout script = selectedItem as StackingMainLayout; mainContent.ModifyTitleById(script.Id, script.ScriptName); }
/// <summary> /// 设置数据源 /// </summary> /// <param name="script"></param> public void SetIScriptLayout(StackingMainLayout script) { this.script = script; this.propertysList.ItemsSource = this.script.IPropertys; }