Version 0.9.16 0.9.16
Version 0.9.16

--- a/ToolbarButtonWrapper.cs
+++ b/ToolbarButtonWrapper.cs
@@ -18,10 +18,8 @@
 //
 //  You should have received a copy of the GNU General Public License
 //  along with this program.  If not, see <http://www.gnu.org/licenses/>.
-using KSP;
 using System;
 using System.Linq;
-using System.Linq.Expressions;
 using System.Reflection;
 using UnityEngine;
 
@@ -37,9 +35,14 @@
 		protected PropertyInfo ButtonText;
 		protected PropertyInfo ButtonTextColor;
 		protected PropertyInfo ButtonTexturePath;
+		protected PropertyInfo ButtonToolTip;
+		protected PropertyInfo ButtonVisible;
+		protected PropertyInfo ButtonVisibility;
+		protected PropertyInfo ButtonEnalbed;
 		protected EventInfo ButtonOnClick;
 		protected System.Type ClickHandlerType;
 		protected MethodInfo ButtonDestroy;
+		protected System.Type GameScenesVisibilityType;
 
 		public string Text
 		{
@@ -74,6 +77,42 @@
 			set
 			{
 				this.ButtonTexturePath.SetValue(this.Button, value, null);
+			}
+		}
+
+		public string ToolTip
+		{
+			get
+			{
+				return this.ButtonToolTip.GetValue(this.Button, null) as string;
+			}
+			set
+			{
+				this.ButtonToolTip.SetValue(this.Button, value, null);
+			}
+		}
+
+		public bool Visible
+		{
+			get
+			{
+				return (bool)this.ButtonVisible.GetValue(this.Button, null);
+			}
+			set
+			{
+				this.ButtonVisible.SetValue(this.Button, value, null);
+			}
+		}
+
+		public bool Enabled
+		{
+			get
+			{
+				return (bool)this.ButtonEnalbed.GetValue(this.Button, null);
+			}
+			set
+			{
+				this.ButtonEnalbed.SetValue(this.Button, value, null);
 			}
 		}
 
@@ -150,7 +189,35 @@
 			this.ButtonTexturePath = this.IButton.GetProperty("TexturePath");
 			
 			Tools.PostDebugMessage(string.Format(
-				"{0}: Got 'TexturePath' property.  Getting 'OnClick' property.",
+				"{0}: Got 'TexturePath' property.  Getting 'ToolTip' property.",
+				this.GetType().Name
+				));
+
+			this.ButtonToolTip = this.IButton.GetProperty("ToolTip");
+
+			Tools.PostDebugMessage(string.Format(
+				"{0}: Got 'ToolTip' property.  Getting 'Visible' property.",
+				this.GetType().Name
+				));
+
+			this.ButtonVisible = this.IButton.GetProperty("Visible");
+
+			Tools.PostDebugMessage(string.Format(
+				"{0}: Got 'Visible' property.  Getting 'Visibility' property.",
+				this.GetType().Name
+				));
+
+			this.ButtonVisibility = this.IButton.GetProperty("Visibility");
+
+			Tools.PostDebugMessage(string.Format(
+				"{0}: Got 'Visibility' property.  Getting 'Enabled' property.",
+				this.GetType().Name
+				));
+
+			this.ButtonEnalbed = this.IButton.GetProperty("Enabled");
+
+			Tools.PostDebugMessage(string.Format(
+				"{0}: Got 'Enabled' property.  Getting 'OnClick' event.",
 				this.GetType().Name
 				));
 
@@ -158,7 +225,7 @@
 			this.ClickHandlerType = this.ButtonOnClick.EventHandlerType;
 
 			Tools.PostDebugMessage(string.Format(
-				"{0}: Got 'OnClick' property '{1}'.  Getting 'Destroy' method.",
+				"{0}: Got 'OnClick' event '{1}'.  Getting 'Destroy' method.",
 				this.GetType().Name,
 				this.ButtonOnClick.ToString()
 				));
@@ -166,9 +233,20 @@
 			this.ButtonDestroy = this.IButton.GetMethod("Destroy");
 
 			Tools.PostDebugMessage(string.Format(
-				"{0}: Got 'Destroy' property '{1}'.",
+				"{0}: Got 'Destroy' property '{1}'.  Loading GameScenesVisibility class.",
 				this.GetType().Name,
 				this.ButtonDestroy.ToString()
+				));
+
+			this.GameScenesVisibilityType = AssemblyLoader.loadedAssemblies
+				.Select(a => a.assembly.GetExportedTypes())
+					.SelectMany(t => t)
+					.FirstOrDefault(t => t.FullName == "Toolbar.GameScenesVisibility");
+
+			Tools.PostDebugMessage(string.Format(
+				"{0}: Got 'GameScenesVisibility' class '{1}'.",
+				this.GetType().Name,
+				this.GameScenesVisibilityType.ToString()
 				));
 
 			Tools.PostDebugMessage("ToolbarButtonWrapper built!");
@@ -181,9 +259,16 @@
 			addHandler.Invoke(this.Button, new object[] { d });
 		}
 
-		public void DestroyButton()
+		public void SetButtonVisibility(params GameScenes[] gameScenes)
+		{
+			object GameScenesVisibilityObj = Activator.CreateInstance(this.GameScenesVisibilityType, gameScenes);
+			this.ButtonVisibility.SetValue(this.Button, GameScenesVisibilityObj, null);
+		}
+
+		public void Destroy()
 		{
 			this.ButtonDestroy.Invoke(this.Button, null);
 		}
 	}
 }
+

--- a/VOIDFlightMaster.cs
+++ b/VOIDFlightMaster.cs
@@ -32,8 +32,6 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 using System;
-using System.Collections.Generic;
-using System.Linq;
 using UnityEngine;
 using Engineer.VesselSimulator;
 

--- a/VOID_Core.cs
+++ b/VOID_Core.cs
@@ -68,7 +68,7 @@
 		 * Fields
 		 * */
 		protected string VoidName = "VOID";
-		protected string VoidVersion = "0.9.15";
+		protected string VoidVersion = "0.9.16";
 
 		protected bool _factoryReset = false;
 
@@ -155,8 +155,9 @@
 
 		public bool configDirty;
 
+		[AVOID_SaveValue("UseBlizzyToolbar")]
+		protected VOID_SaveValue<bool> _UseToolbarManager;
 		protected bool ToolbarManagerLoaded = false;
-		protected bool _UseToolbarManager;
 		internal ToolbarButtonWrapper ToolbarButton;
 
 		/*
@@ -260,7 +261,7 @@
 					this.InitializeToolbarButton();
 				}
 
-				_UseToolbarManager = value;
+				_UseToolbarManager.value = value;
 			}
 		}
 
@@ -529,7 +530,7 @@
 				this.VOIDIconLocked = GUILayout.Toggle (this.VOIDIconLocked, "Lock Icon Position");
 			}
 
-			this.UseToolbarManager = GUILayout.Toggle(this.UseToolbarManager, "Use Blizzy's Toolbar");
+			this.UseToolbarManager = GUILayout.Toggle(this.UseToolbarManager, "Use Blizzy's Toolbar If Available");
 
 			GUILayout.BeginHorizontal(GUILayout.ExpandWidth(true));