The Omni Group
These forums are now read-only. Please visit our new forums to participate in discussion. A new account will be required to post in the new forums. For more info on the switch, see this post. Thank you!

Go Back   The Omni Group Forums > OmniOutliner > OmniOutliner 3 for Mac
FAQ Members List Calendar Search Today's Posts Mark Forums Read

 
Quickly turning numbering on and off... Thread Tools Search this Thread Display Modes
Forgive the naivety of this question...

I am a regular user of Circus Ponies Notebook, but am using OO3 for my grading because of its columns (wooo!). I'm tripping a bit on the differences between the two programs, and here's one place where I'm getting stuck.

Any time I turn numbering OFF for a row, I have to *both* turn the numbering off *AND* remove the suffix (the period).

Is there any easier way to toggle numbering on/off without changing two fields?

I looked at the styles, but this only seems to involve formatting, not numbering...

Thanks!

-Tim
 
This should toggle the numbering of selected rows.

(In the absence of existing numbering, it defaults to legal with a trailing "." - this can be adjusted by editing the first four properties)

Code:
-- DEFAULT NUMBERING SETTINGS (ADJUST AS REQUIRED)
property pvarLowerCase : true
property pvarPrefix : ""
property pvarSuffix : "."
property pvarType : "Legal" -- Legal | Letters | Numeric | Roman

property plstNumbered : {pvarLowerCase, pvarPrefix, pvarSuffix, pvarType}

on run
	tell application id "OOut"
		-- IS THERE A FRONT DOCUMENT ?
		set lstDocs to documents
		if (count of lstDocs) < 1 then return
		set oDoc to first item of lstDocs
		
		-- ARE ANY ROWS SELECTED ?
		set refRows to a reference to selected rows of oDoc
		if (count of refRows) < 1 then return
		
		-- IS THE FIRST SELECTED ROW NUMBERED ?
		set blnNumbered to false
		set {lstAttribs, lstValue, lstDefault} to {name, value, default value} of ¬
			(attributes of (style of (first item of refRows)) where name begins with "heading")
		set lngAttribs to length of lstValue
		repeat with i from lngAttribs to 1 by -1
			if item i of lstValue ≠ item i of lstDefault then
				set blnNumbered to true
				exit repeat
			end if
		end repeat
		
		-- TOGGLE VALUES ACCORDINGLY
		if blnNumbered then
			-- STORE CURRENT PATTERN OF NUMBERING IN A PERSISTENT VARIABLE
			set plstNumbered to lstValue
			set lstSettings to lstDefault
		else
			set lstSettings to plstNumbered
		end if
		
		-- APPLY THE TOGGLED SETTINGS TO ALL SELECTED ROWS
		repeat with i from 1 to lngAttribs
			set value of attribute (item i of lstAttribs) of style of refRows to item i of lstSettings
		end repeat
	end tell
end run
--

Last edited by RobTrew; 2011-09-20 at 06:47 AM.. Reason: Light edit to code - slightly simplified
 
Thank you! You guys here are quick!
 
Thanks, Rob - you continue to be awesome. :-)
 
A variant which will hide and restore more complex (mixed) numbering schemes.

Applies to selected rows, or (if none selected) the whole document.

(A little slower - it deals with each row individually).

Code:
-- HIDE AND REVEAL MORE COMPLEX (MIXED) NUMBERING SCHEMES

-- TOGGLE SELECTED (OR ALL) ROWS BETWEEN 
-- NUMBERED AND UN-NUMBERED STATE


-- DEFAULT NUMBERING SETTINGS (ADJUST AS REQUIRED)
property pvarLowerCase : true
property pvarPrefix : ""
property pvarSuffix : "."
property pvarType : "Legal" -- Legal | Letters | Numeric | Roman

property plstOptions : {"Legal", "Letters", "Numeric", "Roman"}
property plstNumbered : {pvarLowerCase, pvarPrefix, pvarSuffix, pvarType}
property pstrType : "heading-type(com.omnigroup.OmniOutliner)"
property pstrHeading : "heading"

