Removed extraneous _24x24 from the initial ToolbarButton load.
--- a/ToolbarButtonWrapper.cs
+++ b/ToolbarButtonWrapper.cs
@@ -30,9 +30,99 @@
/// </summary>
internal class ToolbarButtonWrapper
{
- protected System.Type ToolbarManager;
- protected object TBManagerInstance;
- protected MethodInfo TBManagerAdd;
+ protected static System.Type ToolbarManager;
+ protected static object TBManagerInstance;
+ protected static MethodInfo TBManagerAdd;
+
+ /// <summary>
+ /// Wraps the ToolbarManager class, if present.
+ /// </summary>
+ /// <returns><c>true</c>, if ToolbarManager is wrapped, <c>false</c> otherwise.</returns>
+ protected static bool TryWrapToolbarManager()
+ {
+ if (ToolbarManager == null)
+ {
+ Tools.PostDebugMessage(string.Format(
+ "{0}: Loading ToolbarManager.",
+ "ToolbarButtonWrapper"
+ ));
+
+ ToolbarManager = AssemblyLoader.loadedAssemblies
+ .Select(a => a.assembly.GetExportedTypes())
+ .SelectMany(t => t)
+ .FirstOrDefault(t => t.FullName == "Toolbar.ToolbarManager");
+
+ Tools.PostDebugMessage(string.Format(
+ "{0}: Loaded ToolbarManager. Getting Instance.",
+ "ToolbarButtonWrapper"
+ ));
+
+ if (ToolbarManager == null)
+ {
+ return false;
+ }
+
+ TBManagerInstance = ToolbarManager.GetProperty(
+ "Instance",
+ System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static
+ )
+ .GetValue(null, null);
+
+ Tools.PostDebugMessage(string.Format(
+ "{0}: Got ToolbarManager Instance '{1}'. Getting 'add' method.",
+ "ToolbarButtonWrapper",
+ TBManagerInstance
+ ));
+
+ TBManagerAdd = ToolbarManager.GetMethod("add");
+
+ Tools.PostDebugMessage(string.Format(
+ "{0}: Got ToolbarManager Instance 'add' method. Loading IButton.",
+ "ToolbarButtonWrapper"
+ ));
+ }
+
+ return true;
+ }
+
+ /// <summary>
+ /// Gets a value indicating whether <see cref="Toolbar.ToolbarManager"/> is present.
+ /// </summary>
+ /// <value><c>true</c>, if ToolbarManager is wrapped, <c>false</c> otherwise.</value>
+ public static bool ToolbarManagerPresent
+ {
+ get
+ {
+ return TryWrapToolbarManager();
+ }
+ }
+
+ /// <summary>
+ /// If ToolbarManager is present, initializes a new instance of the <see cref="VOID.ToolbarButtonWrapper"/> class.
+ /// </summary>
+ /// <param name="ns">Namespace, usually the plugin name.</param>
+ /// <param name="id">Identifier, unique per namespace.</param>
+ /// <returns>If ToolbarManager is present, a new <see cref="Toolbar.IButton"/> object, <c>null</c> otherwise.</returns>
+ public static ToolbarButtonWrapper TryWrapToolbarButton(string ns, string id)
+ {
+ if (ToolbarManagerPresent)
+ {
+ object button = TBManagerAdd.Invoke(TBManagerInstance, new object[] { ns, id });
+
+ Tools.PostDebugMessage(string.Format(
+ "{0}: Added Button '{1}' with ToolbarManager. Getting 'Text' property",
+ "ToolbarButtonWrapper",
+ button.ToString()
+ ));
+
+ return new ToolbarButtonWrapper(button);
+ }
+ else
+ {
+ return null;
+ }
+ }
+
protected System.Type IButton;
protected object Button;
protected PropertyInfo ButtonText;
@@ -207,42 +297,8 @@
/// </summary>
/// <param name="ns">Namespace, usually the plugin name.</param>
/// <param name="id">Identifier, unique per namespace.</param>
- public ToolbarButtonWrapper(string ns, string id)
- {
- Tools.PostDebugMessage(string.Format(
- "{0}: Loading ToolbarManager.",
- this.GetType().Name
- ));
-
- this.ToolbarManager = AssemblyLoader.loadedAssemblies
- .Select(a => a.assembly.GetExportedTypes())
- .SelectMany(t => t)
- .FirstOrDefault(t => t.FullName == "Toolbar.ToolbarManager");
-
- Tools.PostDebugMessage(string.Format(
- "{0}: Loaded ToolbarManager. Getting Instance.",
- this.GetType().Name
- ));
-
- this.TBManagerInstance = this.ToolbarManager.GetProperty(
- "Instance",
- System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static
- )
- .GetValue(null, null);
-
- Tools.PostDebugMessage(string.Format(
- "{0}: Got ToolbarManager Instance '{1}'. Getting 'add' method.",
- this.GetType().Name,
- this.TBManagerInstance
- ));
-
- this.TBManagerAdd = this.ToolbarManager.GetMethod("add");
-
- Tools.PostDebugMessage(string.Format(
- "{0}: Got ToolbarManager Instance 'add' method. Loading IButton.",
- this.GetType().Name
- ));
-
+ protected ToolbarButtonWrapper(object button)
+ {
this.IButton = AssemblyLoader.loadedAssemblies
.Select(a => a.assembly.GetExportedTypes())
.SelectMany(t => t)
@@ -251,14 +307,6 @@
Tools.PostDebugMessage(string.Format(
"{0}: Loaded IButton. Adding Button with ToolbarManager.",
this.GetType().Name
- ));
-
- this.Button = this.TBManagerAdd.Invoke(this.TBManagerInstance, new object[] { ns, id });
-
- Tools.PostDebugMessage(string.Format(
- "{0}: Added Button '{1}' with ToolbarManager. Getting 'Text' property",
- this.GetType().Name,
- this.Button.ToString()
));
this.ButtonText = this.IButton.GetProperty("Text");
--- a/VOID_Core.cs
+++ b/VOID_Core.cs
@@ -69,7 +69,7 @@
* Fields
* */
protected string VoidName = "VOID";
- protected string VoidVersion = "0.9.17";
+ protected string VoidVersion = "0.9.18";
protected bool _factoryReset = false;
[AVOID_SaveValue("configValue")]
protected VOID_SaveValue<int> configVersion = 1;
@@ -136,7 +136,7 @@
public bool configDirty;
[AVOID_SaveValue("UseBlizzyToolbar")]
protected VOID_SaveValue<bool> _UseToolbarManager;
- protected bool ToolbarManagerLoaded = false;
+ protected bool ToolbarManagerLoaded;
internal ToolbarButtonWrapper ToolbarButton;
/*
* Properties
@@ -257,6 +257,7 @@
this._skinName = this.defaultSkin;
this.UseToolbarManager = false;
+ this.ToolbarManagerLoaded = false;
this.LoadConfig();
}
@@ -428,31 +429,19 @@
protected void LoadToolbarManager()
{
- Type ToolbarManager = AssemblyLoader.loadedAssemblies
- .Select(a => a.assembly.GetExportedTypes())
- .SelectMany(t => t)
- .FirstOrDefault(t => t.FullName == "Toolbar.ToolbarManager");
-
- if (ToolbarManager == null)
- {
- Tools.PostDebugMessage(string.Format(
- "{0}: Could not load ToolbarManager.",
- this.GetType().Name
- ));
-
- return;
- }
-
- this.InitializeToolbarButton();
-
- this.ToolbarManagerLoaded = true;
+ this.ToolbarManagerLoaded = ToolbarButtonWrapper.ToolbarManagerPresent;
+
+ if (this.ToolbarManagerLoaded)
+ {
+ this.InitializeToolbarButton();
+ }
}
protected void InitializeToolbarButton()
{
- this.ToolbarButton = new ToolbarButtonWrapper(this.GetType().Name, "coreToggle");
+ this.ToolbarButton = ToolbarButtonWrapper.TryWrapToolbarButton(this.GetType().Name, "coreToggle");
this.ToolbarButton.Text = this.VoidName;
- this.ToolbarButton.TexturePath = this.VOIDIconOffPath + "_24x24";
+ this.ToolbarButton.TexturePath = this.VOIDIconOffPath;
if (this is VOID_EditorCore)
{
this.ToolbarButton.SetButtonVisibility(new GameScenes[] { GameScenes.EDITOR });