|
- using BeDesignerSCADA.ViewModel;
- using BeDesignerSCADA.ViewModel;
- using BPASmart.Model;
- using BPASmartClient.Compiler;
- using BPASmartClient.DATABUS;
- using BPASmartClient.MessageName;
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Reflection;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Controls.Primitives;
- using System.Windows.Data;
- using System.Windows.Documents;
- using System.Windows.Forms;
- using System.Windows.Input;
- using System.Windows.Media;
- using System.Windows.Media.Animation;
- using System.Windows.Media.Imaging;
- using System.Windows.Navigation;
- using System.Windows.Shapes;
-
- namespace BeDesignerSCADA.Controls
- {
- /// <summary>
- /// MainCanvasPanel.xaml 的交互逻辑
- /// </summary>
- public partial class MainCanvasPanel : System.Windows.Controls.UserControl
- {
- /// <summary>
- /// 布局文件路径
- /// </summary>
- public string Path=string.Empty;
- MainViewModel viewModel = new MainViewModel();
- public MainCanvasPanel(string _Path)
- {
- InitializeComponent();
- Path= _Path;
- this.DataContext = viewModel;
- viewModel.Loaded(cav, runCanvas);
- //控件加载
- Assembly assembly = Assembly.LoadFile($"{System.AppDomain.CurrentDomain.BaseDirectory}\\BPASmartClient.SCADAControl.dll"); //Assembly.GetExecutingAssembly();
- var controls = assembly.GetTypes().Where(t => t.GetInterface("IExecutable") != null).OrderBy(o => o.Name);
- CtlList.ItemsSource = controls;
- //读取文件
- FileRead(_Path);
- }
- //public MainCanvasPanel()
- //{
- // InitializeComponent();
- // this.DataContext = viewModel;
- // viewModel.Loaded(cav, runCanvas);
- // //控件加载
- // Assembly assembly = Assembly.LoadFile($"{System.AppDomain.CurrentDomain.BaseDirectory}\\BPASmartClient.SCADAControl.dll"); //Assembly.GetExecutingAssembly();
- // var controls = assembly.GetTypes().Where(t => t.GetInterface("IExecutable") != null).OrderBy(o => o.Name);
- // CtlList.ItemsSource = controls;
- //}
-
- #region 位置调整
- /// <summary>
- /// 左对齐
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void AglinLeftBtn_Click(object sender, RoutedEventArgs e)
- {
- cav.AlignLeft();
- }
- /// <summary>
- /// 底部对齐
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void AglinBottomBtn_Click(object sender, RoutedEventArgs e)
- {
- cav.AlignBottom();
- }
- /// <summary>
- /// 顶部对齐
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void AglinTopBtn_Click(object sender, RoutedEventArgs e)
- {
- cav.AlignTop();
- }
- /// <summary>
- /// 右对齐
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void AglinRightBtn_Click(object sender, RoutedEventArgs e)
- {
- cav.AlignRight();
- }
- /// <summary>
- /// 居中
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void AglinCenterBtn_Click(object sender, RoutedEventArgs e)
- {
- cav.AlignCenter();
- }
- /// <summary>
- /// 垂直分布
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void VerticalLayoutBtn_Click(object sender, RoutedEventArgs e)
- {
- cav.VertialLayout();
- }
- /// <summary>
- /// 水平分布
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void HorizontalLayoutBtn_Click(object sender, RoutedEventArgs e)
- {
- cav.HorizontalLayout();
- }
- #endregion
-
- #region 其他事件操作
- /// <summary>
- /// 运行
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void RunBtn_Click(object sender, RoutedEventArgs e)
- {
- if (sender is System.Windows.Controls.Button btn)
- {
- if (btn.Tag.ToString() == "运行")
- {
- cav.ClearSelection();
- runCanvas.Run(cav.Generator());
- }
- else if (btn.Tag.ToString() == "停止")
- {
- runCanvas.Destory();
- }
- }
- }
- /// <summary>
- /// 加载
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void LoadBtn_Click(object sender, RoutedEventArgs e)
- {
- OpenFileDialog ofd = new OpenFileDialog();
- ofd.Filter = "布局文件|*.lay";
- if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
- {
- cav.Load(ofd.FileName);
- }
-
- DoubleAnimation da = new DoubleAnimation(-200, 0, new Duration(TimeSpan.FromMilliseconds(250)));
- da.EasingFunction = new CubicEase() { EasingMode = EasingMode.EaseOut };
- CanvasTranslate.BeginAnimation(TranslateTransform.XProperty, da);
-
- DoubleAnimation daop = new DoubleAnimation(0, 1, new Duration(TimeSpan.FromMilliseconds(250)));
- daop.EasingFunction = new CubicEase() { EasingMode = EasingMode.EaseOut };
- cav.BeginAnimation(OpacityProperty, daop);
- }
- /// <summary>
- /// 读取文件
- /// </summary>
- /// <param name="path"></param>
- public void FileRead(string path)
- {
- try
- {
- if (File.Exists(path))
- {
- cav.Load(path);
-
-
- DoubleAnimation da = new DoubleAnimation(-200, 0, new Duration(TimeSpan.FromMilliseconds(250)));
- da.EasingFunction = new CubicEase() { EasingMode = EasingMode.EaseOut };
- CanvasTranslate.BeginAnimation(TranslateTransform.XProperty, da);
-
- DoubleAnimation daop = new DoubleAnimation(0, 1, new Duration(TimeSpan.FromMilliseconds(250)));
- daop.EasingFunction = new CubicEase() { EasingMode = EasingMode.EaseOut };
- cav.BeginAnimation(OpacityProperty, daop);
- }
- }
- catch (Exception ex)
- {
-
- }
- }
- /// <summary>
- /// 保存文件
- /// </summary>
- public void FileSave()
- {
- SaveBtn_Click(null, null);
- }
- /// <summary>
- /// 保存
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void SaveBtn_Click(object sender, RoutedEventArgs e)
- {
- string str = cav.Save();
- File.WriteAllText(Path, str, Encoding.Unicode);
- }
- /// <summary>
- /// 模拟消息发送
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void MNBtn_Click(object sender, RoutedEventArgs e)
- {
-
- }
- #endregion
-
- #region 左侧控件栏移动
- /// <summary>
- /// 移动到右侧
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void CtlList_PreviewMouseMove(object sender, System.Windows.Input.MouseEventArgs e)
- {
- if (CtlList.SelectedItem != null && e.LeftButton == MouseButtonState.Pressed)
- {
- DragDrop.DoDragDrop(CtlList, CtlList.SelectedItem, System.Windows.DragDropEffects.Copy);
- codeEditor.Text = cav.Save();
- }
- }
- /// <summary>
- /// 显示代码
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void showCode_Click(object sender, RoutedEventArgs e)
- {
- codeEditor.Text = cav.Save();
- }
- /// <summary>
- /// 编辑
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void ToggleButton_Click(object sender, RoutedEventArgs e)
- {
- try
- {
- if (sender is ToggleButton)
- {
- ToggleButton toggle = (ToggleButton)sender;
- Xceed.Wpf.Toolkit.PropertyGrid.PropertyItem propertyGridCommand = toggle.DataContext as Xceed.Wpf.Toolkit.PropertyGrid.PropertyItem;
- if (propertyGridCommand != null)
- {
- viewModel.Edit(propertyGridCommand);
- }
- }
- }
- catch (Exception ex)
- {
-
- }
- }
- /// <summary>
- /// 变量选择
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void ComboBoxValue_TextChanged(object sender, TextChangedEventArgs e)
- {
- try
- {
- if (sender is System.Windows.Controls.ComboBox)
- {
- System.Windows.Controls.ComboBox toggle = (System.Windows.Controls.ComboBox)sender;
- Xceed.Wpf.Toolkit.PropertyGrid.PropertyItem propertyGridCommand = toggle.DataContext as Xceed.Wpf.Toolkit.PropertyGrid.PropertyItem;
- if (toggle.Tag != null && !string.IsNullOrEmpty(toggle.Text))
- propertyGridCommand.Value = "{" + $"Binding {toggle.Tag}.{toggle.Text}" + "}";
- }
- }
- catch (Exception ex)
- {
-
- }
- }
- /// <summary>
- /// 变量下拉框打开事件
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void valuebox_DropDownOpened(object sender, EventArgs e)
- {
- try
- {
- viewModel.DevValueList = new System.Collections.ObjectModel.ObservableCollection<string>();
- if (sender is System.Windows.Controls.ComboBox)
- {
- System.Windows.Controls.ComboBox toggle = (System.Windows.Controls.ComboBox)sender;
- if (toggle.Tag == null) return;
- if (Class_DataBus.GetInstance().Dic_DeviceData.ContainsKey(toggle.Tag.ToString()))
- {
- Class_DataBus.GetInstance().Dic_DeviceData[toggle.Tag.ToString()].Keys?.ToList().ForEach(key => { viewModel.DevValueList.Add(key); });
- }
- }
- }
- catch (Exception ex)
- {
-
- }
-
- }
- /// <summary>
- /// 设备名称选择
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void ComboBoxName_TextChanged(object sender, TextChangedEventArgs e)
- {
- try
- {
- if (sender is System.Windows.Controls.ComboBox)
- {
- System.Windows.Controls.ComboBox toggle = (System.Windows.Controls.ComboBox)sender;
- Xceed.Wpf.Toolkit.PropertyGrid.PropertyItem propertyGridCommand = toggle.DataContext as Xceed.Wpf.Toolkit.PropertyGrid.PropertyItem;
- if (toggle.Tag != null && !string.IsNullOrEmpty(toggle.Text))
- propertyGridCommand.Value = "{" + $"Binding {toggle.Text}.{toggle.Tag}" + "}";
- else if (!string.IsNullOrEmpty(toggle.Text))
- propertyGridCommand.Value = "{" + $"Binding {toggle.Text}." + "}";
-
- }
- }
- catch (Exception ex)
- {
-
- }
- }
- /// <summary>
- /// 设备名称下拉框打开事件
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void namebox_DropDownOpened(object sender, EventArgs e)
- {
- viewModel.DevNameList = new System.Collections.ObjectModel.ObservableCollection<string>();
- Class_DataBus.GetInstance().Dic_DeviceData.Keys?.ToList().ForEach(key => { viewModel.DevNameList.Add(key); });
- }
- #endregion
- }
- }
|