on run
	set {dlm, my text item delimiters} to {my text item delimiters, ","}
	tell application id "OOut"
		-- IS THERE A FRONT DOCUMENT ?
		set lstDocs to documents
		if (count of lstDocs) < 1 then return
		set oDoc to first item of lstDocs
		
		-- ARE ANY ROWS SELECTED ?
		set refRows to a reference to selected rows of oDoc
		-- IF NOT, TOGGLE ALL ROWS
		if (count of refRows) < 1 then set refRows to a reference to rows of oDoc
		
		-- IS THE FIRST SELECTED ROW NUMBERED ?
		set oStyle to style of first item of refRows
		set blnNumbered to (value of attribute pstrType of oStyle) is in plstOptions
		
		-- iterate thru the selected lines
		set lstAttribs to name of attributes of oStyle where name begins with pstrHeading
		if blnNumbered then
			-- encode the settings and store in type variable
			-- then clear any prefix, suffix
			repeat with oRow in refRows
				tell style of oRow
					set value of attribute pstrType to (value of attributes where name begins with pstrHeading) as Unicode text
					repeat with i from 2 to 3
						set value of attribute (item i of lstAttribs) to ""
					end repeat
				end tell
			end repeat
		else
			
			repeat with oRow in refRows
				tell style of oRow
					set strValue to value of attribute pstrType
					if strValue ≠ "None" then
						set lstSettings to text items -4 thru -1 of strValue
					else
						set lstSettings to plstNumbered
					end if
					repeat with i from 1 to 4
						set value of attribute (item i of lstAttribs) to item i of lstSettings
					end repeat
				end tell
			end repeat
		end if
	end tell
	set my text item delimiters to dlm
end run
 
Rob,

I finally got to try both of your scripts this morning -- please forgive the delay... it's been a *very* crazy semester. But I have a full weekend of grading ahead of me. So...

This morning -- bot of your scripts work *fabulously*!!! This will make my grading much easier, as I enumerate my notes to students. I truly appreciate you taking the time to respond to my post.

I have a quick follow-up (for anyone really), relating to all script use an OmniOutliner. Right now, I've saved your scripts to ~/Library/Scripts/ and have enabled the Applescript pull down menu to access them.

I have tried to bind them to keyboard shortcuts, by going to System Preferences / Keyboard / Keyboard Shortcuts / Application Shortcuts, where I used the following settings...

For the Application --> OmniOutliner Professional

To the Menu Command --> OO_Num_on-off (The script name, as appears in the Apple Script pull down menu)

With the Shortcut --> Command 7


I restarted OO, and the shortcut does not work. Is it because the script isn't a Menu Command? Is there a way of assigning a shortcut to an Applescript on an application by application basis?

Thank you again!!!

-Tim
 
First, you probably want to put the scripts in the OmniOutliner script directory. Easiest way to do this is to go into OmniOutliner, and from the Scripts menu, select Open Scripts Folder -> Open OmniOutliner Scripts Folder (name will be slightly different if you have the Pro version, but I think you can figure it out!). That will open the folder in the Finder, creating it if it doesn't already exist, and then you can move your scripts in there. That way they will only appear in the Scripts menu when you are actually in OmniOutliner as the frontmost application.

For binding scripts to keyboard shortcuts, I like FastScripts from Red Sweater Software. It's free if you use fewer than 10 shortcuts, $14.95 otherwise.
 
This forum is awesome.

Thank you whpalmer. I've got my scripts now in an OO Pro subfolder, and have them successfully bound to a Keyboard shortcut with FastScripts.

Everyone here rocks. Thanks!

-Tim
 
 


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes


Similar Threads
Thread Thread Starter Forum Replies Last Post
actions turning to links dchannell1 OmniFocus 1 for Mac 2 2013-01-15 03:44 PM
Continuing numbering using legal outline numbering ianpiper OmniOutliner 3 for Mac 3 2011-08-17 12:33 PM
Turning off Push Notification got.mac OmniFocus for iPhone 2 2010-07-29 08:07 AM
Need Help: Turning off reshape BuckarooMan OmniGraffle General 2 2009-09-02 11:45 AM
Hierarchical numbering vs flat numbering and sorting womich OmniOutliner 3 for Mac 1 2007-09-06 02:28 PM


All times are GMT -8. The time now is 01:33 AM.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc.