diff options
author | Michael Hutchinson <m.j.hutchinson@gmail.com> | 2011-10-27 15:32:45 +0400 |
---|---|---|
committer | Michael Hutchinson <m.j.hutchinson@gmail.com> | 2011-10-27 15:32:45 +0400 |
commit | 1068044073baf0bf228a5b0b3b0de24e43969eb6 (patch) | |
tree | 78d2ef31f96805c80b986e1c8a4cfa430239b195 /main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui | |
parent | e650551e3020705465c044b2cfcdaaf5fa06018f (diff) |
[Ide] Allow branding the app icons
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui')
-rw-r--r-- | main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/DefaultWorkbench.cs | 41 |
1 files changed, 32 insertions, 9 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/DefaultWorkbench.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/DefaultWorkbench.cs index 4c3ed90c63..8b74bb229e 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/DefaultWorkbench.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/DefaultWorkbench.cs @@ -211,15 +211,7 @@ namespace MonoDevelop.Ide.Gui DeleteEvent += new Gtk.DeleteEventHandler (OnClosing); - if (Gtk.IconTheme.Default.HasIcon ("monodevelop")) - Gtk.Window.DefaultIconName = "monodevelop"; - else - this.IconList = new Gdk.Pixbuf[] { - ImageService.GetPixbuf (MonoDevelop.Ide.Gui.Stock.MonoDevelop, Gtk.IconSize.Menu), - ImageService.GetPixbuf (MonoDevelop.Ide.Gui.Stock.MonoDevelop, Gtk.IconSize.Button), - ImageService.GetPixbuf (MonoDevelop.Ide.Gui.Stock.MonoDevelop, Gtk.IconSize.Dnd), - ImageService.GetPixbuf (MonoDevelop.Ide.Gui.Stock.MonoDevelop, Gtk.IconSize.Dialog) - }; + SetAppIcons (); //this.WindowPosition = Gtk.WindowPosition.None; @@ -228,6 +220,37 @@ namespace MonoDevelop.Ide.Gui IdeApp.CommandService.SetRootWindow (this); } + + void SetAppIcons () + { + //first try to get the icon from the GTK icon theme + var appIconName = BrandingService.GetString ("ApplicationIconId") + ?? BrandingService.ApplicationName.ToLower (); + if (Gtk.IconTheme.Default.HasIcon (appIconName)) { + Gtk.Window.DefaultIconName = appIconName; + return; + } + + //branded icons + var iconsEl = BrandingService.GetElement ("ApplicationIcons"); + if (iconsEl != null) { + try { + this.IconList = iconsEl.Elements ("Icon") + .Select (el => new Gdk.Pixbuf (BrandingService.GetFile ((string)el))).ToArray (); + return; + } catch (Exception ex) { + LoggingService.LogError ("Could not load app icons", ex); + } + } + + //built-ins + this.IconList = new Gdk.Pixbuf[] { + ImageService.GetPixbuf (MonoDevelop.Ide.Gui.Stock.MonoDevelop, Gtk.IconSize.Menu), + ImageService.GetPixbuf (MonoDevelop.Ide.Gui.Stock.MonoDevelop, Gtk.IconSize.Button), + ImageService.GetPixbuf (MonoDevelop.Ide.Gui.Stock.MonoDevelop, Gtk.IconSize.Dnd), + ImageService.GetPixbuf (MonoDevelop.Ide.Gui.Stock.MonoDevelop, Gtk.IconSize.Dialog) + }; + } void onDragDataRec (object o, Gtk.DragDataReceivedArgs args) { |