Working on Thumbnail List Update notifications

This commit is contained in:
Anton Kasyanov
2018-02-19 20:33:27 +02:00
parent 8110b5ce7e
commit b8d7c71f06
26 changed files with 129 additions and 59 deletions

View File

@@ -0,0 +1,904 @@
using System.Windows.Forms;
namespace EveOPreview.View
{
partial class MainForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>s
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.Windows.Forms.ToolStripMenuItem RestoreWindowMenuItem;
System.Windows.Forms.ToolStripMenuItem ExitMenuItem;
System.Windows.Forms.ToolStripMenuItem TitleMenuItem;
System.Windows.Forms.ToolStripSeparator SeparatorMenuItem;
System.Windows.Forms.TabControl ContentTabControl;
System.Windows.Forms.TabPage GeneralTabPage;
System.Windows.Forms.Panel GeneralSettingsPanel;
System.Windows.Forms.TabPage ThumbnailTabPage;
System.Windows.Forms.Panel ThumbnailSettingsPanel;
System.Windows.Forms.Label HeigthLabel;
System.Windows.Forms.Label WidthLabel;
System.Windows.Forms.Label OpacityLabel;
System.Windows.Forms.Panel ZoomSettingsPanel;
System.Windows.Forms.Label ZoomFactorLabel;
System.Windows.Forms.Label ZoomAnchorLabel;
System.Windows.Forms.TabPage OverlayTabPage;
System.Windows.Forms.Panel OverlaySettingsPanel;
System.Windows.Forms.TabPage ClientsTabPage;
System.Windows.Forms.Panel ClientsPanel;
System.Windows.Forms.Label ThumbnailsListLabel;
System.Windows.Forms.TabPage AboutTabPage;
System.Windows.Forms.Panel AboutPanel;
System.Windows.Forms.Label DocumentationLinkLabel;
System.Windows.Forms.Label DescriptionLabel;
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
System.Windows.Forms.Label NameLabel;
this.EnableClientLayoutTrackingCheckBox = new System.Windows.Forms.CheckBox();
this.HideActiveClientThumbnailCheckBox = new System.Windows.Forms.CheckBox();
this.ShowThumbnailsAlwaysOnTopCheckBox = new System.Windows.Forms.CheckBox();
this.HideThumbnailsOnLostFocusCheckBox = new System.Windows.Forms.CheckBox();
this.EnablePerClientThumbnailsLayoutsCheckBox = new System.Windows.Forms.CheckBox();
this.MinimizeToTrayCheckBox = new System.Windows.Forms.CheckBox();
this.ThumbnailsWidthNumericEdit = new System.Windows.Forms.NumericUpDown();
this.ThumbnailsHeightNumericEdit = new System.Windows.Forms.NumericUpDown();
this.ThumbnailOpacityTrackBar = new System.Windows.Forms.TrackBar();
this.ZoomTabPage = new System.Windows.Forms.TabPage();
this.ZoomAnchorPanel = new System.Windows.Forms.Panel();
this.ZoomAanchorNWRadioButton = new System.Windows.Forms.RadioButton();
this.ZoomAanchorNRadioButton = new System.Windows.Forms.RadioButton();
this.ZoomAanchorNERadioButton = new System.Windows.Forms.RadioButton();
this.ZoomAanchorWRadioButton = new System.Windows.Forms.RadioButton();
this.ZoomAanchorSERadioButton = new System.Windows.Forms.RadioButton();
this.ZoomAanchorCRadioButton = new System.Windows.Forms.RadioButton();
this.ZoomAanchorSRadioButton = new System.Windows.Forms.RadioButton();
this.ZoomAanchorERadioButton = new System.Windows.Forms.RadioButton();
this.ZoomAanchorSWRadioButton = new System.Windows.Forms.RadioButton();
this.EnableThumbnailZoomCheckBox = new System.Windows.Forms.CheckBox();
this.ThumbnailZoomFactorNumericEdit = new System.Windows.Forms.NumericUpDown();
this.HighlightColorLabel = new System.Windows.Forms.Label();
this.ActiveClientHighlightColorButton = new System.Windows.Forms.Panel();
this.EnableActiveClientHighlightCheckBox = new System.Windows.Forms.CheckBox();
this.ShowThumbnailOverlaysCheckBox = new System.Windows.Forms.CheckBox();
this.ShowThumbnailFramesCheckBox = new System.Windows.Forms.CheckBox();
this.ThumbnailsList = new System.Windows.Forms.CheckedListBox();
this.VersionLabel = new System.Windows.Forms.Label();
this.DocumentationLink = new System.Windows.Forms.LinkLabel();
this.NotifyIcon = new System.Windows.Forms.NotifyIcon(this.components);
this.TrayMenu = new System.Windows.Forms.ContextMenuStrip(this.components);
RestoreWindowMenuItem = new System.Windows.Forms.ToolStripMenuItem();
ExitMenuItem = new System.Windows.Forms.ToolStripMenuItem();
TitleMenuItem = new System.Windows.Forms.ToolStripMenuItem();
SeparatorMenuItem = new System.Windows.Forms.ToolStripSeparator();
ContentTabControl = new System.Windows.Forms.TabControl();
GeneralTabPage = new System.Windows.Forms.TabPage();
GeneralSettingsPanel = new System.Windows.Forms.Panel();
ThumbnailTabPage = new System.Windows.Forms.TabPage();
ThumbnailSettingsPanel = new System.Windows.Forms.Panel();
HeigthLabel = new System.Windows.Forms.Label();
WidthLabel = new System.Windows.Forms.Label();
OpacityLabel = new System.Windows.Forms.Label();
ZoomSettingsPanel = new System.Windows.Forms.Panel();
ZoomFactorLabel = new System.Windows.Forms.Label();
ZoomAnchorLabel = new System.Windows.Forms.Label();
OverlayTabPage = new System.Windows.Forms.TabPage();
OverlaySettingsPanel = new System.Windows.Forms.Panel();
ClientsTabPage = new System.Windows.Forms.TabPage();
ClientsPanel = new System.Windows.Forms.Panel();
ThumbnailsListLabel = new System.Windows.Forms.Label();
AboutTabPage = new System.Windows.Forms.TabPage();
AboutPanel = new System.Windows.Forms.Panel();
DocumentationLinkLabel = new System.Windows.Forms.Label();
DescriptionLabel = new System.Windows.Forms.Label();
NameLabel = new System.Windows.Forms.Label();
ContentTabControl.SuspendLayout();
GeneralTabPage.SuspendLayout();
GeneralSettingsPanel.SuspendLayout();
ThumbnailTabPage.SuspendLayout();
ThumbnailSettingsPanel.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.ThumbnailsWidthNumericEdit)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.ThumbnailsHeightNumericEdit)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.ThumbnailOpacityTrackBar)).BeginInit();
this.ZoomTabPage.SuspendLayout();
ZoomSettingsPanel.SuspendLayout();
this.ZoomAnchorPanel.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.ThumbnailZoomFactorNumericEdit)).BeginInit();
OverlayTabPage.SuspendLayout();
OverlaySettingsPanel.SuspendLayout();
ClientsTabPage.SuspendLayout();
ClientsPanel.SuspendLayout();
AboutTabPage.SuspendLayout();
AboutPanel.SuspendLayout();
this.TrayMenu.SuspendLayout();
this.SuspendLayout();
//
// RestoreWindowMenuItem
//
RestoreWindowMenuItem.Name = "RestoreWindowMenuItem";
RestoreWindowMenuItem.Size = new System.Drawing.Size(151, 22);
RestoreWindowMenuItem.Text = "Restore";
RestoreWindowMenuItem.Click += new System.EventHandler(this.RestoreMainForm_Handler);
//
// ExitMenuItem
//
ExitMenuItem.Name = "ExitMenuItem";
ExitMenuItem.Size = new System.Drawing.Size(151, 22);
ExitMenuItem.Text = "Exit";
ExitMenuItem.Click += new System.EventHandler(this.ExitMenuItemClick_Handler);
//
// TitleMenuItem
//
TitleMenuItem.Enabled = false;
TitleMenuItem.Name = "TitleMenuItem";
TitleMenuItem.Size = new System.Drawing.Size(151, 22);
TitleMenuItem.Text = "EVE-O Preview";
//
// SeparatorMenuItem
//
SeparatorMenuItem.Name = "SeparatorMenuItem";
SeparatorMenuItem.Size = new System.Drawing.Size(148, 6);
//
// ContentTabControl
//
ContentTabControl.Alignment = System.Windows.Forms.TabAlignment.Left;
ContentTabControl.Controls.Add(GeneralTabPage);
ContentTabControl.Controls.Add(ThumbnailTabPage);
ContentTabControl.Controls.Add(this.ZoomTabPage);
ContentTabControl.Controls.Add(OverlayTabPage);
ContentTabControl.Controls.Add(ClientsTabPage);
ContentTabControl.Controls.Add(AboutTabPage);
ContentTabControl.Dock = System.Windows.Forms.DockStyle.Fill;
ContentTabControl.DrawMode = System.Windows.Forms.TabDrawMode.OwnerDrawFixed;
ContentTabControl.ItemSize = new System.Drawing.Size(35, 120);
ContentTabControl.Location = new System.Drawing.Point(0, 0);
ContentTabControl.Multiline = true;
ContentTabControl.Name = "ContentTabControl";
ContentTabControl.SelectedIndex = 0;
ContentTabControl.Size = new System.Drawing.Size(390, 218);
ContentTabControl.SizeMode = System.Windows.Forms.TabSizeMode.Fixed;
ContentTabControl.TabIndex = 6;
ContentTabControl.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.ContentTabControl_DrawItem);
//
// GeneralTabPage
//
GeneralTabPage.BackColor = System.Drawing.SystemColors.Control;
GeneralTabPage.Controls.Add(GeneralSettingsPanel);
GeneralTabPage.Location = new System.Drawing.Point(124, 4);
GeneralTabPage.Name = "GeneralTabPage";
GeneralTabPage.Padding = new System.Windows.Forms.Padding(3);
GeneralTabPage.Size = new System.Drawing.Size(262, 210);
GeneralTabPage.TabIndex = 0;
GeneralTabPage.Text = "General";
//
// GeneralSettingsPanel
//
GeneralSettingsPanel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
GeneralSettingsPanel.Controls.Add(this.EnableClientLayoutTrackingCheckBox);
GeneralSettingsPanel.Controls.Add(this.HideActiveClientThumbnailCheckBox);
GeneralSettingsPanel.Controls.Add(this.ShowThumbnailsAlwaysOnTopCheckBox);
GeneralSettingsPanel.Controls.Add(this.HideThumbnailsOnLostFocusCheckBox);
GeneralSettingsPanel.Controls.Add(this.EnablePerClientThumbnailsLayoutsCheckBox);
GeneralSettingsPanel.Controls.Add(this.MinimizeToTrayCheckBox);
GeneralSettingsPanel.Dock = System.Windows.Forms.DockStyle.Fill;
GeneralSettingsPanel.Location = new System.Drawing.Point(3, 3);
GeneralSettingsPanel.Name = "GeneralSettingsPanel";
GeneralSettingsPanel.Size = new System.Drawing.Size(256, 204);
GeneralSettingsPanel.TabIndex = 18;
//
// EnableClientLayoutTrackingCheckBox
//
this.EnableClientLayoutTrackingCheckBox.AutoSize = true;
this.EnableClientLayoutTrackingCheckBox.Location = new System.Drawing.Point(8, 31);
this.EnableClientLayoutTrackingCheckBox.Name = "EnableClientLayoutTrackingCheckBox";
this.EnableClientLayoutTrackingCheckBox.Size = new System.Drawing.Size(127, 17);
this.EnableClientLayoutTrackingCheckBox.TabIndex = 19;
this.EnableClientLayoutTrackingCheckBox.Text = "Track client locations";
this.EnableClientLayoutTrackingCheckBox.UseVisualStyleBackColor = true;
this.EnableClientLayoutTrackingCheckBox.CheckedChanged += new System.EventHandler(this.OptionChanged_Handler);
//
// HideActiveClientThumbnailCheckBox
//
this.HideActiveClientThumbnailCheckBox.AutoSize = true;
this.HideActiveClientThumbnailCheckBox.Checked = true;
this.HideActiveClientThumbnailCheckBox.CheckState = System.Windows.Forms.CheckState.Checked;
this.HideActiveClientThumbnailCheckBox.Location = new System.Drawing.Point(8, 55);
this.HideActiveClientThumbnailCheckBox.Name = "HideActiveClientThumbnailCheckBox";
this.HideActiveClientThumbnailCheckBox.Size = new System.Drawing.Size(184, 17);
this.HideActiveClientThumbnailCheckBox.TabIndex = 20;
this.HideActiveClientThumbnailCheckBox.Text = "Hide preview of active EVE client";
this.HideActiveClientThumbnailCheckBox.UseVisualStyleBackColor = true;
this.HideActiveClientThumbnailCheckBox.CheckedChanged += new System.EventHandler(this.OptionChanged_Handler);
//
// ShowThumbnailsAlwaysOnTopCheckBox
//
this.ShowThumbnailsAlwaysOnTopCheckBox.AutoSize = true;
this.ShowThumbnailsAlwaysOnTopCheckBox.Checked = true;
this.ShowThumbnailsAlwaysOnTopCheckBox.CheckState = System.Windows.Forms.CheckState.Checked;
this.ShowThumbnailsAlwaysOnTopCheckBox.Location = new System.Drawing.Point(8, 79);
this.ShowThumbnailsAlwaysOnTopCheckBox.Name = "ShowThumbnailsAlwaysOnTopCheckBox";
this.ShowThumbnailsAlwaysOnTopCheckBox.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.ShowThumbnailsAlwaysOnTopCheckBox.Size = new System.Drawing.Size(137, 17);
this.ShowThumbnailsAlwaysOnTopCheckBox.TabIndex = 21;
this.ShowThumbnailsAlwaysOnTopCheckBox.Text = "Previews always on top";
this.ShowThumbnailsAlwaysOnTopCheckBox.UseVisualStyleBackColor = true;
this.ShowThumbnailsAlwaysOnTopCheckBox.CheckedChanged += new System.EventHandler(this.OptionChanged_Handler);
//
// HideThumbnailsOnLostFocusCheckBox
//
this.HideThumbnailsOnLostFocusCheckBox.AutoSize = true;
this.HideThumbnailsOnLostFocusCheckBox.Checked = true;
this.HideThumbnailsOnLostFocusCheckBox.CheckState = System.Windows.Forms.CheckState.Checked;
this.HideThumbnailsOnLostFocusCheckBox.Location = new System.Drawing.Point(8, 103);
this.HideThumbnailsOnLostFocusCheckBox.Name = "HideThumbnailsOnLostFocusCheckBox";
this.HideThumbnailsOnLostFocusCheckBox.Size = new System.Drawing.Size(234, 17);
this.HideThumbnailsOnLostFocusCheckBox.TabIndex = 22;
this.HideThumbnailsOnLostFocusCheckBox.Text = "Hide previews when EVE client is not active";
this.HideThumbnailsOnLostFocusCheckBox.UseVisualStyleBackColor = true;
this.HideThumbnailsOnLostFocusCheckBox.CheckedChanged += new System.EventHandler(this.OptionChanged_Handler);
//
// EnablePerClientThumbnailsLayoutsCheckBox
//
this.EnablePerClientThumbnailsLayoutsCheckBox.AutoSize = true;
this.EnablePerClientThumbnailsLayoutsCheckBox.Checked = true;
this.EnablePerClientThumbnailsLayoutsCheckBox.CheckState = System.Windows.Forms.CheckState.Checked;
this.EnablePerClientThumbnailsLayoutsCheckBox.Location = new System.Drawing.Point(8, 127);
this.EnablePerClientThumbnailsLayoutsCheckBox.Name = "EnablePerClientThumbnailsLayoutsCheckBox";
this.EnablePerClientThumbnailsLayoutsCheckBox.Size = new System.Drawing.Size(185, 17);
this.EnablePerClientThumbnailsLayoutsCheckBox.TabIndex = 23;
this.EnablePerClientThumbnailsLayoutsCheckBox.Text = "Unique layout for each EVE client";
this.EnablePerClientThumbnailsLayoutsCheckBox.UseVisualStyleBackColor = true;
this.EnablePerClientThumbnailsLayoutsCheckBox.CheckedChanged += new System.EventHandler(this.OptionChanged_Handler);
//
// MinimizeToTrayCheckBox
//
this.MinimizeToTrayCheckBox.AutoSize = true;
this.MinimizeToTrayCheckBox.Location = new System.Drawing.Point(8, 7);
this.MinimizeToTrayCheckBox.Name = "MinimizeToTrayCheckBox";
this.MinimizeToTrayCheckBox.Size = new System.Drawing.Size(139, 17);
this.MinimizeToTrayCheckBox.TabIndex = 18;
this.MinimizeToTrayCheckBox.Text = "Minimize to System Tray";
this.MinimizeToTrayCheckBox.UseVisualStyleBackColor = true;
this.MinimizeToTrayCheckBox.CheckedChanged += new System.EventHandler(this.OptionChanged_Handler);
//
// ThumbnailTabPage
//
ThumbnailTabPage.BackColor = System.Drawing.SystemColors.Control;
ThumbnailTabPage.Controls.Add(ThumbnailSettingsPanel);
ThumbnailTabPage.Location = new System.Drawing.Point(124, 4);
ThumbnailTabPage.Name = "ThumbnailTabPage";
ThumbnailTabPage.Padding = new System.Windows.Forms.Padding(3);
ThumbnailTabPage.Size = new System.Drawing.Size(262, 210);
ThumbnailTabPage.TabIndex = 1;
ThumbnailTabPage.Text = "Thumbnail";
//
// ThumbnailSettingsPanel
//
ThumbnailSettingsPanel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
ThumbnailSettingsPanel.Controls.Add(HeigthLabel);
ThumbnailSettingsPanel.Controls.Add(WidthLabel);
ThumbnailSettingsPanel.Controls.Add(this.ThumbnailsWidthNumericEdit);
ThumbnailSettingsPanel.Controls.Add(this.ThumbnailsHeightNumericEdit);
ThumbnailSettingsPanel.Controls.Add(this.ThumbnailOpacityTrackBar);
ThumbnailSettingsPanel.Controls.Add(OpacityLabel);
ThumbnailSettingsPanel.Dock = System.Windows.Forms.DockStyle.Fill;
ThumbnailSettingsPanel.Location = new System.Drawing.Point(3, 3);
ThumbnailSettingsPanel.Name = "ThumbnailSettingsPanel";
ThumbnailSettingsPanel.Size = new System.Drawing.Size(256, 204);
ThumbnailSettingsPanel.TabIndex = 19;
//
// HeigthLabel
//
HeigthLabel.AutoSize = true;
HeigthLabel.Location = new System.Drawing.Point(8, 57);
HeigthLabel.Name = "HeigthLabel";
HeigthLabel.Size = new System.Drawing.Size(90, 13);
HeigthLabel.TabIndex = 24;
HeigthLabel.Text = "Thumbnail Heigth";
//
// WidthLabel
//
WidthLabel.AutoSize = true;
WidthLabel.Location = new System.Drawing.Point(8, 33);
WidthLabel.Name = "WidthLabel";
WidthLabel.Size = new System.Drawing.Size(87, 13);
WidthLabel.TabIndex = 23;
WidthLabel.Text = "Thumbnail Width";
//
// ThumbnailsWidthNumericEdit
//
this.ThumbnailsWidthNumericEdit.BackColor = System.Drawing.SystemColors.Window;
this.ThumbnailsWidthNumericEdit.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.ThumbnailsWidthNumericEdit.CausesValidation = false;
this.ThumbnailsWidthNumericEdit.Increment = new decimal(new int[] {
10,
0,
0,
0});
this.ThumbnailsWidthNumericEdit.Location = new System.Drawing.Point(105, 31);
this.ThumbnailsWidthNumericEdit.Maximum = new decimal(new int[] {
999999,
0,
0,
0});
this.ThumbnailsWidthNumericEdit.Name = "ThumbnailsWidthNumericEdit";
this.ThumbnailsWidthNumericEdit.Size = new System.Drawing.Size(48, 20);
this.ThumbnailsWidthNumericEdit.TabIndex = 21;
this.ThumbnailsWidthNumericEdit.Value = new decimal(new int[] {
100,
0,
0,
0});
this.ThumbnailsWidthNumericEdit.ValueChanged += new System.EventHandler(this.ThumbnailSizeChanged_Handler);
//
// ThumbnailsHeightNumericEdit
//
this.ThumbnailsHeightNumericEdit.BackColor = System.Drawing.SystemColors.Window;
this.ThumbnailsHeightNumericEdit.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.ThumbnailsHeightNumericEdit.CausesValidation = false;
this.ThumbnailsHeightNumericEdit.Increment = new decimal(new int[] {
10,
0,
0,
0});
this.ThumbnailsHeightNumericEdit.Location = new System.Drawing.Point(105, 55);
this.ThumbnailsHeightNumericEdit.Maximum = new decimal(new int[] {
99999999,
0,
0,
0});
this.ThumbnailsHeightNumericEdit.Name = "ThumbnailsHeightNumericEdit";
this.ThumbnailsHeightNumericEdit.Size = new System.Drawing.Size(48, 20);
this.ThumbnailsHeightNumericEdit.TabIndex = 22;
this.ThumbnailsHeightNumericEdit.Value = new decimal(new int[] {
70,
0,
0,
0});
this.ThumbnailsHeightNumericEdit.ValueChanged += new System.EventHandler(this.ThumbnailSizeChanged_Handler);
//
// ThumbnailOpacityTrackBar
//
this.ThumbnailOpacityTrackBar.AutoSize = false;
this.ThumbnailOpacityTrackBar.LargeChange = 10;
this.ThumbnailOpacityTrackBar.Location = new System.Drawing.Point(61, 6);
this.ThumbnailOpacityTrackBar.Maximum = 100;
this.ThumbnailOpacityTrackBar.Minimum = 20;
this.ThumbnailOpacityTrackBar.Name = "ThumbnailOpacityTrackBar";
this.ThumbnailOpacityTrackBar.Size = new System.Drawing.Size(191, 22);
this.ThumbnailOpacityTrackBar.TabIndex = 20;
this.ThumbnailOpacityTrackBar.TickFrequency = 10;
this.ThumbnailOpacityTrackBar.Value = 20;
this.ThumbnailOpacityTrackBar.ValueChanged += new System.EventHandler(this.OptionChanged_Handler);
//
// OpacityLabel
//
OpacityLabel.AutoSize = true;
OpacityLabel.Location = new System.Drawing.Point(8, 9);
OpacityLabel.Name = "OpacityLabel";
OpacityLabel.Size = new System.Drawing.Size(43, 13);
OpacityLabel.TabIndex = 19;
OpacityLabel.Text = "Opacity";
//
// ZoomTabPage
//
this.ZoomTabPage.BackColor = System.Drawing.SystemColors.Control;
this.ZoomTabPage.Controls.Add(ZoomSettingsPanel);
this.ZoomTabPage.Location = new System.Drawing.Point(124, 4);
this.ZoomTabPage.Name = "ZoomTabPage";
this.ZoomTabPage.Size = new System.Drawing.Size(262, 210);
this.ZoomTabPage.TabIndex = 2;
this.ZoomTabPage.Text = "Zoom";
//
// ZoomSettingsPanel
//
ZoomSettingsPanel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
ZoomSettingsPanel.Controls.Add(ZoomFactorLabel);
ZoomSettingsPanel.Controls.Add(this.ZoomAnchorPanel);
ZoomSettingsPanel.Controls.Add(ZoomAnchorLabel);
ZoomSettingsPanel.Controls.Add(this.EnableThumbnailZoomCheckBox);
ZoomSettingsPanel.Controls.Add(this.ThumbnailZoomFactorNumericEdit);
ZoomSettingsPanel.Dock = System.Windows.Forms.DockStyle.Fill;
ZoomSettingsPanel.Location = new System.Drawing.Point(0, 0);
ZoomSettingsPanel.Name = "ZoomSettingsPanel";
ZoomSettingsPanel.Size = new System.Drawing.Size(262, 210);
ZoomSettingsPanel.TabIndex = 36;
//
// ZoomFactorLabel
//
ZoomFactorLabel.AutoSize = true;
ZoomFactorLabel.Location = new System.Drawing.Point(8, 33);
ZoomFactorLabel.Name = "ZoomFactorLabel";
ZoomFactorLabel.Size = new System.Drawing.Size(67, 13);
ZoomFactorLabel.TabIndex = 39;
ZoomFactorLabel.Text = "Zoom Factor";
//
// ZoomAnchorPanel
//
this.ZoomAnchorPanel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.ZoomAnchorPanel.Controls.Add(this.ZoomAanchorNWRadioButton);
this.ZoomAnchorPanel.Controls.Add(this.ZoomAanchorNRadioButton);
this.ZoomAnchorPanel.Controls.Add(this.ZoomAanchorNERadioButton);
this.ZoomAnchorPanel.Controls.Add(this.ZoomAanchorWRadioButton);
this.ZoomAnchorPanel.Controls.Add(this.ZoomAanchorSERadioButton);
this.ZoomAnchorPanel.Controls.Add(this.ZoomAanchorCRadioButton);
this.ZoomAnchorPanel.Controls.Add(this.ZoomAanchorSRadioButton);
this.ZoomAnchorPanel.Controls.Add(this.ZoomAanchorERadioButton);
this.ZoomAnchorPanel.Controls.Add(this.ZoomAanchorSWRadioButton);
this.ZoomAnchorPanel.Location = new System.Drawing.Point(81, 54);
this.ZoomAnchorPanel.Name = "ZoomAnchorPanel";
this.ZoomAnchorPanel.Size = new System.Drawing.Size(77, 73);
this.ZoomAnchorPanel.TabIndex = 38;
//
// ZoomAanchorNWRadioButton
//
this.ZoomAanchorNWRadioButton.AutoSize = true;
this.ZoomAanchorNWRadioButton.Location = new System.Drawing.Point(3, 3);
this.ZoomAanchorNWRadioButton.Name = "ZoomAanchorNWRadioButton";
this.ZoomAanchorNWRadioButton.Size = new System.Drawing.Size(14, 13);
this.ZoomAanchorNWRadioButton.TabIndex = 0;
this.ZoomAanchorNWRadioButton.TabStop = true;
this.ZoomAanchorNWRadioButton.UseVisualStyleBackColor = true;
this.ZoomAanchorNWRadioButton.CheckedChanged += new System.EventHandler(this.OptionChanged_Handler);
//
// ZoomAanchorNRadioButton
//
this.ZoomAanchorNRadioButton.AutoSize = true;
this.ZoomAanchorNRadioButton.Location = new System.Drawing.Point(31, 3);
this.ZoomAanchorNRadioButton.Name = "ZoomAanchorNRadioButton";
this.ZoomAanchorNRadioButton.Size = new System.Drawing.Size(14, 13);
this.ZoomAanchorNRadioButton.TabIndex = 1;
this.ZoomAanchorNRadioButton.TabStop = true;
this.ZoomAanchorNRadioButton.UseVisualStyleBackColor = true;
this.ZoomAanchorNRadioButton.CheckedChanged += new System.EventHandler(this.OptionChanged_Handler);
//
// ZoomAanchorNERadioButton
//
this.ZoomAanchorNERadioButton.AutoSize = true;
this.ZoomAanchorNERadioButton.Location = new System.Drawing.Point(59, 3);
this.ZoomAanchorNERadioButton.Name = "ZoomAanchorNERadioButton";
this.ZoomAanchorNERadioButton.Size = new System.Drawing.Size(14, 13);
this.ZoomAanchorNERadioButton.TabIndex = 2;
this.ZoomAanchorNERadioButton.TabStop = true;
this.ZoomAanchorNERadioButton.UseVisualStyleBackColor = true;
this.ZoomAanchorNERadioButton.CheckedChanged += new System.EventHandler(this.OptionChanged_Handler);
//
// ZoomAanchorWRadioButton
//
this.ZoomAanchorWRadioButton.AutoSize = true;
this.ZoomAanchorWRadioButton.Location = new System.Drawing.Point(3, 29);
this.ZoomAanchorWRadioButton.Name = "ZoomAanchorWRadioButton";
this.ZoomAanchorWRadioButton.Size = new System.Drawing.Size(14, 13);
this.ZoomAanchorWRadioButton.TabIndex = 3;
this.ZoomAanchorWRadioButton.TabStop = true;
this.ZoomAanchorWRadioButton.UseVisualStyleBackColor = true;
this.ZoomAanchorWRadioButton.CheckedChanged += new System.EventHandler(this.OptionChanged_Handler);
//
// ZoomAanchorSERadioButton
//
this.ZoomAanchorSERadioButton.AutoSize = true;
this.ZoomAanchorSERadioButton.Location = new System.Drawing.Point(59, 55);
this.ZoomAanchorSERadioButton.Name = "ZoomAanchorSERadioButton";
this.ZoomAanchorSERadioButton.Size = new System.Drawing.Size(14, 13);
this.ZoomAanchorSERadioButton.TabIndex = 8;
this.ZoomAanchorSERadioButton.TabStop = true;
this.ZoomAanchorSERadioButton.UseVisualStyleBackColor = true;
this.ZoomAanchorSERadioButton.CheckedChanged += new System.EventHandler(this.OptionChanged_Handler);
//
// ZoomAanchorCRadioButton
//
this.ZoomAanchorCRadioButton.AutoSize = true;
this.ZoomAanchorCRadioButton.Location = new System.Drawing.Point(31, 29);
this.ZoomAanchorCRadioButton.Name = "ZoomAanchorCRadioButton";
this.ZoomAanchorCRadioButton.Size = new System.Drawing.Size(14, 13);
this.ZoomAanchorCRadioButton.TabIndex = 4;
this.ZoomAanchorCRadioButton.TabStop = true;
this.ZoomAanchorCRadioButton.UseVisualStyleBackColor = true;
this.ZoomAanchorCRadioButton.CheckedChanged += new System.EventHandler(this.OptionChanged_Handler);
//
// ZoomAanchorSRadioButton
//
this.ZoomAanchorSRadioButton.AutoSize = true;
this.ZoomAanchorSRadioButton.Location = new System.Drawing.Point(31, 55);
this.ZoomAanchorSRadioButton.Name = "ZoomAanchorSRadioButton";
this.ZoomAanchorSRadioButton.Size = new System.Drawing.Size(14, 13);
this.ZoomAanchorSRadioButton.TabIndex = 7;
this.ZoomAanchorSRadioButton.TabStop = true;
this.ZoomAanchorSRadioButton.UseVisualStyleBackColor = true;
this.ZoomAanchorSRadioButton.CheckedChanged += new System.EventHandler(this.OptionChanged_Handler);
//
// ZoomAanchorERadioButton
//
this.ZoomAanchorERadioButton.AutoSize = true;
this.ZoomAanchorERadioButton.Location = new System.Drawing.Point(59, 29);
this.ZoomAanchorERadioButton.Name = "ZoomAanchorERadioButton";
this.ZoomAanchorERadioButton.Size = new System.Drawing.Size(14, 13);
this.ZoomAanchorERadioButton.TabIndex = 5;
this.ZoomAanchorERadioButton.TabStop = true;
this.ZoomAanchorERadioButton.UseVisualStyleBackColor = true;
this.ZoomAanchorERadioButton.CheckedChanged += new System.EventHandler(this.OptionChanged_Handler);
//
// ZoomAanchorSWRadioButton
//
this.ZoomAanchorSWRadioButton.AutoSize = true;
this.ZoomAanchorSWRadioButton.Location = new System.Drawing.Point(3, 55);
this.ZoomAanchorSWRadioButton.Name = "ZoomAanchorSWRadioButton";
this.ZoomAanchorSWRadioButton.Size = new System.Drawing.Size(14, 13);
this.ZoomAanchorSWRadioButton.TabIndex = 6;
this.ZoomAanchorSWRadioButton.TabStop = true;
this.ZoomAanchorSWRadioButton.UseVisualStyleBackColor = true;
this.ZoomAanchorSWRadioButton.CheckedChanged += new System.EventHandler(this.OptionChanged_Handler);
//
// ZoomAnchorLabel
//
ZoomAnchorLabel.AutoSize = true;
ZoomAnchorLabel.Location = new System.Drawing.Point(8, 57);
ZoomAnchorLabel.Name = "ZoomAnchorLabel";
ZoomAnchorLabel.Size = new System.Drawing.Size(41, 13);
ZoomAnchorLabel.TabIndex = 40;
ZoomAnchorLabel.Text = "Anchor";
//
// EnableThumbnailZoomCheckBox
//
this.EnableThumbnailZoomCheckBox.AutoSize = true;
this.EnableThumbnailZoomCheckBox.Checked = true;
this.EnableThumbnailZoomCheckBox.CheckState = System.Windows.Forms.CheckState.Checked;
this.EnableThumbnailZoomCheckBox.Location = new System.Drawing.Point(8, 7);
this.EnableThumbnailZoomCheckBox.Name = "EnableThumbnailZoomCheckBox";
this.EnableThumbnailZoomCheckBox.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.EnableThumbnailZoomCheckBox.Size = new System.Drawing.Size(98, 17);
this.EnableThumbnailZoomCheckBox.TabIndex = 36;
this.EnableThumbnailZoomCheckBox.Text = "Zoom on hover";
this.EnableThumbnailZoomCheckBox.UseVisualStyleBackColor = true;
this.EnableThumbnailZoomCheckBox.CheckedChanged += new System.EventHandler(this.OptionChanged_Handler);
//
// ThumbnailZoomFactorNumericEdit
//
this.ThumbnailZoomFactorNumericEdit.BackColor = System.Drawing.SystemColors.Window;
this.ThumbnailZoomFactorNumericEdit.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.ThumbnailZoomFactorNumericEdit.Location = new System.Drawing.Point(81, 31);
this.ThumbnailZoomFactorNumericEdit.Maximum = new decimal(new int[] {
10,
0,
0,
0});
this.ThumbnailZoomFactorNumericEdit.Minimum = new decimal(new int[] {
2,
0,
0,
0});
this.ThumbnailZoomFactorNumericEdit.Name = "ThumbnailZoomFactorNumericEdit";
this.ThumbnailZoomFactorNumericEdit.Size = new System.Drawing.Size(38, 20);
this.ThumbnailZoomFactorNumericEdit.TabIndex = 37;
this.ThumbnailZoomFactorNumericEdit.Value = new decimal(new int[] {
2,
0,
0,
0});
this.ThumbnailZoomFactorNumericEdit.ValueChanged += new System.EventHandler(this.OptionChanged_Handler);
//
// OverlayTabPage
//
OverlayTabPage.BackColor = System.Drawing.SystemColors.Control;
OverlayTabPage.Controls.Add(OverlaySettingsPanel);
OverlayTabPage.Location = new System.Drawing.Point(124, 4);
OverlayTabPage.Name = "OverlayTabPage";
OverlayTabPage.Size = new System.Drawing.Size(262, 210);
OverlayTabPage.TabIndex = 3;
OverlayTabPage.Text = "Overlay";
//
// OverlaySettingsPanel
//
OverlaySettingsPanel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
OverlaySettingsPanel.Controls.Add(this.HighlightColorLabel);
OverlaySettingsPanel.Controls.Add(this.ActiveClientHighlightColorButton);
OverlaySettingsPanel.Controls.Add(this.EnableActiveClientHighlightCheckBox);
OverlaySettingsPanel.Controls.Add(this.ShowThumbnailOverlaysCheckBox);
OverlaySettingsPanel.Controls.Add(this.ShowThumbnailFramesCheckBox);
OverlaySettingsPanel.Dock = System.Windows.Forms.DockStyle.Fill;
OverlaySettingsPanel.Location = new System.Drawing.Point(0, 0);
OverlaySettingsPanel.Name = "OverlaySettingsPanel";
OverlaySettingsPanel.Size = new System.Drawing.Size(262, 210);
OverlaySettingsPanel.TabIndex = 25;
//
// HighlightColorLabel
//
this.HighlightColorLabel.AutoSize = true;
this.HighlightColorLabel.Location = new System.Drawing.Point(5, 78);
this.HighlightColorLabel.Name = "HighlightColorLabel";
this.HighlightColorLabel.Size = new System.Drawing.Size(31, 13);
this.HighlightColorLabel.TabIndex = 29;
this.HighlightColorLabel.Text = "Color";
//
// ActiveClientHighlightColorButton
//
this.ActiveClientHighlightColorButton.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.ActiveClientHighlightColorButton.Location = new System.Drawing.Point(42, 77);
this.ActiveClientHighlightColorButton.Name = "ActiveClientHighlightColorButton";
this.ActiveClientHighlightColorButton.Size = new System.Drawing.Size(93, 17);
this.ActiveClientHighlightColorButton.TabIndex = 28;
this.ActiveClientHighlightColorButton.Click += new System.EventHandler(this.ActiveClientHighlightColorButton_Click);
//
// EnableActiveClientHighlightCheckBox
//
this.EnableActiveClientHighlightCheckBox.AutoSize = true;
this.EnableActiveClientHighlightCheckBox.Checked = true;
this.EnableActiveClientHighlightCheckBox.CheckState = System.Windows.Forms.CheckState.Checked;
this.EnableActiveClientHighlightCheckBox.Location = new System.Drawing.Point(8, 55);
this.EnableActiveClientHighlightCheckBox.Name = "EnableActiveClientHighlightCheckBox";
this.EnableActiveClientHighlightCheckBox.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.EnableActiveClientHighlightCheckBox.Size = new System.Drawing.Size(127, 17);
this.EnableActiveClientHighlightCheckBox.TabIndex = 27;
this.EnableActiveClientHighlightCheckBox.Text = "Highlight active client";
this.EnableActiveClientHighlightCheckBox.UseVisualStyleBackColor = true;
this.EnableActiveClientHighlightCheckBox.CheckedChanged += new System.EventHandler(this.OptionChanged_Handler);
//
// ShowThumbnailOverlaysCheckBox
//
this.ShowThumbnailOverlaysCheckBox.AutoSize = true;
this.ShowThumbnailOverlaysCheckBox.Checked = true;
this.ShowThumbnailOverlaysCheckBox.CheckState = System.Windows.Forms.CheckState.Checked;
this.ShowThumbnailOverlaysCheckBox.Location = new System.Drawing.Point(8, 7);
this.ShowThumbnailOverlaysCheckBox.Name = "ShowThumbnailOverlaysCheckBox";
this.ShowThumbnailOverlaysCheckBox.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.ShowThumbnailOverlaysCheckBox.Size = new System.Drawing.Size(90, 17);
this.ShowThumbnailOverlaysCheckBox.TabIndex = 25;
this.ShowThumbnailOverlaysCheckBox.Text = "Show overlay";
this.ShowThumbnailOverlaysCheckBox.UseVisualStyleBackColor = true;
this.ShowThumbnailOverlaysCheckBox.CheckedChanged += new System.EventHandler(this.OptionChanged_Handler);
//
// ShowThumbnailFramesCheckBox
//
this.ShowThumbnailFramesCheckBox.AutoSize = true;
this.ShowThumbnailFramesCheckBox.Checked = true;
this.ShowThumbnailFramesCheckBox.CheckState = System.Windows.Forms.CheckState.Checked;
this.ShowThumbnailFramesCheckBox.Location = new System.Drawing.Point(8, 31);
this.ShowThumbnailFramesCheckBox.Name = "ShowThumbnailFramesCheckBox";
this.ShowThumbnailFramesCheckBox.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.ShowThumbnailFramesCheckBox.Size = new System.Drawing.Size(87, 17);
this.ShowThumbnailFramesCheckBox.TabIndex = 26;
this.ShowThumbnailFramesCheckBox.Text = "Show frames";
this.ShowThumbnailFramesCheckBox.UseVisualStyleBackColor = true;
this.ShowThumbnailFramesCheckBox.CheckedChanged += new System.EventHandler(this.OptionChanged_Handler);
//
// ClientsTabPage
//
ClientsTabPage.BackColor = System.Drawing.SystemColors.Control;
ClientsTabPage.Controls.Add(ClientsPanel);
ClientsTabPage.Location = new System.Drawing.Point(124, 4);
ClientsTabPage.Name = "ClientsTabPage";
ClientsTabPage.Size = new System.Drawing.Size(262, 210);
ClientsTabPage.TabIndex = 4;
ClientsTabPage.Text = "Active Clients";
//
// ClientsPanel
//
ClientsPanel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
ClientsPanel.Controls.Add(this.ThumbnailsList);
ClientsPanel.Controls.Add(ThumbnailsListLabel);
ClientsPanel.Dock = System.Windows.Forms.DockStyle.Fill;
ClientsPanel.Location = new System.Drawing.Point(0, 0);
ClientsPanel.Name = "ClientsPanel";
ClientsPanel.Size = new System.Drawing.Size(262, 210);
ClientsPanel.TabIndex = 32;
//
// ThumbnailsList
//
this.ThumbnailsList.BackColor = System.Drawing.SystemColors.Window;
this.ThumbnailsList.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.ThumbnailsList.Dock = System.Windows.Forms.DockStyle.Bottom;
this.ThumbnailsList.FormattingEnabled = true;
this.ThumbnailsList.IntegralHeight = false;
this.ThumbnailsList.Location = new System.Drawing.Point(0, 28);
this.ThumbnailsList.Name = "ThumbnailsList";
this.ThumbnailsList.Size = new System.Drawing.Size(260, 180);
this.ThumbnailsList.TabIndex = 34;
this.ThumbnailsList.ItemCheck += new System.Windows.Forms.ItemCheckEventHandler(this.ThumbnailsList_ItemCheck_Handler);
//
// ThumbnailsListLabel
//
ThumbnailsListLabel.AutoSize = true;
ThumbnailsListLabel.Location = new System.Drawing.Point(8, 9);
ThumbnailsListLabel.Name = "ThumbnailsListLabel";
ThumbnailsListLabel.Size = new System.Drawing.Size(162, 13);
ThumbnailsListLabel.TabIndex = 33;
ThumbnailsListLabel.Text = "Thumbnails (check to force hide)";
//
// AboutTabPage
//
AboutTabPage.BackColor = System.Drawing.SystemColors.Control;
AboutTabPage.Controls.Add(AboutPanel);
AboutTabPage.Location = new System.Drawing.Point(124, 4);
AboutTabPage.Name = "AboutTabPage";
AboutTabPage.Size = new System.Drawing.Size(262, 210);
AboutTabPage.TabIndex = 5;
AboutTabPage.Text = "About";
//
// AboutPanel
//
AboutPanel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
AboutPanel.Controls.Add(DocumentationLinkLabel);
AboutPanel.Controls.Add(DescriptionLabel);
AboutPanel.Controls.Add(this.VersionLabel);
AboutPanel.Controls.Add(NameLabel);
AboutPanel.Controls.Add(this.DocumentationLink);
AboutPanel.Dock = System.Windows.Forms.DockStyle.Fill;
AboutPanel.Location = new System.Drawing.Point(0, 0);
AboutPanel.Name = "AboutPanel";
AboutPanel.Size = new System.Drawing.Size(262, 210);
AboutPanel.TabIndex = 2;
//
// DocumentationLinkLabel
//
DocumentationLinkLabel.AutoSize = true;
DocumentationLinkLabel.Location = new System.Drawing.Point(0, 157);
DocumentationLinkLabel.Name = "DocumentationLinkLabel";
DocumentationLinkLabel.Padding = new System.Windows.Forms.Padding(8, 3, 8, 3);
DocumentationLinkLabel.Size = new System.Drawing.Size(222, 19);
DocumentationLinkLabel.TabIndex = 6;
DocumentationLinkLabel.Text = "For more information visit our forum thread:";
//
// DescriptionLabel
//
DescriptionLabel.Location = new System.Drawing.Point(0, 41);
DescriptionLabel.Name = "DescriptionLabel";
DescriptionLabel.Padding = new System.Windows.Forms.Padding(8, 3, 8, 3);
DescriptionLabel.Size = new System.Drawing.Size(261, 116);
DescriptionLabel.TabIndex = 5;
DescriptionLabel.Text = resources.GetString("DescriptionLabel.Text");
//
// VersionLabel
//
this.VersionLabel.AutoSize = true;
this.VersionLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.VersionLabel.Location = new System.Drawing.Point(133, 9);
this.VersionLabel.Name = "VersionLabel";
this.VersionLabel.Size = new System.Drawing.Size(49, 20);
this.VersionLabel.TabIndex = 4;
this.VersionLabel.Text = "1.0.0";
//
// NameLabel
//
NameLabel.AutoSize = true;
NameLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
NameLabel.Location = new System.Drawing.Point(4, 9);
NameLabel.Name = "NameLabel";
NameLabel.Size = new System.Drawing.Size(130, 20);
NameLabel.TabIndex = 3;
NameLabel.Text = "EVE-O Preview";
//
// DocumentationLink
//
this.DocumentationLink.Location = new System.Drawing.Point(0, 173);
this.DocumentationLink.Margin = new System.Windows.Forms.Padding(30, 3, 3, 3);
this.DocumentationLink.Name = "DocumentationLink";
this.DocumentationLink.Padding = new System.Windows.Forms.Padding(8, 3, 8, 3);
this.DocumentationLink.Size = new System.Drawing.Size(262, 33);
this.DocumentationLink.TabIndex = 2;
this.DocumentationLink.TabStop = true;
this.DocumentationLink.Text = "to be set from prresenter to be set from prresenter to be set from prresenter to " +
"be set from prresenter";
this.DocumentationLink.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.DocumentationLinkClicked_Handler);
//
// NotifyIcon
//
this.NotifyIcon.ContextMenuStrip = this.TrayMenu;
this.NotifyIcon.Icon = ((System.Drawing.Icon)(resources.GetObject("NotifyIcon.Icon")));
this.NotifyIcon.Text = "EVE-O Preview";
this.NotifyIcon.Visible = true;
this.NotifyIcon.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.RestoreMainForm_Handler);
//
// TrayMenu
//
this.TrayMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
TitleMenuItem,
RestoreWindowMenuItem,
SeparatorMenuItem,
ExitMenuItem});
this.TrayMenu.Name = "contextMenuStrip1";
this.TrayMenu.Size = new System.Drawing.Size(152, 76);
//
// MainForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.SystemColors.Control;
this.ClientSize = new System.Drawing.Size(390, 218);
this.Controls.Add(ContentTabControl);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Margin = new System.Windows.Forms.Padding(0);
this.MaximizeBox = false;
this.Name = "MainForm";
this.Text = "EVE-O Preview";
this.TopMost = true;
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainFormClosing_Handler);
this.Load += new System.EventHandler(this.MainFormResize_Handler);
this.Resize += new System.EventHandler(this.MainFormResize_Handler);
ContentTabControl.ResumeLayout(false);
GeneralTabPage.ResumeLayout(false);
GeneralSettingsPanel.ResumeLayout(false);
GeneralSettingsPanel.PerformLayout();
ThumbnailTabPage.ResumeLayout(false);
ThumbnailSettingsPanel.ResumeLayout(false);
ThumbnailSettingsPanel.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.ThumbnailsWidthNumericEdit)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.ThumbnailsHeightNumericEdit)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.ThumbnailOpacityTrackBar)).EndInit();
this.ZoomTabPage.ResumeLayout(false);
ZoomSettingsPanel.ResumeLayout(false);
ZoomSettingsPanel.PerformLayout();
this.ZoomAnchorPanel.ResumeLayout(false);
this.ZoomAnchorPanel.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.ThumbnailZoomFactorNumericEdit)).EndInit();
OverlayTabPage.ResumeLayout(false);
OverlaySettingsPanel.ResumeLayout(false);
OverlaySettingsPanel.PerformLayout();
ClientsTabPage.ResumeLayout(false);
ClientsPanel.ResumeLayout(false);
ClientsPanel.PerformLayout();
AboutTabPage.ResumeLayout(false);
AboutPanel.ResumeLayout(false);
AboutPanel.PerformLayout();
this.TrayMenu.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private NotifyIcon NotifyIcon;
private ContextMenuStrip TrayMenu;
private TabPage ZoomTabPage;
private CheckBox EnableClientLayoutTrackingCheckBox;
private CheckBox HideActiveClientThumbnailCheckBox;
private CheckBox ShowThumbnailsAlwaysOnTopCheckBox;
private CheckBox HideThumbnailsOnLostFocusCheckBox;
private CheckBox EnablePerClientThumbnailsLayoutsCheckBox;
private CheckBox MinimizeToTrayCheckBox;
private NumericUpDown ThumbnailsWidthNumericEdit;
private NumericUpDown ThumbnailsHeightNumericEdit;
private TrackBar ThumbnailOpacityTrackBar;
private Panel ZoomAnchorPanel;
private RadioButton ZoomAanchorNWRadioButton;
private RadioButton ZoomAanchorNRadioButton;
private RadioButton ZoomAanchorNERadioButton;
private RadioButton ZoomAanchorWRadioButton;
private RadioButton ZoomAanchorSERadioButton;
private RadioButton ZoomAanchorCRadioButton;
private RadioButton ZoomAanchorSRadioButton;
private RadioButton ZoomAanchorERadioButton;
private RadioButton ZoomAanchorSWRadioButton;
private CheckBox EnableThumbnailZoomCheckBox;
private NumericUpDown ThumbnailZoomFactorNumericEdit;
private Label HighlightColorLabel;
private Panel ActiveClientHighlightColorButton;
private CheckBox EnableActiveClientHighlightCheckBox;
private CheckBox ShowThumbnailOverlaysCheckBox;
private CheckBox ShowThumbnailFramesCheckBox;
private CheckedListBox ThumbnailsList;
private LinkLabel DocumentationLink;
private Label VersionLabel;
}
}

