// Copyright 2010 dRaster, Inc.
// dRaster.com
[RoutineDef,UpdateButtonStates,
	[If, [FileExists, "ZSwitcher/zswitcher-enabled.zvr"],
		[VarDef, zSwitcherIsEnabled]
		[VarLoad, zSwitcherIsEnabled, "ZSwitcher/zswitcher-enabled.zvr" ]

		[If, zSwitcherIsEnabled = 1,
			[IDisable, "ZPlugin:ZSwitcher:Enable ZSwitcher"]
			[IEnable, "ZPlugin:ZSwitcher:Disable ZSwitcher"]
		,
			[IDisable, "ZPlugin:ZSwitcher:Disable ZSwitcher"]
			[IEnable, "ZPlugin:ZSwitcher:Enable ZSwitcher"]
		]
	]
]

[RoutineDef,EnableZSwitcher,
	[ISetHotkey, ZPlugin:ZSwitcher:Enable ZSwitcher, 0]
	[FileExecute, ZSwitcher/ZSwitcher.dll, setZSwitcherIsEnabled]
	[VarDef, zSwitcherIsEnabled]
	[VarSet, zSwitcherIsEnabled, 1]
	[VarSave, zSwitcherIsEnabled, "ZSwitcher/zswitcher-enabled.zvr"]
	[FileExecute, ZSwitcher/ZSwitcher.dll, doEnable]
	[RoutineCall,UpdateButtonStates]
	[If, [IExists, Preferences:RightClick Navigation],
		[ISet, Preferences:RightClick Navigation, 1]
		[ISet, Preferences:Click Distance, 1]
	]
]

[RoutineDef,DisableZSwitcher,
	[VarSet, zSwitcherIsEnabled, -1]
	[VarSave, zSwitcherIsEnabled, "ZSwitcher/zswitcher-enabled.zvr" ]
	[FileExecute, ZSwitcher/ZSwitcher.dll, doDisable]
	[RoutineCall,UpdateButtonStates]
]


[RoutineDef,DragBrushSize,
	[FileExecute, ZBRUSH_ZStartup/ZPlugs64/ZSwitcher/ZSwitcher.dll, startDraggerMode]

	[If, [MemGetSize, zSwitcherLastMousePosX] != 0 && [MouseLButton] = 1, 
		[VarSet, curDrawSize, [IGet,brushParam]]
		[VarSet, dragRate, [MouseHPos] - [MVarGet, zSwitcherLastMousePosX, 0]]
		[VarSet, dragRate, dragRate * dragSpeed]
		[VarSet, curDrawSize, curDrawSize + dragRate]
		[If, curDrawSize < 0, [VarSet, curDrawSize, 0]]
		[ISet,brushParam, curDrawSize]
		[MVarSet, zSwitcherLastMousePosX, 0, [MouseHPos]]
	,
		[If, [MemGetSize, zSwitcherLastMousePosX] = 0,
			[MVarDef, zSwitcherLastMousePosX, 1]
		]
		[MVarSet, zSwitcherLastMousePosX, 0, [MouseHPos]]
	]
,brushParam,dragSpeed]

//create new subpalette in Document palette:
[ISubPalette,"ZPlugin:ZSwitcher"]

[IButton,"ZPlugin:ZSwitcher:Enable ZSwitcher","Enable ZSwitcher",
[RoutineCall,EnableZSwitcher]
,,1]//end button

[IButton,"ZPlugin:ZSwitcher:Disable ZSwitcher","Disable ZSwitcher",
[RoutineCall,DisableZSwitcher]
,1,1]//end button

[IButton,"ZPlugin:ZSwitcher:About...","About ZSwitcher",
[FileExecute, ZSwitcher/ZSwitcher.dll, showAbout]
,,1]//end button

[ISubPalette,"ZPlugin:ZSwitcher:Assign Brush Hotkeys"]

[IButton,"ZPlugin:ZSwitcher:Assign Brush Hotkeys:Size (Draw Size)","Brush Size",
[RoutineCall,DragBrushSize,"Draw:Draw Size",1]
,,1]//end button

[IButton,"ZPlugin:ZSwitcher:Assign Brush Hotkeys:Strength (Z Intensity)","Strength",
[RoutineCall,DragBrushSize,"Draw:Z Intensity",0.4]
,,1]//end button

[IButton,"ZPlugin:ZSwitcher:Assign Brush Hotkeys:Mask","Mask",
[FileExecute, ZSwitcher/ZSwitcher.dll, customMaskKeyPressed]
,,1]//end button

[If, [MemGetSize, zSwitcherHasRun] = 0,
	[MVarDef, zSwitcherHasRun, 1, 1 ]

	[FileExecute, ZSwitcher/ZSwitcher.dll, load]

	[If, [FileExists, "ZSwitcher/zswitcher-enabled.zvr"],
		[VarLoad, zSwitcherIsEnabled, "ZSwitcher/zswitcher-enabled.zvr" ]
		[If, zSwitcherIsEnabled = 1,
			[ISetHotkey, ZPlugin:ZSwitcher:Enable ZSwitcher,104]
			[FileExecute, ZSwitcher/ZSwitcher.dll, doDelayedEnable]
		]
	,
		[ISetHotkey, ZPlugin:ZSwitcher:Enable ZSwitcher,104]
		[FileExecute, ZSwitcher/ZSwitcher.dll, doDelayedEnable]
	]
,
	[RoutineCall,UpdateButtonStates]
]

