From c1c3772a11b1f3fbad8846cc714120771d85fa53 Mon Sep 17 00:00:00 2001
From: alielie <alielie@git.com>
Date: 星期四, 12 六月 2025 20:10:59 +0800
Subject: [PATCH] 新增SeqEditor

---
 WPFProject/PanuonWindow.xaml.cs |  147 +++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 123 insertions(+), 24 deletions(-)

diff --git a/WPFProject/PanuonWindow.xaml.cs b/WPFProject/PanuonWindow.xaml.cs
index 0c162fe..71de9ee 100644
--- a/WPFProject/PanuonWindow.xaml.cs
+++ b/WPFProject/PanuonWindow.xaml.cs
@@ -1,28 +1,48 @@
-锘縰sing HMI.Core.Setting;
+锘縰sing HMI.Base;
+using HMI.Core.Api;
+using HMI.Core.Entity;
+using HMI.Core.Setting;
 using HMI.Core.Util;
 using HMI.UI.Util;
 using Panuon.WPF.UI;
 using System;
+using System.ComponentModel;
 using System.IO;
 using System.Windows;
 using System.Windows.Controls;
-using System.Windows.Media;
 using System.Windows.Media.Imaging;
-using WPFProject.Utils;
 
 namespace WPFProject
 {
     /// <summary>
     /// PanuonWindow.xaml 鐨勪氦浜掗�昏緫
     /// </summary>
-    public partial class PanuonWindow : WindowX
+    public partial class PanuonWindow : WindowX, IPluginContainer
     {
         public PanuonWindow()
+        {
+            this.Loaded += PanuonWindow_Loaded;
+        }
+
+        private UserInfo currentUser;
+        public UserInfo CurrentUser
+        {
+            get => currentUser;
+            set
+            {
+                Set(ref currentUser, value);
+            }
+        }
+
+        private void PanuonWindow_Loaded(object sender, RoutedEventArgs e)
         {
             DataContext = this;
             RefrshConfig();
             InitializeComponent();
-            ShowMenu = true;
+            userMenu.Header = this.lang("App.Welcome", UserInfo.User.Name);
+            ShowMenu = false;
+            Application.Current.MainWindow = this;
+            SystemSetting.SystemSettingChanged += SystemSetting_SystemSettingChanged;
         }
 
         private void RefrshConfig()
@@ -57,36 +77,115 @@
 
         private bool showMenu;
 
+        public event CancelEventHandler OnCloseEvent;
+        public event EventHandler DoCloseEvent;
+        public event EventHandler LoadComplateEvent;
+
         public bool ShowMenu
         {
             get { return showMenu; }
-            set { 
+            set
+            {
                 Set(ref showMenu, value);
                 menuTab.ChangeItemVisibility(value);
             }
         }
 
-
-        private void Button_Click_2(object sender, RoutedEventArgs e)
-        {
-            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();
-        }
-
-        private void window_Loaded(object sender, RoutedEventArgs e)
-        {
-            SystemSetting.SystemSettingChanged += SystemSetting_SystemSettingChanged;
-        }
-
         private void SystemSetting_SystemSettingChanged(object sender, SystemSetting e)
         {
             RefrshConfig();
-            LangUtil.LoadLang();
+        }
+
+        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 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;
+                this.Close();
+                PluginLoader.Reset();
+                Login login = new Login();
+                login.Show();
+            }
+        }
+
+        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)
+        {
+            Application.Current.Shutdown();
+        }
+
+        private void Button_Click(object sender, RoutedEventArgs e)
+        {
+            Button btn = sender as Button;
+            switch (btn.Name)
+            {
+                case "minBtn":
+                    this.Minimize();
+                    break;
+                case "maxBtn":
+                    this.Maximize();
+                    break;
+                case "closeBtn":
+                    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;
+            }
         }
 
         //private void BaseWindow_Loaded(object sender, RoutedEventArgs e)

--
Gitblit v1.9.1