View Single Post
A draft script:

Code:
-- ZOOM ALL CANVASES IN CURRENT OMNIGRAFFLE DOCUMENT TO FIT WHOLE DIAGRAM

property pTitle : "Zoom All Canvases to Fit"
property pVer : "0.8"

property plstMenuItem : {"View", "Zoom", "Zoom to Selection"}

-- ADJUST THIS TO A VALUE SLIGHTLY BELOW 1.0 TO DECREASE THE DEFAULT LEVEL OF ZOOM
property pZoomScale : 0.9

on run
	if not GUIEnabled() then return
	
	-- GET A REFERENCE TO VIEW > ZOOM > ZOOM TO SELECTION
	set mnuZoomFit to GetMenuItem("OGfl", plstMenuItem)
	
	-- LOOP THRU EACH CANVAS, 
	--    SELECTING ALL GRAPHICS AND ZOOMING TO SELECTION, 
	-- 	AND ALLOWING FOR A FRACTIONAL ADJUSTMENT OF THE DEGREE OF ZOOM
	--     (THEN RESTORE ORIGINAL SELECTION)
	tell application id "OGfl"
		activate
		tell front window
			try
				set oFrontCanvas to its canvas
			on error
				return
			end try
			
			repeat with oCanv in canvases of its document
				set canvas of it to oCanv
				
				-- RECORD EXISTING SELECTION
				set lstSeln to its selection
				
				-- ZOOM TO FIT WHOLE DIAGRAM
				set its selection to graphics of oCanv
				tell application id "sevs" to click mnuZoomFit
				if pZoomScale ≠ 1.0 then set its zoom to (its zoom) * pZoomScale
				
				-- RESTORE ORIGINAL SELECTION
				set its selection to lstSeln
			end repeat
			set its canvas to oFrontCanvas
		end tell
	end tell
end run


-- RETURNS A REFERENCE TO A CLICKABLE MENU ITEM
-- E.G. set mnuZoomFit to GetMenuItem("OGfl", {"View", "Zoom", "Zoom to Selection"})
on GetMenuItem(strAppCode, lstMenu)
	set lngChain to length of lstMenu
	if lngChain < 2 then return missing value
	
	tell application id "sevs"
		set lstApps to application processes where its creator type = strAppCode
		if length of lstApps < 1 then return missing value
		tell first item of lstApps
			-- GET THE TOP LEVEL MENU
			set strMenu to item 1 of lstMenu
			set oMenu to menu strMenu of menu bar item strMenu of menu bar 1
			
			-- TRAVEL DOWN THROUGH ANY SUB-MENUS
			repeat with i from 2 to (lngChain - 1)
				set strMenu to item i of lstMenu
				set oMenu to menu strMenu of menu item strMenu of oMenu
			end repeat
			
			-- AND RETURN THE FINAL MENU ITEM
			return menu item (item -1 of lstMenu) of oMenu
		end tell
	end tell
end GetMenuItem

on GUIEnabled()
	tell application id "sevs"
		if UI elements enabled then
			return true
		else
			activate
			display dialog "This script depends on enabling access for assistive devices in system preferences" buttons "OK" default button "OK" with title pTitle & "   " & pVer
			tell application id "sprf"
				activate
				set current pane to pane id "com.apple.preference.universalaccess"
			end tell
			return false
		end if
	end tell
end GUIEnabled

Last edited by RobTrew; 2011-12-21 at 11:03 AM.. Reason: Ver 0.8 generalizes GUI access to items nested in submenus