View File

@@ -0,0 +1,409 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using EveOPreview.UI;
namespace EveOPreview.View
{
public partial class MainForm : Form, IMainFormView
{
#region Private fields
private readonly ApplicationContext _context;
private readonly Dictionary<ViewZoomAnchor, RadioButton> _zoomAnchorMap;
private ViewZoomAnchor _cachedThumbnailZoomAnchor;
private bool _suppressEvents;
private Size _minimumSize;
private Size _maximumSize;
#endregion
public MainForm(ApplicationContext context)
{
this._context = context;
this._zoomAnchorMap = new Dictionary<ViewZoomAnchor, RadioButton>();
this._cachedThumbnailZoomAnchor = ViewZoomAnchor.NW;
this._suppressEvents = false;
this._minimumSize = new Size(80, 60);
this._maximumSize = new Size(80, 60);
InitializeComponent();
this.ThumbnailsList.DisplayMember = "Title";
this.InitZoomAnchorMap();
}
public bool MinimizeToTray
{
get => this.MinimizeToTrayCheckBox.Checked;
set => this.MinimizeToTrayCheckBox.Checked = value;
}
public double ThumbnailOpacity
{
get => Math.Min(this.ThumbnailOpacityTrackBar.Value / 100.00, 1.00);
set
{
int barValue = (int)(100.0 * value);
if (barValue > 100)
{
barValue = 100;
}
else if (barValue < 10)
{
barValue = 10;
}
this.ThumbnailOpacityTrackBar.Value = barValue;
}
}
public bool EnableClientLayoutTracking
{
get => this.EnableClientLayoutTrackingCheckBox.Checked;
set => this.EnableClientLayoutTrackingCheckBox.Checked = value;
}
public bool HideActiveClientThumbnail
{
get => this.HideActiveClientThumbnailCheckBox.Checked;
set => this.HideActiveClientThumbnailCheckBox.Checked = value;
}
public bool ShowThumbnailsAlwaysOnTop
{
get => this.ShowThumbnailsAlwaysOnTopCheckBox.Checked;
set => this.ShowThumbnailsAlwaysOnTopCheckBox.Checked = value;
}
public bool HideThumbnailsOnLostFocus
{
get => this.HideThumbnailsOnLostFocusCheckBox.Checked;
set => this.HideThumbnailsOnLostFocusCheckBox.Checked = value;
}
public bool EnablePerClientThumbnailLayouts
{
get => this.EnablePerClientThumbnailsLayoutsCheckBox.Checked;
set => this.EnablePerClientThumbnailsLayoutsCheckBox.Checked = value;
}
public Size ThumbnailSize
{
get => new Size((int)this.ThumbnailsWidthNumericEdit.Value, (int)this.ThumbnailsHeightNumericEdit.Value);
set
{
this.ThumbnailsWidthNumericEdit.Value = value.Width;
this.ThumbnailsHeightNumericEdit.Value = value.Height;
}
}
public bool EnableThumbnailZoom
{
get => this.EnableThumbnailZoomCheckBox.Checked;
set
{
this.EnableThumbnailZoomCheckBox.Checked = value;
this.RefreshZoomSettings();
}
}
public int ThumbnailZoomFactor
{
get => (int)this.ThumbnailZoomFactorNumericEdit.Value;
set => this.ThumbnailZoomFactorNumericEdit.Value = value;
}
public ViewZoomAnchor ThumbnailZoomAnchor
{
get
{
if (this._zoomAnchorMap[this._cachedThumbnailZoomAnchor].Checked)
{
return this._cachedThumbnailZoomAnchor;
}
foreach (KeyValuePair<ViewZoomAnchor, RadioButton> valuePair in this._zoomAnchorMap)
{
if (!valuePair.Value.Checked)
{
continue;
}
this._cachedThumbnailZoomAnchor = valuePair.Key;
return this._cachedThumbnailZoomAnchor;
}
// Default value
return ViewZoomAnchor.NW;
}
set
{
this._cachedThumbnailZoomAnchor = value;
this._zoomAnchorMap[this._cachedThumbnailZoomAnchor].Checked = true;
}
}
public bool ShowThumbnailOverlays
{
get => this.ShowThumbnailOverlaysCheckBox.Checked;
set => this.ShowThumbnailOverlaysCheckBox.Checked = value;
}
public bool ShowThumbnailFrames
{
get => this.ShowThumbnailFramesCheckBox.Checked;
set => this.ShowThumbnailFramesCheckBox.Checked = value;
}
public bool EnableActiveClientHighlight
{
get => this.EnableActiveClientHighlightCheckBox.Checked;
set => this.EnableActiveClientHighlightCheckBox.Checked = value;
}
public Color ActiveClientHighlightColor
{
get => this._activeClientHighlightColor;
set
{
this._activeClientHighlightColor = value;
this.ActiveClientHighlightColorButton.BackColor = value;
}
}
private Color _activeClientHighlightColor;
public new void Show()
{
// Registers the current instance as the application's Main Form
this._context.MainForm = this;
this._suppressEvents = true;
this.FormActivated?.Invoke();
this._suppressEvents = false;
Application.Run(this._context);
}
public void SetThumbnailSizeLimitations(Size minimumSize, Size maximumSize)
{
this._minimumSize = minimumSize;
this._maximumSize = maximumSize;
}
public void Minimize()
{
this.WindowState = FormWindowState.Minimized;
}
public void SetVersionInfo(string version)
{
this.VersionLabel.Text = version;
}
public void SetDocumentationUrl(string url)
{
this.DocumentationLink.Text = url;
}
public void AddThumbnails(IList<IThumbnailDescriptionView> thumbnails)
{
if (thumbnails.Count == 0)
{
return;
}
this.ThumbnailsList.BeginUpdate();
foreach (IThumbnailDescriptionView view in thumbnails)
{
this.ThumbnailsList.Items.Add(view);
}
this.ThumbnailsList.EndUpdate();
}
public void UpdateThumbnails(IList<IThumbnailDescriptionView> thumbnails)
{
// Just trigger redraw
if (thumbnails.Count > 0)
{
this.ThumbnailsList.Invalidate();
}
}
public void RemoveThumbnails(IList<IThumbnailDescriptionView> thumbnails)
{
if (thumbnails.Count == 0)
{
return;
}
this.ThumbnailsList.BeginUpdate();
foreach (IThumbnailDescriptionView view in thumbnails)
{
this.ThumbnailsList.Items.Remove(view);
}
this.ThumbnailsList.EndUpdate();
}
public void RefreshZoomSettings()
{
bool enableControls = this.EnableThumbnailZoom;
this.ThumbnailZoomFactorNumericEdit.Enabled = enableControls;
this.ZoomAnchorPanel.Enabled = enableControls;
}
public Action ApplicationExitRequested { get; set; }
public Action FormActivated { get; set; }
public Action FormMinimized { get; set; }
public Action<ViewCloseRequest> FormCloseRequested { get; set; }
public Action ApplicationSettingsChanged { get; set; }
public Action ThumbnailsSizeChanged { get; set; }
public Action<IntPtr> ThumbnailStateChanged { get; set; }
public Action DocumentationLinkActivated { get; set; }
#region UI events
private void ContentTabControl_DrawItem(object sender, DrawItemEventArgs e)
{
TabControl control = (TabControl)sender;
TabPage page = control.TabPages[e.Index];
Rectangle bounds = control.GetTabRect(e.Index);
Graphics graphics = e.Graphics;
Brush textBrush = new SolidBrush(SystemColors.ActiveCaptionText);
Brush backgroundBrush = (e.State == DrawItemState.Selected)
? new SolidBrush(SystemColors.Control)
: new SolidBrush(SystemColors.ControlDark);
graphics.FillRectangle(backgroundBrush, e.Bounds);
// Use our own font
Font font = new Font("Arial", this.Font.Size * 1.2f, FontStyle.Bold, GraphicsUnit.Pixel);
// Draw string and center the text
StringFormat stringFlags = new StringFormat();
stringFlags.Alignment = StringAlignment.Center;
stringFlags.LineAlignment = StringAlignment.Center;
graphics.DrawString(page.Text, font, textBrush, bounds, stringFlags);
}
private void OptionChanged_Handler(object sender, EventArgs e)
{
if (this._suppressEvents)
{
return;
}
this.ApplicationSettingsChanged?.Invoke();
}
private void ThumbnailSizeChanged_Handler(object sender, EventArgs e)
{
if (this._suppressEvents)
{
return;
}
// Perform some View work that is not properly done in the Control
this._suppressEvents = true;
Size thumbnailSize = this.ThumbnailSize;
thumbnailSize.Width = Math.Min(Math.Max(thumbnailSize.Width, this._minimumSize.Width), this._maximumSize.Width);
thumbnailSize.Height = Math.Min(Math.Max(thumbnailSize.Height, this._minimumSize.Height), this._maximumSize.Height);
this.ThumbnailSize = thumbnailSize;
this._suppressEvents = false;
this.ThumbnailsSizeChanged?.Invoke();
}
private void ActiveClientHighlightColorButton_Click(object sender, EventArgs e)
{
using (ColorDialog dialog = new ColorDialog())
{
dialog.Color = this.ActiveClientHighlightColor;
if (dialog.ShowDialog() != DialogResult.OK)
{
return;
}
this.ActiveClientHighlightColor = dialog.Color;
}
this.OptionChanged_Handler(sender, e);
}
private void ThumbnailsList_ItemCheck_Handler(object sender, ItemCheckEventArgs e)
{
IThumbnailDescriptionView selectedItem = this.ThumbnailsList.Items[e.Index] as IThumbnailDescriptionView;
if (selectedItem == null)
{
return;
}
selectedItem.IsDisabled = (e.NewValue == CheckState.Checked);
this.ThumbnailStateChanged?.Invoke(selectedItem.Id);
}
private void DocumentationLinkClicked_Handler(object sender, LinkLabelLinkClickedEventArgs e)
{
this.DocumentationLinkActivated?.Invoke();
}
private void MainFormResize_Handler(object sender, EventArgs e)
{
if (this.WindowState != FormWindowState.Minimized)
{
return;
}
this.FormMinimized?.Invoke();
}
private void MainFormClosing_Handler(object sender, FormClosingEventArgs e)
{
ViewCloseRequest request = new ViewCloseRequest();
this.FormCloseRequested?.Invoke(request);
e.Cancel = !request.Allow;
}
private void RestoreMainForm_Handler(object sender, EventArgs e)
{
// This is form's GUI lifecycle event that is invariant to the Form data
base.Show();
this.WindowState = FormWindowState.Normal;
this.BringToFront();
}
private void ExitMenuItemClick_Handler(object sender, EventArgs e)
{
this.ApplicationExitRequested?.Invoke();
}
#endregion
private void InitZoomAnchorMap()
{
this._zoomAnchorMap[ViewZoomAnchor.NW] = this.ZoomAanchorNWRadioButton;
this._zoomAnchorMap[ViewZoomAnchor.N] = this.ZoomAanchorNRadioButton;
this._zoomAnchorMap[ViewZoomAnchor.NE] = this.ZoomAanchorNERadioButton;
this._zoomAnchorMap[ViewZoomAnchor.W] = this.ZoomAanchorWRadioButton;
this._zoomAnchorMap[ViewZoomAnchor.C] = this.ZoomAanchorCRadioButton;
this._zoomAnchorMap[ViewZoomAnchor.E] = this.ZoomAanchorERadioButton;
this._zoomAnchorMap[ViewZoomAnchor.SW] = this.ZoomAanchorSWRadioButton;
this._zoomAnchorMap[ViewZoomAnchor.S] = this.ZoomAanchorSRadioButton;
this._zoomAnchorMap[ViewZoomAnchor.SE] = this.ZoomAanchorSERadioButton;
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,26 @@
using System;
using EveOPreview.UI;
namespace EveOPreview.View
{
public class ThumbnailDescriptionView : IThumbnailDescriptionView
{
public IntPtr Id { get; set; }
public string Title { get; set; }
public bool IsDisabled { get; set; }
public void Show()
{
}
public void Hide()
{
}
public void Close()
{
}
}
}

View File

@@ -0,0 +1,89 @@
namespace EveOPreview.UI
{
partial class ThumbnailOverlay
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.Windows.Forms.PictureBox OverlayAreaPictureBox;
this.OverlayLabel = new System.Windows.Forms.Label();
OverlayAreaPictureBox = new System.Windows.Forms.PictureBox();
((System.ComponentModel.ISupportInitialize)(OverlayAreaPictureBox)).BeginInit();
this.SuspendLayout();
//
// OverlayAreaPictureBox
//
OverlayAreaPictureBox.BackColor = System.Drawing.Color.Transparent;
OverlayAreaPictureBox.Cursor = System.Windows.Forms.Cursors.Hand;
OverlayAreaPictureBox.Dock = System.Windows.Forms.DockStyle.Fill;
OverlayAreaPictureBox.Location = new System.Drawing.Point(0, 0);
OverlayAreaPictureBox.Name = "OverlayAreaPictureBox";
OverlayAreaPictureBox.Size = new System.Drawing.Size(284, 262);
OverlayAreaPictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
OverlayAreaPictureBox.TabIndex = 0;
OverlayAreaPictureBox.TabStop = false;
OverlayAreaPictureBox.MouseUp += new System.Windows.Forms.MouseEventHandler(this.OverlayArea_Click);
//
// OverlayLabel
//
this.OverlayLabel.AutoSize = true;
this.OverlayLabel.Font = new System.Drawing.Font("Consolas", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.OverlayLabel.ForeColor = System.Drawing.Color.DarkGray;
this.OverlayLabel.Location = new System.Drawing.Point(8, 8);
this.OverlayLabel.Name = "OverlayLabel";
this.OverlayLabel.Size = new System.Drawing.Size(25, 13);
this.OverlayLabel.TabIndex = 1;
this.OverlayLabel.Text = "...";
//
// ThumbnailOverlay
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.Black;
this.ClientSize = new System.Drawing.Size(284, 262);
this.ControlBox = false;
this.Controls.Add(this.OverlayLabel);
this.Controls.Add(OverlayAreaPictureBox);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "ThumbnailOverlay";
this.ShowIcon = false;
this.ShowInTaskbar = false;
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
this.Text = "PreviewOverlay";
this.TransparencyKey = System.Drawing.Color.Black;
((System.ComponentModel.ISupportInitialize)(OverlayAreaPictureBox)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label OverlayLabel;
}
}

View File

@@ -0,0 +1,46 @@
using System;
using System.Windows.Forms;
using EveOPreview.Services;
namespace EveOPreview.UI
{
public partial class ThumbnailOverlay : Form
{
#region Private fields
private readonly Action<object, MouseEventArgs> _areaClickAction;
#endregion
public ThumbnailOverlay(Form owner, Action<object, MouseEventArgs> areaClickAction)
{
this.Owner = owner;
this._areaClickAction = areaClickAction;
InitializeComponent();
}
private void OverlayArea_Click(object sender, MouseEventArgs e)
{
this._areaClickAction(this, e);
}
public void SetOverlayLabel(string label)
{
this.OverlayLabel.Text = label;
}
public void EnableOverlayLabel(bool enable)
{
this.OverlayLabel.Visible = enable;
}
protected override CreateParams CreateParams
{
get
{
var Params = base.CreateParams;
Params.ExStyle |= (int)InteropConstants.WS_EX_TOOLWINDOW;
return Params;
}
}
}
}

View File

@@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="OverlayAreaPictureBox.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
</root>

View File

@@ -0,0 +1,52 @@
namespace EveOPreview.UI
{
partial class ThumbnailView
{
/// <summary>
/// Required designer variable.
/// </summary>
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.SuspendLayout();
//
// ThumbnailView
//
this.AccessibleRole = System.Windows.Forms.AccessibleRole.None;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.Black;
this.ClientSize = new System.Drawing.Size(153, 89);
this.ControlBox = false;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.MinimumSize = new System.Drawing.Size(64, 64);
this.Name = "ThumbnailView";
this.Opacity = 0.1D;
this.ShowIcon = false;
this.ShowInTaskbar = false;
this.Text = "Preview";
this.TopMost = true;
this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.MouseDown_Handler);
this.MouseEnter += new System.EventHandler(this.MouseEnter_Handler);
this.MouseLeave += new System.EventHandler(this.MouseLeave_Handler);
this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.MouseMove_Handler);
this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.MouseUp_Handler);
this.Move += new System.EventHandler(this.Move_Handler);
this.Resize += new System.EventHandler(this.Resize_Handler);
this.ResumeLayout(false);
}
#endregion
}
}

