| | |
| | | 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 |
| | | 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; |
| | |
| | | } |
| | | } |
| | | |
| | | 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) |
| | | { |
| | | DataContext = this; |
| | | RefrshConfig(); |
| | | InitializeComponent(); |
| | | userMenu.Header = this.lang("App.Welcome", UserInfo.User.Name); |
| | | ShowMenu = false; |
| | | Application.Current.MainWindow = this; |
| | | SystemSetting.SystemSettingChanged += SystemSetting_SystemSettingChanged; |
| | | 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; |
| | | |
| | | Task.Run(() => |
| | | { |
| | | ResourceListener.Instance.RefreshEvent += this.resourceUI.Refresh; |
| | | ResourceListener.Instance.Start(); |
| | | }); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | log.Error("Window Loaded Error.", ex); |
| | | } |
| | | } |
| | | |
| | | private void RefrshConfig() |
| | |
| | | } |
| | | } |
| | | |
| | | private bool logoutAdded = false; |
| | | |
| | | private void Logout() |
| | | { |
| | | if (MsgBoxHelper.WarnMessage(this, this.lang("App.MakeSureLogout")) == MessageBoxResult.OK) |
| | |
| | | File.Delete(path); |
| | | } |
| | | this.Closed -= window_Closed; |
| | | if (!logoutAdded) |
| | | { |
| | | this.Closed += Logout_PanuonWindow_Closed; |
| | | logoutAdded = true; |
| | | } |
| | | this.Close(); |
| | | PluginLoader.Reset(); |
| | | Login login = new Login(); |
| | | login.Show(); |
| | | } |
| | | } |
| | | |
| | | 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() |
| | |
| | | |
| | | private void window_Closed(object sender, EventArgs e) |
| | | { |
| | | Application.Current.Shutdown(); |
| | | 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) |
| | |
| | | this.Maximize(); |
| | | break; |
| | | case "closeBtn": |
| | | this.Closed -= Logout_PanuonWindow_Closed; |
| | | this.Close(); |
| | | break; |
| | | case "BtnSwitchTheme": |
| | |
| | | } |
| | | } |
| | | |
| | | 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"]; |