SidePanel code rewritten (now opens in external container window).

Several changes to UI event handling (better performance on resize) and removed other SidePanel left-overs.
Added a "Settings" sidepanel.
This commit is contained in:
Lorenz Cuno Klopfenstein 2011-03-24 01:31:23 +01:00
parent 6cf04359d2
commit 6a71f22cc7
19 changed files with 1266 additions and 634 deletions

7
Docs/Settings List.txt Normal file
View file

@ -0,0 +1,7 @@
OPTIONS
+ Language
Drop down list with icons
Restart notice
+ Shortcuts

View file

@ -2,6 +2,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
using System.Drawing; using System.Drawing;
using System.Windows.Forms;
namespace OnTopReplica { namespace OnTopReplica {
@ -17,6 +18,38 @@ namespace OnTopReplica {
return new Point(a.X - b.X, a.Y - b.Y); return new Point(a.X - b.X, a.Y - b.Y);
} }
/// <summary>
/// Expands a size value by a padding distance.
/// </summary>
public static Size Expand(this Size size, Padding padding) {
return new Size(size.Width + padding.Horizontal, size.Height + padding.Vertical);
}
/// <summary>
/// Expands a size value by a size distance.
/// </summary>
public static Size Expand(this Size size, Size expandSize) {
return new Size(size.Width + expandSize.Width, size.Height + expandSize.Height);
}
/// <summary>
/// Computes the difference between two size values.
/// </summary>
public static Size Difference(this Size a, Size b) {
return new Size(a.Width - b.Width, a.Height - b.Height);
}
/// <summary>
/// Ensures that the minimum size of a control respects a minimum
/// client size area.
/// </summary>
/// <param name="ctrl">Control whose MinimumSize should be altered.</param>
/// <param name="minimumClientSize">Minimum client size value to ensure.</param>
public static void EnsureMinimumClientSize(this Control ctrl, Size minimumClientSize) {
Size offset = ctrl.Size.Difference(ctrl.ClientSize);
ctrl.MinimumSize = minimumClientSize.Expand(offset);
}
} }
} }

View file