View File

@@ -0,0 +1,545 @@
using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
using EveOPreview.Services;
using EveOPreview.UI.Hotkeys;
using EveOPreview.View;
namespace EveOPreview.UI
{
public partial class ThumbnailView : Form, IThumbnailView
{
#region Private fields
private readonly IWindowManager _windowManager;
private readonly ThumbnailOverlay _overlay;
private IDwmThumbnail _thumbnail;
// Part of the logic (namely current size / position management)
// was moved to the view due to the performance reasons
private bool _isOverlayVisible;
private bool _isTopMost;
private bool _isPositionChanged;
private bool _isSizeChanged;
private bool _isCustomMouseModeActive;
private bool _isHighlightEnabled;
private int _highlightWidth;
private DateTime _suppressResizeEventsTimestamp;
private Size _baseZoomSize;
private Point _baseZoomLocation;
private Point _baseMousePosition;
private Size _baseZoomMaximumSize;
private HotkeyHandler _hotkeyHandler;
#endregion
public ThumbnailView(IWindowManager windowManager)
{
this._windowManager = windowManager;
this.IsEnabled = true;
this.IsActive = false;
this.IsOverlayEnabled = false;
this._isOverlayVisible = false;
this._isTopMost = false;
this._isPositionChanged = true;
this._isSizeChanged = true;
this._isCustomMouseModeActive = false;
this._isHighlightEnabled = false;
this._suppressResizeEventsTimestamp = DateTime.UtcNow;
InitializeComponent();
this._overlay = new ThumbnailOverlay(this, this.MouseDown_Handler);
}
public IntPtr Id { get; set; }
public string Title
{
get => this.Text;
set
{
this.Text = value;
this._overlay.SetOverlayLabel(value);
}
}
public bool IsEnabled { get; set; }
public bool IsActive { get; set; }
public bool IsOverlayEnabled { get; set; }
public Point ThumbnailLocation
{
get => this.Location;
set
{
if ((value.X > 0) || (value.Y > 0))
{
this.StartPosition = FormStartPosition.Manual;
}
this.Location = value;
}
}
public Size ThumbnailSize
{
get => this.ClientSize;
set => this.ClientSize = value;
}
public Action<IntPtr> ThumbnailResized { get; set; }
public Action<IntPtr> ThumbnailMoved { get; set; }
public Action<IntPtr> ThumbnailFocused { get; set; }
public Action<IntPtr> ThumbnailLostFocus { get; set; }
public Action<IntPtr> ThumbnailActivated { get; set; }
public Action<IntPtr> ThumbnailDeactivated { get; set; }
public new void Show()
{
base.Show();
this._isPositionChanged = true;
this._isSizeChanged = true;
this._isOverlayVisible = false;
// Thumbnail will be properly registered during the Manager's Refresh cycle
this.Refresh();
this.IsActive = true;
}
public new void Hide()
{
this.IsActive = false;
this._overlay.Hide();
base.Hide();
}
public new void Close()
{
this.IsActive = false;
this._thumbnail.Unregister();
this._overlay.Close();
base.Close();
}
// This method is used to determine if the provided Handle is related to client or its thumbnail
public bool IsKnownHandle(IntPtr handle)
{
return (this.Id == handle) || (this.Handle == handle) || (this._overlay.Handle == handle);
}
public void SetSizeLimitations(Size minimumSize, Size maximumSize)
{
this.MinimumSize = minimumSize;
this.MaximumSize = maximumSize;
}
public void SetOpacity(double opacity)
{
this.Opacity = opacity;
// Overlay opacity settings
// Of the thumbnail's opacity is almost full then set the overlay's one to
// full. Otherwise set it to half of the thumnail opacity
// Opacity value is stored even if the overlay is not displayed atm
this._overlay.Opacity = this.Opacity > 0.9 ? 1.0 : 1.0 - (1.0 - this.Opacity) / 2;
}
public void SetFrames(bool enable)
{
FormBorderStyle style = enable ? FormBorderStyle.SizableToolWindow : FormBorderStyle.None;
// No need to change the borders style if it is ALREADY correct
if (this.FormBorderStyle == style)
{
return;
}
// Fix for WinForms issue with the Resize event being fired with inconsistent ClientSize value
// Any Resize events fired before this timestamp will be ignored
this._suppressResizeEventsTimestamp = DateTime.UtcNow.AddMilliseconds(450);
this.FormBorderStyle = style;
// Notify about possible contents position change
this._isSizeChanged = true;
}
public void SetTopMost(bool enableTopmost)
{
// IMO WinForms could check this too
if (this._isTopMost == enableTopmost)
{
return;
}
this.TopMost = enableTopmost;
this._overlay.TopMost = enableTopmost;
this._isTopMost = enableTopmost;
}
public void SetHighlight(bool enabled, Color color, int width)
{
if (this._isHighlightEnabled == enabled)
{
return;
}
if (enabled)
{
this._isHighlightEnabled = true;
this._highlightWidth = width;
this.BackColor = color;
}
else
{
this._isHighlightEnabled = false;
this.BackColor = SystemColors.Control;
}
this._isSizeChanged = true;
}
public void ZoomIn(ViewZoomAnchor anchor, int zoomFactor)
{
int oldWidth = this._baseZoomSize.Width;
int oldHeight = this._baseZoomSize.Height;
int locationX = this.Location.X;
int locationY = this.Location.Y;
int newWidth = (zoomFactor * this.ClientSize.Width) + (this.Size.Width - this.ClientSize.Width);
int newHeight = (zoomFactor * this.ClientSize.Height) + (this.Size.Height - this.ClientSize.Height);
// First change size, THEN move the window
// Otherwise there is a chance to fail in a loop
// Zoom requied -> Moved the windows 1st -> Focus is lost -> Window is moved back -> Focus is back on -> Zoom required -> ...
this.MaximumSize = new Size(0, 0);
this.Size = new Size(newWidth, newHeight);
switch (anchor)
{
case ViewZoomAnchor.NW:
break;
case ViewZoomAnchor.N:
this.Location = new Point(locationX - newWidth / 2 + oldWidth / 2, locationY);
break;
case ViewZoomAnchor.NE:
this.Location = new Point(locationX - newWidth + oldWidth, locationY);
break;
case ViewZoomAnchor.W:
this.Location = new Point(locationX, locationY - newHeight / 2 + oldHeight / 2);
break;
case ViewZoomAnchor.C:
this.Location = new Point(locationX - newWidth / 2 + oldWidth / 2, locationY - newHeight / 2 + oldHeight / 2);
break;
case ViewZoomAnchor.E:
this.Location = new Point(locationX - newWidth + oldWidth, locationY - newHeight / 2 + oldHeight / 2);
break;
case ViewZoomAnchor.SW:
this.Location = new Point(locationX, locationY - newHeight + this._baseZoomSize.Height);
break;
case ViewZoomAnchor.S:
this.Location = new Point(locationX - newWidth / 2 + oldWidth / 2, locationY - newHeight + oldHeight);
break;
case ViewZoomAnchor.SE:
this.Location = new Point(locationX - newWidth + oldWidth, locationY - newHeight + oldHeight);
break;
}
}
public void ZoomOut()
{
this.RestoreWindowSizeAndLocation();
}
public void RegisterHotkey(Keys hotkey)
{
if (this._hotkeyHandler != null)
{
this.UnregisterHotkey();
}
if (hotkey == Keys.None)
{
return;
}
this._hotkeyHandler = new HotkeyHandler(this.Handle, hotkey);
this._hotkeyHandler.Pressed += HotkeyPressed_Handler;
try
{
this._hotkeyHandler.Register();
}
catch (Exception)
{
// There can be a lot of possible exception reasons here
// In case of any of them the hotkey setting is silently ignored
}
}
public void UnregisterHotkey()
{
if (this._hotkeyHandler == null)
{
return;
}
this._hotkeyHandler.Unregister();
this._hotkeyHandler.Pressed -= HotkeyPressed_Handler;
this._hotkeyHandler.Dispose();
this._hotkeyHandler = null;
}
public void Refresh(bool forceRefresh)
{
// To prevent flickering the old broken thumbnail is removed AFTER the new shiny one is created
IDwmThumbnail obsoleteThumbnail = forceRefresh ? this._thumbnail : null;
if ((this._thumbnail == null) || forceRefresh)
{
this.RegisterThumbnail();
}
bool sizeChanged = this._isSizeChanged || forceRefresh;
bool locationChanged = this._isPositionChanged || forceRefresh;
if (sizeChanged)
{
this.RecalculateThumbnailSize();
this.UpdateThumbnail();
this._isSizeChanged = false;
}
obsoleteThumbnail?.Unregister();
this._overlay.EnableOverlayLabel(this.IsOverlayEnabled);
if (!this._isOverlayVisible)
{
// One-time action to show the Overlay before it is set up
// Otherwise its position won't be set
this._overlay.Show();
this._isOverlayVisible = true;
}
else
{
if (!(sizeChanged || locationChanged))
{
// No need to adjust in the overlay location if it is already visible and properly set
return;
}
}
Size overlaySize = this.ClientSize;
Point overlayLocation = this.Location;
int borderWidth = (this.Size.Width - this.ClientSize.Width) / 2;
overlayLocation.X += borderWidth;
overlayLocation.Y += (this.Size.Height - this.ClientSize.Height) - borderWidth;
this._isPositionChanged = false;
this._overlay.Size = overlaySize;
this._overlay.Location = overlayLocation;
this._overlay.Refresh();
}
private void RecalculateThumbnailSize()
{
// This approach would work only for square-shaped thumbnail window
// To get PROPER results we have to do some crazy math
//int delta = this._isHighlightEnabled ? this._highlightWidth : 0;
//this._thumbnail.rcDestination = new RECT(0 + delta, 0 + delta, this.ClientSize.Width - delta, this.ClientSize.Height - delta);
if (!this._isHighlightEnabled)
{
//No highlighting enabled, so no odd math required
this._thumbnail.Move(0, 0, this.ClientSize.Width, this.ClientSize.Height);
return;
}
int baseWidth = this.ClientSize.Width;
int baseHeight = this.ClientSize.Height;
double baseAspectRatio = ((double)baseWidth) / baseHeight;
int actualHeight = baseHeight - 2 * this._highlightWidth;
double desiredWidth = actualHeight * baseAspectRatio;
int actualWidth = (int)Math.Round(desiredWidth, MidpointRounding.AwayFromZero);
int highlightWidthLeft = (baseWidth - actualWidth) / 2;
int highlightWidthRight = baseWidth - actualWidth - highlightWidthLeft;
this._thumbnail.Move(0 + highlightWidthLeft, 0 + this._highlightWidth, baseWidth - highlightWidthRight, baseHeight - this._highlightWidth);
}
#region GUI events
protected override CreateParams CreateParams
{
get
{
var Params = base.CreateParams;
Params.ExStyle |= (int)InteropConstants.WS_EX_TOOLWINDOW;
return Params;
}
}
private void Move_Handler(object sender, EventArgs e)
{
this._isPositionChanged = true;
this.ThumbnailMoved?.Invoke(this.Id);
}
private void Resize_Handler(object sender, EventArgs e)
{
if (DateTime.UtcNow < this._suppressResizeEventsTimestamp)
{
return;
}
this._isSizeChanged = true;
this.ThumbnailResized?.Invoke(this.Id);
}
private void MouseEnter_Handler(object sender, EventArgs e)
{
this.ExitCustomMouseMode();
this.SaveWindowSizeAndLocation();
this.ThumbnailFocused?.Invoke(this.Id);
}
private void MouseLeave_Handler(object sender, EventArgs e)
{
this.ThumbnailLostFocus?.Invoke(this.Id);
}
private void MouseDown_Handler(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
if (Control.ModifierKeys == Keys.Control)
{
this.ThumbnailDeactivated?.Invoke(this.Id);
}
else
{
this.ThumbnailActivated?.Invoke(this.Id);
}
}
if ((e.Button == MouseButtons.Right) || (e.Button == (MouseButtons.Left | MouseButtons.Right)))
{
this.EnterCustomMouseMode();
}
}
private void MouseMove_Handler(object sender, MouseEventArgs e)
{
if (this._isCustomMouseModeActive)
{
this.ProcessCustomMouseMode(e.Button.HasFlag(MouseButtons.Left), e.Button.HasFlag(MouseButtons.Right));
}
}
private void MouseUp_Handler(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
this.ExitCustomMouseMode();
}
}
private void HotkeyPressed_Handler(object sender, HandledEventArgs e)
{
this.ThumbnailActivated?.Invoke(this.Id);
e.Handled = true;
}
#endregion
#region Thumbnail management
private void RegisterThumbnail()
{
this._thumbnail = this._windowManager.RegisterThumbnail(this.Handle, this.Id);
}
private void UpdateThumbnail()
{
this._thumbnail.Update();
}
#endregion
#region Custom Mouse mode
// This pair of methods saves/restores certain window propeties
// Methods are used to remove the 'Zoom' effect (if any) when the
// custom resize/move mode is activated
// Methods are kept on this level because moving to the presenter
// the code that responds to the mouse events like movement
// seems like a huge overkill
private void SaveWindowSizeAndLocation()
{
this._baseZoomSize = this.Size;
this._baseZoomLocation = this.Location;
this._baseZoomMaximumSize = this.MaximumSize;
}
private void RestoreWindowSizeAndLocation()
{
this.Size = this._baseZoomSize;
this.MaximumSize = this._baseZoomMaximumSize;
this.Location = this._baseZoomLocation;
}
private void EnterCustomMouseMode()
{
this.RestoreWindowSizeAndLocation();
this._isCustomMouseModeActive = true;
this._baseMousePosition = Control.MousePosition;
}
private void ProcessCustomMouseMode(bool leftButton, bool rightButton)
{
Point mousePosition = Control.MousePosition;
int offsetX = mousePosition.X - this._baseMousePosition.X;
int offsetY = mousePosition.Y - this._baseMousePosition.Y;
this._baseMousePosition = mousePosition;
// Left + Right buttons trigger thumbnail resize
// Right button only trigger thumbnail movement
if (leftButton && rightButton)
{
this.Size = new Size(this.Size.Width + offsetX, this.Size.Height + offsetY);
this._baseZoomSize = this.Size;
}
else
{
this.Location = new Point(this.Location.X + offsetX, this.Location.Y + offsetY);
this._baseZoomLocation = this.Location;
}
}
private void ExitCustomMouseMode()
{
this._isCustomMouseModeActive = false;
}
#endregion
}
}

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>