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;
}
}