@ -65,13 +65,7 @@
this.chromeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.chromeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.reduceToIconToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.reduceToIconToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.languageToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.settingsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.menuLanguages = new System.Windows.Forms.ContextMenuStrip(this.components);
this.englishToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.cestinaToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.danskToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.espanolToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.italianoToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.menuContextClose = new System.Windows.Forms.ToolStripMenuItem(); this.menuContextClose = new System.Windows.Forms.ToolStripMenuItem();
this.fullSelectWindowToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.fullSelectWindowToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@ -83,7 +77,6 @@
this.menuWindows.SuspendLayout(); this.menuWindows.SuspendLayout();
this.menuOpacity.SuspendLayout(); this.menuOpacity.SuspendLayout();
this.menuResize.SuspendLayout(); this.menuResize.SuspendLayout();
this.menuLanguages.SuspendLayout();
this.menuFullscreenContext.SuspendLayout(); this.menuFullscreenContext.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
// //
@ -100,11 +93,11 @@
this.chromeToolStripMenuItem, this.chromeToolStripMenuItem,
this.reduceToIconToolStripMenuItem, this.reduceToIconToolStripMenuItem,
this.toolStripSeparator1, this.toolStripSeparator1,
this.languageToolStripMenuItem, this.settingsToolStripMenuItem,
this.aboutToolStripMenuItem, this.aboutToolStripMenuItem,
this.menuContextClose}); this.menuContextClose});
this.menuContext.Name = "menuContext"; this.menuContext.Name = "menuContext";
this.menuContext.Size = new System.Drawing.Size(169, 296); this.menuContext.Size = new System.Drawing.Size(187, 296);
this.menuContext.Opening += new System.ComponentModel.CancelEventHandler(this.Menu_opening); this.menuContext.Opening += new System.ComponentModel.CancelEventHandler(this.Menu_opening);
// //
// menuContextWindows // menuContextWindows
@ -112,7 +105,7 @@
this.menuContextWindows.DropDown = this.menuWindows; this.menuContextWindows.DropDown = this.menuWindows;
this.menuContextWindows.Image = global::OnTopReplica.Properties.Resources.list; this.menuContextWindows.Image = global::OnTopReplica.Properties.Resources.list;
this.menuContextWindows.Name = "menuContextWindows"; this.menuContextWindows.Name = "menuContextWindows";
this.menuContextWindows.Size = new System.Drawing.Size(168, 22); this.menuContextWindows.Size = new System.Drawing.Size(186, 22);
this.menuContextWindows.Text = global::OnTopReplica.Strings.MenuWindows; this.menuContextWindows.Text = global::OnTopReplica.Strings.MenuWindows;
this.menuContextWindows.ToolTipText = global::OnTopReplica.Strings.MenuWindowsTT; this.menuContextWindows.ToolTipText = global::OnTopReplica.Strings.MenuWindowsTT;
// //
@ -135,7 +128,7 @@
// //
this.switchToWindowToolStripMenuItem.Image = global::OnTopReplica.Properties.Resources.xiao_arrow; this.switchToWindowToolStripMenuItem.Image = global::OnTopReplica.Properties.Resources.xiao_arrow;
this.switchToWindowToolStripMenuItem.Name = "switchToWindowToolStripMenuItem"; this.switchToWindowToolStripMenuItem.Name = "switchToWindowToolStripMenuItem";
this.switchToWindowToolStripMenuItem.Size = new System.Drawing.Size(168, 22); this.switchToWindowToolStripMenuItem.Size = new System.Drawing.Size(186, 22);
this.switchToWindowToolStripMenuItem.Text = global::OnTopReplica.Strings.MenuSwitch; this.switchToWindowToolStripMenuItem.Text = global::OnTopReplica.Strings.MenuSwitch;
this.switchToWindowToolStripMenuItem.ToolTipText = global::OnTopReplica.Strings.MenuSwitchTT; this.switchToWindowToolStripMenuItem.ToolTipText = global::OnTopReplica.Strings.MenuSwitchTT;
this.switchToWindowToolStripMenuItem.Click += new System.EventHandler(this.Menu_Switch_click); this.switchToWindowToolStripMenuItem.Click += new System.EventHandler(this.Menu_Switch_click);
@ -145,7 +138,7 @@
this.selectRegionToolStripMenuItem.Enabled = false; this.selectRegionToolStripMenuItem.Enabled = false;
this.selectRegionToolStripMenuItem.Image = global::OnTopReplica.Properties.Resources.regions; this.selectRegionToolStripMenuItem.Image = global::OnTopReplica.Properties.Resources.regions;
this.selectRegionToolStripMenuItem.Name = "selectRegionToolStripMenuItem"; this.selectRegionToolStripMenuItem.Name = "selectRegionToolStripMenuItem";
this.selectRegionToolStripMenuItem.Size = new System.Drawing.Size(168, 22); this.selectRegionToolStripMenuItem.Size = new System.Drawing.Size(186, 22);
this.selectRegionToolStripMenuItem.Text = global::OnTopReplica.Strings.MenuRegion; this.selectRegionToolStripMenuItem.Text = global::OnTopReplica.Strings.MenuRegion;
this.selectRegionToolStripMenuItem.ToolTipText = global::OnTopReplica.Strings.MenuRegionTT; this.selectRegionToolStripMenuItem.ToolTipText = global::OnTopReplica.Strings.MenuRegionTT;
this.selectRegionToolStripMenuItem.Click += new System.EventHandler(this.Menu_Region_click); this.selectRegionToolStripMenuItem.Click += new System.EventHandler(this.Menu_Region_click);
@ -159,7 +152,7 @@
this.restoreLastClonedWindowToolStripMenuItem}); this.restoreLastClonedWindowToolStripMenuItem});
this.advancedToolStripMenuItem.Image = global::OnTopReplica.Properties.Resources.xiao_wrench; this.advancedToolStripMenuItem.Image = global::OnTopReplica.Properties.Resources.xiao_wrench;
this.advancedToolStripMenuItem.Name = "advancedToolStripMenuItem"; this.advancedToolStripMenuItem.Name = "advancedToolStripMenuItem";
this.advancedToolStripMenuItem.Size = new System.Drawing.Size(168, 22); this.advancedToolStripMenuItem.Size = new System.Drawing.Size(186, 22);
this.advancedToolStripMenuItem.Text = global::OnTopReplica.Strings.MenuAdvanced; this.advancedToolStripMenuItem.Text = global::OnTopReplica.Strings.MenuAdvanced;
this.advancedToolStripMenuItem.DropDownOpening += new System.EventHandler(this.Menu_Advanced_opening); this.advancedToolStripMenuItem.DropDownOpening += new System.EventHandler(this.Menu_Advanced_opening);
// //
@ -194,7 +187,8 @@
// //
this.restoreLastClonedWindowToolStripMenuItem.Name = "restoreLastClonedWindowToolStripMenuItem"; this.restoreLastClonedWindowToolStripMenuItem.Name = "restoreLastClonedWindowToolStripMenuItem";
this.restoreLastClonedWindowToolStripMenuItem.Size = new System.Drawing.Size(218, 22); this.restoreLastClonedWindowToolStripMenuItem.Size = new System.Drawing.Size(218, 22);
this.restoreLastClonedWindowToolStripMenuItem.Text = "Restore last cloned window"; this.restoreLastClonedWindowToolStripMenuItem.Text = global::OnTopReplica.Strings.MenuRestoreLast;
this.restoreLastClonedWindowToolStripMenuItem.ToolTipText = global::OnTopReplica.Strings.MenuRestoreLastTT;
this.restoreLastClonedWindowToolStripMenuItem.Click += new System.EventHandler(this.Menu_RestoreLastWindow_click); this.restoreLastClonedWindowToolStripMenuItem.Click += new System.EventHandler(this.Menu_RestoreLastWindow_click);
// //
// menuContextOpacity // menuContextOpacity
@ -202,7 +196,7 @@
this.menuContextOpacity.DropDown = this.menuOpacity; this.menuContextOpacity.DropDown = this.menuOpacity;
this.menuContextOpacity.Image = global::OnTopReplica.Properties.Resources.window_opacity; this.menuContextOpacity.Image = global::OnTopReplica.Properties.Resources.window_opacity;
this.menuContextOpacity.Name = "menuContextOpacity"; this.menuContextOpacity.Name = "menuContextOpacity";
this.menuContextOpacity.Size = new System.Drawing.Size(168, 22); this.menuContextOpacity.Size = new System.Drawing.Size(186, 22);
this.menuContextOpacity.Text = global::OnTopReplica.Strings.MenuOpacity; this.menuContextOpacity.Text = global::OnTopReplica.Strings.MenuOpacity;
// //
// menuOpacity // menuOpacity
@ -270,7 +264,7 @@
this.resizeToolStripMenuItem.DropDown = this.menuResize; this.resizeToolStripMenuItem.DropDown = this.menuResize;
this.resizeToolStripMenuItem.Enabled = false; this.resizeToolStripMenuItem.Enabled = false;
this.resizeToolStripMenuItem.Name = "resizeToolStripMenuItem"; this.resizeToolStripMenuItem.Name = "resizeToolStripMenuItem";
this.resizeToolStripMenuItem.Size = new System.Drawing.Size(168, 22); this.resizeToolStripMenuItem.Size = new System.Drawing.Size(186, 22);
this.resizeToolStripMenuItem.Text = global::OnTopReplica.Strings.MenuResize; this.resizeToolStripMenuItem.Text = global::OnTopReplica.Strings.MenuResize;
// //
// menuResize // menuResize
@ -354,7 +348,7 @@
this.bottomRightToolStripMenuItem}); this.bottomRightToolStripMenuItem});
this.dockToolStripMenuItem.Image = global::OnTopReplica.Properties.Resources.pos_null; this.dockToolStripMenuItem.Image = global::OnTopReplica.Properties.Resources.pos_null;
this.dockToolStripMenuItem.Name = "dockToolStripMenuItem"; this.dockToolStripMenuItem.Name = "dockToolStripMenuItem";
this.dockToolStripMenuItem.Size = new System.Drawing.Size(168, 22); this.dockToolStripMenuItem.Size = new System.Drawing.Size(186, 22);
this.dockToolStripMenuItem.Text = global::OnTopReplica.Strings.MenuPosition; this.dockToolStripMenuItem.Text = global::OnTopReplica.Strings.MenuPosition;
this.dockToolStripMenuItem.ToolTipText = global::OnTopReplica.Strings.MenuPositionTT; this.dockToolStripMenuItem.ToolTipText = global::OnTopReplica.Strings.MenuPositionTT;
this.dockToolStripMenuItem.DropDownOpening += new System.EventHandler(this.Menu_Position_Opening); this.dockToolStripMenuItem.DropDownOpening += new System.EventHandler(this.Menu_Position_Opening);
@ -411,7 +405,7 @@
// chromeToolStripMenuItem // chromeToolStripMenuItem
// //
this.chromeToolStripMenuItem.Name = "chromeToolStripMenuItem"; this.chromeToolStripMenuItem.Name = "chromeToolStripMenuItem";
this.chromeToolStripMenuItem.Size = new System.Drawing.Size(168, 22); this.chromeToolStripMenuItem.Size = new System.Drawing.Size(186, 22);
this.chromeToolStripMenuItem.Text = global::OnTopReplica.Strings.MenuChrome; this.chromeToolStripMenuItem.Text = global::OnTopReplica.Strings.MenuChrome;
this.chromeToolStripMenuItem.ToolTipText = global::OnTopReplica.Strings.MenuChromeTT; this.chromeToolStripMenuItem.ToolTipText = global::OnTopReplica.Strings.MenuChromeTT;
this.chromeToolStripMenuItem.Click += new System.EventHandler(this.Menu_Chrome_click); this.chromeToolStripMenuItem.Click += new System.EventHandler(this.Menu_Chrome_click);
@ -420,7 +414,7 @@
// //
this.reduceToIconToolStripMenuItem.Image = global::OnTopReplica.Properties.Resources.reduce; this.reduceToIconToolStripMenuItem.Image = global::OnTopReplica.Properties.Resources.reduce;
this.reduceToIconToolStripMenuItem.Name = "reduceToIconToolStripMenuItem"; this.reduceToIconToolStripMenuItem.Name = "reduceToIconToolStripMenuItem";
this.reduceToIconToolStripMenuItem.Size = new System.Drawing.Size(168, 22); this.reduceToIconToolStripMenuItem.Size = new System.Drawing.Size(186, 22);
this.reduceToIconToolStripMenuItem.Text = global::OnTopReplica.Strings.MenuReduce; this.reduceToIconToolStripMenuItem.Text = global::OnTopReplica.Strings.MenuReduce;
this.reduceToIconToolStripMenuItem.ToolTipText = global::OnTopReplica.Strings.MenuReduceTT; this.reduceToIconToolStripMenuItem.ToolTipText = global::OnTopReplica.Strings.MenuReduceTT;
this.reduceToIconToolStripMenuItem.Click += new System.EventHandler(this.Menu_Reduce_click); this.reduceToIconToolStripMenuItem.Click += new System.EventHandler(this.Menu_Reduce_click);
@ -428,78 +422,21 @@
// toolStripSeparator1 // toolStripSeparator1
// //
this.toolStripSeparator1.Name = "toolStripSeparator1"; this.toolStripSeparator1.Name = "toolStripSeparator1";
this.toolStripSeparator1.Size = new System.Drawing.Size(165, 6); this.toolStripSeparator1.Size = new System.Drawing.Size(183, 6);
// //
// languageToolStripMenuItem // settingsToolStripMenuItem
// //
this.languageToolStripMenuItem.DropDown = this.menuLanguages; this.settingsToolStripMenuItem.Name = "settingsToolStripMenuItem";
this.languageToolStripMenuItem.Name = "languageToolStripMenuItem"; this.settingsToolStripMenuItem.Size = new System.Drawing.Size(186, 22);
this.languageToolStripMenuItem.Size = new System.Drawing.Size(168, 22); this.settingsToolStripMenuItem.Text = global::OnTopReplica.Strings.MenuSettings;
this.languageToolStripMenuItem.Text = global::OnTopReplica.Strings.Language; this.settingsToolStripMenuItem.ToolTipText = global::OnTopReplica.Strings.MenuSettingsTT;
// this.settingsToolStripMenuItem.Click += new System.EventHandler(this.Menu_Settings_click);
// menuLanguages
//
this.menuLanguages.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.englishToolStripMenuItem,
this.cestinaToolStripMenuItem,
this.danskToolStripMenuItem1,
this.espanolToolStripMenuItem,
this.italianoToolStripMenuItem});
this.menuLanguages.Name = "menuLanguages";
this.menuLanguages.OwnerItem = this.languageToolStripMenuItem;
this.menuLanguages.Size = new System.Drawing.Size(153, 136);
this.menuLanguages.Text = "Dansk";
//
// englishToolStripMenuItem
//
this.englishToolStripMenuItem.Image = global::OnTopReplica.Properties.Resources.flag_usa;
this.englishToolStripMenuItem.Name = "englishToolStripMenuItem";
this.englishToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.englishToolStripMenuItem.Tag = "en-US";
this.englishToolStripMenuItem.Text = "English";
this.englishToolStripMenuItem.Click += new System.EventHandler(this.Menu_Language_click);
//
// cestinaToolStripMenuItem
//
this.cestinaToolStripMenuItem.Image = global::OnTopReplica.Properties.Resources.flag_czech;
this.cestinaToolStripMenuItem.Name = "cestinaToolStripMenuItem";
this.cestinaToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.cestinaToolStripMenuItem.Tag = "cs-CZ";
this.cestinaToolStripMenuItem.Text = "Čeština";
this.cestinaToolStripMenuItem.Click += new System.EventHandler(this.Menu_Language_click);
//
// danskToolStripMenuItem1
//
this.danskToolStripMenuItem1.Image = global::OnTopReplica.Properties.Resources.flag_danish;
this.danskToolStripMenuItem1.Name = "danskToolStripMenuItem1";
this.danskToolStripMenuItem1.Size = new System.Drawing.Size(152, 22);
this.danskToolStripMenuItem1.Tag = "da-DK";
this.danskToolStripMenuItem1.Text = "Dansk";
this.danskToolStripMenuItem1.Click += new System.EventHandler(this.Menu_Language_click);
//
// espanolToolStripMenuItem
//
this.espanolToolStripMenuItem.Image = global::OnTopReplica.Properties.Resources.flag_spanish;
this.espanolToolStripMenuItem.Name = "espanolToolStripMenuItem";
this.espanolToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.espanolToolStripMenuItem.Tag = "es-ES";
this.espanolToolStripMenuItem.Text = "Español";
this.espanolToolStripMenuItem.Click += new System.EventHandler(this.Menu_Language_click);
//
// italianoToolStripMenuItem
//
this.italianoToolStripMenuItem.Image = global::OnTopReplica.Properties.Resources.flag_ita;
this.italianoToolStripMenuItem.Name = "italianoToolStripMenuItem";
this.italianoToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.italianoToolStripMenuItem.Tag = "it-IT";
this.italianoToolStripMenuItem.Text = "Italiano";
this.italianoToolStripMenuItem.Click += new System.EventHandler(this.Menu_Language_click);
// //
// aboutToolStripMenuItem // aboutToolStripMenuItem
// //
this.aboutToolStripMenuItem.Image = global::OnTopReplica.Properties.Resources.xiao_help; this.aboutToolStripMenuItem.Image = global::OnTopReplica.Properties.Resources.xiao_help;
this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem"; this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem";
this.aboutToolStripMenuItem.Size = new System.Drawing.Size(168, 22); this.aboutToolStripMenuItem.Size = new System.Drawing.Size(186, 22);
this.aboutToolStripMenuItem.Text = global::OnTopReplica.Strings.MenuAbout; this.aboutToolStripMenuItem.Text = global::OnTopReplica.Strings.MenuAbout;
this.aboutToolStripMenuItem.ToolTipText = global::OnTopReplica.Strings.MenuAboutTT; this.aboutToolStripMenuItem.ToolTipText = global::OnTopReplica.Strings.MenuAboutTT;
this.aboutToolStripMenuItem.Click += new System.EventHandler(this.Menu_About_click); this.aboutToolStripMenuItem.Click += new System.EventHandler(this.Menu_About_click);
@ -508,7 +445,7 @@
// //
this.menuContextClose.Image = global::OnTopReplica.Properties.Resources.close_new; this.menuContextClose.Image = global::OnTopReplica.Properties.Resources.close_new;
this.menuContextClose.Name = "menuContextClose"; this.menuContextClose.Name = "menuContextClose";
this.menuContextClose.Size = new System.Drawing.Size(168, 22); this.menuContextClose.Size = new System.Drawing.Size(186, 22);
this.menuContextClose.Text = global::OnTopReplica.Strings.MenuClose; this.menuContextClose.Text = global::OnTopReplica.Strings.MenuClose;
this.menuContextClose.Click += new System.EventHandler(this.Menu_Close_click); this.menuContextClose.Click += new System.EventHandler(this.Menu_Close_click);
// //
@ -564,10 +501,11 @@
this.BackColor = System.Drawing.SystemColors.Control; this.BackColor = System.Drawing.SystemColors.Control;
this.ClientSize = new System.Drawing.Size(264, 204); this.ClientSize = new System.Drawing.Size(264, 204);
this.ControlBox = false; this.ControlBox = false;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false; this.MaximizeBox = false;
this.MinimizeBox = false; this.MinimizeBox = false;
this.MinimumSize = new System.Drawing.Size(20, 38); this.MinimumSize = new System.Drawing.Size(40, 40);
this.Name = "MainForm"; this.Name = "MainForm";
this.Text = "OnTopReplica"; this.Text = "OnTopReplica";
this.TopMost = true; this.TopMost = true;
@ -575,7 +513,6 @@
this.menuWindows.ResumeLayout(false); this.menuWindows.ResumeLayout(false);
this.menuOpacity.ResumeLayout(false); this.menuOpacity.ResumeLayout(false);
this.menuResize.ResumeLayout(false); this.menuResize.ResumeLayout(false);
this.menuLanguages.ResumeLayout(false);
this.menuFullscreenContext.ResumeLayout(false); this.menuFullscreenContext.ResumeLayout(false);
this.ResumeLayout(false); this.ResumeLayout(false);
@ -612,14 +549,8 @@
private System.Windows.Forms.ToolStripMenuItem quarterToolStripMenuItem1; private System.Windows.Forms.ToolStripMenuItem quarterToolStripMenuItem1;
private System.Windows.Forms.ToolStripMenuItem fullscreenToolStripMenuItem1; private System.Windows.Forms.ToolStripMenuItem fullscreenToolStripMenuItem1;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator3; private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
private System.Windows.Forms.ToolStripMenuItem languageToolStripMenuItem;
private System.Windows.Forms.ContextMenuStrip menuLanguages;
private System.Windows.Forms.ToolStripMenuItem englishToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem italianoToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem cestinaToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem danskToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem danskToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem chromeToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem chromeToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem danskToolStripMenuItem1;
private System.Windows.Forms.ContextMenuStrip menuFullscreenContext; private System.Windows.Forms.ContextMenuStrip menuFullscreenContext;
private System.Windows.Forms.ToolStripMenuItem fullSelectWindowToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem fullSelectWindowToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem fullOpacityToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem fullOpacityToolStripMenuItem;
@ -633,8 +564,8 @@
private System.Windows.Forms.ToolStripMenuItem disabledToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem disabledToolStripMenuItem;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator2; private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
private System.Windows.Forms.ToolStripMenuItem restorePositionAndSizeToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem restorePositionAndSizeToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem espanolToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem restoreLastClonedWindowToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem restoreLastClonedWindowToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem settingsToolStripMenuItem;
} }
} }

