From dcf5e12ab9e2a13eba934e775070ff02bea3c093 Mon Sep 17 00:00:00 2001 From: Kenneth Skovhede Date: Mon, 10 Mar 2014 12:27:08 +0100 Subject: [PATCH] Changed from using the Properties Resource manager to using manually managed image resources --- .../Duplicati.GUI.TrayIcon.csproj | 91 ++----- .../GUI/Duplicati.GUI.TrayIcon/GtkRunner.cs | 20 +- .../GUI/Duplicati.GUI.TrayIcon/ImageLoader.cs | 79 ++++++ .../Properties/Resources.Designer.cs | 245 ++++-------------- .../Properties/Resources.resx | 57 ---- .../WindowsImplementation/WinFormsRunner.cs | 20 +- 6 files changed, 173 insertions(+), 339 deletions(-) create mode 100644 Duplicati/GUI/Duplicati.GUI.TrayIcon/ImageLoader.cs diff --git a/Duplicati/GUI/Duplicati.GUI.TrayIcon/Duplicati.GUI.TrayIcon.csproj b/Duplicati/GUI/Duplicati.GUI.TrayIcon/Duplicati.GUI.TrayIcon.csproj index a15f271e5..6c780c470 100644 --- a/Duplicati/GUI/Duplicati.GUI.TrayIcon/Duplicati.GUI.TrayIcon.csproj +++ b/Duplicati/GUI/Duplicati.GUI.TrayIcon/Duplicati.GUI.TrayIcon.csproj @@ -73,18 +73,14 @@ ..\..\..\thirdparty\appindicator-sharp\gdk-sharp.dll - False ..\..\..\thirdparty\appindicator-sharp\gtk-sharp.dll - False ..\..\..\thirdparty\MonoMac\MonoMac.dll - - False - + @@ -152,6 +148,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -166,10 +182,6 @@ {F61679A9-E5DE-468A-B5A4-05F92D0143D2} Duplicati.Library.Backend.FTP - - {42C91180-11EB-4590-82EA-80FE9D4DEBEC} - Duplicati.Library.Backend.GoogleDocs - {C03F6DFD-805A-4BE0-9338-64870ADDB4A2} Duplicati.Library.Backend.S3 @@ -222,6 +234,10 @@ {E2AF781D-D1E1-4512-BF2C-D6DA8D0F797F} Duplicati.CommandLine.Decrypter + + {42C91180-11EB-4590-82EA-80FE9D4DEBEC} + Duplicati.Library.Backend.GoogleDocs + @@ -245,63 +261,6 @@ true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Duplicati/GUI/Duplicati.GUI.TrayIcon/GtkRunner.cs b/Duplicati/GUI/Duplicati.GUI.TrayIcon/GtkRunner.cs index a8a03e454..e854d0477 100644 --- a/Duplicati/GUI/Duplicati.GUI.TrayIcon/GtkRunner.cs +++ b/Duplicati/GUI/Duplicati.GUI.TrayIcon/GtkRunner.cs @@ -55,16 +55,16 @@ namespace Duplicati.GUI.TrayIcon _icons[icon] = null; break; case MenuIcons.Pause: - _icons[icon] = ImageToGtk(Properties.Resources.Pause); + _icons[icon] = ImageToGtk(ImageLoader.Pause); break; case MenuIcons.Quit: - _icons[icon] = ImageToGtk(Properties.Resources.CloseMenuIcon); + _icons[icon] = ImageToGtk(ImageLoader.CloseMenuIcon); break; case MenuIcons.Resume: - _icons[icon] = ImageToGtk(Properties.Resources.Play); + _icons[icon] = ImageToGtk(ImageLoader.Play); break; case MenuIcons.Status: - _icons[icon] = ImageToGtk(Properties.Resources.StatusMenuIcon); + _icons[icon] = ImageToGtk(ImageLoader.StatusMenuIcon); break; default: _icons[icon] = null; @@ -221,23 +221,23 @@ namespace Duplicati.GUI.TrayIcon switch(icon) { case TrayIcons.Paused: - _images[icon] = ImageToPixbuf(Properties.Resources.TrayNormalPause.ToBitmap()); + _images[icon] = ImageToPixbuf(ImageLoader.TrayNormalPause.ToBitmap()); break; case TrayIcons.Running: - _images[icon] = ImageToPixbuf(Properties.Resources.TrayWorking.ToBitmap()); + _images[icon] = ImageToPixbuf(ImageLoader.TrayWorking.ToBitmap()); break; case TrayIcons.IdleError: - _images[icon] = ImageToPixbuf(Properties.Resources.TrayNormalError.ToBitmap()); + _images[icon] = ImageToPixbuf(ImageLoader.TrayNormalError.ToBitmap()); break; case TrayIcons.RunningError: - _images[icon] = ImageToPixbuf(Properties.Resources.TrayWorking.ToBitmap()); + _images[icon] = ImageToPixbuf(ImageLoader.TrayWorking.ToBitmap()); break; case TrayIcons.PausedError: - _images[icon] = ImageToPixbuf(Properties.Resources.TrayNormalPause.ToBitmap()); + _images[icon] = ImageToPixbuf(ImageLoader.TrayNormalPause.ToBitmap()); break; case TrayIcons.Idle: default: - _images[icon] = ImageToPixbuf(Properties.Resources.TrayNormal.ToBitmap()); + _images[icon] = ImageToPixbuf(ImageLoader.TrayNormal.ToBitmap()); break; } } diff --git a/Duplicati/GUI/Duplicati.GUI.TrayIcon/ImageLoader.cs b/Duplicati/GUI/Duplicati.GUI.TrayIcon/ImageLoader.cs new file mode 100644 index 000000000..dd86e4c66 --- /dev/null +++ b/Duplicati/GUI/Duplicati.GUI.TrayIcon/ImageLoader.cs @@ -0,0 +1,79 @@ +// Copyright (C) 2014, Kenneth Skovhede + +// http://www.hexad.dk, opensource@hexad.dk +// +// This library is free software; you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as +// published by the Free Software Foundation; either version 2.1 of the +// License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +using System; +using System.Drawing; +using System.Collections.Generic; + +namespace Duplicati.GUI.TrayIcon +{ + public static class ImageLoaderMac + { + public static Icon LoadFromStream(System.IO.Stream s) + { + return null; + } + } + + public static class ImageLoader + { + private static readonly string PREFIX = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name + "."; + private static readonly Dictionary BITMAPS = new Dictionary(); + private static readonly Dictionary ICONS = new Dictionary(); + private static readonly object LOCK = new object(); + + private static Bitmap LoadImage(string filename) + { + Bitmap bmp; + if (BITMAPS.TryGetValue(filename, out bmp)) + return bmp; + + lock(LOCK) + if (!BITMAPS.TryGetValue(filename, out bmp)) + return BITMAPS[filename] = (Bitmap)Image.FromStream(System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(PREFIX + filename)); + + return BITMAPS[filename]; + } + + private static Icon LoadIcon(string filename) + { + Icon ico; + if (ICONS.TryGetValue(filename, out ico)) + return ico; + + lock(LOCK) + if (!ICONS.TryGetValue(filename, out ico)) + return ICONS[filename] = new Icon(System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(PREFIX + filename)); + + return ICONS[filename]; + } + + public static Icon TrayNormal { get { return LoadIcon("Resources.TrayNormal.ico"); } } + public static Icon TrayNormalError { get { return LoadIcon("Resources.TrayNormalError.ico"); } } + public static Icon TrayNormalPause { get { return LoadIcon("Resources.TrayNormalPause.ico"); } } + public static Icon TrayNormalWarning { get { return LoadIcon("Resources.TrayNormalWarning.ico"); } } + public static Icon TrayWorking { get { return LoadIcon("Resources.TrayWorking.ico"); } } + public static Icon TrayWorkingPause { get { return LoadIcon("Resources.TrayWorkingPause.ico"); } } + + public static Bitmap Pause { get { return LoadImage("Resources.Pause.png"); } } + public static Bitmap Play { get { return LoadImage("Resources.Play.png"); } } + public static Bitmap CloseMenuIcon { get { return LoadImage("Resources.CloseMenuIcon.png"); } } + public static Bitmap StatusMenuIcon { get { return LoadImage("Resources.StatusMenuIcon.png"); } } + + } +} + diff --git a/Duplicati/GUI/Duplicati.GUI.TrayIcon/Properties/Resources.Designer.cs b/Duplicati/GUI/Duplicati.GUI.TrayIcon/Properties/Resources.Designer.cs index 9b94f5679..25a4ef24e 100644 --- a/Duplicati/GUI/Duplicati.GUI.TrayIcon/Properties/Resources.Designer.cs +++ b/Duplicati/GUI/Duplicati.GUI.TrayIcon/Properties/Resources.Designer.cs @@ -1,196 +1,49 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.239 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace Duplicati.GUI.TrayIcon.Properties { - using System; - - - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() { - } - - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Duplicati.GUI.TrayIcon.Properties.Resources", typeof(Resources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - - internal static System.Drawing.Bitmap Clock05 { - get { - object obj = ResourceManager.GetObject("Clock05", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap Clock15 { - get { - object obj = ResourceManager.GetObject("Clock15", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap Clock30 { - get { - object obj = ResourceManager.GetObject("Clock30", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap Clock60 { - get { - object obj = ResourceManager.GetObject("Clock60", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap CloseMenuIcon { - get { - object obj = ResourceManager.GetObject("CloseMenuIcon", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap Delay { - get { - object obj = ResourceManager.GetObject("Delay", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap Pause { - get { - object obj = ResourceManager.GetObject("Pause", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap Play { - get { - object obj = ResourceManager.GetObject("Play", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap SettingsMenuIcon { - get { - object obj = ResourceManager.GetObject("SettingsMenuIcon", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap StatusMenuIcon { - get { - object obj = ResourceManager.GetObject("StatusMenuIcon", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap Stop { - get { - object obj = ResourceManager.GetObject("Stop", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap Throttle { - get { - object obj = ResourceManager.GetObject("Throttle", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Icon TrayNormal { - get { - object obj = ResourceManager.GetObject("TrayNormal", resourceCulture); - return ((System.Drawing.Icon)(obj)); - } - } - - internal static System.Drawing.Icon TrayNormalError { - get { - object obj = ResourceManager.GetObject("TrayNormalError", resourceCulture); - return ((System.Drawing.Icon)(obj)); - } - } - - internal static System.Drawing.Icon TrayNormalPause { - get { - object obj = ResourceManager.GetObject("TrayNormalPause", resourceCulture); - return ((System.Drawing.Icon)(obj)); - } - } - - internal static System.Drawing.Icon TrayNormalWarning { - get { - object obj = ResourceManager.GetObject("TrayNormalWarning", resourceCulture); - return ((System.Drawing.Icon)(obj)); - } - } - - internal static System.Drawing.Icon TrayWorking { - get { - object obj = ResourceManager.GetObject("TrayWorking", resourceCulture); - return ((System.Drawing.Icon)(obj)); - } - } - - internal static System.Drawing.Icon TrayWorkingPause { - get { - object obj = ResourceManager.GetObject("TrayWorkingPause", resourceCulture); - return ((System.Drawing.Icon)(obj)); - } - } - - internal static System.Drawing.Bitmap WizardMenuIcon { - get { - object obj = ResourceManager.GetObject("WizardMenuIcon", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - } -} +// ------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Mono Runtime Version: 4.0.30319.17020 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +// ------------------------------------------------------------------------------ + +namespace Duplicati.GUI.TrayIcon.Properties { + using System; + + + [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static System.Resources.ResourceManager resourceMan; + + private static System.Globalization.CultureInfo resourceCulture; + + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + internal static System.Resources.ResourceManager ResourceManager { + get { + if (object.Equals(null, resourceMan)) { + System.Resources.ResourceManager temp = new System.Resources.ResourceManager("Duplicati.GUI.TrayIcon.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + internal static System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/Duplicati/GUI/Duplicati.GUI.TrayIcon/Properties/Resources.resx b/Duplicati/GUI/Duplicati.GUI.TrayIcon/Properties/Resources.resx index 73314d036..7c0911ec1 100644 --- a/Duplicati/GUI/Duplicati.GUI.TrayIcon/Properties/Resources.resx +++ b/Duplicati/GUI/Duplicati.GUI.TrayIcon/Properties/Resources.resx @@ -118,61 +118,4 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - ..\Resources\Clock05.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\Clock15.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\Clock30.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\Clock60.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\CloseMenuIcon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\Delay.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\Pause.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\Play.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\SettingsMenuIcon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\StatusMenuIcon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\Stop.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\Throttle.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\TrayNormal.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\TrayNormalError.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\TrayNormalPause.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\TrayNormalWarning.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\TrayWorking.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\TrayWorkingPause.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\WizardMenuIcon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - \ No newline at end of file diff --git a/Duplicati/GUI/Duplicati.GUI.TrayIcon/WindowsImplementation/WinFormsRunner.cs b/Duplicati/GUI/Duplicati.GUI.TrayIcon/WindowsImplementation/WinFormsRunner.cs index 8ed0a1257..119ac3688 100644 --- a/Duplicati/GUI/Duplicati.GUI.TrayIcon/WindowsImplementation/WinFormsRunner.cs +++ b/Duplicati/GUI/Duplicati.GUI.TrayIcon/WindowsImplementation/WinFormsRunner.cs @@ -64,13 +64,13 @@ namespace Duplicati.GUI.TrayIcon.Windows switch(icon) { case MenuIcons.Pause: - return Properties.Resources.Pause; + return ImageLoader.Pause; case MenuIcons.Quit: - return Properties.Resources.CloseMenuIcon; + return ImageLoader.CloseMenuIcon; case MenuIcons.Resume: - return Properties.Resources.Play; + return ImageLoader.Play; case MenuIcons.Status: - return Properties.Resources.StatusMenuIcon; + return ImageLoader.StatusMenuIcon; case MenuIcons.None: default: return null; @@ -167,23 +167,23 @@ namespace Duplicati.GUI.TrayIcon.Windows switch (value) { case TrayIcons.IdleError: - m_trayIcon.Icon = Properties.Resources.TrayNormalError; + m_trayIcon.Icon = ImageLoader.TrayNormalError; break; case TrayIcons.Paused: - m_trayIcon.Icon = Properties.Resources.TrayNormalPause; + m_trayIcon.Icon = ImageLoader.TrayNormalPause; break; case TrayIcons.PausedError: - m_trayIcon.Icon = Properties.Resources.TrayNormalPause; + m_trayIcon.Icon = ImageLoader.TrayNormalPause; break; case TrayIcons.Running: - m_trayIcon.Icon = Properties.Resources.TrayWorking; + m_trayIcon.Icon = ImageLoader.TrayWorking; break; case TrayIcons.RunningError: - m_trayIcon.Icon = Properties.Resources.TrayWorking; + m_trayIcon.Icon = ImageLoader.TrayWorking; break; case TrayIcons.Idle: default: - m_trayIcon.Icon = Properties.Resources.TrayNormal; + m_trayIcon.Icon = ImageLoader.TrayNormal; break; } }