Guest
2010-06-15, 12:19 AM
Here is an updated toggle script for expanding and collapsing the outlines in the contents panel and / or the sidebar panel.
This version should work as well from the OF toolbar as from a script menu or any other launch context. (It bypasses the OF Toolbar's unfortunate failure to save the state of global variable between runs, by saving and retrieving its own script object).
You can adjust its behaviour in two ways:
- Editing the boolean values of the two properties at the top will allow you to decide which panel(s) are toggled
- If both are toggled, you can decide whether they expand in synch or alternation by temporarily uncommenting one line (see note in script), running the script once, and then commenting that line out again.
Note that the very first time you launch it, it may appear to do nothing (the initial script object values may coincide with the current expansion states). Just run it again, and you should find that it toggles expansion with every run.
Useful ? Well, perhaps ... (I happen to use it) but mainly a simple illustration of how to conserve state between runs (despite the quirks of the OF toolbar) and write a toggling script ...
Code:
-- TOGGLE THE EXPANSION STATE OF TREES IN CONTENT AND/OR SIDEBAR PANELS
property pblnToggleContent : true
property pblnToggleSidebar : true
property pstrObjFile : "OFExpandStates"
property pstrSuffix : ".scpt"
property pstrScriptPath : (path to temporary items folder as string) & ¬
pstrObjFile & pstrSuffix
-- SCRIPT OBJECT FOR HOLDING DATA BETWEEN RUNS
-- (PATH AS ABOVE)
script sExpandStates
property pblnContentExpanded : true
property pblnSidebarExpanded : true
end script
on run
-- RETRIEVE ANY STORED EXPANSION FLAGS FROM THE LAST USE
try
set sExpandStates to load script file pstrScriptPath
on error
set pblnContentExpanded to false
set pblnSidebarExpanded to false
end try
tell application id "com.omnigroup.omnifocus"
set oWin to front document window of default document
-- OPTIONALLY TOGGLE CONTENT EXPANSION
if pblnToggleContent then
set blnExpanded to not (pblnContentExpanded of my sExpandStates)
-- UNCOMMENT THE FOLLOWING LINE AND RUN ONCE
-- TO RESET SYNCH BETWEEN SIDEBAR AND CONTENT EXPANSION
-- THEN COMMENT AGAIN:
-- set blnExpanded to true
set refTrees to a reference to trees of content of oWin
set expanded of refTrees to blnExpanded
set (pblnContentExpanded of my sExpandStates) to blnExpanded
end if
-- OPTIONALLY TOGGLE SIDEBAR EXPANSION
if pblnToggleSidebar then
set blnExpanded to not (pblnSidebarExpanded of my sExpandStates)
set oSidebar to sidebar of oWin
set refLibrary to a reference to tree 2 of oSidebar
set refTrees to a reference to (trees of refLibrary where class of value is folder)
set expanded of refTrees to blnExpanded
set (pblnSidebarExpanded of my sExpandStates) to blnExpanded
end if
end tell
store script my sExpandStates in file pstrScriptPath replacing yes
end run
Last edited by RobTrew; 2010-06-15 at 02:58 AM..