mirror of
https://github.com/mRemoteNG/mRemoteNG.git
synced 2026-02-17 22:11:48 +08:00
Defaulting extended palette in embedded themes, removed the reference to the dockpanel theme palette, that only exist in vs2015
334 lines
9.8 KiB
C#
334 lines
9.8 KiB
C#
using System;
|
|
using System.Drawing;
|
|
using System.Collections;
|
|
using System.Windows.Forms;
|
|
using System.Text;
|
|
using WeifenLuo.WinFormsUI.Docking;
|
|
using mRemoteNG.App;
|
|
using mRemoteNG.Messages;
|
|
using mRemoteNG.UI.Forms;
|
|
using mRemoteNG.Themes;
|
|
|
|
namespace mRemoteNG.UI.Window
|
|
{
|
|
public partial class ErrorAndInfoWindow : BaseWindow
|
|
{
|
|
private ControlLayout _layout = ControlLayout.Vertical;
|
|
private ThemeManager _themeManager;
|
|
|
|
public DockContent PreviousActiveForm { get; set; }
|
|
|
|
public ErrorAndInfoWindow() : this(new DockContent())
|
|
{
|
|
}
|
|
|
|
public ErrorAndInfoWindow(DockContent panel)
|
|
{
|
|
WindowType = WindowType.ErrorsAndInfos;
|
|
DockPnl = panel;
|
|
InitializeComponent();
|
|
_themeManager = ThemeManager.getInstance();
|
|
ApplyTheme();
|
|
LayoutVertical();
|
|
FillImageList();
|
|
}
|
|
|
|
#region Form Stuff
|
|
private void ErrorsAndInfos_Load(object sender, EventArgs e)
|
|
{
|
|
ApplyLanguage();
|
|
}
|
|
|
|
private void ApplyLanguage()
|
|
{
|
|
clmMessage.Text = Language.strColumnMessage;
|
|
cMenMCCopy.Text = Language.strMenuNotificationsCopyAll;
|
|
cMenMCDelete.Text = Language.strMenuNotificationsDeleteAll;
|
|
TabText = Language.strMenuNotifications;
|
|
Text = Language.strMenuNotifications;
|
|
}
|
|
#endregion
|
|
|
|
#region Private Methods
|
|
private void ApplyTheme()
|
|
{
|
|
lvErrorCollector.BackColor = _themeManager.ActiveTheme.ExtendedPalette.TextBoxPalette.Background;
|
|
lvErrorCollector.ForeColor = _themeManager.ActiveTheme.ExtendedPalette.TextBoxPalette.Foreground;
|
|
|
|
}
|
|
|
|
|
|
private void FillImageList()
|
|
{
|
|
imgListMC.Images.Add(Resources.brick);
|
|
imgListMC.Images.Add(Resources.InformationSmall);
|
|
imgListMC.Images.Add(Resources.WarningSmall);
|
|
imgListMC.Images.Add(Resources.ErrorSmall);
|
|
}
|
|
|
|
private void LayoutVertical()
|
|
{
|
|
try
|
|
{
|
|
pnlErrorMsg.Location = new Point(0, Height - 200);
|
|
pnlErrorMsg.Size = new Size(Width, Height - pnlErrorMsg.Top);
|
|
pnlErrorMsg.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
|
|
txtMsgText.Size = new Size(pnlErrorMsg.Width - pbError.Width - 8, pnlErrorMsg.Height - 20);
|
|
lvErrorCollector.Location = new Point(0, 0);
|
|
lvErrorCollector.Size = new Size(Width, Height - pnlErrorMsg.Height - 5);
|
|
lvErrorCollector.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top;
|
|
|
|
_layout = ControlLayout.Vertical;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg, "LayoutVertical (UI.Window.ErrorsAndInfos) failed" + Environment.NewLine + ex.Message, true);
|
|
}
|
|
}
|
|
|
|
private void LayoutHorizontal()
|
|
{
|
|
try
|
|
{
|
|
pnlErrorMsg.Location = new Point(0, 0);
|
|
pnlErrorMsg.Size = new Size(200, Height);
|
|
pnlErrorMsg.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Top;
|
|
txtMsgText.Size = new Size(pnlErrorMsg.Width - pbError.Width - 8, pnlErrorMsg.Height - 20);
|
|
lvErrorCollector.Location = new Point(pnlErrorMsg.Width + 5, 0);
|
|
lvErrorCollector.Size = new Size(Width - pnlErrorMsg.Width - 5, Height);
|
|
lvErrorCollector.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top;
|
|
|
|
_layout = ControlLayout.Horizontal;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg, "LayoutHorizontal (UI.Window.ErrorsAndInfos) failed" + Environment.NewLine + ex.Message, true);
|
|
}
|
|
}
|
|
|
|
private void ErrorsAndInfos_Resize(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
if (Width > Height)
|
|
{
|
|
if (_layout == ControlLayout.Vertical)
|
|
LayoutHorizontal();
|
|
}
|
|
else
|
|
{
|
|
if (_layout == ControlLayout.Horizontal)
|
|
LayoutVertical();
|
|
}
|
|
|
|
lvErrorCollector.Columns[0].Width = lvErrorCollector.Width - 20;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg, "ErrorsAndInfos_Resize (UI.Window.ErrorsAndInfos) failed" + Environment.NewLine + ex.Message, true);
|
|
}
|
|
}
|
|
|
|
private void pnlErrorMsg_ResetDefaultStyle()
|
|
{
|
|
try
|
|
{
|
|
pnlErrorMsg.BackColor = Color.FromKnownColor(KnownColor.Control);
|
|
pbError.Image = null;
|
|
txtMsgText.Text = "";
|
|
txtMsgText.BackColor = Color.FromKnownColor(KnownColor.Control);
|
|
lblMsgDate.Text = "";
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg, "pnlErrorMsg_ResetDefaultStyle (UI.Window.ErrorsAndInfos) failed" + Environment.NewLine + ex.Message, true);
|
|
}
|
|
}
|
|
|
|
private void MC_KeyDown(object sender, KeyEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
if (e.KeyCode != Keys.Escape) return;
|
|
try
|
|
{
|
|
if (PreviousActiveForm != null)
|
|
PreviousActiveForm.Show(FrmMain.Default.pnlDock);
|
|
else
|
|
Windows.TreeForm.Show(FrmMain.Default.pnlDock);
|
|
}
|
|
catch (Exception)
|
|
{
|
|
// ignored
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg, "MC_KeyDown (UI.Window.ErrorsAndInfos) failed" + Environment.NewLine + ex.Message, true);
|
|
}
|
|
}
|
|
|
|
private void lvErrorCollector_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
if (lvErrorCollector.SelectedItems.Count == 0 | lvErrorCollector.SelectedItems.Count > 1)
|
|
{
|
|
pnlErrorMsg_ResetDefaultStyle();
|
|
return;
|
|
}
|
|
|
|
var sItem = lvErrorCollector.SelectedItems[0];
|
|
var eMsg = (Messages.Message)sItem.Tag;
|
|
switch (eMsg.Class)
|
|
{
|
|
case MessageClass.DebugMsg:
|
|
pbError.Image = Resources.brick;
|
|
pnlErrorMsg.BackColor = Color.LightSteelBlue;
|
|
txtMsgText.BackColor = Color.LightSteelBlue;
|
|
break;
|
|
case MessageClass.InformationMsg:
|
|
pbError.Image = Resources.Information;
|
|
pnlErrorMsg.BackColor = Color.LightSteelBlue;
|
|
txtMsgText.BackColor = Color.LightSteelBlue;
|
|
break;
|
|
case MessageClass.WarningMsg:
|
|
pbError.Image = Resources.Warning;
|
|
pnlErrorMsg.BackColor = _themeManager.ActiveTheme.ExtendedPalette.WarningText.Background;
|
|
pnlErrorMsg.ForeColor = _themeManager.ActiveTheme.ExtendedPalette.WarningText.Foreground;
|
|
txtMsgText.BackColor = _themeManager.ActiveTheme.ExtendedPalette.WarningText.Background;
|
|
txtMsgText.ForeColor = _themeManager.ActiveTheme.ExtendedPalette.WarningText.Foreground;
|
|
break;
|
|
case MessageClass.ErrorMsg:
|
|
pbError.Image = Resources._Error;
|
|
pnlErrorMsg.BackColor = _themeManager.ActiveTheme.ExtendedPalette.ErrorText.Background;
|
|
pnlErrorMsg.ForeColor = _themeManager.ActiveTheme.ExtendedPalette.ErrorText.Foreground;
|
|
txtMsgText.BackColor = _themeManager.ActiveTheme.ExtendedPalette.ErrorText.Background;
|
|
txtMsgText.ForeColor = _themeManager.ActiveTheme.ExtendedPalette.ErrorText.Foreground;
|
|
break;
|
|
}
|
|
|
|
lblMsgDate.Text = eMsg.Date.ToString();
|
|
txtMsgText.Text = eMsg.Text;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg, "lvErrorCollector_SelectedIndexChanged (UI.Window.ErrorsAndInfos) failed" + Environment.NewLine + ex.Message, true);
|
|
}
|
|
}
|
|
|
|
private void cMenMC_Opening(object sender, System.ComponentModel.CancelEventArgs e)
|
|
{
|
|
if (lvErrorCollector.Items.Count > 0)
|
|
{
|
|
cMenMCCopy.Enabled = true;
|
|
cMenMCDelete.Enabled = true;
|
|
}
|
|
else
|
|
{
|
|
cMenMCCopy.Enabled = false;
|
|
cMenMCDelete.Enabled = false;
|
|
}
|
|
|
|
if (lvErrorCollector.SelectedItems.Count > 0)
|
|
{
|
|
cMenMCCopy.Text = Language.strMenuCopy;
|
|
cMenMCDelete.Text = Language.strMenuNotificationsDelete;
|
|
}
|
|
else
|
|
{
|
|
cMenMCCopy.Text = Language.strMenuNotificationsCopyAll;
|
|
cMenMCDelete.Text = Language.strMenuNotificationsDeleteAll;
|
|
}
|
|
}
|
|
|
|
private void cMenMCCopy_Click(object sender, EventArgs e)
|
|
{
|
|
CopyMessagesToClipboard();
|
|
}
|
|
|
|
private void CopyMessagesToClipboard()
|
|
{
|
|
try
|
|
{
|
|
IEnumerable items;
|
|
if (lvErrorCollector.SelectedItems.Count > 0)
|
|
{
|
|
items = lvErrorCollector.SelectedItems;
|
|
}
|
|
else
|
|
{
|
|
items = lvErrorCollector.Items;
|
|
}
|
|
|
|
var stringBuilder = new StringBuilder();
|
|
stringBuilder.AppendLine("----------");
|
|
|
|
lvErrorCollector.BeginUpdate();
|
|
|
|
foreach (ListViewItem item in items)
|
|
{
|
|
var message = item.Tag as Messages.Message;
|
|
if (message == null)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
stringBuilder.AppendLine(message.Class.ToString());
|
|
stringBuilder.AppendLine(message.Date.ToString());
|
|
stringBuilder.AppendLine(message.Text);
|
|
stringBuilder.AppendLine("----------");
|
|
}
|
|
|
|
Clipboard.SetText(stringBuilder.ToString());
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg, "UI.Window.ErrorsAndInfos.CopyMessagesToClipboard() failed." + Environment.NewLine + ex.Message, true);
|
|
}
|
|
finally
|
|
{
|
|
lvErrorCollector.EndUpdate();
|
|
}
|
|
}
|
|
|
|
private void cMenMCDelete_Click(object sender, EventArgs e)
|
|
{
|
|
DeleteMessages();
|
|
}
|
|
|
|
private void DeleteMessages()
|
|
{
|
|
try
|
|
{
|
|
lvErrorCollector.BeginUpdate();
|
|
|
|
if (lvErrorCollector.SelectedItems.Count > 0)
|
|
{
|
|
foreach (ListViewItem item in lvErrorCollector.SelectedItems)
|
|
item.Remove();
|
|
}
|
|
else
|
|
{
|
|
lvErrorCollector.Items.Clear();
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg, "UI.Window.ErrorsAndInfos.DeleteMessages() failed" + Environment.NewLine + ex.Message, true);
|
|
}
|
|
finally
|
|
{
|
|
lvErrorCollector.EndUpdate();
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
public enum ControlLayout
|
|
{
|
|
Vertical = 0,
|
|
Horizontal = 1
|
|
}
|
|
}
|
|
}
|