View file

@ -17,8 +17,6 @@ namespace OnTopReplica {
//GUI elements //GUI elements
ThumbnailPanel _thumbnailPanel; ThumbnailPanel _thumbnailPanel;
SidePanel _currentSidePanel = null;
Panel _sidePanelContainer;
//Managers //Managers
BaseWindowSeeker _windowSeeker = new TaskWindowSeeker { BaseWindowSeeker _windowSeeker = new TaskWindowSeeker {
@ -37,6 +35,7 @@ namespace OnTopReplica {
InitializeComponent(); InitializeComponent();
KeepAspectRatio = false; KeepAspectRatio = false;
GlassEnabled = true; GlassEnabled = true;
GlassMargins = new Margins(-1);
//Store default values //Store default values
_nonClickThroughKey = TransparencyKey; _nonClickThroughKey = TransparencyKey;
@ -44,26 +43,14 @@ namespace OnTopReplica {
//Thumbnail panel //Thumbnail panel
_thumbnailPanel = new ThumbnailPanel { _thumbnailPanel = new ThumbnailPanel {
Location = Point.Empty, Location = Point.Empty,
Anchor = AnchorStyles.Bottom | AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right, Dock = DockStyle.Fill
Size = ClientSize
}; };
_thumbnailPanel.CloneClick += new EventHandler<CloneClickEventArgs>(Thumbnail_CloneClick); _thumbnailPanel.CloneClick += new EventHandler<CloneClickEventArgs>(Thumbnail_CloneClick);
Controls.Add(_thumbnailPanel); Controls.Add(_thumbnailPanel);
//Side panel
_sidePanelContainer = new Panel {
Location = new Point(ClientSize.Width + 5, 0),
Anchor = AnchorStyles.Right | AnchorStyles.Top | AnchorStyles.Bottom,
Enabled = false,
Visible = false,
Size = new Size(100, ClientSize.Height),
Padding = new Padding(4)
};
Controls.Add(_sidePanelContainer);
//Set native renderer on context menus //Set native renderer on context menus
Asztal.Szótár.NativeToolStripRenderer.SetToolStripRenderer( Asztal.Szótár.NativeToolStripRenderer.SetToolStripRenderer(
menuContext, menuWindows, menuOpacity, menuResize, menuLanguages, menuFullscreenContext menuContext, menuWindows, menuOpacity, menuResize, menuFullscreenContext
); );
//Init message pump extensions //Init message pump extensions
@ -80,10 +67,8 @@ namespace OnTopReplica {
this.KeyPreview = true; this.KeyPreview = true;
} }
delegate void GuiAction();
void UpdateManager_CheckCompleted(object sender, UpdateCheckCompletedEventArgs e) { void UpdateManager_CheckCompleted(object sender, UpdateCheckCompletedEventArgs e) {
this.Invoke(new GuiAction(() => { this.Invoke(new Action(() => {
if (e.Success) { if (e.Success) {
_updateManager.HandleUpdateCheck(this, e.Information, false); _updateManager.HandleUpdateCheck(this, e.Information, false);
} }
@ -139,14 +124,10 @@ namespace OnTopReplica {
base.OnClosing(e); base.OnClosing(e);
} }
Margins fullMargins = new Margins(-1); protected override void OnMove(EventArgs e) {
base.OnMove(e);
protected override void OnResize(EventArgs e) { AdjustSidePanelLocation();
base.OnResize(e);
this.GlassMargins = (_currentSidePanel != null) ?
new Margins(ClientSize.Width - _sidePanelContainer.Width, 0, 0, 0) :
fullMargins;
} }
protected override void OnResizeEnd(EventArgs e) { protected override void OnResizeEnd(EventArgs e) {
@ -247,8 +228,6 @@ namespace OnTopReplica {
#endregion #endregion
const string Title = "OnTopReplica";
#region Keyboard event handling #region Keyboard event handling
protected override void OnKeyUp(KeyEventArgs e) { protected override void OnKeyUp(KeyEventArgs e) {
@ -328,7 +307,6 @@ namespace OnTopReplica {
bool _isFullscreen = false; bool _isFullscreen = false;
Point _preFullscreenLocation; Point _preFullscreenLocation;
Size _preFullscreenSize; Size _preFullscreenSize;
FormBorderStyle _preFullscreenBorderStyle;
public bool IsFullscreen { public bool IsFullscreen {
get { get {
@ -346,7 +324,6 @@ namespace OnTopReplica {
if (value) { if (value) {
_preFullscreenLocation = Location; _preFullscreenLocation = Location;
_preFullscreenSize = ClientSize; _preFullscreenSize = ClientSize;
_preFullscreenBorderStyle = FormBorderStyle;
FormBorderStyle = FormBorderStyle.None; FormBorderStyle = FormBorderStyle.None;
var currentScreen = Screen.FromControl(this); var currentScreen = Screen.FromControl(this);
@ -354,7 +331,7 @@ namespace OnTopReplica {
Location = currentScreen.WorkingArea.Location; Location = currentScreen.WorkingArea.Location;
} }
else { else {
FormBorderStyle = _preFullscreenBorderStyle; FormBorderStyle = DefaultBorderStyle;
Location = _preFullscreenLocation; Location = _preFullscreenLocation;
ClientSize = _preFullscreenSize; ClientSize = _preFullscreenSize;
RefreshAspectRatio(); RefreshAspectRatio();

View file

@ -129,9 +129,6 @@
<metadata name="menuResize.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="menuResize.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>578, 17</value> <value>578, 17</value>
</metadata> </metadata>
<metadata name="menuLanguages.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>695, 17</value>
</metadata>
<metadata name="menuFullscreenContext.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="menuFullscreenContext.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>399, 17</value> <value>399, 17</value>
</metadata> </metadata>

View file

@ -8,98 +8,68 @@ namespace OnTopReplica {
partial class MainForm { partial class MainForm {
EventHandler RequestClosingHandler; //SidePanel _currentSidePanel = null;
SidePanelContainer _sidePanelContainer = null;
const int SidePanelMargin = 1;
/// <summary> /// <summary>
/// Opens a new side panel. /// Opens a new side panel.
/// </summary> /// </summary>
/// <param name="panel">The side panel to embed.</param> /// <param name="panel">The side panel to embed.</param>
public void SetSidePanel(SidePanel panel) { public void SetSidePanel(SidePanel panel) {
if (_currentSidePanel != null) { if (IsSidePanelOpen) {
CloseSidePanel(); CloseSidePanel();
} }
_currentSidePanel = panel; _sidePanelContainer = new SidePanelContainer(this);
_currentSidePanel.OnFirstShown(this); _sidePanelContainer.SetSidePanel(panel);
_sidePanelContainer.Show(this);
//Add and show AdjustSidePanelLocation();
_sidePanelContainer.Controls.Add(panel);
_sidePanelContainer.Enabled = true;
_sidePanelContainer.Show();
panel.Show();
int intHorzMargin = panel.Margin.Horizontal + _sidePanelContainer.Padding.Horizontal; //internal margins for sidepanel
int intVertMargin = panel.Margin.Vertical + _sidePanelContainer.Padding.Vertical;
//Resize container
_sidePanelContainer.ClientSize = new Size(
panel.MinimumSize.Width + intHorzMargin,
ClientSize.Height
);
int rightHorzMargin = _sidePanelContainer.Width + SidePanelMargin; //horz margin between the two controls
//Resize rest
MinimumSize = new Size(
20 + panel.MinimumSize.Width + SidePanelMargin + intHorzMargin,
panel.MinimumSize.Height + intVertMargin
);
ClientSize = new Size(
ClientSize.Width + rightHorzMargin,
ClientSize.Height
);
ExtraPadding = new Padding(0, 0, rightHorzMargin, 0);
_thumbnailPanel.Size = new Size(
ClientSize.Width - rightHorzMargin,
ClientSize.Height
);
_sidePanelContainer.Location = new Point(
ClientSize.Width - rightHorzMargin,
0
);
//Move window if needed
FixPositionAndSize();
//Hook event listener
if (RequestClosingHandler == null)
RequestClosingHandler = new EventHandler(SidePanel_RequestClosing);
panel.RequestClosing += RequestClosingHandler;
} }
/// <summary> /// <summary>
/// Closes the current side panel. /// Closes the current side panel.
/// </summary> /// </summary>
public void CloseSidePanel() { public void CloseSidePanel() {
if (_currentSidePanel == null) if (_sidePanelContainer == null || _sidePanelContainer.IsDisposed) {
_sidePanelContainer = null;
return;
}
_sidePanelContainer.Hide();
_sidePanelContainer.FreeSidePanel();
}
/// <summary>
/// Gets whether a side panel is currently shown.
/// </summary>
public bool IsSidePanelOpen {
get {
if (_sidePanelContainer == null)
return false;
if (_sidePanelContainer.IsDisposed) {
_sidePanelContainer = null;
return false;
}
return _sidePanelContainer.Visible;
}
}
/// <summary>
/// Moves the side panel based on the main form's current location.
/// </summary>
protected void AdjustSidePanelLocation() {
if (!IsSidePanelOpen)
return; return;
//Unhook listener to make panel freeable //Check if moving the panel on the form's right would put it off-screen
_currentSidePanel.RequestClosing -= RequestClosingHandler; var screen = Screen.FromControl(this);
if (Location.X + Width + _sidePanelContainer.Width > screen.WorkingArea.Right) {
//Remove side panel and container _sidePanelContainer.Location = new Point(Location.X - _sidePanelContainer.Width, Location.Y);
_currentSidePanel.OnClosing(this); }
_currentSidePanel.Hide(); else {
_sidePanelContainer.Controls.Clear(); _sidePanelContainer.Location = new Point(Location.X + Width, Location.Y);
_sidePanelContainer.Visible = _sidePanelContainer.Enabled = false; }
//Free panel
_currentSidePanel.Dispose();
_currentSidePanel = null;
//Resize
MinimumSize = new Size(20, 20);
ClientSize = new Size(
ClientSize.Width - _sidePanelContainer.Width - SidePanelMargin,
ClientSize.Height
);
ExtraPadding = new Padding(0);
_thumbnailPanel.Size = ClientSize;
//Put focus back to main form
this.Focus();
} }
void SidePanel_RequestClosing(object sender, EventArgs e) { void SidePanel_RequestClosing(object sender, EventArgs e) {

View file

@ -10,7 +10,7 @@ namespace OnTopReplica {
private void Menu_opening(object sender, CancelEventArgs e) { private void Menu_opening(object sender, CancelEventArgs e) {
//Cancel if currently in "fullscreen" mode or a side panel is open //Cancel if currently in "fullscreen" mode or a side panel is open
if (IsFullscreen || _currentSidePanel != null) { if (IsFullscreen || IsSidePanelOpen) {
e.Cancel = true; e.Cancel = true;
return; return;
} }
@ -189,6 +189,7 @@ namespace OnTopReplica {
} }
private void Menu_Language_click(object sender, EventArgs e) { private void Menu_Language_click(object sender, EventArgs e) {
//TODO: strip this stuff
ToolStripItem tsi = (ToolStripItem)sender; ToolStripItem tsi = (ToolStripItem)sender;
string langCode = tsi.Tag as string; string langCode = tsi.Tag as string;
@ -202,6 +203,10 @@ namespace OnTopReplica {
MessageBox.Show("Error");*/ MessageBox.Show("Error");*/
} }
private void Menu_Settings_click(object sender, EventArgs e) {
this.SetSidePanel(new OnTopReplica.SidePanels.OptionsPanel());
}
private void Menu_About_click(object sender, EventArgs e) { private void Menu_About_click(object sender, EventArgs e) {
this.Hide(); this.Hide();

View file

@ -139,6 +139,12 @@
<Compile Include="Native\HT.cs" /> <Compile Include="Native\HT.cs" />
<Compile Include="Pair.cs" /> <Compile Include="Pair.cs" />
<Compile Include="Platforms\DebugPlatform.cs" /> <Compile Include="Platforms\DebugPlatform.cs" />
<Compile Include="SidePanelContainer.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="SidePanelContainer.Designer.cs">
<DependentUpon>SidePanelContainer.cs</DependentUpon>
</Compile>
<Compile Include="SidePanels\OptionsPanel.cs"> <Compile Include="SidePanels\OptionsPanel.cs">
<SubType>UserControl</SubType> <SubType>UserControl</SubType>
</Compile> </Compile>
@ -161,6 +167,9 @@
<Compile Include="WindowSeekers\ByTitleWindowSeeker.cs" /> <Compile Include="WindowSeekers\ByTitleWindowSeeker.cs" />
<Compile Include="WindowSeekers\RestoreWindowSeeker.cs" /> <Compile Include="WindowSeekers\RestoreWindowSeeker.cs" />
<Compile Include="WindowSeekers\TaskWindowSeeker.cs" /> <Compile Include="WindowSeekers\TaskWindowSeeker.cs" />
<EmbeddedResource Include="SidePanelContainer.resx">
<DependentUpon>SidePanelContainer.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Strings.ru.resx" /> <EmbeddedResource Include="Strings.ru.resx" />
<None Include="Native\ITaskBarList.cs" /> <None Include="Native\ITaskBarList.cs" />
<Compile Include="Native\InputMethods.cs" /> <Compile Include="Native\InputMethods.cs" />

View file

@ -49,5 +49,14 @@ namespace OnTopReplica {
public virtual void OnClosing(MainForm form) { public virtual void OnClosing(MainForm form) {
} }
/// <summary>
/// Gets the side panel's title.
/// </summary>
public virtual string Title {
get {
return "Side panel";
}
}
} }
} }

View file

@ -0,0 +1,46 @@
namespace OnTopReplica {
partial class SidePanelContainer {
/// <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() {
this.SuspendLayout();
//
// SidePanelContainer
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(246, 300);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow;
this.MinimizeBox = false;
this.Name = "SidePanelContainer";
this.Padding = new System.Windows.Forms.Padding(6);
this.ShowInTaskbar = false;
this.Text = "Side Panel container";
this.TopMost = true;
this.ResumeLayout(false);
}
#endregion
}
}

View file

@ -0,0 +1,98 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace OnTopReplica {
/// <summary>
/// Acts as a form that can contain a SidePanel instance.
/// </summary>
partial class SidePanelContainer : Form {
EventHandler RequestClosingHandler;
MainForm _parent;
public SidePanelContainer(MainForm mainForm) {
InitializeComponent();
_parent = mainForm;
RequestClosingHandler = new EventHandler(Panel_RequestClosing);
}
void Panel_RequestClosing(object sender, EventArgs e) {
FreeSidePanel();
this.Close();
}
protected override void OnClosing(CancelEventArgs e) {
base.OnClosing(e);
//Ensure side panel closing code is run
FreeSidePanel();
}
/// <summary>
/// Sets a new side panel and refreshes the window. The panel is
/// managed by the SidePanelContainer from now on.
/// </summary>
/// <param name="panel">SidePanel to embed and to manage.</param>
public void SetSidePanel(SidePanel panel) {
panel.OnFirstShown(_parent);
//Set panel
this.SuspendLayout();
this.Text = panel.Title;
CurrentSidePanel = panel;
panel.RequestClosing += RequestClosingHandler;
this.Controls.Add(panel);
var minSize = panel.MinimumSize.Expand(this.Padding);
this.ClientSize = minSize;
this.EnsureMinimumClientSize(minSize);
this.ResumeLayout();
}
/// <summary>
/// Removes the current side panel and disposes it.
/// </summary>
public void FreeSidePanel() {
if (CurrentSidePanel == null)
return;
this.SuspendLayout();
FreeSidePanelCore();
this.ResumeLayout();
}
/// <summary>
/// Removes the current side panel and disposes it (doesn't suspend layout).
/// </summary>
private void FreeSidePanelCore() {
CurrentSidePanel.OnClosing(_parent);
//Free hook
CurrentSidePanel.RequestClosing -= RequestClosingHandler;
//Remove
this.Controls.Remove(CurrentSidePanel);
//Free
CurrentSidePanel.Dispose();
CurrentSidePanel = null;
}
public SidePanel CurrentSidePanel {
get;
private set;
}
}
}

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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View file

@ -10,6 +10,12 @@ namespace OnTopReplica.SidePanels {
InitializeComponent(); InitializeComponent();
} }
public override string Title {
get {
return Strings.MenuGroupSwitch;
}
}
public override void OnFirstShown(MainForm form) { public override void OnFirstShown(MainForm form) {
base.OnFirstShown(form); base.OnFirstShown(form);

View file

@ -0,0 +1,120 @@
namespace OnTopReplica.SidePanels {
partial class OptionsPanel {
/// <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 Component 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.btnClose = new System.Windows.Forms.Button();
this.panelMain = new System.Windows.Forms.Panel();
this.groupLanguage = new System.Windows.Forms.GroupBox();
this.lblLanguage = new System.Windows.Forms.Label();
this.comboLanguage = new System.Windows.Forms.ComboBox();
this.panelMain.SuspendLayout();
this.groupLanguage.SuspendLayout();
this.SuspendLayout();
//
// btnClose
//
this.btnClose.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btnClose.Location = new System.Drawing.Point(185, 217);
this.btnClose.Name = "btnClose";
this.btnClose.Size = new System.Drawing.Size(75, 23);
this.btnClose.TabIndex = 0;
this.btnClose.Text = "Close";
this.btnClose.UseVisualStyleBackColor = true;
this.btnClose.Click += new System.EventHandler(this.Close_click);
//
// panelMain
//
this.panelMain.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.panelMain.AutoScroll = true;
this.panelMain.Controls.Add(this.groupLanguage);
this.panelMain.Location = new System.Drawing.Point(0, 0);
this.panelMain.Name = "panelMain";
this.panelMain.Size = new System.Drawing.Size(260, 211);
this.panelMain.TabIndex = 1;
//
// groupLanguage
//
this.groupLanguage.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.groupLanguage.Controls.Add(this.lblLanguage);
this.groupLanguage.Controls.Add(this.comboLanguage);
this.groupLanguage.Location = new System.Drawing.Point(3, 3);
this.groupLanguage.Name = "groupLanguage";
this.groupLanguage.Size = new System.Drawing.Size(254, 68);
this.groupLanguage.TabIndex = 0;
this.groupLanguage.TabStop = false;
this.groupLanguage.Text = "Language:";
//
// lblLanguage
//
this.lblLanguage.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.lblLanguage.Location = new System.Drawing.Point(6, 43);
this.lblLanguage.Name = "lblLanguage";
this.lblLanguage.Size = new System.Drawing.Size(242, 23);
this.lblLanguage.TabIndex = 1;
this.lblLanguage.Text = "Requires a restart.";
//
// comboLanguage
//
this.comboLanguage.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.comboLanguage.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboLanguage.FormattingEnabled = true;
this.comboLanguage.Items.AddRange(new object[] {
"English",
"Dansk",
"Italiano"});
this.comboLanguage.Location = new System.Drawing.Point(6, 19);
this.comboLanguage.Name = "comboLanguage";
this.comboLanguage.Size = new System.Drawing.Size(242, 21);
this.comboLanguage.TabIndex = 0;
//
// OptionsPanel
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.AutoScroll = true;
this.Controls.Add(this.panelMain);
this.Controls.Add(this.btnClose);
this.MinimumSize = new System.Drawing.Size(260, 240);
this.Name = "OptionsPanel";
this.Size = new System.Drawing.Size(260, 240);
this.panelMain.ResumeLayout(false);
this.groupLanguage.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Button btnClose;
private System.Windows.Forms.Panel panelMain;
private System.Windows.Forms.GroupBox groupLanguage;
private System.Windows.Forms.ComboBox comboLanguage;
private System.Windows.Forms.Label lblLanguage;
}
}

View file

@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
namespace OnTopReplica.SidePanels {
partial class OptionsPanel : SidePanel {
public OptionsPanel() {
InitializeComponent();
}
private void Close_click(object sender, EventArgs e) {
OnRequestClosing();
}
public override string Title {
get {
return Strings.MenuSettings;
}
}
}
}

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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View file

@ -19,6 +19,12 @@ namespace OnTopReplica.SidePanels {
_regionDrawnHandler = new ThumbnailPanel.RegionDrawnHandler(ThumbnailPanel_RegionDrawn); _regionDrawnHandler = new ThumbnailPanel.RegionDrawnHandler(ThumbnailPanel_RegionDrawn);
} }
public override string Title {
get {
return Strings.MenuRegion;
}
}
ThumbnailPanel.RegionDrawnHandler _regionDrawnHandler; ThumbnailPanel.RegionDrawnHandler _regionDrawnHandler;
public override void OnFirstShown(MainForm form) { public override void OnFirstShown(MainForm form) {

View file

@ -1168,6 +1168,42 @@ namespace OnTopReplica {
} }
} }
/// <summary>
/// Looks up a localized string similar to Restore last cloned window.
/// </summary>
internal static string MenuRestoreLast {
get {
return ResourceManager.GetString("MenuRestoreLast", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to When enabled, OnTopReplica will attempt to restore the last cloned window on start up..
/// </summary>
internal static string MenuRestoreLastTT {
get {
return ResourceManager.GetString("MenuRestoreLastTT", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Settings....
/// </summary>
internal static string MenuSettings {
get {
return ResourceManager.GetString("MenuSettings", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Displays the settings panel..
/// </summary>
internal static string MenuSettingsTT {
get {
return ResourceManager.GetString("MenuSettingsTT", resourceCulture);
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to Switch to window. /// Looks up a localized string similar to Switch to window.
/// </summary> /// </summary>

View file

@ -1,30 +1,135 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<root> <root>
<resheader name="resmimetype"> <!--
<value>text/microsoft-resx</value> Microsoft ResX Schema
</resheader>
<resheader name="version"> Version 2.0
<value>2.0</value>
</resheader> The primary goals of this format is to allow a simple XML format
<resheader name="reader"> that is mostly human readable. The generation and parsing of the
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> various data types are done through the TypeConverter classes
</resheader> associated with the data types.
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> Example:
</resheader>
<data name="AboutButtonCancelTT" xml:space="preserve"> ... ado.net/XML headers & schema ...
<value>Abort update process.</value> <resheader name="resmimetype">text/microsoft-resx</resheader>
</data> <resheader name="version">2.0</resheader>
<data name="AboutButtonExpanderTT" xml:space="preserve"> <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<value>Show details about OnTopReplica.</value> <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
</data> <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="AboutButtonResetTT" xml:space="preserve"> <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<value>Reset all OnTopReplica settings.</value> <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
</data> <value>[base64 mime encoded serialized .NET Framework object]</value>
<data name="AboutButtonUpdateTT" xml:space="preserve"> </data>
<value>Update OnTopReplica now.</value> <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
</data> <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<data name="AboutDetails" xml:space="preserve"> <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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="AboutButtonCancelTT" xml:space="preserve">
<value>Abort update process.</value>
</data>
<data name="AboutButtonExpanderTT" xml:space="preserve">
<value>Show details about OnTopReplica.</value>
</data>
<data name="AboutButtonResetTT" xml:space="preserve">
<value>Reset all OnTopReplica settings.</value>
</data>
<data name="AboutButtonUpdateTT" xml:space="preserve">
<value>Update OnTopReplica now.</value>
</data>
<data name="AboutDetails" xml:space="preserve">
<value>&lt;html&gt; <value>&lt;html&gt;
&lt;head&gt; &lt;head&gt;
&lt;style type="text/css"&gt; &lt;style type="text/css"&gt;
@ -75,419 +180,431 @@ a:hover {
&lt;p&gt;Some icons from &lt;a href="http://www.vistaico.com"&gt;VistaICO.com&lt;/a&gt; and the Xiao icon set.&lt;/p&gt; &lt;p&gt;Some icons from &lt;a href="http://www.vistaico.com"&gt;VistaICO.com&lt;/a&gt; and the Xiao icon set.&lt;/p&gt;
&lt;/body&gt; &lt;/body&gt;
&lt;/html&gt;</value> &lt;/html&gt;</value>
</data> </data>
<data name="ApplicationName" xml:space="preserve"> <data name="ApplicationName" xml:space="preserve">
<value>OnTopReplica</value> <value>OnTopReplica</value>
</data> </data>
<data name="AskReset" xml:space="preserve"> <data name="AskReset" xml:space="preserve">
<value>Reset window completely?</value> <value>Reset window completely?</value>
</data> </data>
<data name="AskResetButtonOk" xml:space="preserve"> <data name="AskResetButtonOk" xml:space="preserve">
<value>&amp;Reset <value>&amp;Reset
All settings will be lost.</value> All settings will be lost.</value>
</data> </data>
<data name="AskResetContent" xml:space="preserve"> <data name="AskResetContent" xml:space="preserve">
<value>Can be used to reset all settings if you lost control over the window or moved it beyond the screen boundary.</value> <value>Can be used to reset all settings if you lost control over the window or moved it beyond the screen boundary.</value>
</data> </data>
<data name="AskResetTitle" xml:space="preserve"> <data name="AskResetTitle" xml:space="preserve">
<value>Reset</value> <value>Reset</value>
</data> </data>
<data name="AskSettingReset" xml:space="preserve"> <data name="AskSettingReset" xml:space="preserve">
<value>Reset settings?</value> <value>Reset settings?</value>
</data> </data>
<data name="AskSettingResetContent" xml:space="preserve"> <data name="AskSettingResetContent" xml:space="preserve">
<value>This will erase all settings of OnTopReplica, returning it to the original state right after installation (all saved information, like stored regions, will be lost).</value> <value>This will erase all settings of OnTopReplica, returning it to the original state right after installation (all saved information, like stored regions, will be lost).</value>
</data> </data>
<data name="AskSettingResetTitle" xml:space="preserve"> <data name="AskSettingResetTitle" xml:space="preserve">
<value>Reset settings</value> <value>Reset settings</value>
</data> </data>
<data name="AskUpdate" xml:space="preserve"> <data name="AskUpdate" xml:space="preserve">
<value>Download OnTopReplica {0}?</value> <value>Download OnTopReplica {0}?</value>
<comment>{0} update version</comment> <comment>{0} update version</comment>
</data> </data>
<data name="AskUpdateButtonCancel" xml:space="preserve"> <data name="AskUpdateButtonCancel" xml:space="preserve">
<value>Cancel update <value>Cancel update
OnTopReplica will prompt you the next time it is started.</value> OnTopReplica will prompt you the next time it is started.</value>
</data> </data>
<data name="AskUpdateButtonOk" xml:space="preserve"> <data name="AskUpdateButtonOk" xml:space="preserve">
<value>Download <value>Download
Install OnTopReplica {0}.</value> Install OnTopReplica {0}.</value>
<comment>{0} update version</comment> <comment>{0} update version</comment>
</data> </data>
<data name="AskUpdateContent" xml:space="preserve"> <data name="AskUpdateContent" xml:space="preserve">
<value>The new version can be downloaded and installed from the official website.</value> <value>The new version can be downloaded and installed from the official website.</value>
</data> </data>
<data name="AskUpdateExpanded" xml:space="preserve"> <data name="AskUpdateExpanded" xml:space="preserve">
<value>Installed version: {0} <value>Installed version: {0}
Available version: {1}</value> Available version: {1}</value>
<comment>{0} installed version number <comment>{0} installed version number
{1} online available version number</comment> {1} online available version number</comment>
</data> </data>
<data name="AskUpdateTitle" xml:space="preserve"> <data name="AskUpdateTitle" xml:space="preserve">
<value>Update available</value> <value>Update available</value>
</data> </data>
<data name="ButtonCancel" xml:space="preserve"> <data name="ButtonCancel" xml:space="preserve">
<value>&amp;Cancel</value> <value>&amp;Cancel</value>
</data> </data>
<data name="CreatedBy" xml:space="preserve"> <data name="CreatedBy" xml:space="preserve">
<value>Created by: Lorenz Cuno Klopfenstein.</value> <value>Created by: Lorenz Cuno Klopfenstein.</value>
</data> </data>
<data name="DrawRegions" xml:space="preserve"> <data name="DrawRegions" xml:space="preserve">
<value>Draw regions using mouse.</value> <value>Draw regions using mouse.</value>
</data> </data>
<data name="ErrorDetailButton" xml:space="preserve"> <data name="ErrorDetailButton" xml:space="preserve">
<value>Details</value> <value>Details</value>
</data> </data>
<data name="ErrorDetailsAero" xml:space="preserve"> <data name="ErrorDetailsAero" xml:space="preserve">
<value>Details on Windows Aero</value> <value>Details on Windows Aero</value>
</data> </data>
<data name="ErrorDetailsAeroInfo" xml:space="preserve"> <data name="ErrorDetailsAeroInfo" xml:space="preserve">
<value>Windows Aero is only available on Windows Vista Home Premium or higher.</value> <value>Windows Aero is only available on Windows Vista Home Premium or higher.</value>
</data> </data>
<data name="ErrorDwmOff" xml:space="preserve"> <data name="ErrorDwmOff" xml:space="preserve">
<value>Desktop Composition' is not enabled.</value> <value>Desktop Composition' is not enabled.</value>
</data> </data>
<data name="ErrorDwmOffContent" xml:space="preserve"> <data name="ErrorDwmOffContent" xml:space="preserve">
<value>You must enable desktop composition, by selecting 'Windows Aero' as the theme used by Windows. <value>You must enable desktop composition, by selecting 'Windows Aero' as the theme used by Windows.
To do so, right-click on the desktop and click on Personalize.</value> To do so, right-click on the desktop and click on Personalize.</value>
</data> </data>
<data name="ErrorGenericInfoButton" xml:space="preserve"> <data name="ErrorGenericInfoButton" xml:space="preserve">
<value>Error details</value> <value>Error details</value>
</data> </data>
<data name="ErrorGenericInfoText" xml:space="preserve"> <data name="ErrorGenericInfoText" xml:space="preserve">
<value>Error: </value> <value>Error: </value>
</data> </data>
<data name="ErrorGenericThumbnailHandleError" xml:space="preserve"> <data name="ErrorGenericThumbnailHandleError" xml:space="preserve">
<value>It appears that the selected window has been closed or is not valid anymore.</value> <value>It appears that the selected window has been closed or is not valid anymore.</value>
</data> </data>
<data name="ErrorGenericTitle" xml:space="preserve"> <data name="ErrorGenericTitle" xml:space="preserve">
<value>Error</value> <value>Error</value>
</data> </data>
<data name="ErrorNoDwm" xml:space="preserve"> <data name="ErrorNoDwm" xml:space="preserve">
<value>Desktop Composition' is not supported on your Operating System. <value>Desktop Composition' is not supported on your Operating System.
You must run this application on Windows Vista Home Premium or better.</value> You must run this application on Windows Vista Home Premium or better.</value>
</data> </data>
<data name="ErrorNoDwmTitle" xml:space="preserve"> <data name="ErrorNoDwmTitle" xml:space="preserve">
<value>Desktop Composition unsupported</value> <value>Desktop Composition unsupported</value>
</data> </data>
<data name="ErrorNoThumbnail" xml:space="preserve"> <data name="ErrorNoThumbnail" xml:space="preserve">
<value>No thumbnail loaded.</value> <value>No thumbnail loaded.</value>
</data> </data>
<data name="ErrorUnableToCreateThumbnail" xml:space="preserve"> <data name="ErrorUnableToCreateThumbnail" xml:space="preserve">
<value>Unable to create thumbnail</value> <value>Unable to create thumbnail</value>
</data> </data>
<data name="ErrorUnableToFit" xml:space="preserve"> <data name="ErrorUnableToFit" xml:space="preserve">
<value>Unable to fit window.</value> <value>Unable to fit window.</value>
</data> </data>
<data name="ErrorUpdate" xml:space="preserve"> <data name="ErrorUpdate" xml:space="preserve">
<value>Unable to check for updates.</value> <value>Unable to check for updates.</value>
</data> </data>
<data name="ErrorUpdateContent" xml:space="preserve"> <data name="ErrorUpdateContent" xml:space="preserve">
<value>It appears that OnTopReplica wasn't installed using 'ClickOnce'. You'll have to update manually (visit &lt;a href="http://ontopreplica.codeplex.com"&gt;OnTopReplica's homepage&lt;/a&gt;).</value> <value>It appears that OnTopReplica wasn't installed using 'ClickOnce'. You'll have to update manually (visit &lt;a href="http://ontopreplica.codeplex.com"&gt;OnTopReplica's homepage&lt;/a&gt;).</value>
</data> </data>
<data name="ErrorUpdateContentGeneric" xml:space="preserve"> <data name="ErrorUpdateContentGeneric" xml:space="preserve">
<value>OnTopReplica was unable to check whether an updated version is available. Make sure you are connected to the Internet. If you are, the website may be temporarily down.</value> <value>OnTopReplica was unable to check whether an updated version is available. Make sure you are connected to the Internet. If you are, the website may be temporarily down.</value>
</data> </data>
<data name="FullscreenMode" xml:space="preserve"> <data name="FullscreenMode" xml:space="preserve">
<value>Mode</value> <value>Mode</value>
</data> </data>
<data name="FullscreenModeAlwaysOnTop" xml:space="preserve"> <data name="FullscreenModeAlwaysOnTop" xml:space="preserve">
<value>Always on top</value> <value>Always on top</value>
</data> </data>
<data name="FullscreenModeAlwaysOnTopTT" xml:space="preserve"> <data name="FullscreenModeAlwaysOnTopTT" xml:space="preserve">
<value>Forces OnTopReplica to stay always on top.</value> <value>Forces OnTopReplica to stay always on top.</value>
</data> </data>
<data name="FullscreenModeClickThrough" xml:space="preserve"> <data name="FullscreenModeClickThrough" xml:space="preserve">
<value>Click through</value> <value>Click through</value>
</data> </data>
<data name="FullscreenModeClickThroughTT" xml:space="preserve"> <data name="FullscreenModeClickThroughTT" xml:space="preserve">
<value>OnTopReplica will behave like a transparent overlay that lets your clicks through to the windows below.</value> <value>OnTopReplica will behave like a transparent overlay that lets your clicks through to the windows below.</value>
</data> </data>
<data name="FullscreenModeNormal" xml:space="preserve"> <data name="FullscreenModeNormal" xml:space="preserve">
<value>Standard</value> <value>Standard</value>
</data> </data>
<data name="FullscreenModeNormalTT" xml:space="preserve"> <data name="FullscreenModeNormalTT" xml:space="preserve">
<value>Behaves like an ordinary window. You can bring other windows above OnTopReplica.</value> <value>Behaves like an ordinary window. You can bring other windows above OnTopReplica.</value>
</data> </data>
<data name="FullscreenTitle" xml:space="preserve"> <data name="FullscreenTitle" xml:space="preserve">
<value>OnTopReplica fullscreen</value> <value>OnTopReplica fullscreen</value>
</data> </data>
<data name="GroupSwitchModeDisableButton" xml:space="preserve"> <data name="GroupSwitchModeDisableButton" xml:space="preserve">
<value>Disable</value> <value>Disable</value>
</data> </data>
<data name="GroupSwitchModeEnableButton" xml:space="preserve"> <data name="GroupSwitchModeEnableButton" xml:space="preserve">
<value>Enable Group mode</value> <value>Enable Group mode</value>
</data> </data>
<data name="GroupSwitchModeStatusDisabled" xml:space="preserve"> <data name="GroupSwitchModeStatusDisabled" xml:space="preserve">
<value>Select multiple windows to enable.</value> <value>Select multiple windows to enable.</value>
</data> </data>
<data name="GroupSwitchModeStatusEnabled" xml:space="preserve"> <data name="GroupSwitchModeStatusEnabled" xml:space="preserve">
<value>Group switch mode is enabled.</value> <value>Group switch mode is enabled.</value>
</data> </data>
<data name="GroupSwitchModeTitle" xml:space="preserve"> <data name="GroupSwitchModeTitle" xml:space="preserve">
<value>Group switch mode:</value> <value>Group switch mode:</value>
</data> </data>
<data name="GroupSwitchModeWindows" xml:space="preserve"> <data name="GroupSwitchModeWindows" xml:space="preserve">
<value>Windows</value> <value>Windows</value>
<comment>Column Header of list, simply refers to available windows to be cloned</comment> <comment>Column Header of list, simply refers to available windows to be cloned</comment>
</data> </data>
<data name="Homepage" xml:space="preserve"> <data name="Homepage" xml:space="preserve">
<value>Homepage: www.codeplex.com/ontopreplica.</value> <value>Homepage: www.codeplex.com/ontopreplica.</value>
</data> </data>
<data name="InfoClickForwarding" xml:space="preserve"> <data name="InfoClickForwarding" xml:space="preserve">
<value>Do you want to enable "click forwarding"?</value> <value>Do you want to enable "click forwarding"?</value>
</data> </data>
<data name="InfoClickForwardingContent" xml:space="preserve"> <data name="InfoClickForwardingContent" xml:space="preserve">
<value>If this mode is enabled, OnTopReplica will forward all left mouse clicks to the window that is being cloned (this will allow you to do basic mouse operations on the cloned window without having to activate it). <value>If this mode is enabled, OnTopReplica will forward all left mouse clicks to the window that is being cloned (this will allow you to do basic mouse operations on the cloned window without having to activate it).
To exit this mode, push ESC.</value> To exit this mode, push ESC.</value>
</data> </data>
<data name="InfoClickForwardingTitle" xml:space="preserve"> <data name="InfoClickForwardingTitle" xml:space="preserve">
<value>Click forwarding</value> <value>Click forwarding</value>
</data> </data>
<data name="InfoClickThrough" xml:space="preserve"> <data name="InfoClickThrough" xml:space="preserve">
<value>Enable Click-Through mode?</value> <value>Enable Click-Through mode?</value>
</data> </data>
<data name="InfoClickThroughDetails" xml:space="preserve"> <data name="InfoClickThroughDetails" xml:space="preserve">
<value>Click-through only works if it has been enabled in the Resize submenu and if the window is semi-transparent.</value> <value>Click-through only works if it has been enabled in the Resize submenu and if the window is semi-transparent.</value>
</data> </data>
<data name="InfoClickThroughInformation" xml:space="preserve"> <data name="InfoClickThroughInformation" xml:space="preserve">
<value>In this mode the fullscreen window will behave as a partially transparent overlay, allowing you to click on the other windows behind it. <value>In this mode the fullscreen window will behave as a partially transparent overlay, allowing you to click on the other windows behind it.
To return to normal mode anytime, activate OnTopReplica by clicking on the task bar (or the tray icon).</value> To return to normal mode anytime, activate OnTopReplica by clicking on the task bar (or the tray icon).</value>
</data> </data>
<data name="InfoClickThroughNo" xml:space="preserve"> <data name="InfoClickThroughNo" xml:space="preserve">
<value>No, thank you. <value>No, thank you.
You can enable click-through later</value> You can enable click-through later</value>
</data> </data>
<data name="InfoClickThroughOk" xml:space="preserve"> <data name="InfoClickThroughOk" xml:space="preserve">
<value>Use Click-Through</value> <value>Use Click-Through</value>
</data> </data>
<data name="InfoClickThroughTitle" xml:space="preserve"> <data name="InfoClickThroughTitle" xml:space="preserve">
<value>Click-Through mode</value> <value>Click-Through mode</value>
</data> </data>
<data name="InfoUpdated" xml:space="preserve"> <data name="InfoUpdated" xml:space="preserve">
<value>OnTopReplica has been updated.</value> <value>OnTopReplica has been updated.</value>
</data> </data>
<data name="InfoUpdatedContent" xml:space="preserve"> <data name="InfoUpdatedContent" xml:space="preserve">
<value>In order to use the updated version of OnTopReplica you'll have to restart the application.</value> <value>In order to use the updated version of OnTopReplica you'll have to restart the application.</value>
</data> </data>
<data name="InfoUpdatedTitle" xml:space="preserve"> <data name="InfoUpdatedTitle" xml:space="preserve">
<value>Update successful</value> <value>Update successful</value>
</data> </data>
<data name="InfoUpToDate" xml:space="preserve"> <data name="InfoUpToDate" xml:space="preserve">
<value>OnTopReplica is up to date.</value> <value>OnTopReplica is up to date.</value>
</data> </data>
<data name="InfoUpToDateTitle" xml:space="preserve"> <data name="InfoUpToDateTitle" xml:space="preserve">
<value>No update available</value> <value>No update available</value>
</data> </data>
<data name="Language" xml:space="preserve"> <data name="Language" xml:space="preserve">
<value>Language</value> <value>Language</value>
</data> </data>
<data name="MenuAbout" xml:space="preserve"> <data name="MenuAbout" xml:space="preserve">
<value>About...</value> <value>About...</value>
</data> </data>
<data name="MenuAboutTT" xml:space="preserve"> <data name="MenuAboutTT" xml:space="preserve">
<value>Hides the main window and displays the "about" box.</value> <value>Hides the main window and displays the "about" box.</value>
</data> </data>
<data name="MenuAdvanced" xml:space="preserve"> <data name="MenuAdvanced" xml:space="preserve">
<value>Advanced</value> <value>Advanced</value>
</data> </data>
<data name="MenuChrome" xml:space="preserve"> <data name="MenuChrome" xml:space="preserve">
<value>Show window border</value> <value>Show window border</value>
</data> </data>
<data name="MenuChromeTT" xml:space="preserve"> <data name="MenuChromeTT" xml:space="preserve">
<value>Toggles the display of the window border.</value> <value>Toggles the display of the window border.</value>
</data> </data>
<data name="MenuClickForwarding" xml:space="preserve"> <data name="MenuClickForwarding" xml:space="preserve">
<value>Enable Click forwarding</value> <value>Enable Click forwarding</value>
</data> </data>
<data name="MenuClickForwardingTT" xml:space="preserve"> <data name="MenuClickForwardingTT" xml:space="preserve">
<value>Enable "click forwarding" to the cloned window.</value> <value>Enable "click forwarding" to the cloned window.</value>
</data> </data>
<data name="MenuClickThrough" xml:space="preserve"> <data name="MenuClickThrough" xml:space="preserve">
<value>Enable Click-Through</value> <value>Enable Click-Through</value>
</data> </data>
<data name="MenuClickThroughTT" xml:space="preserve"> <data name="MenuClickThroughTT" xml:space="preserve">
<value>OnTopReplica will behave like a transparent overlay that lets your clicks through to the windows below.</value> <value>OnTopReplica will behave like a transparent overlay that lets your clicks through to the windows below.</value>
</data> </data>
<data name="MenuClose" xml:space="preserve"> <data name="MenuClose" xml:space="preserve">
<value>Close</value> <value>Close</value>
</data> </data>
<data name="MenuCloseTT" xml:space="preserve"> <data name="MenuCloseTT" xml:space="preserve">
<value>Closes OnTopReplica.</value> <value>Closes OnTopReplica.</value>
</data> </data>
<data name="MenuFitDouble" xml:space="preserve"> <data name="MenuFitDouble" xml:space="preserve">
<value>2:1 Double</value> <value>2:1 Double</value>
</data> </data>
<data name="MenuFitFullscreen" xml:space="preserve"> <data name="MenuFitFullscreen" xml:space="preserve">
<value>Fullscreen</value> <value>Fullscreen</value>
</data> </data>
<data name="MenuFitHalf" xml:space="preserve"> <data name="MenuFitHalf" xml:space="preserve">
<value>1:2 Half</value> <value>1:2 Half</value>
</data> </data>
<data name="MenuFitOriginal" xml:space="preserve"> <data name="MenuFitOriginal" xml:space="preserve">
<value>1:1 Fit to window</value> <value>1:1 Fit to window</value>
</data> </data>
<data name="MenuFitQuarter" xml:space="preserve"> <data name="MenuFitQuarter" xml:space="preserve">
<value>1:4 Quarter</value> <value>1:4 Quarter</value>
</data> </data>
<data name="MenuGlass" xml:space="preserve"> <data name="MenuGlass" xml:space="preserve">
<value>Glass</value> <value>Glass</value>
</data> </data>
<data name="MenuGlassTT" xml:space="preserve"> <data name="MenuGlassTT" xml:space="preserve">
<value>Toggles "glass mode" on and off.</value> <value>Toggles "glass mode" on and off.</value>
</data> </data>
<data name="MenuGroupSwitch" xml:space="preserve"> <data name="MenuGroupSwitch" xml:space="preserve">
<value>Group Switch mode</value> <value>Group Switch mode</value>
</data> </data>
<data name="MenuGroupSwitchTT" xml:space="preserve"> <data name="MenuGroupSwitchTT" xml:space="preserve">
<value>OnTopReplica will automatically clone a window from an user defined group, switching to the one least recently activated to the foreground.</value> <value>OnTopReplica will automatically clone a window from an user defined group, switching to the one least recently activated to the foreground.</value>
</data> </data>
<data name="MenuOp100" xml:space="preserve"> <data name="MenuOp100" xml:space="preserve">
<value>100% (opaque)</value> <value>100% (opaque)</value>
</data> </data>
<data name="MenuOp100TT" xml:space="preserve"> <data name="MenuOp100TT" xml:space="preserve">
<value>Sets OnTopReplica to be completely opaque.</value> <value>Sets OnTopReplica to be completely opaque.</value>
</data> </data>
<data name="MenuOp25" xml:space="preserve"> <data name="MenuOp25" xml:space="preserve">
<value>25%</value> <value>25%</value>
</data> </data>
<data name="MenuOp25TT" xml:space="preserve"> <data name="MenuOp25TT" xml:space="preserve">
<value>Sets OnTopReplica to 25% opacity.</value> <value>Sets OnTopReplica to 25% opacity.</value>
</data> </data>
<data name="MenuOp50" xml:space="preserve"> <data name="MenuOp50" xml:space="preserve">
<value>50%</value> <value>50%</value>
</data> </data>
<data name="MenuOp50TT" xml:space="preserve"> <data name="MenuOp50TT" xml:space="preserve">
<value>Sets OnTopReplica to 50% opacity.</value> <value>Sets OnTopReplica to 50% opacity.</value>
</data> </data>
<data name="MenuOp75" xml:space="preserve"> <data name="MenuOp75" xml:space="preserve">
<value>75%</value> <value>75%</value>
</data> </data>
<data name="MenuOp75TT" xml:space="preserve"> <data name="MenuOp75TT" xml:space="preserve">
<value>Sets OnTopReplica to 75% opacity.</value> <value>Sets OnTopReplica to 75% opacity.</value>
</data> </data>
<data name="MenuOpacity" xml:space="preserve"> <data name="MenuOpacity" xml:space="preserve">
<value>Opacity</value> <value>Opacity</value>
</data> </data>
<data name="MenuOpen" xml:space="preserve"> <data name="MenuOpen" xml:space="preserve">
<value>Open</value> <value>Open</value>
</data> </data>
<data name="MenuOpenTT" xml:space="preserve"> <data name="MenuOpenTT" xml:space="preserve">
<value>Displays OnTopReplica.</value> <value>Displays OnTopReplica.</value>
</data> </data>
<data name="MenuPosBottomLeft" xml:space="preserve"> <data name="MenuPosBottomLeft" xml:space="preserve">
<value>Bottom Left</value> <value>Bottom Left</value>
</data> </data>
<data name="MenuPosBottomRight" xml:space="preserve"> <data name="MenuPosBottomRight" xml:space="preserve">
<value>Bottom Right</value> <value>Bottom Right</value>
</data> </data>
<data name="MenuPosCenter" xml:space="preserve"> <data name="MenuPosCenter" xml:space="preserve">
<value>Center</value> <value>Center</value>
</data> </data>
<data name="MenuPosDisabled" xml:space="preserve"> <data name="MenuPosDisabled" xml:space="preserve">
<value>Disabled</value> <value>Disabled</value>
</data> </data>
<data name="MenuPosition" xml:space="preserve"> <data name="MenuPosition" xml:space="preserve">
<value>Position lock</value> <value>Position lock</value>
</data> </data>
<data name="MenuPositionTT" xml:space="preserve"> <data name="MenuPositionTT" xml:space="preserve">
<value>Automatically position OnTopReplica on the current screen.</value> <value>Automatically position OnTopReplica on the current screen.</value>
</data> </data>
<data name="MenuPosTopLeft" xml:space="preserve"> <data name="MenuPosTopLeft" xml:space="preserve">
<value>Top Left</value> <value>Top Left</value>
</data> </data>
<data name="MenuPosTopRight" xml:space="preserve"> <data name="MenuPosTopRight" xml:space="preserve">
<value>Top Right</value> <value>Top Right</value>
</data> </data>
<data name="MenuQuitFullscreen" xml:space="preserve"> <data name="MenuQuitFullscreen" xml:space="preserve">
<value>Quit fullscreen mode</value> <value>Quit fullscreen mode</value>
</data> </data>
<data name="MenuRecall" xml:space="preserve"> <data name="MenuRecall" xml:space="preserve">
<value>Recall last position and size</value> <value>Recall last position and size</value>
</data> </data>
<data name="MenuRecallTT" xml:space="preserve"> <data name="MenuRecallTT" xml:space="preserve">
<value>Toggles whether OnTopReplica should store its last position and size and use them when it is restarted.</value> <value>Toggles whether OnTopReplica should store its last position and size and use them when it is restarted.</value>
</data> </data>
<data name="MenuReduce" xml:space="preserve"> <data name="MenuReduce" xml:space="preserve">
<value>Minimize</value> <value>Minimize</value>
</data> </data>
<data name="MenuReduceTT" xml:space="preserve"> <data name="MenuReduceTT" xml:space="preserve">
<value>Minimizes OnTopReplica to the task bar (or the tray).</value> <value>Minimizes OnTopReplica to the task bar (or the tray).</value>
</data> </data>
<data name="MenuRegion" xml:space="preserve"> <data name="MenuRegion" xml:space="preserve">
<value>Select region...</value> <value>Select region...</value>
</data> </data>
<data name="MenuRegionTT" xml:space="preserve"> <data name="MenuRegionTT" xml:space="preserve">
<value>Switches to "region mode", that allows you to select a limited region of the source's window as thumbnail.</value> <value>Switches to "region mode", that allows you to select a limited region of the source's window as thumbnail.</value>
</data> </data>
<data name="MenuReset" xml:space="preserve"> <data name="MenuReset" xml:space="preserve">
<value>Reset window</value> <value>Reset window</value>
</data> </data>
<data name="MenuResetTT" xml:space="preserve"> <data name="MenuResetTT" xml:space="preserve">
<value>Resets OnTopReplica settings and its main window.</value> <value>Resets OnTopReplica settings and its main window.</value>
</data> </data>
<data name="MenuResize" xml:space="preserve"> <data name="MenuResize" xml:space="preserve">
<value>Resize</value> <value>Resize</value>
</data> </data>
<data name="MenuSwitch" xml:space="preserve"> <data name="MenuSwitch" xml:space="preserve">
<value>Switch to window</value> <value>Switch to window</value>
</data> </data>
<data name="MenuSwitchTT" xml:space="preserve"> <data name="MenuSwitchTT" xml:space="preserve">
<value>Switches to the source window and hides OnTopReplica.</value> <value>Switches to the source window and hides OnTopReplica.</value>
</data> </data>
<data name="MenuWindows" xml:space="preserve"> <data name="MenuWindows" xml:space="preserve">
<value>Select window</value> <value>Select window</value>
</data> </data>
<data name="MenuWindowsNone" xml:space="preserve"> <data name="MenuWindowsNone" xml:space="preserve">
<value>- none -</value> <value>- none -</value>
</data> </data>
<data name="MenuWindowsTT" xml:space="preserve"> <data name="MenuWindowsTT" xml:space="preserve">
<value>Displays a list of window you can select as thumbnail source.</value> <value>Displays a list of window you can select as thumbnail source.</value>
</data> </data>
<data name="MenuWindowsWholeRegion" xml:space="preserve"> <data name="MenuWindowsWholeRegion" xml:space="preserve">
<value>- whole -</value> <value>- whole -</value>
</data> </data>
<data name="RegionsCurrentRegion" xml:space="preserve"> <data name="RegionsCurrentRegion" xml:space="preserve">
<value>Current region:</value> <value>Current region:</value>
</data> </data>
<data name="RegionsDeleteButton" xml:space="preserve"> <data name="RegionsDeleteButton" xml:space="preserve">
<value>Delete</value> <value>Delete</value>
</data> </data>
<data name="RegionsDoneButton" xml:space="preserve"> <data name="RegionsDoneButton" xml:space="preserve">
<value>Done</value> <value>Done</value>
</data> </data>
<data name="RegionsHeight" xml:space="preserve"> <data name="RegionsHeight" xml:space="preserve">
<value>Height</value> <value>Height</value>
</data> </data>
<data name="RegionsResetButton" xml:space="preserve"> <data name="RegionsResetButton" xml:space="preserve">
<value>Reset</value> <value>Reset</value>
</data> </data>
<data name="RegionsSaveButton" xml:space="preserve"> <data name="RegionsSaveButton" xml:space="preserve">
<value>Save</value> <value>Save</value>
</data> </data>
<data name="RegionsStoredRegions" xml:space="preserve"> <data name="RegionsStoredRegions" xml:space="preserve">
<value>Stored regions</value> <value>Stored regions</value>
</data> </data>
<data name="RegionsTitle" xml:space="preserve"> <data name="RegionsTitle" xml:space="preserve">
<value>Regions:</value> <value>Regions:</value>
</data> </data>
<data name="RegionsWidth" xml:space="preserve"> <data name="RegionsWidth" xml:space="preserve">
<value>Width</value> <value>Width</value>
</data> </data>
<data name="RightClick" xml:space="preserve"> <data name="RightClick" xml:space="preserve">
<value>Right-click here to start...</value> <value>Right-click here to start...</value>
</data> </data>
<data name="Slogan" xml:space="preserve"> <data name="Slogan" xml:space="preserve">
<value>A lightweight, real-time, always on top thumbnail of a window of your choice.</value> <value>A lightweight, real-time, always on top thumbnail of a window of your choice.</value>
</data> </data>
<data name="UpdateDisclaimer" xml:space="preserve"> <data name="UpdateDisclaimer" xml:space="preserve">
<value>OnTopReplica automatically checks for updates. No information is logged at any point.</value> <value>OnTopReplica automatically checks for updates. No information is logged at any point.</value>
</data> </data>
<data name="UpdateNow" xml:space="preserve"> <data name="UpdateNow" xml:space="preserve">
<value>Update now!</value> <value>Update now!</value>
</data> </data>
<data name="MenuSettings" xml:space="preserve">
<value>Settings...</value>
</data>
<data name="MenuSettingsTT" xml:space="preserve">
<value>Displays the settings panel.</value>
</data>
<data name="MenuRestoreLast" xml:space="preserve">
<value>Restore last cloned window</value>
</data>
<data name="MenuRestoreLastTT" xml:space="preserve">
<value>When enabled, OnTopReplica will attempt to restore the last cloned window on start up.</value>
</data>
</root> </root>