From 9d1660270272180cd71147d6ddd53d1382643d2e Mon Sep 17 00:00:00 2001
From: wenxiangchao <wenxiangchao@ihengxin.com.cn>
Date: 星期一, 02 十一月 2026 18:00:14 +0800
Subject: [PATCH] merge: 并入远程 Initial commit 作为历史根节点
---
WPFProject/PanuonWindow.xaml.cs | 375 +++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 375 insertions(+), 0 deletions(-)
diff --git a/WPFProject/PanuonWindow.xaml.cs b/WPFProject/PanuonWindow.xaml.cs
new file mode 100644
index 0000000..7dceeff
--- /dev/null
+++ b/WPFProject/PanuonWindow.xaml.cs
@@ -0,0 +1,375 @@
+锘縰sing HMI.Base;
+using HMI.Core.Api;
+using HMI.Core.Entity;
+using HMI.Core.Setting;
+using HMI.Core.Util;
+using HMI.UI.Util;
+using HMI.Util.Alarm;
+using log4net;
+using Panuon.WPF.UI;
+using System;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Media.Imaging;
+
+namespace WPFProject
+{
+ public class SimpleAlarm
+ {
+ public string Id { get; set; }
+ public string Time { get; set; }
+ public string Message { get; set; }
+ public override string ToString()
+ {
+ return $"{Time} {Message}";
+ }
+ }
+
+ /// <summary>
+ /// PanuonWindow.xaml 鐨勪氦浜掗�昏緫
+ /// </summary>
+ public partial class PanuonWindow : WindowX, IPluginContainer, IAlarmShow
+ {
+ private ILog log = LogManager.GetLogger("MainWindow");
+ public PanuonWindow()
+ {
+ this.Loaded += PanuonWindow_Loaded;
+ SoftwareVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
+ }
+
+ private UserInfo currentUser;
+ public UserInfo CurrentUser
+ {
+ get => currentUser;
+ set
+ {
+ Set(ref currentUser, value);
+ }
+ }
+
+ private string welcomeTitle;
+ public string WelcomeTitle
+ {
+ get => welcomeTitle;
+ set
+ {
+ Set(ref welcomeTitle, value);
+ }
+ }
+
+ private ObservableCollection<SimpleAlarm> alarms = new ObservableCollection<SimpleAlarm>();
+ public ObservableCollection<SimpleAlarm> Alarms
+ {
+ get => alarms;
+ set
+ {
+ Set(ref alarms, value);
+ }
+ }
+
+ public int AlarmCount
+ {
+ get => Alarms?.Count ?? 0;
+ }
+
+ private string softwareVersion;
+ public string SoftwareVersion
+ {
+ get => softwareVersion;
+ set
+ {
+ Set(ref softwareVersion, value);
+ }
+ }
+
+ private string pluginVersion;
+ public string PluginVersion
+ {
+ get => pluginVersion;
+ set
+ {
+ Set(ref pluginVersion, value);
+ }
+ }
+
+ public ListBox sb
+ {
+ get; set;
+ }
+
+ private void PanuonWindow_Loaded(object sender, RoutedEventArgs e)
+ {
+ try
+ {
+ DataContext = this;
+ RefrshConfig();
+ InitializeComponent();
+ AlarmShowHelper.Register(this);
+
+ WelcomeTitle = this.lang("App.Welcome", UserInfo.User.Name);
+ ShowMenu = false;
+ Application.Current.MainWindow = this;
+ SystemSetting.SystemSettingChanged += SystemSetting_SystemSettingChanged;
+
+ if (Environment.Is64BitProcess)
+ {
+ Task.Run(() =>
+ {
+ ResourceListener.Instance.RefreshEvent += this.resourceUI.Refresh;
+ ResourceListener.Instance.Start();
+ });
+ }
+ }
+ catch (Exception ex)
+ {
+ log.Error("Window Loaded Error.", ex);
+ }
+ }
+
+ private void RefrshConfig()
+ {
+ WindowTitle = SystemSetting.Instance.WindowTitle;
+ try
+ {
+ WindowLogo = new BitmapImage(new Uri(Path.Combine(PathHelper.IconFolder,
+ SystemSetting.Instance.LogoPath)));
+ }
+ catch (Exception ex)
+ {
+ WindowLogo = null;
+ }
+ }
+
+ private string windowTitle;
+
+ public string WindowTitle
+ {
+ get { return windowTitle; }
+ set { Set(ref windowTitle, value); }
+ }
+
+ private BitmapImage windowLogo;
+
+ public BitmapImage WindowLogo
+ {
+ get { return windowLogo; }
+ set { Set(ref windowLogo, value); }
+ }
+
+ private bool showMenu;
+
+ public event CancelEventHandler OnCloseEvent;
+ public event EventHandler DoCloseEvent;
+ public event EventHandler LoadComplateEvent;
+
+ public bool ShowMenu
+ {
+ get { return showMenu; }
+ set
+ {
+ Set(ref showMenu, value);
+ menuTab.ChangeItemVisibility(value);
+ }
+ }
+
+ private void SystemSetting_SystemSettingChanged(object sender, SystemSetting e)
+ {
+ RefrshConfig();
+ }
+
+ protected override void OnClosing(CancelEventArgs e)
+ {
+ OnCloseEvent?.Invoke(this, e);
+ base.OnClosing(e);
+ }
+
+ protected override void OnClosed(EventArgs e)
+ {
+ DoCloseEvent?.Invoke(this, e);
+ base.OnClosed(e);
+ }
+
+ private void MenuItem_Click(object sender, RoutedEventArgs e)
+ {
+ MenuItem mi = sender as MenuItem;
+ switch (mi.Name)
+ {
+ case "MiLogout":
+ Logout();
+ break;
+ case "MiRestart":
+ RestartApp();
+ break;
+ default:
+ break;
+ }
+ }
+
+ private bool logoutAdded = false;
+
+ private void Logout()
+ {
+ if (MsgBoxHelper.WarnMessage(this, this.lang("App.MakeSureLogout")) == MessageBoxResult.OK)
+ {
+ string path = Path.Combine(PathHelper.DatabaseFolder, "user.bin");
+ if (File.Exists(path))
+ {
+ File.Delete(path);
+ }
+ this.Closed -= window_Closed;
+ if (!logoutAdded)
+ {
+ this.Closed += Logout_PanuonWindow_Closed;
+ logoutAdded = true;
+ }
+ this.Close();
+ }
+ }
+
+ private void Logout_PanuonWindow_Closed(object sender, EventArgs e)
+ {
+ AlarmUtil.Release();
+ PluginLoader.Reset();
+ UserInfo.Logout();
+ AlarmShowHelper.UnRegister(this);
+ Login login = new Login();
+ login.Show();
+ this.Closed -= Logout_PanuonWindow_Closed;
+ logoutAdded = false;
+ }
+
+ private void RestartApp()
+ {
+ if (MsgBoxHelper.WarnMessage(this, this.lang("App.MakeSureRestartApp")) == MessageBoxResult.OK)
+ {
+ Application.Current.Exit += Current_Exit;
+ this.Close();
+ }
+ }
+
+ private void Current_Exit(object sender, ExitEventArgs e)
+ {
+ System.Windows.Forms.Application.Restart();
+ }
+
+ private void window_Closed(object sender, EventArgs e)
+ {
+ try
+ {
+ ResourceListener.Instance.Stop();
+ AlarmUtil.Release();
+ PluginLoader.Reset();
+ UserInfo.Logout();
+ AlarmShowHelper.UnRegister(this);
+ }
+ catch (Exception ex)
+ {
+
+ }
+ Application.Current.Shutdown(0);
+ }
+
+ private void Button_Click(object sender, RoutedEventArgs e)
+ {
+ Button btn = sender as Button;
+ switch (btn.Name)
+ {
+ case "minBtn":
+ this.Minimize();
+ break;
+ case "maxBtn":
+ //var state = this.WindowState == WindowState.Maximized ? WindowState.Normal : WindowState.Maximized;
+ //SetCurrentValue(Window.WindowStateProperty, state);
+ if (this.WindowState == WindowState.Maximized)
+ {
+ this.Normalmize();
+ }
+ else
+ {
+ this.Maximize();
+ }
+ break;
+ case "closeBtn":
+ this.Closed -= Logout_PanuonWindow_Closed;
+ this.Close();
+ break;
+ case "BtnSwitchTheme":
+ ShowMenu = !ShowMenu;
+ //Button btn = (Button)sender;
+ //double temp = btn.RenderTransform.Value.Determinant;
+ //btn.RenderTransformOrigin = new Point(0.5, 0.5);
+ //ScaleTransform verticalFlipTransform = new ScaleTransform(1, temp * -1);
+ //btn.RenderTransform = verticalFlipTransform;
+ //menuTab.ChangeItemVisibility();
+ break;
+ default:
+ break;
+ }
+ }
+
+ public bool ShowAlarm(AlarmText alarm)
+ {
+ bool res = false;
+ Dispatcher.Invoke(() =>
+ {
+ if (Alarms.FirstOrDefault(e => e.Id == alarm.VirtualId) == null)
+ {
+ var data = new SimpleAlarm
+ {
+ Id = alarm.VirtualId,
+ Time = alarm.Time,
+ Message = alarm.AlarmInfo
+ };
+ Alarms.Add(data);
+ sb?.ScrollIntoView(data);
+ res = true;
+ }
+ });
+ return res;
+ }
+
+ private void list_Loaded(object sender, RoutedEventArgs e)
+ {
+ sb = sender as ListBox;
+ sb.Loaded -= list_Loaded;
+ }
+
+ private void Clear_AllAlarm_Click(object sender, RoutedEventArgs e)
+ {
+ Alarms?.Clear();
+ }
+
+ private void menuTab_TabChanged(object sender, Controls.TabChangedEventArg e)
+ {
+ Dispatcher.BeginInvoke(() =>
+ {
+ if (e.newValue == null)
+ {
+ PluginVersion = string.Empty;
+ }
+ else
+ {
+ PluginVersion = e.newValue.GetType().Assembly.GetName().Version.ToString();
+ }
+ }, System.Windows.Threading.DispatcherPriority.Normal);
+ }
+
+ //private void BaseWindow_Loaded(object sender, RoutedEventArgs e)
+ //{
+ // var s = (Style)this.Resources["WindowButton"];
+ // Button button = new Button
+ // {
+ // Content = "\ue60e",
+ // Style = (Style)this.Resources["WindowButton"]
+ // };
+ // WindowChrome.SetIsHitTestVisibleInChrome(button, true);
+ // button.Click += Button_Click_2;
+ // this.InsertButton(button, 0);
+ //}
+ }
+}
--
Gitblit v1.9.1