From ee7f86b70431a5bab6a2b35596a85bd5b300d4e9 Mon Sep 17 00:00:00 2001 From: Lorenz Cuno Klopfenstein Date: Wed, 31 Mar 2010 20:17:08 +0200 Subject: [PATCH] Added Czech translation. Some code refactoring. --- .hgignore | 1 + OnTopReplica/AspectRatioForm.cs | 39 +- OnTopReplica/Assets/flag_czech.png | Bin 0 -> 241 bytes OnTopReplica/MainForm.Designer.cs | 14 +- OnTopReplica/MainForm.cs | 3 +- OnTopReplica/OnTopReplica.csproj | 2 + OnTopReplica/Properties/Resources.Designer.cs | 7 + OnTopReplica/Properties/Resources.resx | 3 + OnTopReplica/Strings.cs.resx | 571 ++++++++++++++++++ OnTopReplica/ThumbnailPanel.cs | 15 +- 10 files changed, 638 insertions(+), 17 deletions(-) create mode 100644 OnTopReplica/Assets/flag_czech.png create mode 100644 OnTopReplica/Strings.cs.resx diff --git a/.hgignore b/.hgignore index b4fa552..9d26cd9 100644 --- a/.hgignore +++ b/.hgignore @@ -2,3 +2,4 @@ glob:OnTopReplica.suo glob:bin/* glob:obj/* glob:publish/* +glob:OnTopReplica/Assets/Thumbs.db diff --git a/OnTopReplica/AspectRatioForm.cs b/OnTopReplica/AspectRatioForm.cs index a937ab6..e8a94ed 100644 --- a/OnTopReplica/AspectRatioForm.cs +++ b/OnTopReplica/AspectRatioForm.cs @@ -60,8 +60,14 @@ namespace OnTopReplica { /// Forces the form to update its height based on the current aspect ratio setting. /// public void RefreshAspectRatio() { - ClientSize = new Size(ClientSize.Width, - (int)((ClientSize.Width - ExtraPadding.Horizontal) / AspectRatio) + ExtraPadding.Vertical); + int newWidth = ClientSize.Width; + int newHeight = (int)((ClientSize.Width - ExtraPadding.Horizontal) / AspectRatio) + ExtraPadding.Vertical; + if (newHeight < FromSizeToClientSize(MinimumSize).Height) { + newHeight = FromSizeToClientSize(MinimumSize).Height; + newWidth = (int)((newHeight - ExtraPadding.Vertical) * AspectRatio) + ExtraPadding.Horizontal; + } + + ClientSize = new Size(newWidth, newHeight); } /// @@ -127,6 +133,35 @@ namespace OnTopReplica { base.WndProc(ref m); } + #region ClientSize/Size conversion + + //bool clientSizeConversionSet = false; + int clientSizeConversionWidth, clientSizeConversionHeight; + + public Size FromClientSizeToSize(Size clientSize) { + return new Size(clientSize.Width + clientSizeConversionWidth, clientSize.Height + clientSizeConversionHeight); + } + + public Size FromSizeToClientSize(Size size) { + return new Size(size.Width - clientSizeConversionWidth, size.Height - clientSizeConversionHeight); + } + + /*private void ClientSizeInit() { + if (clientSizeConversionSet) + return; + + clientSizeConversionWidth = this.Size.Width - this.ClientSize.Width; + clientSizeConversionHeight = this.ClientSize.Width - this.ClientSize.Height; + }*/ + + protected override void OnShown(EventArgs e) { + base.OnShown(e); + + clientSizeConversionWidth = this.Size.Width - this.ClientSize.Width; + clientSizeConversionHeight = this.Size.Height - this.ClientSize.Height; + } + + #endregion } diff --git a/OnTopReplica/Assets/flag_czech.png b/OnTopReplica/Assets/flag_czech.png new file mode 100644 index 0000000000000000000000000000000000000000..8308ed84ed70128030d13e6315cf7864c24d4e18 GIT binary patch literal 241 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucLCF%=h?3y^w370~qEv=}#LT=BJwMkFg)(D3 zQ#}*A-ZN!DMTwp+jv*HQ$q5p_8V)aiYp>eCn8LvE|M%Zso#F><2Y8gOitsQyu<72b z?8+$KAmz}N{Xy!3v)iZt@}8=DB$hL_m>hay$fFRZ+{XCko-E7U?z06Oxc_;1O3t2amNsq%TE^h%>gTe~DWM4f&;U;T literal 0 HcmV?d00001 diff --git a/OnTopReplica/MainForm.Designer.cs b/OnTopReplica/MainForm.Designer.cs index 6e8981c..dd68455 100644 --- a/OnTopReplica/MainForm.Designer.cs +++ b/OnTopReplica/MainForm.Designer.cs @@ -64,6 +64,7 @@ this.menuLanguages = new System.Windows.Forms.ContextMenuStrip(this.components); this.englishToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.italianoToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.cestinaToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.menuContextClose = new System.Windows.Forms.ToolStripMenuItem(); this.menuIconContext = new System.Windows.Forms.ContextMenuStrip(this.components); @@ -381,7 +382,8 @@ // this.menuLanguages.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.englishToolStripMenuItem, - this.italianoToolStripMenuItem}); + this.italianoToolStripMenuItem, + this.cestinaToolStripMenuItem}); this.menuLanguages.Name = "menuLanguages"; this.menuLanguages.OwnerItem = this.languageToolStripMenuItem; this.menuLanguages.Size = new System.Drawing.Size(114, 48); @@ -404,6 +406,15 @@ this.italianoToolStripMenuItem.Text = "Italiano"; this.italianoToolStripMenuItem.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(113, 22); + this.cestinaToolStripMenuItem.Tag = "cs-CZ"; + this.cestinaToolStripMenuItem.Text = "Čeština"; + this.cestinaToolStripMenuItem.Click += new System.EventHandler(this.Menu_Language_click); + // // aboutToolStripMenuItem // this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem"; @@ -525,6 +536,7 @@ 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 chromeToolStripMenuItem; } } diff --git a/OnTopReplica/MainForm.cs b/OnTopReplica/MainForm.cs index 45d1a5a..20c6cd0 100644 --- a/OnTopReplica/MainForm.cs +++ b/OnTopReplica/MainForm.cs @@ -398,7 +398,7 @@ namespace OnTopReplica } void Menu_Windows_itemclick(object sender, EventArgs e) { - //Insure the menu is closed + //Ensure the menu is closed menuContext.Close(); //Get clicked item and window index from tag @@ -411,7 +411,6 @@ namespace OnTopReplica } var selectionData = (WindowListHelper.WindowSelectionData)tsi.Tag; - if (_windowManager != null) { ThumbnailSet(selectionData.Handle, selectionData.Region); } diff --git a/OnTopReplica/OnTopReplica.csproj b/OnTopReplica/OnTopReplica.csproj index 02aaa6e..8a06eec 100644 --- a/OnTopReplica/OnTopReplica.csproj +++ b/OnTopReplica/OnTopReplica.csproj @@ -135,6 +135,7 @@ AboutForm.cs Designer + ResXFileCodeGenerator Strings.it.Designer.cs @@ -256,6 +257,7 @@ + diff --git a/OnTopReplica/Properties/Resources.Designer.cs b/OnTopReplica/Properties/Resources.Designer.cs index a83560d..ca81e04 100644 --- a/OnTopReplica/Properties/Resources.Designer.cs +++ b/OnTopReplica/Properties/Resources.Designer.cs @@ -81,6 +81,13 @@ namespace OnTopReplica.Properties { } } + internal static System.Drawing.Bitmap flag_czech { + get { + object obj = ResourceManager.GetObject("flag_czech", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + internal static System.Drawing.Bitmap flag_ita { get { object obj = ResourceManager.GetObject("flag_ita", resourceCulture); diff --git a/OnTopReplica/Properties/Resources.resx b/OnTopReplica/Properties/Resources.resx index be33031..bb9011d 100644 --- a/OnTopReplica/Properties/Resources.resx +++ b/OnTopReplica/Properties/Resources.resx @@ -193,4 +193,7 @@ ..\Assets\regions.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Assets\flag_czech.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/OnTopReplica/Strings.cs.resx b/OnTopReplica/Strings.cs.resx new file mode 100644 index 0000000..fa6c98a --- /dev/null +++ b/OnTopReplica/Strings.cs.resx @@ -0,0 +1,571 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + OnTopReplica + + + Resetovat nastavení okna? + + + &Resetovat +Všechna nastavení budou ztracena. + + + Operace "Resetovat okno" je vhodná k inicializaci všech nastavení pokud jste například ztratili kontrolu nad oknem nebo jej přesunuli mimo viditelnou plochu obrazovky. + + + Resetovat + + + &Storno + + + Autor: Lorenz Cuno Klopfenstein. + + + Označte výřez pomocí myši. + + + Podrobnosti k Windows Aero + + + Windows Aero je k dispozici pouze na systémech Windows Vista Home Premium a vyšších. + + + Funkce 'Desktop Composition' není povolena. + + + Pro pokračování je nutné povolit funkci "Desktop Composition" výběrem tématu 'Windows Aero' v nastavení vzhledu Windows. + +Uvedené lze provést například kliknutním pravým tlačítkem myši na plochu a zvolením akce "Přizpůsobit". + + + Podrobnosti k chybě + + + Chyba: + + + Zvolené okno bylo zavřeno nebo již není platné z jiných důvodů. + + + Chyba + + + Funkce 'Desktop Composition' není ve vašem systému podporována. +Tuto aplikaci je možné spouštět pouze na systémech Windows Vista Home Premium a vyšších. + + + Funkce Desktop Composition není podporována + + + Nelze vytvořit náhled. + + + Nelze vložit okno. + + + Domácí stránka: www.codeplex.com/ontopreplica. + + + O aplikaci... + + + Skryje hlavní okno a zobrazí informace "O aplikaci". + + + Přizpůsobit po změně velikosti + + + Automaticky přizpůsobuje rozměr okna velikosti náhledu při změně velikosti okna. + + + Zavřít + + + Ukončí aplikaci OnTopReplica. + + + 2:1 Dvojnásobná + + + Celá obrazovka + + + 1:2 Poloviční + + + 1:1 Jako zdroj + + + 1:4 Čtvrtinová + + + Glass efekt + + + Přepíná "glass efekt" okna. + + + 100% (neprůhledné) + + + Nastaví aplikaci OnTopReplica jako neprůhlednou. + + + 25% + + + Nastaví průhlednost na 25%. + + + 50% + + + Nastaví průhlednost na 50%. + + + 75% + + + Nastaví průhlednost na 75%. + + + Průhlednost + + + Otevřít + + + Zobrazí aplikaci OnTopReplica. + + + Dolní levý roh + + + Dolní pravý roh + + + Umístění + + + Automatická pozice aplikace OnTopReplica vzhledem k obrazovce. + + + Horní levý roh + + + Horní pravý rok + + + Ukládat pozici a velikost okna + + + Přepínač, který definuje, zda si má aplikace OnTopReplica ukládat poslední pozici a velikost okna a obnovovat tyto údaje po restartování aplikace. + + + Minimalizovat do traye + + + Minimalizuje aplikaci OnTopReplica jako ikonu v systémové oblasti. + + + Vybrat výřez... + + + Přepne do režimu "výřezu", který umožní zvolit pouze část okna jako náhled. + + + Resetovat nastavení okna + + + Resetuje nastavení a pozici okna aplikace OnTopReplica. + + + Velikost + + + Přepnout do okna + + + Přepne do zdrojového okna a skryje aplikaci OnTopReplica. + + + Vybrat okno + + + - žádné - + + + Zobrazí seznam oken, které je možné použít jako zdroj. + + + Začněte klepnutím sem pravým tlačítkem myši... + + + Nenáročný a instantní náhled libovolného otevřeného okna (nebo jeho výřezu) v systému. + + + Aplikace OnTopReplica automaticky kontroluje dostupné aktualizace. Během této operace nedochází k žádnému přenosu či ukládání uživatelských informací. + + + Zkontroluj aktualizace + + + Instalovat OnTopReplica {0}? + + + Zrušit aktualizaci +Aplikace OnTopReplica vás vyzve k aktualizaci při dalším startu. + + + Pokračovat +Instalovat OnTopReplica {0}. + + + Nová verze bude automaticky stažena a nainstalována. + + + Nainstalovaná verze: {0} +Dostupná verze: {1} +Velikost pro stažení: {2} bajtů + + + Nové aktualizace jsou k dispozici + + + Podrobnosti + + + Náhled nebyl nahrán. + + + Kontrola aktualizací se nezdařila. + + + Zdá se, že aplikace OnTopReplica nebyla nainstalována pomocí 'ClickOnce'. Aktualizaci musíte provést ručně (navštivte <a href="http://www.codeplex.com/ontopreplica">domácí stránku aplikace OnTopReplica</a>). + + + Aplikace OnTopReplica byla aktualizována. + + + Pro použití aktualizací je potřeba aplikaci OnTopReplica restartovat. + + + Aktualizace proběhla úspěšně + + + OnTopReplica je aktuální. + + + Žádná aktualizace není k dispozici. + + + Povolit "Proklikávání" v celoobrazovkovém režimu? + + + "Proklikávání" funguje pouze pokud je povoleno v menu a okno má nastavenou průhlednost. + + + V tomto režimu se bude okno roztažené přes celou obrazovku chovat jako poloprůhledná vrstva, přes kterou bude možné "proklikávat" na podložená okna. + +K návratu do standardního režimu je možné přejít kdykoli dvojklikem na ikonu v oznamovací oblasti (traye). + + + Režim "Proklikávání" + + + Proklikávání + + + Pokud je v celoobrazovkovém režimu oknu nastavena průhlednost, budou jednotlivá kliknutí myší "propadat" do oken za ním. + + + Ne, použij standardní celoobrazovkový režim +Režim "Proklikávání" je možné zvolit později v menu + + + Používat "Proklikávání" + + + Přeposílání kliknutí + + + Zapne "přeposílání kliknutí" do zdrojového okna. + + + Opustit celoobrazovkový režim + + + Jazyk + + + Výřezy + + + Uložit + + + Smazat + + + Aktuální výřez: + + + Šířka + + + Výška + + + Reset + + + Hotovo + + + Uložené výřezy + + + Přejete si povolit "přeposílání kliknutí"? + + + Přeposílání kliknutí + + + V tomto režimu aplikace OnTopReplica přeposílá kliknutí levého tlačítka myši do zdrojového okna (je tedy možné provádět základní ovládání zdrojového okna bez nutnosti jej aktivovat). + +Ukončit režim "přeposíání kliknutí" je možné opětovným vyvolání položky v menu. + + + Resetovat nastavení? + + + Operace "Resetovat nastavení" smaže veškerá uživatelská nastavení aplikace OnTopReplica a vrátí nastavení do stejného stavu jako po instalaci (všechny uložené informace, jako například uložené výřezy oken, budou ztraceny). + + + Resetovat nastavení + + + Přerušit aktualizaci. + + + Zobrazit podrobnosti o aplikaci OnTopReplica. + + + Resetovat nastavení OnTopReplica. + + + Aktualizovat OnTopReplica. + + + <html> + <head> + <style type="text/css"> +body { + font-family: Segoe UI, Arial, sans-serif; + font-size: 0.8em; + margin: 0; +padding: 0.75em; +} +h1 { + font-size: 1.4em; + font-weight: bold; + + margin: 1em 0 0.4em 0; + padding: 0; +} +p { + margin: 0.5em 0 0.5em 1em; + padding: 0; +} +a { + font-weight: bold; + color: blue; +} +a:hover { + color: red; +} + </style> + </head> + + <body> + + <h1>Licence</h1> + + <p><b>OnTopReplica</b> je šířena pod <a href="http://opensource.org/licenses/ms-rl.html">Microsoft Reciprocal License (Ms-RL)</a> licencí.</p> + <p>Původní zdrojový kód je možné nalézt na <a href="http://www.codeplex.com/ontopreplica">domovské stránce projektu na serveru CodePlex</a>.</p> + + <h1>Autoři a zásluhy</h1> + + <p>Původní inspirací pro OnTopReplica byla aplikace <a href="http://insentient.net">Switcher</a> a další aplikace založeny na DWM.</p> + + <p>Všechny Vista ovládací prvky jsou součástí <a href="http://www.codeplex.com/windowsformsaero">knihovny WindowsFormsAero</a> pro .NET.</p> + + <p>Některé ukázkové kódy byly převzaty z <a href="http://www.ookii.org">Ookii</a> ze serveru Channel9.</p> + + <p>Třída NativeToolstripRenderer byla převzata z <a href="http://wp.asztal.net/2007/12/vista-style-menus-in-dotnet/">asztal.net</a>.</p> + + <p>Některé ikony pocházejí z <a href="http://www.vistaico.com">VistaICO.com</a> a balíčku ikon Xiao.</p> + + </body> +</html> + + + - celé okno - + + + Aplikace OnTopReplica přes celou obrazovku + + + Režim + + + Vždy na vrchu + + + Nastaví aplikaci OnTopReplica, aby zůstávala vždy na vrchu. + + + Proklikávání + + + Aplikace OnTopReplica se bude chovat jako průhledná vrstva přes kterou bude možno proklikávat do podložených oken. + + + Standardní + + + Aplikace OnTopReplica se bude chovat jako běžné okno. Jiná okna mohou překrýt okno aplikace. + + + Okraj + + + Přepínač, který definuje, zda má aplikace OnTopReplica viditelný okraj okna. + + \ No newline at end of file diff --git a/OnTopReplica/ThumbnailPanel.cs b/OnTopReplica/ThumbnailPanel.cs index f594e6a..052775f 100644 --- a/OnTopReplica/ThumbnailPanel.cs +++ b/OnTopReplica/ThumbnailPanel.cs @@ -131,6 +131,7 @@ namespace OnTopReplica { Cursor = (value) ? Cursors.Cross : Cursors.Default; UpdateThubmnail(); + this.Invalidate(); } } @@ -207,15 +208,9 @@ namespace OnTopReplica { thumbnailSize = ComputeIdealSize(sourceSize, Size); padHeight = (Size.Height - thumbnailSize.Height) / 2; - /*padWidth = (Size.Width - thumbnailSize.Width) / 2; - padHeight = (Size.Height - thumbnailSize.Height) / 2; - - Rectangle target = new Rectangle(padWidth, padHeight, thumbnailSize.Width, thumbnailSize.Height);*/ var target = new Rectangle(0, padHeight, thumbnailSize.Width, thumbnailSize.Height); Rectangle source = (_regionEnabled) ? _regionCurrent : new Rectangle(Point.Empty, _thumbnail.SourceSize); - //Console.WriteLine("Source " + sourceSize.ToString() + ", Target " + Size.ToString() + ", Fit " + thumbnailSize.ToString() + ", Padding " + padWidth + "," + padHeight); - _thumbnail.Update(target, source, ThumbnailOpacity, true, true); } catch { @@ -235,11 +230,7 @@ namespace OnTopReplica { double sourceRatio = (double)sourceSize.Width / (double)sourceSize.Height; double clientRatio = (double)clientSize.Width / (double)clientSize.Height; - Size ret; - //if(sourceRatio >= clientRatio) - ret = new Size(clientSize.Width, (int)((double)clientSize.Width / sourceRatio)); - /*else - ret = new Size((int)((double)clientSize.Height * sourceRatio), clientSize.Height);*/ + Size ret = new Size(clientSize.Width, (int)((double)clientSize.Width / sourceRatio)); return ret; } @@ -247,7 +238,7 @@ namespace OnTopReplica { /// Updates the right-click labels. /// If a thumbnail is shown no label will be visible. If no thumbnail is active, the correct label will be visible. private void UpdateRightClickLabels(){ - if (_thumbnail != null && !_thumbnail.IsInvalid /*&& !_drawMouseRegions*/) { + if (_thumbnail != null && !_thumbnail.IsInvalid) { //Thumbnail active and no region drawing _labelGlass.Visible = false; _labelNoGlass.Visible = false;