<?xml version="1.0" encoding="utf-8"?>
   <feed version="0.3" xmlns="http://purl.org/atom/ns#">

     <title>Flying Meat's Wiki.</title>
     <link href="http://www.flyingmeat.com/fs/" rel="alternate" title="Flying Meat's Wiki." type="text/html" />
     <modified>2005-06-24T14:55:33Z</modified>
     <author>
       <name>Flying Meat Inc. and Friends of Flying Meat</name>
     </author>
     <id>urn:uuid:547f7640-0089-44d0-a983-c2933b9c30df</id>
  <entry>
       <title>VoodooPad: Start Page</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/353ec59a-c72a-01d9-1c37-c0cbe4c4b920" rel="alternate" title="VoodooPad: Start Page" type="text/html" />
       <id>urn:uuid:353ec59a-c72a-01d9-1c37-c0cbe4c4b920:83</id>
       <modified>2007-12-16T17:22:51Z</modified>
       <issued>2005-05-17T16:20:08Z</issued>
       <summary type="text/html"><html>h2. VoodooPad 3.0<br/>
<br/>
* &amp;lt;b&amp;gt;VoodooPad Tutorial&amp;lt;/b&amp;gt;: A gentle ~introduction to what VoodooPad is all about.<br/>
<br/>
* &amp;lt;b&amp;gt;Glossary&amp;lt;/b&amp;gt;: Terms you might want to learn to get around in VoodooPad.<br/>
<br/>
* &amp;lt;b&amp;gt;FAQ&amp;lt;/b&amp;gt; (Frequently Asked Questions)<br/>
<br/>
* &amp;lt;b&amp;gt;Script Plugins&amp;lt;/b&amp;gt;: Learn how to extend VoodooPad with simple scripts.<br/>
<br/>
* &amp;lt;b&amp;gt;Lua Plugin Snippets&amp;lt;/b&amp;gt;: Lots of examples of useful scripts.<br/>
<br/>
* &amp;lt;b&amp;gt;AppleScript&amp;lt;/b&amp;gt;: Learn how to automate VoodooPad with Apple's scripting language.<br/>
<br/>
* &amp;lt;b&amp;gt;Aliases&amp;lt;/b&amp;gt;: Make words or phrases link to another page.<br/>
<br/>
* &amp;lt;b&amp;gt;Encryption in VoodooPad&amp;lt;/b&amp;gt;: Hide your data from prying eyes.<br/>
<br/>
* &amp;lt;b&amp;gt;How to register VoodooPad&amp;lt;/b&amp;gt;: You bought it- now how do you stop the nagging?<br/>
<br/>
* &amp;lt;b&amp;gt;Page Templates&amp;lt;/b&amp;gt;: Customize the look of new pages.<br/>
<br/>
* &amp;lt;b&amp;gt;Web Export&amp;lt;/b&amp;gt;: Flexible exporting of your documents as HTML<br/>
<br/>
* &amp;lt;b&amp;gt;Categories&amp;lt;/b&amp;gt;: Organize pages in VoodooPad document according to topics<br/>
<br/>
* &amp;lt;b&amp;gt;Tips&amp;lt;/b&amp;gt;: Random bits of info.<br/>
<br/>
* &amp;lt;b&amp;gt;Plugins&amp;lt;/b&amp;gt;: Add functionality to VoodooPad via a downloadable plugin.<br/>
<br/>
* &amp;lt;b&amp;gt;Linking, Pasting, and Embedding Files&amp;lt;/b&amp;gt;: How does some stuff (like images) get in there anyway?<br/>
<br/>
* &amp;lt;b&amp;gt;Hidden Preferences&amp;lt;/b&amp;gt;: Change certain behaviors of VoodooPad<br/>
<br/>
* &amp;lt;b&amp;gt;Data Sent to Flying Meat&amp;lt;/b&amp;gt;: Find out what bits of information is sent to the mothership.<br/>
<br/>
* &amp;lt;b&amp;gt;Old Versions&amp;lt;/b&amp;gt;: Need to grab a previous version of VoodooPad?<br/>
<br/>
h2. VoodooPad Pro<br/>
<br/>
* &amp;lt;b&amp;gt;Triggers&amp;lt;/b&amp;gt;:  Script VoodooPad during specific events.<br/>
<br/>
* &amp;lt;b&amp;gt;Web Server&amp;lt;/b&amp;gt;:  Share pages of your document to friends and co-workers.<br/>
<br/>
* &amp;lt;b&amp;gt;Page Meta&amp;lt;/b&amp;gt;: Customizable attributes for pages.<br/>
<br/>
h3. Online<br/>
<br/>
* "VoodooPad's mailing list / Yahoo! group":http://groups.yahoo.com/group/voodoopad/<br/>
Talk with and receive information from VoodooPad users around the world.<br/>
<br/>
* "The official website":http://flyingmeat.com/voodoopad/<br/>
<br/>
<br/>
<br/>
h3. Version information:<br/>
<br/>
* New in 3.5<br/>
* New in 3.2<br/>
* New in 3.1<br/>
* New in 3.0<br/>
* New in 2.5<br/>
* New in 2.1<br/>
* New in 2.0<br/>
<br/>
<br/>
* "List of all pages":/fs/flystashweb.cgi?allPages=1&amp;amp;space=353ec59a-c72a-01d9-0eb2-c0cbe4c48523</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: New in 3.5</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/2dc35f78-ac3e-01dc-01d4-c0cbe4c4bd91" rel="alternate" title="VoodooPad: New in 3.5" type="text/html" />
       <id>urn:uuid:2dc35f78-ac3e-01dc-01d4-c0cbe4c4bd91:3</id>
       <modified>2007-12-16T17:22:39Z</modified>
       <issued>2007-12-16T17:19:57Z</issued>
       <summary type="text/html"><html>h2. VoodooPad 3.5:<br/>
<br/>
h3. New Features:<br/>
<br/>
* Double clicking an image open it up in a suitable external editor (such as Acorn or Preview or Photoshop or whatever).  Saving the image will then update the original image located in your VoodooPad Page.  You've seen Acorn, right? http://flyingmeat.com/acorn/<br/>
* You can now edit pages and sort the results in the search window (woo!).<br/>
* Option-clicking on a tab close button will close all the open tabs except the one clicked on.<br/>
* The "default page text" in the preferences now accepts rich text, so you can embolden certain phrases or whatever.  Go crazy.<br/>
* Pages served up via VoodooPad Pro's built in webserver look a whole lot better, especially on the iPhone.<br/>
* Speaking of the webserver- you now have the ability to search through all the pages when looking at a document in your browser (VoodooPad Pro only).<br/>
* The zoom factor of the page is remembered in the document workspace, so it'll be remembered between launches.<br/>
* When splitting a document, links to pages in the original document are retained for the pages being copied out.<br/>
* Added a page index to the default Web Export templates.  Now you have a handy list of all the pages in your Web Export.<br/>
* New AppleScript: tell window 1 of application "VoodooPad" to insert text "hello world!"<br/>
* New AppleScript command to add/embed a file to the current document.<br/>
* Added an option to VoodooPad AppleScript export command- "with synchronous", which makes the export happen in the foreground.<br/>
<br/>
h3. Changes:<br/>
<br/>
* Reworked AppleScript implementation, which may require changes to your previous AppleScripts.<br/>
* No longer showing the license when starting up a new version.  Please don't sue me.<br/>
* Cleaned up a preferences dialog box which could be confusing.<br/>
* Exporting to the iPod Notes folder is now done on a background thread, which makes things more responsive if you have a ton of pages.<br/>
* Changed the shortcut for deleting a page from Command-D to Command-Shift-D, making in less likely to hit by accident.<br/>
* Double clicking an image with the option key down will now prompt you to save the image.<br/>
<br/>
h3. Bug Fixes:<br/>
<br/>
* Fixed a problem where cmd-w wouldn't always close a window.<br/>
* VoodooPad Lite no longer tries to install plugins, which it can't use.<br/>
* Fixed a bug where the wiki engine would not markup a link directly following an email in the format 'first.last@foo.com'.<br/>
* You can now copy and paste linkback data across pages.<br/>
* Fixed some issues where list bullets would seemingly pop out of nowhere.<br/>
* Fixed a bug where VP would crash with certain embedded webarchives.<br/>
<br/>
h3. Other:<br/>
<br/>
* New hidden pref for writing out images to the iPod Notes folder (Only works on 5th gen iPods):<br/>
	defaults write com.flyingmeat.VoodooPad_Pro writeIpodImages 1<br/>
* When exporting to the iPod notes folder, pages that have been deleted from the document but were still around from the last export are now cleaned up<br/>
* New hidden pref: defaults write com.flyingmeat.VoodooPad_Pro alwaysShowRuler 1<br/>
<br/>
</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Simple AppleScript Examples</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/8596b25e-3567-01da-0fb1-c0cbe4c4b51f" rel="alternate" title="VoodooPad: Simple AppleScript Examples" type="text/html" />
       <id>urn:uuid:8596b25e-3567-01da-0fb1-c0cbe4c4b51f:35</id>
       <modified>2007-12-16T16:02:51Z</modified>
       <issued>2005-10-04T23:16:10Z</issued>
       <summary type="text/html"><html>h2. Here are some snippets of AppleScript that you might find handy.<br/>
<br/>
Note: These are examples that work in VoodooPad 3.5.  If you have a previous version of VoodooPad, check the help files that came with that version.  For folks with VoodooPad Pro, just substitute "VoodooPad Pro" where you see "VoodooPad below.<br/>
<br/>
*Prepend to the top of a page:*<br/>
<br/>
&amp;lt;carea class="textareaCodeMini"&amp;gt;tell application "VoodooPad"<br/>
	tell page "index" of document 1 to prepend text "this goes at the top" &amp;amp; return<br/>
end tell&amp;lt;/carea&amp;gt;<br/>
<br/>
*Append to the bottom of a page:*<br/>
<br/>
&amp;lt;carea class="textareaCodeMini"&amp;gt;tell application "VoodooPad Pro"<br/>
	tell page "junk" of document 1 to append text "this goes at the bottom" &amp;amp; return<br/>
end tell&amp;lt;/carea&amp;gt;<br/>
<br/>
*Create a new page:*<br/>
<br/>
&amp;lt;carea class="textareaCodeMini"&amp;gt;tell application "VoodooPad"<br/>
	tell document 1 to create new page with name "new page" with content "This is a new page."<br/>
end tell&amp;lt;/carea&amp;gt;<br/>
<br/>
*Export to iPod:*<br/>
<br/>
&amp;lt;carea class="textareaCodeMedium"&amp;gt;tell application "VoodooPad"  <br/>
  -- this is the path to your document.<br/>
  open "srv:Users:gus:Desktop:astest.vdoc" as alias<br/>
  tell front document<br/>
    export to ipod<br/>
  end tell<br/>
end tell&amp;lt;/carea&amp;gt;<br/>
<br/>
*Getting text from a specific page*:<br/>
<br/>
&amp;lt;carea class="textareaCodeMini"&amp;gt;tell application "VoodooPad"<br/>
	set theString to (text of page "index" of document 1) as string<br/>
end tell&amp;lt;/carea&amp;gt;<br/>
<br/>
*An example that loops through all the pages and displays it's name and contents*<br/>
<br/>
&amp;lt;carea class="textareaCode"&amp;gt;tell application "VoodooPad"<br/>
    tell document 1<br/>
        repeat with i from 1 to number of items in pages<br/>
            set s to text of page i<br/>
            set n to name of page i<br/>
            display dialog n &amp;amp; return &amp;amp; s<br/>
        end repeat<br/>
    end tell<br/>
end tell&amp;lt;/carea&amp;gt;<br/>
<br/>
*An example that loops through all the pages, and prepends some text to every page*<br/>
<br/>
&amp;lt;carea class="textareaCodeSmall"&amp;gt;tell application "VoodooPad"<br/>
	repeat with i from 1 to number of items in pages of document 1<br/>
		set n to name of page i of document 1<br/>
		tell page n of document 1 to prepend text "this goes at the top" &amp;amp; return<br/>
	end repeat<br/>
end tell&amp;lt;/carea&amp;gt;<br/>
<br/>
*Sort and pull out pages by create page:*<br/>
<br/>
&amp;lt;carea class="textareaCode"&amp;gt;tell application "VoodooPad Pro"<br/>
	set theDoc to first document<br/>
	tell theDoc<br/>
		<br/>
		set myList to ordered names sorted by create date<br/>
		<br/>
		repeat with idx from 1 to number of items in myList<br/>
			set pageName to item idx of myList<br/>
			set s to text of (page pageName of theDoc)<br/>
			-- now do something exciting with s<br/>
		end repeat<br/>
		<br/>
		-- we could have also done:<br/>
		-- set myList to ordered names sorted by modified date<br/>
		-- set myList to ordered names -- default, sorted by key<br/>
		<br/>
	end tell<br/>
end tell&amp;lt;/carea&amp;gt;<br/>
<br/>
*Call into VoodooPad's scripting language "Lua" from AppleScript* (it's kind of crazy)<br/>
<br/>
&amp;lt;carea class="textareaCode"&amp;gt;tell application "VoodooPad Pro"<br/>
	set s to "print 'Hello World!'; table.foreach(applescriptProperties, print); applescriptProperties.output = 'Hello from the return value!'"<br/>
	tell window 1<br/>
		set x to use plugin named "Lua Script" with properties {source:s, aprop:"This is a property passed in"}<br/>
		display dialog x<br/>
	end tell<br/>
	<br/>
	set s to "applescriptProperties.output = windowController:textView():string()"<br/>
	tell window 1<br/>
		set x to use plugin named "Lua Script" with properties {source:s}<br/>
		display dialog (x as string)<br/>
	end tell<br/>
end tell&amp;lt;/carea&amp;gt;<br/>
<br/>
<br/>
*Fun with Meta Values*<br/>
<br/>
&amp;lt;carea class="textareaCode300"&amp;gt;tell application "VoodooPad Pro"<br/>
	set currentPage to current page name<br/>
	<br/>
	tell page currentPage of document 1 to add meta record with value {|the key|:"the value"}<br/>
	<br/>
	activate<br/>
	display dialog "did it add?"<br/>
	<br/>
	set thePageMeta to meta record of page currentPage of document 1<br/>
	<br/>
	set s to |the key| of thePageMeta<br/>
	<br/>
	display dialog s<br/>
	<br/>
	tell page currentPage of document 1 to remove meta record with key "the key"<br/>
	<br/>
	delay 1<br/>
	<br/>
	display dialog "did it go away?"<br/>
end tell&amp;lt;/carea&amp;gt;<br/>
<br/>
<br/>
*Fun with Categories*<br/>
<br/>
&amp;lt;carea class="textareaCode300"&amp;gt;tell application "VoodooPad Pro"<br/>
	set currentPage to current page name<br/>
	activate<br/>
	tell page currentPage of document 1 to add category named "foo"<br/>
	delay 1<br/>
	display dialog "did it add?"<br/>
	tell page currentPage of document 1 to remove category named "foo"<br/>
	delay 1<br/>
	display dialog "did it remove?"<br/>
end tell<br/>
tell application "VoodooPad Pro"<br/>
	activate<br/>
	tell document 1 to add category named "Foo"<br/>
	delay 1<br/>
	display dialog "did it add?"	<br/>
	tell document 1 to remove category named "Foo"<br/>
	delay 1<br/>
	display dialog "did it remove?"	<br/>
end tell&amp;lt;/carea&amp;gt;<br/>
<br/>
<br/>
<br/>
</html></summary>
     </entry>
  <entry>
       <title>Flying Meat: Start Page</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/c2cde496-c729-01d9-0405-c0cbe4c4a89b" rel="alternate" title="Flying Meat: Start Page" type="text/html" />
       <id>urn:uuid:c2cde496-c729-01d9-0405-c0cbe4c4a89b:41</id>
       <modified>2007-09-13T14:39:38Z</modified>
       <issued>2005-05-17T16:16:56Z</issued>
       <summary type="text/html"><html>h2. Welcome to Flying Meat's online documentation.<br/>
<br/>
There are a couple of spaces on this here that you might be interested in:<br/>
<br/>
* "Acorn":http://www.flyingmeat.com/acorn/docs/<br/>
A simple and easy to bitmap image editor<br/>
<br/>
* "VoodooPad":$scriptName$/space-353ec59a-c72a-01d9-0eb2-c0cbe4c48523<br/>
The award winning desktop wiki for Mac OS X.  You put your brain in it.<br/>
<br/>
<br/>
* "FlySketch":$scriptName$/space-442576da-c72a-01d9-1c64-c0cbe4c4e230<br/>
Draw, highlight, everywhere.<br/>
<br/>
* "FlyGesture":$scriptName$/space-4982c31c-c72a-01d9-1928-c0cbe4c4ee67<br/>
Move a little, do a lot.</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Encryption</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/f5eafb3e-1fda-01da-16f7-c0cbe4c4fd6d" rel="alternate" title="VoodooPad: Encryption" type="text/html" />
       <id>urn:uuid:f5eafb3e-1fda-01da-16f7-c0cbe4c4fd6d:8</id>
       <modified>2007-08-24T11:57:23Z</modified>
       <issued>2005-09-07T13:07:05Z</issued>
       <summary type="text/html"><html>h1.  Encryption in VoodooPad<br/>
<br/>
There are two ways to encrypt your data in VoodooPad.  The first one (available in VoodooPad and VoodooPad Pro) is the ability to encrypt a single page.  This is known as "Page Level Encryption".  The second way (available in Voodoopad Pro only) is known as "Document Level Encryption".  We'll go over Page Level Encryption first.<br/>
<br/>
h2. Page Level Encryption<br/>
<br/>
VoodooPad supports encrypting pages one at time, so you can have a mix of encrypted and unencrypted pages in a single document.<br/>
<br/>
When encrypting a page, you are prompted to enter your password twice (to make sure your typing matches your intentions), and an option to keep the password in the Keychain.<br/>
<br/>
p=. !$imagesDir$/voodoopad/encryptsheet.png! &amp;lt;br/&amp;gt;(encrypting a page)<br/>
<br/>
When you place your password on the Keychain, you won't have to remember it when decrypting or encrypting your page.  If you change your mind later and you would like to have your password removed from the Keychain, hold down the option key when decrypting the page and the password will be removed from the Keychain.  Holding down the option key when encrypting will bring up the sheet regardless if you have the password on the Keychain or not.<br/>
<br/>
p=. !$imagesDir$/voodoopad/decryptsheet.png! &amp;lt;br/&amp;gt;(decrypting a page) <br/>
<br/>
<br/>
h2. Document Level Encryption<br/>
<br/>
VoodooPad Pro has the ability to make your whole document encrypted.  With this in effect, you enter your password once when opening up your document, and you gain access to all your pages inside.<br/>
<br/>
To remove a password from an encrypted document choose "Set Document Password..." from the Edit menu, and leave the password fields empty.  To add a password to a plain document, choose "Change Document Password..." from the Edit menu and enter your password in the fields.</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Editing Text</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/c14ec986-ccba-01da-15c6-c0cbe4c4b595" rel="alternate" title="VoodooPad: Editing Text" type="text/html" />
       <id>urn:uuid:c14ec986-ccba-01da-15c6-c0cbe4c4b595:6</id>
       <modified>2007-07-17T14:12:32Z</modified>
       <issued>2006-04-15T13:02:24Z</issued>
       <summary type="text/html"><html>h2. Editing Text<br/>
<br/>
As we mentioned earlier, text editing in VoodooPad is very similar to editing the text in a Rich Text document using TextEdit (and most other rich text editors on the Mac). However, because the rich text features of the Mac's text system are more similar to a word processor than to a simple text editor, we'll review a few of these features to be sure you're aware of their availability in VoodooPad.<br/>
<br/>
On the other hand, because most of this functionality is so basic to Mac OS X, we'll make use of the hyperlinking capability of VoodooPad to reference much of this topic so you can move through it quickly if it's already familiar. If you see an editing capability referenced followed by the parenthesized note: "see edit details", simply click on the edit details link. The resulting page will have a link back to this one.<br/>
<br/>
Open a new VoodooPad document by choosing File-&amp;gt;New Document, or by pressing Shft-Cmd-N on the keyboard. When the the new window opens you should see the same document, with the heading: "VoodooPad,  You put your brain in it." that you saw the last time we created a new VoodooPad document.<br/>
<br/>
h3. Letter, Word and Paragraph Selection<br/>
<br/>
We can select a letter, word or paragraph by clicking and dragging across them. Dragging across letters contains no surprises (see edit details). Doing so allows us to demonstrate text resizing on individual letters in a word (see edit details).<br/>
<br/>
Notice the ease with which you can precisely select words by double clicking on the first and dragging across more (see edit details). We can also add to existing text properties in a selection (see edit details).<br/>
<br/>
Finally, a paragraph is most easily selected by triple clicking and multiple paragraphs are easily selected by triple clicking and dragging (see edit details).<br/>
<br/>
h3. Multiple Undo<br/>
<br/>
As with most things Macintosh, we can undo what we've done by choosing Edit-&amp;gt;Undo or pressing the Cmd-z keys. In fact, if we press Cmd-z often enough, or simply hold it down for a few seconds, we can undo all the changes we've just made on this page.<br/>
<br/>
h3. Font Properties<br/>
<br/>
Triple click to select the first paragraph of the page. Now choose Format-&amp;gt;Font-&amp;gt;Strike Out. We can undo the strike outs by pressing Cmd-z or by choosing Format-&amp;gt;Font-&amp;gt;Strike Out again while the strike out text is still selected.<br/>
<br/>
Click on the Format menu item and drag to the Font item to see its submenu. Notice the things you can do directly from this menu:<br/>
<br/>
• Bold, Italic, Strike Out, Underline to change font properties<br/>
• Bigger, Smaller to incrementally increase or decrease the selected text size<br/>
• Kern to spread letters apart or compress them horizontally<br/>
• Ligature to add ligatures used in your font<br/>
• Baseline to raise or lower the baseline of selected text<br/>
<br/>
...and so forth.<br/>
<br/>
Feel free to play with these properties if you're not familiar with them. In particular, with some text selected, choose Underline. Notice that rather than underlining the text, VoodooPad instead displays this panel:<br/>
<br/>
p=. !/fs/images/voodoopad/75dd7441-ab3b-47b0-b296-ae12f073fc00.png!<br/>
<br/>
The reason for this preference is that VoodooPad uses both underlining and text color to indicate links. It can be difficult to determine which underlined words really represent links if non-link words and phrases are also underlined and/or colored. Use the application's Preferences panel to change from the default with care.<br/>
<br/>
With the first paragraph still selected, choose Format-&amp;gt;Font-&amp;gt;Show Fonts to bring up the Font pallette. This allows us to choose a new font for the selected text, change it's size and many other of it's properties.<br/>
<br/>
To create the perception of lifting some text off the page, for instance, try clicking on the rectangle centered directly under the "Font" title of the Font pallette. To confirm that you've selected the correct rectangle, just hold the mouse pointer on the rectangle for a few moments until a tool tip pops up indicating that this is the Text Shadow rectangle. If it says something else, try again.<br/>
<br/>
With the first paragraph selected when this rectangle is activated, the text in the paragraph will display shadows for each character. Directly to the right of the rectangle are three sliders, slide the first about 2/3 of the way towards the right, slide the second about 1/8 from the left and slide the third about 3/4 of the way toward the right.<br/>
<br/>
As you do this, notice how the text seems to lift off the page. You can also click and drag the  small indentation in the circle to the right of the third slider. As you do this, you'll see an apparent shift of the virtual light illuminating the text to cast the shadows at a changing angle.<br/>
<br/>
h3. Font Colors<br/>
<br/>
You can also choose Format-&amp;gt;Font-&amp;gt;Show Colors to display the color pallette. However, like underlining, by default you will not be able to change text colors. Choose VoodooPad-&amp;gt;Preferences... and select the Appearance tab to change this default behavior.<br/>
<br/>
Text Alignment and the Ruler<br/>
<br/>
In our overview, we touched on the text ruler. Triple click on the third paragraph to select the entire paragraph and bring the ruler up again by choosing Format-&amp;gt;Text-&amp;gt;Show Ruler.<br/>
<br/>
The text ruler is  primarily used for setting page margins, paragraph indentation, tabs and alignment or justification. It also has pop-down menus for selecting line spacing, bullet point styles and an alternate means of selecting font properties.<br/>
<br/>
With the third paragraph still selected, click on the third tab in the ruler tab bar that looks like this:<br/>
<br/>
p=. !/fs/images/voodoopad/c409211f-aa65-456e-a6de-1d676134f1aa.png!<br/>
<br/>
This should justify (or straighten the edges of) the paragraph on both sides. Now select the document title, "You put your brain in it." and click the far left of the four tabs to left justify the title.<br/>
<br/>
h3. Setting Tabs<br/>
<br/>
As a final demonstration of VoodooPad's standard text editing features, let's set some tab stops. First be sure that the VoodooPad window is wide enough by looking for the red Delete icon in the far right side of window's tool bar. If the far right icon is not the red Delete icon, then drag the lower right corner of the window to the right until red Delete icon appears.<br/>
<br/>
Next scroll to the bottom of the page and click to place the text insertion bar at the very end of the text. Press the Return key a couple times to make some room. Then type in the following text. Note that as you do so, space each word or number from the others by a single tab:<br/>
<br/>
!/fs/images/voodoopad/2d4b8519-da93-4076-ba14-52d4e62c6f29.png!<br/>
<br/>
Be sure that you've entered no spaces but only a single tab between each word or number. Then select all of the text in those five lines. With all five lines selected, go to the text ruler at the top of the window and drag all the tab stops that are to the left of the 5" mark out of the ruler. Don't worry if words or numbers in the five lines we've selected seem to go a bit berserk. We'll bring order to them shortly.<br/>
<br/>
Look for the tab stop well at the far right of the ruler which looks like this:<br/>
<br/>
p=. !/fs/images/voodoopad/57efe984-c71f-4add-9969-1de57423fbe3.png!<br/>
<br/>
Put your mouse pointer on each of the icons in the tab stop well for a couple seconds until a tool tips label appears. You should see that they are called from left to right respectively, the "Left tab stop", the "Center tab stop", the "Right tab stop" and the "Decimal tab stop".<br/>
<br/>
Now drag a left tab stop from the tab stop well to the ruler and drop it at the top of the 3/4" mark. Next drag a Center tab stop from the well and drop it on the 2 1/4" mark. Next drag a Decimal tab stop from the well and drop it on the 3 1/4" mark. Finally, drag a Decimal tab stop from the well and drop it on the 4 1/4" mark.<br/>
<br/>
If you've done this correctly, your five lines should now look like this:<br/>
<br/>
!/fs/images/voodoopad/bd09eaad-e1d3-448d-a6ed-570883e3497b.png!<br/>
<br/>
Notice that the words in the Item column are left justified in the column. The numbers in the Quantity column are centered and the money amounts in the Price and Amount columns are aligned on their decimal points. Also notice a couple weaknesses in our formatting: the numbers in the number column should probably be centered in the column and the headers for the Price and Amount columns are right justified on the Decimal tab stops for each of those columns.<br/>
<br/>
We could clean this up a bit by using different tab stops for the heading line then we used in the item and total lines, and by centering the numbers in the Number column, but we've demonstrated how the tab stops can be used and that was our objective in this tutorial.<br/>
<br/>
If the resulting columnar list makes you uncomfortable, feel free to clean it up by inserting a tab at the left end of each of the last four lines, selecting only those four lines and adding a Center tab stop at the 1/4" mark. You can also select only the header line and replace the two Decimal tab stops there with two left tab stops placed at the 3" and the 4" marks. If you decide to do that, your result should look as follows:<br/>
<br/>
!/fs/images/voodoopad/1dbfdbf1-3fa1-44b1-8170-8c9c72dc2263.png!<br/>
<br/>
But wait a minute, you say...  the price for VoodooPad and FlySketch are $39.95, not $19.95! However, we reply, if you buy them in quantities of two or more, they're only $19.95 each.<br/>
<br/>
Advanced Text Editing<br/>
</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Importing and Exporting</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/53020980-ccaa-01da-067c-c0cbe4c4b7b0" rel="alternate" title="VoodooPad: Importing and Exporting" type="text/html" />
       <id>urn:uuid:53020980-ccaa-01da-067c-c0cbe4c4b7b0:10</id>
       <modified>2007-07-17T14:10:37Z</modified>
       <issued>2006-04-15T11:04:46Z</issued>
       <summary type="text/html"><html>h2. Importing and Exporting<br/>
<br/>
How does one publish or distribute a VoodooPad document?<br/>
<br/>
Beyond just emailing the VoodooPad document itself (which only works if the recipient also has the application), VoodooPad gives us other ways to export our work for distribution:<br/>
<br/>
* as a set of RTFD files (Rich Text Format with graphics)<br/>
* as a set of plain text files<br/>
* as Microsoft Word documents<br/>
* as an XML file<br/>
* to your iPod<br/>
* to HTML pages that retain the same links<br/>
<br/>
Let's try these one at a time.<br/>
<br/>
h3. Exporting as RTFD<br/>
<br/>
First, create a folder on your desktop or in your home folder in which to do some playing. For purposes of our discussion, we'll call it VDTemp but  you can call it any other name you can remember. <br/>
<br/>
If you've closed the LinksAndPages.vpdoc VoodooPad document, let's open it again. When it's open, choose File-&amp;gt;Export-&amp;gt;Export as RTFD files...  Navigate the resulting File Save sheet to your new folder, VDTemp, then click the Export button.<br/>
<br/>
Now open a Finder window into the VDTemp folder. You should see four documents in the folder:<br/>
<br/>
* HyperLinks.rtfd<br/>
* Index.rtfd<br/>
* manual creation of links.rtfd<br/>
* VoodooPad.rtfd<br/>
<br/>
If you double click on the Index.rtfd document, it should open in TextEdit as a Rich Text document containing the content of the page named VoodooPad from our LinksAndPages.vpdoc VoodooPad document.<br/>
<br/>
Notice that all of the links that were present on that page in LinksAndPage.vpdoc are present here, but though they look like links, they're not. That's because TextEdit doesn't support links between TextEdit documents.<br/>
<br/>
Instead of creating a single document with an arbitrary page order, VoodooPad creates a set of documents, one for each page, in a folder. You can reorder them and print them in any order you desire, rather than having an arbitrary order forced on you.<br/>
<br/>
When you've examined those pages sufficiently, throw them in the trash (or drag them to some other folder) to clear the VDTemp folder for our next experiment.<br/>
<br/>
h3. Exporting as Plain Text<br/>
<br/>
Next, let's try exporting as plain text. Once again, click on the LinksAndPages.vpdoc to make it active. This time choose File-&amp;gt;Export-&amp;gt;Export as Text files... Once again navigate the resulting Save File sheet to our VDTemp folder and click the Export button.<br/>
<br/>
Go back to the Finder window (or open a new one) in the VDTemp folder. Notice now that we have four files named the same as before, except this time they have the .txt suffix. Let's double click on Index.txt to open it again in TextEdit and examine its contents.<br/>
<br/>
This time we see the same content that was in our Index page, but all in the same font with no font styles and no apparent links, not even simulated links. This should not be a surprise, since this was created as a plain text document. So if your only interest is in the content of your pages without regard to any formatting, this would be the appropriate export method.<br/>
<br/>
h3. Exporting as XML<br/>
<br/>
Once again, clear the VDTemp folder for our next experiment. This time, choose File-&amp;gt;Export-&amp;gt;Export as XML..., navigate the Save File sheet to the VDTemp folder and click Save. When we go back to our Finder window in VDTemp, we have a small surprise. Instead of four files, one for each page in the original document, we only have a single file named after the VoodooPad document and suffixed with ".xml".<br/>
<br/>
Double clicking on this file could lead to various results depending on what applications you've installed that can open XML files. To make your results predictable so we can examine the file together, first open the TextEdit application (if it's not already open) and from its File menu, choose File-&amp;gt;Open. Navigate the resulting File Open dialog box to our VDTemp folder and open the LinksAndPages.xml document.<br/>
<br/>
It's beyond the scope of this tutorial to delve very deeply into what we're seeing here. It's legitimate XML, so if you're familiar with the XML format, the content of this open file might make some sense to you. For our purposes, it's sufficient to expose the file and add that this method of export works for at least two purposes:<br/>
<br/>
* to take a backup of our LinksAndPages.vpdoc document from which a new version, identical to the one we saved here, can be reconstituted.<br/>
* to provide a human and machine readable back up file that can be meaningfully examined by humans and can be parsed by other applications for reasons we haven't even considered yet.<br/>
<br/>
If you are a developer and have worked with XML formatted files, you'll recognize from this latter point that XML provides a medium for generated documents that may be directly imported into VoodooPad.<br/>
<br/>
h3. Exporting to Your iPod<br/>
<br/>
If you don't have an iPod, you can skip this section, but if you have one, then plug it in.<br/>
Once your iPod shows up in the Finder, choose File-&amp;gt;Export-&amp;gt;Export to iPod.  Once this command has completed, eject your iPod and navigate using the scroll wheel to Extras-&amp;gt;Notes.  Next you will see the name of your document listed, and when clicked on using the scroll wheel, you'll see your index page show up on the pod, with links!  To move around through your document on the iPod, use the scroll wheel to move up and down.<br/>
<br/>
You will notice that sometimes a link has a dark underline, while all the other ones have a light grey underline.  When a link is dark, you can use the iPod button in the middle of the scroll wheel to move to that page on your iPod, just like you would when clicking on a link in VoodooPad.<br/>
<br/>
h3. Exporting to the Web<br/>
<br/>
For our final exporting exercise, choose File-&amp;gt;Export-&amp;gt;Web Export... which will display the Web Export Manager panel. On this panel, choose RTFD in  the Export Format popup menu. Next, click the Choose... button to the far right of "Output directory:". When the Open dialog sheet appears, navigate it to our VDTemp folder and click Open. Leave the rest of the panel controls as they were and click the Export button. When you see the phrase, "Finished exporting" to the far left of the three buttons, Reset, Close and Export, then click the Close button.<br/>
<br/>
Go back to the Finder window (or open a new one) in the VDTemp folder. Notice that we have four files, as before, but this time with ".html" suffixes. If you double click on index.html, a page should open in your web browser with the content of our Index page showing links. If you click on any of the links, it should take you to the page comparable to that page in VoodooPad.<br/>
<br/>
It's important to recognize that though we are seeing the same content and clicking links with the same functionality, we are doing all of this in a web browser and using .html files, not the VoodooPad document. If we made a change to our VoodooPad document at this point, we wouldn't see the corresponding change in the web browser unless we exported again into the same folder.<br/>
<br/>
In fact, while keeping our web browser open, let's do that. Go back to our work area in VoodooPad and click on the Home button in the Toolbar. On the Index page, add the following indented line to the bottom of the page.<br/>
<br/>
p{padding-left: 20px;}. This is a line not yet reflected in our web pages.<br/>
<br/>
and click the Save button in the Toolbar. The line is now saved in our VoodooPad document, but should not be seen in our web version. To confirm that, let's go back to the Finder window and double click on the index.html file to reopen it in our web browser. The page that opens should be our Index page, but there should be no indication of the last line we added. Once again, keeping the page open in our web browser, go back to the Work Area in VoodooPad and choose Web export...<br/>
<br/>
The Web Export Manager panel should already be set up the way we want it, but to be sure, check that the Output directory is our VDTemp folder. Now click the Export button. When you see the phrase, "Finished exporting" to the far left of the three buttons, Reset, Close and Export, then click the Close button.<br/>
<br/>
Now if we go back to our web browser page and click the Reload button which looks like this in Safari:<br/>
<br/>
p=. !{border: solid 1px}/fs/images/voodoopad/e0931e37-1ec2-4560-8b30-a7350910fb31.png!<br/>
<br/>
...then we should see the last line appear. In other words, we've just updated our little local web site with the new content from VoodooPad.<br/>
<br/>
The other settings for web exporting in the Web Export Manager panel can be found in the VoodooPad manual under the Help menu.<br/>
<br/>
Exporting to the Web makes our document easier to distribute widely than the printed page. It is easily reviewed by anyone who has a web browser, and today, that includes nearly everyone using computers. Finally, it retains its dynamic organization of pages, in which each page is related to the others through hyperlinks rather than through some sort of simulated physical proximity.<br/>
<br/>
h3. Importing<br/>
<br/>
Now that we've seen how to get information out of a VoodooPad document in several different formats, the next natural concern is how to get information into the document. The most obvious answers, of course, are to do what we've been doing, that is, type or paste the information in. However, we have other options, including:<br/>
<br/>
* importing files<br/>
* dragging text<br/>
* dragging pages<br/>
<br/>
On to Editing Text</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Plugins</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/40de692c-e33c-01d9-12a1-c0cbe4c4d9e7" rel="alternate" title="VoodooPad: Plugins" type="text/html" />
       <id>urn:uuid:40de692c-e33c-01d9-12a1-c0cbe4c4d9e7:24</id>
       <modified>2007-07-17T11:03:49Z</modified>
       <issued>2005-06-22T09:39:51Z</issued>
       <summary type="text/html"><html>h2. Extra plugins you can have for VoodooPad<br/>
<br/>
The plugin interface for VoodooPad is accessed via the Plugin menu. Plugins have files named *.vpplugin and are installed by selecting the VoodooPad application file (.app) in the Finder, executing the Get Info command from the File menu, opening the Plugin section, hitting Add, and selecting the plugin file from the dialog box. Then when VoodooPad is closed and reopened the plugin command will appear in the Plugin menu. &amp;lt;!-- The following isn't true.. not sure where this idea comes from... Note that when you update VoodooPad to a new version, your plugins are not carried along, so you'll need to keep them and install them again when you update the application file. --&amp;gt;<br/>
( If you would like to know about developing plugins for VoodooPad, please visit the Plugin Development page. )<br/>
<br/>
h3. Script Plugins:<br/>
<br/>
Check out the Script Plugins page for information on how to build and install quick plugins.  Visit Lua Plugin Snippets for examples.<br/>
<br/>
h3. View Document (and save as PDF)<br/>
<br/>
Download: http://flyingmeat.com/fs/contrib/voodoopad/DocumentView.vpplugin.zip OS: 10.4+<br/>
<br/>
The View Document plugin opens up a window with a paginated view of your entire document, which really isn't all that useful by itself.  However- you can then bring up the print panel, and choose "Save As PDF" to get a PDF of your entire document.  That's cool and useful.<br/>
<br/>
The source is available for hacking on as well:<br/>
http://flycode.googlecode.com/svn/trunk/voodoopadplugins/documentview/<br/>
<br/>
h3. Python Plugin Enabler:<br/>
<br/>
Download: http://flyingmeat.com/download/plugin/PythonPlugin.vpplugin.zip<br/>
<br/>
The Python Plugin Enabler is a simple VoodooPad plugin that lets you write additional plugins .. in python.  Just double click it and it will install examples in:<br/>
~/Library/Application Support/VoodooPad/Script PlugIns/<br/>
<br/>
This plugin was written by Jonathan Wight of "Toxic Software":http://www.toxicsoftware.com/ .  Support questions should go to gus@flyingmeat.com however.<br/>
<br/>
h3. Render Math:<br/>
<br/>
Download: http://flyingmeat.com/fs/contrib/voodoopad/RenderMath.vpplugin.zip<br/>
<br/>
The Render Math VoodooPad Plugin uses LaTeX to render math in your VoodooPad documents. <br/>
<br/>
<br/>
h3. Extract Images<br/>
<br/>
Download: http://www.flyingmeat.com/download/plugin/ExtractImages.dmg (ppc only)<br/>
<br/>
Extract Images will add a plugin that will let you extract all the images in a page to the place of your choosing. Actually- it'll extract any file attachment in there, but you've probably only got images in.  OS: 10.3.5+<br/>
<br/>
h3. Hot Key<br/>
<br/>
Download: http://www.flyingmeat.com/download/plugin/HotKey.dmg (ppc only)<br/>
<br/>
The Hot Key plugin lets you assign a hot key to VoodooPad, which when pressed from any application will bring VoodooPad to the front. It is very useful for people who like to take down notes quickly. OS: 10.2.8+<br/>
<br/>
h3. HTML Tools<br/>
<br/>
Download: http://www.flyingmeat.com/download/plugin/HTMLTools-1.2.dmg<br/>
<br/>
HTML Tools provides a preview window for interpreting the current page as HTML. It also provides an option to view the page as rendered Textile or Markdown, as well as an option to copy the selected text as HTML. OS: 10.4+<br/>
<br/>
h3. Script Stuff<br/>
<br/>
Script Stuff provides two actions under the Script menu. The first on is "Execute as AppleScript", which will take the contents of the current page and run it like you would in ScriptEditor. The second function is "Format as Python", which will take the front page and colorize it like it is a python script. Make sure the preference "Allow manual underlining and font color changes" is enabled first.  OS: 10.3.5+<br/>
<br/>
Download: http://www.flyingmeat.com/download/plugin/ScriptStuff.dmg (ppc only)<br/>
<br/>
h3. VP's Missing Actions v1<br/>
<br/>
Random options that should probably be in VoodooPad.  OS: 10.4.3+<br/>
<br/>
* "New Current Date Page" This creates a new page (and inserts a link at the current position) in the format of 2005.01.31 (for January 1, 2005)<br/>
* "Select Line" selects the current line<br/>
* "Select Paragraph" selects the current paragraph<br/>
<br/>
Download: http://www.flyingmeat.com/download/plugin/VPsMissingActions.tgz (ppc only)<br/>
<br/>
h3. Lua Plugin Enabler<br/>
<br/>
(Available for VoodooPad 2.5 on the Lua Plugin Enabler page.  VoodooPad 3.0 and later includes the Lua Plugin Enabler by default)</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Andy's Blog Engine</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/2fa9d30e-6e27-01db-01a0-c0cbe4c4ec54" rel="alternate" title="VoodooPad: Andy's Blog Engine" type="text/html" />
       <id>urn:uuid:2fa9d30e-6e27-01db-01a0-c0cbe4c4ec54:21</id>
       <modified>2007-07-16T12:49:34Z</modified>
       <issued>2006-11-06T22:14:12Z</issued>
       <summary type="text/html"><html>h2. Andy's Blog Engine<br/>
<br/>
These are a couple of script plugins, for using the current document as a blog engine.  To install... well, I should add some links to install them.<br/>
<br/>
h3. Usage:<br/>
<br/>
Bear in mind that these scripts don't do any rendering. That is done during the Web Export. Because these scripts utilize the page meta function; they will only work in VoodooPad Pro.<br/>
<br/>
I have a line in my postflight script that changes the name of the rendered file @home.html@ to @index.html@. If you change the variable @homePageName@ from @home@ then this line will need to change as well.<br/>
<br/>
@mv -fv "$VPWebExportOutputDirectory/home.html" "$VPWebExportOutputDirectory/index.html"@<br/>
<br/>
To see what this looks like in action check out the site I'm doing for my son's "Boy Scout Troop 262":http://troop262ps.org/ . Please bear in mind this is a work in progress. I could point you to my business site, but I don't want to use this as a forum for advertising. ;-)<br/>
<br/>
Neither of these scripts has any data that are specific to any VPP document. I did this so that if you have multiple VPP documents that you are using as a CMS for a blog then the only thing that needs to be done is creating the "HomepageMeta" page in each document for the data.<br/>
<br/>
h4. Meta Markup<br/>
<br/>
* This script is used to *mark* the pages whose content will be placed on the "home" page.<br/>
* It does this by adding several page meta tags. Personalizing these tags for your document will be necessary.<br/>
* If you aren't using @Markdown@ markup then you should set @isMarkdown = "0"@<br/>
* This is where you set the location of Desktop folder that you write out the @atom.xml@ file. If you don't want it to be on your Desktop then you need to make changes in the other script.<br/>
* baseURL is the location of your blog page.<br/>
* homeURL is the index page of your site.<br/>
* categoryId is the name of the VoodooPad category that you want all the "posts" to go in.<br/>
* outdir is will be a folder on your Desktop at ~/Desktop/outdir<br/>
<br/>
*Set your data in a new document page named "HomepageMeta". It will be in the following format.*<br/>
<br/>
&amp;lt;carea class="textareaCode200"&amp;gt;t = {}<br/>
t = {<br/>
    baseURL = "http://troop262ps.org/info/news.html",<br/>
    homeURL = "http://troop262ps.org/",<br/>
    blogTitle = "Boy Scout Troop 262 - Palm Springs",<br/>
    authorName = "Andy Fragen",<br/>
    outdir = "/ScoutSite",<br/>
    home = "1",<br/>
    isMarkdown = "1",<br/>
    categoryId = "home"<br/>
}<br/>
&amp;lt;/carea&amp;gt;<br/>
<br/>
<br/>
*Meta Markup - HomepageMeta* script<br/>
<br/>
&amp;lt;carea class="textareaCodeLarge"&amp;gt;--[[<br/>
VPLanguage = lua<br/>
VPScriptSuperMenuTitle = Blog<br/>
VPScriptMenuTitle = Meta Markup - HomepageMeta<br/>
VPEndConfig<br/>
]]<br/>
 <br/>
--Written by Andy Fragen &amp;lt;andy@thefragens.com&amp;gt;<br/>
 <br/>
 <br/>
metaPage = document:pageForKey("homepagemeta")<br/>
text = metaPage:dataAsAttributedString():string()<br/>
 <br/>
-- run the page, like javascript's eval() function<br/>
assert(loadstring(text))()<br/>
 <br/>
item = document:pageForKey(windowController:key())<br/>
--item:setSkipOnExport_(true)<br/>
--item:setShouldHighlightLinks_(false)<br/>
 <br/>
for k,v in pairs (t) do<br/>
  item:setMetaValue_forKey(v,k)<br/>
end<br/>
 <br/>
item:store():setAttributesForItem(item)<br/>
objc.class("NSNotificationCenter"):defaultCenter():postNotificationName_object("VPItemMetaRefreshNotification", item)<br/>
 <br/>
-- add page to category<br/>
categoryId = item:metaValueForKey("categoryId")<br/>
categoryId = document:categoryIdForName(categoryId)<br/>
item:addCategoryId(categoryId)<br/>
objc.class("NSNotificationCenter"):defaultCenter():postNotificationName_object("VPCategoryChangeNotification", item)<br/>
&amp;lt;/carea&amp;gt;<br/>
<br/>
h4. Make Homepage &amp;amp; Feed<br/>
<br/>
* This is the script that does the work.<br/>
* It will find all the pages that you have marked using the *Meta Markup* script and concatenate their content.<br/>
* It will then place this content on a newly created page in the document named "home". You can change this name but you'll need to do it in this script.<br/>
* I've tried to keep most, if not all, the personalized data out of this script.<br/>
* I now make an Atom feed that converts relative URLs to absolute URLs, but only in the feed.<br/>
<br/>
*Make Homepage &amp;amp; Feed* script<br/>
<br/>
&amp;lt;carea class="textareaCodeLarge"&amp;gt;--[[<br/>
VPLanguage = lua<br/>
VPScriptSuperMenuTitle = Blog<br/>
VPScriptMenuTitle = Make Homepage &amp;amp; Feed<br/>
VPEndConfig<br/>
]]<br/>
 <br/>
--Written by Andy Fragen &amp;lt;andy@thefragens.com&amp;gt;<br/>
--with lots of help by Gus Mueller. :-)<br/>
 <br/>
function xmlEscape(str)<br/>
	str = string.gsub(str, "&amp;amp;", "&amp;amp;amp;")<br/>
	str = string.gsub(str, "&amp;lt;", "&amp;amp;lt;")<br/>
	str = string.gsub(str, "&amp;gt;", "&amp;amp;gt;")<br/>
	return str<br/>
end<br/>
 <br/>
function pageNameEscape(str)<br/>
    str = string.gsub(str, " ", "_")<br/>
    str = string.gsub(str, "/", "_")<br/>
    str = string.gsub(str, "\\", "_")<br/>
    str = string.gsub(str, "\"", "_")<br/>
    str = string.gsub(str, ",", "_")<br/>
    str = string.gsub(str, "'", "_")<br/>
	return str<br/>
end<br/>
 <br/>
homePageName = "home"<br/>
fileExtension = ".html"<br/>
--timeFormat = "%d %b %Y %I:%M %p"<br/>
timeFormat = "%d %b %Y"<br/>
all = nil<br/>
count = 1<br/>
maxPosts = 15<br/>
postTagOpen = "&amp;lt;div class='item'&amp;gt;"<br/>
postTagClose = "&amp;lt;/div&amp;gt;\n"<br/>
titleTagOpen = "&amp;lt;h2&amp;gt;"<br/>
titleTagClose = "&amp;lt;/h2&amp;gt;"<br/>
dateTagOpen = "&amp;lt;div class='time'&amp;gt;"<br/>
dateTagClose = "&amp;lt;/div&amp;gt;"<br/>
 <br/>
homedir = objc.luaToNSString("~/"):stringByExpandingTildeInPath()<br/>
deskdir = homedir .. "/Desktop"<br/>
atom = nil<br/>
feedContent = nil<br/>
feedEntry = nil<br/>
template = nil<br/>
 <br/>
-- make new page with name homePageName<br/>
document:createNewVPDataWithKey(homePageName)<br/>
 <br/>
for key in objc.enumToIterator(document:orderedKeysByCreateDateOfPageType(nil):reverseObjectEnumerator()) do<br/>
 <br/>
    page = document:pageForKey(key)<br/>
 <br/>
    if page:metaValueForKey("home") == "1" then<br/>
        <br/>
        if page:type() == VPPageType then<br/>
 <br/>
						--get personalized data stored in meta tags<br/>
		 				baseURL = page:metaValueForKey("baseURL")<br/>
		 				homeURL = page:metaValueForKey("homeURL")<br/>
						blogTitle = page:metaValueForKey("blogTitle")<br/>
						authorName = page:metaValueForKey("authorName")<br/>
						outdir = deskdir .. page:metaValueForKey("outdir")<br/>
						isMarkdown = page:metaValueForKey("isMarkdown")<br/>
						            <br/>
            content = page:dataAsAttributedString()<br/>
         		pageDate = os.date(timeFormat, page:createdDate():timeIntervalSince1970())<br/>
						atomDate = os.date("%Y-%m-%dT%H:%M:%S-08:00")<br/>
						atom = [[&amp;lt;?xml version='1.0' encoding='UTF-8'?&amp;gt;<br/>
&amp;lt;feed xmlns='http://www.w3.org/2005/Atom'<br/>
      xml:lang='en-us'&amp;gt;<br/>
  &amp;lt;title&amp;gt;$blogTitle$&amp;lt;/title&amp;gt;<br/>
  &amp;lt;id&amp;gt;$baseURL$&amp;lt;/id&amp;gt;<br/>
  &amp;lt;link href='$homeURL$' /&amp;gt;<br/>
  &amp;lt;link rel='self' href='$homeURL$atom.xml' /&amp;gt;<br/>
  &amp;lt;link href="$baseURL$" rel="alternate" title="$blogTitle$" type="text/html" /&amp;gt;<br/>
  &amp;lt;updated&amp;gt;]] .. atomDate .. [[&amp;lt;/updated&amp;gt;<br/>
  &amp;lt;author&amp;gt;<br/>
    &amp;lt;name&amp;gt;$authorName$&amp;lt;/name&amp;gt;<br/>
  &amp;lt;/author&amp;gt;<br/>
]]<br/>
--vpconsole(page:displayName())<br/>
--vpconsole(homeURL)<br/>
 <br/>
			    	atom = string.replace(atom, "$baseURL$", baseURL)<br/>
			    	atom = string.replace(atom, "$blogTitle$", blogTitle)<br/>
			    	atom = string.replace(atom, "$authorName$", authorName)<br/>
			    	atom = string.replace(atom, "$homeURL$", homeURL)<br/>
 <br/>
						if isMarkdown == "1" then<br/>
								content = content:string()<br/>
								content = vp.formatViaMarkdown(content)<br/>
								document:createNewVPDataWithKey(pageDate)<br/>
								pageTemp = document:pageForKey(pageDate)<br/>
								attributedString = pageTemp:dataAsAttributedString()<br/>
								attributedString:objc_mutableString():setString(content)<br/>
								pageTemp:setDataAsAttributedString(attributedString)<br/>
 <br/>
								content = pageTemp:dataAsAttributedString()<br/>
						end<br/>
 <br/>
         		content:objc_mutableString():insertString_atIndex(postTagOpen .. "\n" .. titleTagOpen .. page:displayName() .. titleTagClose .. "\n".. dateTagOpen .. pageDate .. dateTagClose .. "\n\n", 0)<br/>
 <br/>
            if all == nil then<br/>
                all = content<br/>
            else<br/>
             		all:appendAttributedString(content)<br/>
            end     <br/>
 <br/>
						--Make Atom feed<br/>
					  template = [[&amp;lt;entry&amp;gt;<br/>
  &amp;lt;title&amp;gt;$displayName$&amp;lt;/title&amp;gt;<br/>
    &amp;lt;!-- link href="$url$" rel="alternate" title="$displayName$" type="text/html" / --&amp;gt;<br/>
    &amp;lt;id&amp;gt;urn:uuid:$uuid$&amp;lt;/id&amp;gt;<br/>
    &amp;lt;published&amp;gt;$createdDate$&amp;lt;/published&amp;gt;<br/>
    &amp;lt;updated&amp;gt;$modifiedDate$&amp;lt;/updated&amp;gt;<br/>
    &amp;lt;content type="xhtml"&amp;gt;<br/>
      &amp;lt;div xmlns='http://www.w3.org/1999/xhtml'&amp;gt;$feedContent$<br/>
      &amp;lt;/div&amp;gt;<br/>
    &amp;lt;/content&amp;gt;<br/>
&amp;lt;/entry&amp;gt;<br/>
]]<br/>
          <br/>
	    	    -- 2002-10-02T10:00:00-05:00<br/>
 <br/>
						if isMarkdown == "1" then<br/>
						  feedContent = string.replace(pageTemp:dataAsAttributedString():string(), "\n", "\n")<br/>
              feedContent = string.replace(pageTemp:dataAsAttributedString():string(), "./", homeURL)<br/>
						else<br/>
	    	      feedContent = string.replace(page:dataAsAttributedString():string(), "\n", "&amp;lt;br/&amp;gt;\n")<br/>
              feedContent = string.replace(page:dataAsAttributedString():string(), "./", homeURL)<br/>
						end<br/>
 <br/>
	    	    folder = os.date('archives/%Y/%m/', page:createdDate():timeIntervalSince1970())<br/>
	    	    url = homeURL .. folder .. pageNameEscape(page:key()) .. fileExtension<br/>
      <br/>
	    	    template = string.replace(template, "$displayName$", xmlEscape(page:displayName()))<br/>
	    	    template = string.replace(template, "$feedContent$", feedContent)<br/>
	    	    template = string.replace(template, "$uuid$", page:uuid())<br/>
	    	    template = string.replace(template, "$url$", url)<br/>
	    	    template = string.replace(template, "$createdDate$", os.date("%Y-%m-%dT%H:%M:%S-08:00", page:createdDate():timeIntervalSince1970()))<br/>
			      template = string.replace(template, "$modifiedDate$", os.date("%Y-%m-%dT%H:%M:%S-08:00", page:modifiedDate():timeIntervalSince1970()))<br/>
 			      <br/>
            if feedEntry == nil then<br/>
                feedEntry = template<br/>
            else<br/>
             		feedEntry = feedEntry .. template<br/>
            end     <br/>
						--end Atom feed<br/>
 						<br/>
        end<br/>
 <br/>
  	    atom = atom .. feedEntry<br/>
     		all:objc_mutableString():appendString(postTagClose .. "\n")<br/>
 <br/>
				if isMarkdown == "1" then<br/>
					document:deleteItemWithKey(pageDate)<br/>
				end<br/>
 <br/>
    		count = count + 1<br/>
    		if count &amp;gt;= maxPosts then<br/>
        	break<br/>
    		end    <br/>
    end<br/>
end<br/>
 <br/>
atom = atom .. "\n&amp;lt;/feed&amp;gt;"<br/>
 <br/>
--write out homepage<br/>
page = document:pageForKey(homePageName)<br/>
page:setDataAsAttributedString(all)<br/>
 <br/>
--write out atom feed<br/>
os.execute('mkdir -p ' .. outdir)<br/>
file = outdir .. "/atom.xml"<br/>
fd = io.open(file, 'w')<br/>
fd:write(atom)<br/>
fd:close()<br/>
 <br/>
 <br/>
--os.execute("open http://srv.local/xxx/")<br/>
vpconsole("Homepage and Atom feed created.")<br/>
&amp;lt;/carea&amp;gt;<br/>
<br/>
Much thanks to Gus. I couldn't have completed this without his time responses to my constant pestering. :-)</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Andy's Web Export Category Moving and Sitemap script</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/e5c0b6b8-33d3-01dc-07c7-c0cbe4c49166" rel="alternate" title="VoodooPad: Andy's Web Export Category Moving and Sitemap script" type="text/html" />
       <id>urn:uuid:e5c0b6b8-33d3-01dc-07c7-c0cbe4c49166:2</id>
       <modified>2007-07-16T12:36:50Z</modified>
       <issued>2007-07-16T12:36:50Z</issued>
       <summary type="text/html"><html>Describe Andy's Web Export Category Moving and Sitemap script here.</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Andy's Fix Relative Links</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/440fe13e-7a5d-01db-029e-c0cbe4c4a87e" rel="alternate" title="VoodooPad: Andy's Fix Relative Links" type="text/html" />
       <id>urn:uuid:440fe13e-7a5d-01db-029e-c0cbe4c4a87e:8</id>
       <modified>2007-07-16T12:33:04Z</modified>
       <issued>2006-11-22T11:11:33Z</issued>
       <summary type="text/html"><html>h2. Andy's Fix Relative Paths script<br/>
<br/>
This is a little shell script that will traverse a VPWebExportOutputDirectory and convert any &amp;lt;code&amp;gt;./&amp;lt;/code&amp;gt; into &amp;lt;code&amp;gt;../&amp;lt;/code&amp;gt; in any &amp;lt;code&amp;gt;*.html&amp;lt;/code&amp;gt; files that it finds.<br/>
<br/>
h3. Usage<br/>
<br/>
Make this script executable and put it in your web export plugin and reference it in the Info.plist as a postflight script.<br/>
<br/>
h4. fixRelativePaths.sh<br/>
<br/>
&amp;lt;carea class="textareaCode250"&amp;gt;#!/bin/bash<br/>
# A script to fix the relative URL for folders one level deep<br/>
# for use in web export plugin<br/>
# written by Andy Fragen &amp;lt;andy@thefragens.com&amp;gt;<br/>
 <br/>
base="$VPWebExportOutputDirectory"<br/>
echo `date` "Fixing relative paths."<br/>
 <br/>
for i in `find $base -type d -mindepth 1 -maxdepth 1 -name '*'  -print`; do<br/>
	for F in `find $i -type f -maxdepth 1 -name '*.html' -print`; do<br/>
		mv $F $F.tmp ;<br/>
		sed 's_"\.\/_"\.\.\/_g' $F.tmp &amp;gt; $F ;<br/>
  	rm $F.tmp ;<br/>
  	echo $F<br/>
	done<br/>
done<br/>
 <br/>
echo `date` "Relative paths fixed."<br/>
&amp;lt;/carea&amp;gt;<br/>
</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Aliases</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/f4e93228-d4c9-01db-1be9-c0cbe4c4fb0e" rel="alternate" title="VoodooPad: Aliases" type="text/html" />
       <id>urn:uuid:f4e93228-d4c9-01db-1be9-c0cbe4c4fb0e:4</id>
       <modified>2007-07-15T14:53:49Z</modified>
       <issued>2007-03-17T13:56:20Z</issued>
       <summary type="text/html"><html>h2. Aliases<br/>
<br/>
An alias in VoodooPad is a way to assign certain words or phrases to another page. For instance, if you have a page named "Pizza" and you would also like the words "Pizzas" and "Italian Pie" to link to the Pizza page, you would make an alias to it. Here's how:<br/>
<br/>
First bring up the Pizza page, and then choose "Page and Document Inspector" from the Window-&amp;amp;gt;Palettes menu. A window will come up that looks like this:<br/>
<br/>
p=. !$imagesDir$/voodoopad/pizza_alias1.png!<br/>
<br/>
<br/>
Press the " + " button on the bottom left, and then enter "Pizza". Press the " + " button again, and enter Italian Pie.<br/>
<br/>
p=. !$imagesDir$/voodoopad/pizza_alias2.png!<br/>
<br/>
Next, bring up another page such as the index page. Type in either "Pizzas" or "Italian Pie". The word(s) will highlight and when you click on them you will be taken to the Pizza page.</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Advanced Text Editing</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/f9a2d632-ccbb-01da-0dd7-c0cbe4c4d793" rel="alternate" title="VoodooPad: Advanced Text Editing" type="text/html" />
       <id>urn:uuid:f9a2d632-ccbb-01da-0dd7-c0cbe4c4d793:7</id>
       <modified>2007-07-15T11:32:44Z</modified>
       <issued>2006-04-15T13:11:08Z</issued>
       <summary type="text/html"><html>h2. Advanced Text Editing<br/>
<br/>
In our last topic, we demonstrated that VoodooPad shares the flexibility of the Mac OS X Text System as represented in TextEdit. However, VoodooPad provides text editing features beyond that basic set, features such as tables, flexible bullet lists, more sophisticated line and paragraph spacing, highlight colors and a convenient margin shift capability for more convenient outlining.<br/>
<br/>
h3. Tables<br/>
<br/>
Let's open a new VoodooPad document by pressing Cmd-Shft-n, select everything in the window and delete it all with the delete key for a blank page.<br/>
<br/>
Now enter a title, such as "Comparing Apples and Oranges" at the top of the document followed by two blank lines. You can do this by typing the title in, or by copying it from the previous sentence and pasting it in. Instead, let's drag the text to the new window.<br/>
<br/>
To do this, double click on the word "Comparing" in the first sentence of the last paragraph, drag to the work "Oranges" and release the mouse button. Then click and hold the mouse within the selected text until the mouse pointer changes from an insertion bar to an arrow, then drag the selected text to the new blank VoodooPad window. Be sure to leave a couple blank lines after this title.<br/>
<br/>
Next, let's add a 4 row X 2 column table to our document. Choose Format-&amp;gt;Table... from the menu bar and notice that two things happened when you did so:<br/>
<br/>
* a 2 row X 3 column table was inserted into our document at the insertion bar<br/>
* a table control panel was displayed to help us configure the table<br/>
<br/>
Since this is not quite the table configuration we wanted, let's change it. While the table is still selected, click on the Table control panel, change the rows to 4 and the columns to 2. You can do this either by selecting the "2" and pressing the 4 key, or by clicking twice on the up arrow immediately to the right of the Rows text field. When you've changed the Rows field, select the "3" in the columns field and type in 2, or click once on the down arrow immediately to the right of the Columns text field.<br/>
<br/>
If the table hasn't changed its configuration, be sure that you've selected any cell of the table and that the window containing the table is the frontmost window. You can confirm this by noting that the three buttons in the upper left corner of the table are colored while you're changing the table's configuration.<br/>
<br/>
Now let's enter some values into the table. In the top row, type "Fruit" in the  left column and "Desirability" in the right. In the three rows of the left column under the heading "Fruit", type: "apples", "oranges" and "bananas". In the right hand column, type "7", "8", "10".<br/>
<br/>
You've probably heard that it's not possible to compare apples to oranges. With VoodooPad, we quite often do what other's have found difficult to impossible. We've gone one better, in this case, and included bananas in our comparison. But what if you don't like the desirability levels we've chosen. Hey, it's your VoodooPad document; change the values to suit you. Just because we believe bananas to be the perfect fruit doesn't mean that you have to agree.<br/>
<br/>
However, our goal here is to learn VoodooPad's special editing characteristics, so let's go back to making our page look better. To do that, first select the page title and press Cmd-t on the keyboard to bring up the font pallette. Then select some sans serif font in the "Family" column of the font table, such as Helvetica, click "Bold" in the Typeface column and either enter "18" in the size text field, or click on 18 in the column below that text field. Close the font pallette and while the title is still selected, choose Format-&amp;gt;Text-&amp;gt;Center (or just press the Cmd-Shft-| keys).<br/>
<br/>
Next we want to center the numbers in the desirability column. To do that, let's make use of a little known trick in the Mac OS X text repertoire: column selection. To select a column, hold down the Option key as you click and drag the mouse from the top left of the first number to the bottom right of the last number in the desirability column.<br/>
<br/>
As you do this, notice that only the bottom right three cells of the table are selected, which is exactly what we wanted. Now click on the Center alignment tab in the table control panel, which looks like this:<br/>
<br/>
p=. !/fs/images/voodoopad/9af40e63-f467-408e-896e-6b7d308fb27b.png!<br/>
<br/>
Let's next click and drag across the two heading cells at the top of the table to select the words "Fruit" and "Desirability" simultaneously. Then click on the Center alignment tab in the table control panel again and press Cmd-b to make both words bold.  You wouldn't actually need to select both words to center them in their cells as long as some part of each of the two cells is selected. However, we needed the words selected to make them both bold.<br/>
<br/>
To illustrate the flexibility of tables in VoodooPad, click anywhere in the table and increase the row count in the Table control panel from 4 to 5. Notice that a new row has been added to the bottom of the table. Next, we want to select the bottom two cells. The easiest way to do that is to double click in one of the cells of the new row and drag through the other. Then click the Merge Cells button in the Table control panel.<br/>
<br/>
We should now have a single cell at the bottom of the table that spans the table width. Click in this new cell and type "* mostly cloned", and suffix the word, banana, above with an asterisk.<br/>
</html></summary>
     </entry>
  <entry>
       <title>FlyGesture: How to Purchase and Register</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/53ca49ec-177c-01da-112c-c0cbe4c4e838" rel="alternate" title="FlyGesture: How to Purchase and Register" type="text/html" />
       <id>urn:uuid:53ca49ec-177c-01da-112c-c0cbe4c4e838:6</id>
       <modified>2007-07-03T11:01:35Z</modified>
       <issued>2005-08-27T21:29:31Z</issued>
       <summary type="text/html"><html>h2. How to Purchase and Register FlyGesture.<br/>
<br/>
You don't have too anymore - it's free!</html></summary>
     </entry>
  <entry>
       <title>FlyGesture: Start Page</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/4982c326-c72a-01d9-07fe-c0cbe4c4e873" rel="alternate" title="FlyGesture: Start Page" type="text/html" />
       <id>urn:uuid:4982c326-c72a-01d9-07fe-c0cbe4c4e873:20</id>
       <modified>2007-07-03T11:01:17Z</modified>
       <issued>2005-05-17T16:20:42Z</issued>
       <summary type="text/html"><html>h2. FlyGesture<br/>
<br/>
* About FlyGesture<br/>
Find out what Flying Meat's FlyGesture is all about.<br/>
<br/>
* How it Works.<br/>
Find out what makes FlyGesture tick.<br/>
<br/>
* Movies<br/>
Watch FlyGesture in action.<br/>
<br/>
* Frequently Asked Questions<br/>
Do you have a question that needs to be answered?<br/>
</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Web Export</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/33e3c704-3124-01da-160e-c0cbe4c4be5d" rel="alternate" title="VoodooPad: Web Export" type="text/html" />
       <id>urn:uuid:33e3c704-3124-01da-160e-c0cbe4c4be5d:23</id>
       <modified>2007-05-25T15:03:33Z</modified>
       <issued>2005-09-29T13:04:12Z</issued>
       <summary type="text/html"><html>h1. Web Export<br/>
<br/>
Web Export is a new feature in VoodooPad 2.5.  It allows you to export your document as HTML files, with options for marking up the pages as Textile, Markdown, or just treating it as plain text.<br/>
<br/>
In addition, you are given the opportunity to specify "Web export plugins" to apply special formatting with the export.<br/>
<br/>
Here's a quick rundown of the various options available in the Web Export window.<br/>
<br/>
*Export format*:  This is the format that you would like the text in your VoodooPad pages to be written out as.<br/>
<br/>
* RTFD to HTML is probably going to be the most used option- it tries to match exactly what your pages look like on output.<br/>
* No Markup exports your pages as-is.  No attempt is used to try and interpret any formatting in the pages.<br/>
* Plain Text exports the pages without any special formatting, or images, but does format for line breaks.<br/>
* Interpret as Markdown exports your pages using a popular text to HTML formating script.  For more information on Markdown please visit http://daringfireball.net/projects/markdown/<br/>
* Interpret as Textile exports your pages using another popular text o HTML formatting script. For more information on Textile, please visit http://www.textism.com/tools/textile/<br/>
<br/>
*Output directory*: This is the folder where the html files and images are written to.<br/>
<br/>
*Web export plugin*:  You may select a specific plugin to be used to provided extra workflow options, or template for exporting.  These plugins are located in your "~/Library/Application Support/VoodooPad/Web Export PlugIns" folder.<br/>
<br/>
*Preflight script*:  This is a unix script (or application) that you may choose to be run before the actual export is taken place.  This is useful if you want to create resources such as folders or supporting files to manage your workflow.<br/>
<br/>
*Postflight script*: This follows the same idea as the preflight script, but is run after the export has taken place.  For example, you could use this to automate the uploading of your html files and images to a server.<br/>
<br/>
*Preset*:  If you spend a little bit of time and energy into setting up what scripts need to be run, and what folders you want everything to be exported to, then you might want to save those setting for use at a later time.  That's what this setting is for.  Use the + button to add or modify a preset, use the - button to remove a preset.<br/>
<br/>
*Reset button*: This resets all the export options to their default state.<br/>
<br/>
*Close button*: This closes the Web Export window.<br/>
<br/>
*Export*: This kicks off the export, and progress is updated via a label in the lower left corner of the window.<br/>
<br/>
&amp;lt;br/&amp;gt;<br/>
<br/>
h2. Special Pages:<br/>
<br/>
The Web Export feature allows you to create special pages within your VoodooPad document, which supply additional information, scripts, or templates to be used alongside whatever plugin is used for export.<br/>
<br/>
WebExportPreflightScript: This page will be executed like a normal shell script, and is called at the beginning of the export.<br/>
<br/>
WebExportPostflightScript: This page will be executed like a normal shell script, and is called at the end of the export.<br/>
<br/>
WebExportProperties: this page will be written to meta.xml, so you can place config information in here if it is needed.<br/>
<br/>
WebExportPageTemplate: this page will override the template given in the selected plugin.<br/>
<br/>
<br/>
h2. Including other pages / macro substitution:<br/>
<br/>
&amp;lt;code&amp;gt;&amp;amp;lt;!--#include page="header" --&amp;amp;gt;&amp;lt;/code&amp;gt;<br/>
<br/>
That'll include the page named "header" in your document.<br/>
<br/>
h2. Special Variables.<br/>
<br/>
&amp;lt;pre&amp;gt;$page$&amp;lt;/pre&amp;gt; This will be replaced with the contents of the page.<br/>
&amp;lt;pre&amp;gt;$alias$&amp;lt;/pre&amp;gt; This will include the first alias you have for a page.<br/>
&amp;lt;pre&amp;gt;$alias[0]$&amp;lt;/pre&amp;gt; This will also include the first alias you have for a page.<br/>
&amp;lt;pre&amp;gt;$alias[1]$&amp;lt;/pre&amp;gt; This will include the second alias you have for a page.<br/>
&amp;lt;pre&amp;gt;$alias[2]$&amp;lt;/pre&amp;gt; The third alias for a page... <br/>
&amp;lt;pre&amp;gt;$alias[x]$&amp;lt;/pre&amp;gt; Etc... (you get the point).<br/>
&amp;lt;pre&amp;gt;$displayName$&amp;lt;/pre&amp;gt; This will insert the page name. ($title$ works as well, but is deprecated).<br/>
&amp;lt;pre&amp;gt;$categories$&amp;lt;/pre&amp;gt; This will list the categories the page is in.<br/>
&amp;lt;pre&amp;gt;$documentName$&amp;lt;/pre&amp;gt; This will include the document name, with the .vpdoc extension<br/>
&amp;lt;pre&amp;gt;$documentTitle$&amp;lt;/pre&amp;gt; This will include the document name, excluding the .vpdoc extension<br/>
&amp;lt;pre&amp;gt;$year$,  $modifiedYear$, $shortDate$, $longDate$, $time$, $shortTime$,<br/>
$timeDate$, $modifiedShortDate$, $modifiedLongDate$, $modifiedTime$,<br/>
$modifiedShortTime$, $modifiedTimeDate$&amp;lt;/pre&amp;gt; These will list the dates in various formats, for both the create date, and last modified dates.<br/>
<br/>
<br/>
h2. AppleScript<br/>
<br/>
Web Export can be controlled via AppleScript.  Below are a couple of examples doing this.<br/>
<br/>
&amp;lt;carea class="textareaCode"&amp;gt;<br/>
tell application "VoodooPad"<br/>
    tell document 1<br/>
        web export to "/tmp" with properties {fileExtension:"php", <br/>
                                              postflightScript:"/path/to/some/script.sh",<br/>
                                              preflightScript:"/path/to/another/script.sh"}<br/>
    end tell<br/>
end tell<br/>
tell application "VoodooPad"<br/>
    tell document 1<br/>
        web export using conversion format plain text with properties {fileExtension:"html", <br/>
                                              preset:"to markdown folder",<br/>
                                              pluginName:"GMDC Blog Layout"}<br/>
    end tell<br/>
end tell<br/>
&amp;lt;/carea&amp;gt;<br/>
<br/>
h2. Automator<br/>
<br/>
There are a couple of Automator actions for invoking Web Export in VoodooPad.  Launch Automator and you will see them listed if you have installed VoodooPad.<br/>
<br/>
<br/>
&amp;lt;br/&amp;gt;<br/>
<br/>
h1. Information for advanced users or plugin developers.<br/>
<br/>
h2. Export / Script Execution Order<br/>
<br/>
The following steps are what takes place when you press the "Export" button in the Web Export window.  The hope is that this information will be useful for anyone wanting to make a plugin, or for advanced uses.<br/>
<br/>
1. Preflight script specified in the export window is run.<br/>
2. WebExportPreflightScript page, if available, is run.<br/>
3. Preflight script(s) specified in the "PreflightScripts" array of the plugin's Info.plist file are run.<br/>
4. Pages are exported to output directory.<br/>
5. meta.xml is written out to the output directory if the boolean key "WriteMetaInfo" is set to yes in the plugin's Info.plist<br/>
6. Category files are written out.<br/>
7. Postflight script(s) specified in the "PostflightScripts" array of the plugin's Info.plist file are run.<br/>
8. WebExportPostflightScript page, if available, is run.<br/>
9. Postflight script specified in the export window is run.<br/>
<br/>
h2. Shell Script Environment Variables:<br/>
<br/>
These are environment variables that VoodooPad exports, for use in pre and postflight scripts.<br/>
<br/>
VPWebExportOutputDirectory: The directory the files are written to.<br/>
<br/>
VPWebExportVoodooPadDocument: The document that is being exported.<br/>
<br/>
VPPluginPath: The path to the web export plugin that is being used.<br/>
<br/>
<br/>
h2. Plugin Info.plist keys<br/>
<br/>
These are the various keys you should have defined in the plugins Info.plist file.  This is really only of any use if you are wanting to write a Web Export plugin.<br/>
<br/>
*NSExcludedElementsDocumentAttribute* - An array with items to exclude for the apple rtf-&amp;gt;html converter.  Values are given on this page: http://developer.apple.com/releasenotes/Cocoa/AppKit.html (search for NSExcludedElementsDocumentAttribute) 10.4 only.<br/>
<br/>
*DisplayName* - what shows up in the pulldown list for the plugin.<br/>
<br/>
*PrincipalTemplate* - the path to the html template to use when exporting.<br/>
<br/>
*PreviewImage* - the path to a png image, which will be used for a preview in the WebExport window.<br/>
<br/>
*PreflightScripts* - an array of paths, pointing to scripts to be run before the export takes place.<br/>
<br/>
*PostflightScripts* - an array of paths, pointing to scripts to be run after the export takes place.<br/>
<br/>
</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: New in 3.2</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/20f83654-03df-01dc-1cdc-c0cbe4c4ad6b" rel="alternate" title="VoodooPad: New in 3.2" type="text/html" />
       <id>urn:uuid:20f83654-03df-01dc-1cdc-c0cbe4c4ad6b:5</id>
       <modified>2007-05-24T16:59:29Z</modified>
       <issued>2007-05-16T11:56:18Z</issued>
       <summary type="text/html"><html>h2. New in VoodooPad 3.2:<br/>
<br/>
h3. View Categories as Tags.<br/>
<br/>
Lots of people have been wanting the ability to view the assigned categories as "tags".  Well, now you've got it.  Just open up the category palette, and use the cog-widget in the categories list to change the view as "tags".<br/>
<br/>
h3. Page Previews.<br/>
<br/>
Holding down the command and control keys while hovering over an interal VoodooPad link gives you a preview of the linked page.  This is awesome if you want to be able to see the first couple of lines of a page, but don't want to open it up.<br/>
<br/>
h3. Drag and Drop Linking Between Documents.<br/>
<br/>
You can now drag and drop a tab from one document to another to create links.  It's a super easy way to have inter-document links.<br/>
<br/>
<br/>
h3. Copy Link to Item Command<br/>
<br/>
We've got a new command- Edit-&amp;amp;gt;Copy Link to Item, which will copy text to the clipboard which you can use to link to the specific page.  This will work for any applications that respect the NSLink attribute in rich text.<br/>
<br/>
h3. Link to Specific pages<br/>
<br/>
You no longer need to setup aliases to link custom text to pages in your document.  Select some text and choose "Link selection to item" in the Edit menu, and away you go.<br/>
<br/>
<br/>
h3.  Other Stuff<br/>
<br/>
Now using Sparkle to do updates of the application, no longer removing custom link attributes, bug fixes, you can view embedded web archives, improved searching, and more.<br/>
</html></summary>
     </entry>
  <entry>
       <title>test: Start Page</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/98230ce6-c019-01da-19cb-c0cbe4c4d0ff" rel="alternate" title="test: Start Page" type="text/html" />
       <id>urn:uuid:98230ce6-c019-01da-19cb-c0cbe4c4d0ff:3</id>
       <modified>2007-05-23T14:58:36Z</modified>
       <issued>2006-03-30T10:18:32Z</issued>
       <summary type="text/html"><html>LD<br/>
it's my home<br/>
not mine...<br/>
<br/>
</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Categories</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/26d7bcde-ce57-01da-1b50-c0cbe4c4b100" rel="alternate" title="VoodooPad: Categories" type="text/html" />
       <id>urn:uuid:26d7bcde-ce57-01da-1b50-c0cbe4c4b100:5</id>
       <modified>2007-05-16T12:21:45Z</modified>
       <issued>2006-04-17T14:14:27Z</issued>
       <summary type="text/html"><html>h2. Categories<br/>
<br/>
(To open up the Categories window, choose the Window-&amp;gt;Palettes-&amp;gt;Categories menu item)<br/>
<br/>
VoodooPad has the ability to assign different categories to a specific page in your document.  What this means is you can create a category named "Food" and then assign this category to the pages "Cupcake recipe", "Dinner Ideas", and "The Cake".<br/>
<br/>
And pages can belong in multiple categories as well.  For example, say we have a "Wedding" category and then assign the pages "Guest List", "Reception Info", and "The Cake" to it.  Notice that "The Cake" is in the Food category as well.<br/>
<br/>
This is an easy way to organize pages in VoodooPad document according to topics.<br/>
<br/>
p=. !$imagesDir$/voodoopad/categories_list.png!<br/>
<br/>
*Tip:* To rename a category, hold down the option key and double click its name in the  listing view.<br/>
<br/>
<br/>
h2. Categories as Tags<br/>
<br/>
You can also view the categories for an item as "tags".  To switch to this view, click on the widget in the top right corner of the categories list, and select "View as Tags":<br/>
<br/>
p=. !$imagesDir$/voodoopad/categories_view_as_tags.png!<br/>
<br/>
You will then be able to view all the categories that the item is in, as well as add new categories to the item from this view in an easy manner:<br/>
<br/>
p=. !$imagesDir$/voodoopad/tags_view.png!</html></summary>
     </entry>
  <entry>
       <title>FlySketch: Shortcuts</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/7304249a-e793-01d9-1b5e-c0cbe4c4b89f" rel="alternate" title="FlySketch: Shortcuts" type="text/html" />
       <id>urn:uuid:7304249a-e793-01d9-1b5e-c0cbe4c4b89f:20</id>
       <modified>2007-03-08T14:25:02Z</modified>
       <issued>2005-06-27T22:14:06Z</issued>
       <summary type="text/html"><html>h2. Keyboard ~Shortcuts<br/>
<br/>
Here are a list of keys that you can use to activate certain tools or features, just in case your hands don't feel like moving away from the keyboard.<br/>
<br/>
"0,1-9" Pressing the number keys will cycle the canvas through various levels of transparency. <br/>
<br/>
Here are the various key commands to change the current tool:<br/>
"V" Selection arrow.<br/>
"C" Oval.<br/>
"L" Line.<br/>
"R" Rectangle.<br/>
"E" Round Rectangle.<br/>
"T" Text.<br/>
"F" Freehand Sketch.<br/>
"H" Highlighter<br/>
<br/>
Command-C copies the current canvas, or the current selection if any.<br/>
Command-V pastes<br/>
Command-Shift-E will export the canvas as an image.<br/>
<br/>
<br/>
*FlySketch 1.5 Only:*<br/>
<br/>
* Option-drag in a color well to change the level of opacity.  Move up to make it opaque, move down to make it transparent.<br/>
* Command click in a color well to bring up the standard color picker.</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Quicksilver Append to VoodooPad</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/4af589d2-5834-01da-05df-c0cbe4c4bc81" rel="alternate" title="VoodooPad: Quicksilver Append to VoodooPad" type="text/html" />
       <id>urn:uuid:4af589d2-5834-01da-05df-c0cbe4c4bc81:10</id>
       <modified>2007-03-04T07:18:47Z</modified>
       <issued>2005-11-18T05:07:38Z</issued>
       <summary type="text/html"><html>[AUTHOR UPDATE (MARCH 2007):  This script is no longer necessary for appending to QS.  If you want easy prepends and appends (and more!) for QS, go grab the Voodoopad plugin for QS, which has a great deal more functionality and is likely coded far better.]<br/>
<br/>
This is a script allowing appends to a number of VoodooPad pages from Quicksilver using a keyword at the beginnning of an entry.   I use it for quickly adding information on the fly to any of a number of lists without switching window focus and not maintaining several text files.  <br/>
<br/>
It's here in case anyone else might find it (or parts of it) useful.<br/>
<br/>
Please feel free to make changes if you have ideas or can improve on my limited scripting ability.<br/>
<br/>
&amp;lt;carea class="textareaCodeLarge"&amp;gt;<br/>
--Quicksilver Append to VoodooPad.scpt<br/>
--Version 0.21 (2005-11-16)<br/>
-- IMPORTANT:  This script MUST be modified in at least one place for it to work successfully.  At a minimum, the values of the VPDoc and VPDocPath variables defined below must be modified to point to an existing VoodooPad file and its full path.  Additionally, the triggers and pages in the big if block below should be modified to suit the particular desires of the user.  Note that the page targets defined in the if block below must exist when the script is invoked.  If they do not, data sent to those pages will be lost.  At a bare minimum, the user should add a "Log" page to the target VoodooPad document to catch default log entries.<br/>
-- Purpose:  This script works with the applications VoodooPad from Flying Meat Inc. and Quicksilver from Blacktree, Inc.  Both must be installed for the script to work.  It links the two to allow rapid-fire appends to VoodooPad pages by using a keyword of one or more letters at the beginning of a Quicksilver input string.  <br/>
-- Installation:  The script should be installed in a scripts folder.  Note, however, that the script does not work if called directly from the scripts menu; it only works when invoked via Quicksilver with a "Process Text" action.  Setting up a Quicksilver trigger that calls the script plus a "Process Text" action to allow one-keystroke access to the append command line is recommended.<br/>
-- Usage:  The text input expected is a keyword plus a text string to add to the page.  In the if block below, Quicksilver input string of "gr ice cream" would add "ice cream" to the "Groceries" page in Quicksilver.  This generally occurs in the background without distracting the user from the current work.  If a keyword is used by itself as input, however, it brings the corresponding VoodooPad page to the front of the current windows for input.  If no keyword is recognized, the entire text is appended with a timestamp to the "Log" page.<br/>
-- Declare globals<br/>
global InputKeyword, InputString, VPDocPath, VPDoc<br/>
-- Grab the input string from Quicksilver.<br/>
using terms from application "Quicksilver"<br/>
	on process text QSInputString<br/>
		-- The following global variables point to the VoodooPad document to which Quicksilver should append, and that VoodooPad document specified with its full path.  They should be changed by the user to match their preferred VoodooPad document and path.<br/>
		set VPDoc to "main.vdoc"<br/>
		set VPDocPath to "BB HD:Users:sample:Documents:VoodooPad:main.vdoc"<br/>
		-- Copy Quicksilver input string to global InputString.  The first word of InputString is InputKeyword which will be tested in the big if block below, and clipped (if specified) in the VPAppend handler.		<br/>
		set InputString to QSInputString<br/>
		set InputKeyword to first word of InputString<br/>
		-- The big if block.  Essentially, it tests InputKeyword against lists of possible keywords for a particular page or list, and calls VPAppend with parameters matching how that list should be treated.  The syntax is pretty straightforward:  the list of strings in brackets in the if-clause are all the possible keywords that will trigger sending the input to the page specified in the PageName parameter in the then-clause.  If a keyword is used in two different if clauses, the first clause will be the destination.<br/>
		-- ClipKeyword: Calling the handler with ClipKeyword will remove the first word from the input string before appending (so lists do not have various abbreviations before each entry if not desired).<br/>
		-- LogStyle:  Calling the handler with LogStyle will append a full date and timestamp before the input string for time-sensitive entries.<br/>
		-- IMPORTANT:  The page specified in PageName MUST already exist in the target VoodooPad document.  Entries will be lost if not.<br/>
		if InputKeyword is in {"g", "gr", "gl", "groceries", "groc", "food"} then<br/>
			VPAppend with ClipKeyword without LogStyle given PageName:"Groceries"<br/>
		else if InputKeyword is in {"id", "idea", "ideas"} then<br/>
			VPAppend with ClipKeyword without LogStyle given PageName:"Ideas"<br/>
		else if InputKeyword is in {"ln", "link", "links"} then<br/>
			VPAppend with ClipKeyword and LogStyle given PageName:"Links"<br/>
		else if InputKeyword is in {"n", "note", "notes"} then<br/>
			VPAppend with ClipKeyword without LogStyle given PageName:"Notes"<br/>
		else if InputKeyword is in {"s", "sc", "scr", "scratch"} then<br/>
			VPAppend with ClipKeyword without LogStyle given PageName:"Scratch"<br/>
		else if InputKeyword is in {"w", "wishlist", "wish"} then<br/>
			VPAppend with ClipKeyword without LogStyle given PageName:"Wishlist"<br/>
		else if InputKeyword is in {"log", "l"} then<br/>
			VPAppend with ClipKeyword and LogStyle given PageName:"Log"<br/>
		else<br/>
			-- Default action: if the first word of the input string is not recognized as a keyword, prepend "log" to the input string so that it is processed by the VPAppend handler as a log entry, then call the VPAppend handler.  The prepend is necessary so that input of a single non-keyword doesn't automatically bring up the log.<br/>
			set InputString to "log" &amp;amp; space &amp;amp; InputString<br/>
			VPAppend with ClipKeyword and LogStyle given PageName:"Log"<br/>
		end if<br/>
	end process text<br/>
end using terms from<br/>
-- VPAppend handler.  Takes the string PageName to which input should be directed, plus booleans LogStyle and ClipKeyword to define how the input string should be modified.  Actions of LogStyle and ClipKeyword are described below.<br/>
on VPAppend given PageName:PageName, LogStyle:LogStyle, ClipKeyword:ClipKeyword<br/>
	tell application "VoodooPad"<br/>
		-- Check to see whether document is already open.  If not, open it.<br/>
		if not (exists document named VPDoc) then<br/>
			open VPDocPath<br/>
		end if<br/>
		-- If only nonwhitespace and nonpunctuation input is the keyword, then bring document to the front for input, open corresponding page, move cursor to the bottom of the page, and return<br/>
		ignoring white space and punctuation<br/>
			if InputKeyword is InputString then<br/>
				tell application "Finder" to activate document VPDoc of application "VoodooPad"<br/>
				open page document VPDoc with title PageName<br/>
				-- This is a little hack to deal with VoodooPad's placing the cursor at the bottom of text on pages with 100 characters or fewer, but at the very top of all text on pages with more than 100 characters, when "open page" is called.  This sends a Command-DownArrow to the page to place the insert point at the bottom of the page.  Replacing "ASCII character 31" with "ASCII Character 30" below would cause the cursor to be placed at the top of the page, if that is preferred.<br/>
				tell application "System Events" to keystroke (ASCII character 31) using command down<br/>
				return<br/>
			end if<br/>
		end ignoring<br/>
		-- Process ClipKeyword: If true, delete the keyword from the append string (i.e., get second word through to the end of the string).<br/>
		if ClipKeyword then<br/>
			set AppendString to text from word 2 to last word in InputString<br/>
		else<br/>
			set AppendString to InputString<br/>
		end if<br/>
		<br/>
		-- Process LogStyle:  If true, prepend timestamp to the string<br/>
		if LogStyle then<br/>
			set AppendString to short date string of (current date) &amp;amp; space &amp;amp; time string of (current date) &amp;amp; ":" &amp;amp; space &amp;amp; AppendString<br/>
		end if<br/>
		<br/>
		-- Finally, append the text and a return character to the selected page.<br/>
		append text AppendString &amp;amp; return to page PageName of document VPDoc<br/>
	end tell<br/>
end VPAppend<br/>
&amp;lt;/carea&amp;gt;</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Triggers</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/96d13fbc-ed3b-01da-126a-c0cbe4c4d8a1" rel="alternate" title="VoodooPad: Triggers" type="text/html" />
       <id>urn:uuid:96d13fbc-ed3b-01da-126a-c0cbe4c4d8a1:14</id>
       <modified>2007-03-03T18:07:02Z</modified>
       <issued>2006-05-26T21:45:15Z</issued>
       <summary type="text/html"><html>h2. Triggers<br/>
<br/>
A VoodooPad Pro only feature- triggers are a handy way to script VoodooPad when certain events occur, such as a new page being created or deleted, documents opening or closing, files being written on web export and more.<br/>
<br/>
*Note*: triggers are written in a scripting language named Lua, and a little bit of programming experience is required.  You can find out more about Lua from http://www.lua.org/ .<br/>
<br/>
The easiest way to learn triggers is to create one.  Start off by creating a new page named "New Page Trigger", and delete all the text on the new page so we have a clean slate to work with.  Next, just copy and paste this quick script:<br/>
<br/>
<br/>
pre. newPage = triggerDictionary.item<br/>
vpconsole("we're creating a new page named " .. newPage:displayName())<br/>
<br/>
<br/>
What this script does is print out the name of the new page in the VoodooPad console.  Next we need to assign this script to an event in VoodooPad.  So bring up the Page and Document Inspector (under the "View" menu) and switch to the Triggers tab.  Select the event "Page opened" for the "On event:" label, and then press the plus button at the bottom of the window to select our new page:<br/>
<br/>
p=. !$imagesDir$/voodoopad/newpagetriggerselection.png!<br/>
<br/>
Press the "OK" button and we've created our first trigger.  You should then see something like this in the inspector window:<br/>
<br/>
p=. !{border: solid 1px;}$imagesDir$/voodoopad/triggercreated.png!<br/>
<br/>
Now try creating a new page in VoodooPad named "random".  You should see the text "we're creating a new page named random<br/>
" pop open in a little window.  Go ahead and delete the random page, and let's take a look at this script with a little more detail.<br/>
<br/>
pre. newPage = triggerDictionary.item<br/>
<br/>
Every trigger that is executed has a couple of global variables setup automatically.  One of these is named "triggerDictionary".  This dictionary contains values that can be of use when your triggers are being run.  An easy way to find out what all the values in the dictionary are is to use this simple line that will print out the keys in the dictionary:<br/>
<br/>
pre. table.foreach(triggerDictionary, vpconsole)<br/>
<br/>
So in the first line of our example, we are assigning the value "item" of the trigger dictionary to a new variable named "newPage".  This represents the page that has just been created.<br/>
<br/>
The next line simply prints out some text with the name of the page to the console:<br/>
<br/>
pre. vpconsole("we're creating a new page named " .. newPage:displayName())<br/>
<br/>
The two dots (..) is how Lua concatenates strings together, so we get a single line of text that we send to the console.  the newPage:displayName() bit calls a method named "displayName" on the new page object.  A couple of other methods that we could call are "modifiedDate", "createdDate", "key", "type".  There are more, but we won't get into those right now.  Instead, let's spice up our example a little more.<br/>
<br/>
Next, we're going to take the contents of our new page and modify them a little bit by adding the current date to it.  There are a couple of easier ways we could do this, but for this example let's just pretend there aren't.  So to start, let's go back to our "New Page Trigger" page and delete all the text there, and replace it with this:<br/>
<br/>
<br/>
pre. newPage = triggerDictionary.item<br/>
attributedString = newPage:dataAsAttributedString()<br/>
newString = os.date("\nThis page was created on %A, in %B")<br/>
attributedString:objc_mutableString():appendString(newString)<br/>
newPage:setDataAsAttributedString(attributedString)<br/>
<br/>
What we do here is:<br/>
<br/>
1: Grab the new page that's being created.<br/>
2: Grab the attributed string out of the page.  An attributed string is a technical way of saying "stylized text".  It is what keeps track of your bold and italic text, custom margins, and other fancy text stuff.<br/>
3: Create our date string that will will append to the end of our new page, in the format of "This page was created on Tuesday, in May"<br/>
4: Append our new text to our attributed string<br/>
5: Set that attributed string back into the page so it'll show up when we view it.<br/>
<br/>
<br/>
Now whenever we create a new page, you'll see that text appended to the end of it.<br/>
<br/>
Other Topics:<br/>
<br/>
* Trigger Examples<br/>
* "Lua website":http://www.lua.org/</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: New in 3.0</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/fafb03d4-ed49-01da-1cee-c0cbe4c4e99c" rel="alternate" title="VoodooPad: New in 3.0" type="text/html" />
       <id>urn:uuid:fafb03d4-ed49-01da-1cee-c0cbe4c4e99c:16</id>
       <modified>2007-01-31T18:29:17Z</modified>
       <issued>2006-05-26T23:28:16Z</issued>
       <summary type="text/html"><html>h2. New in VoodooPad 3.0:<br/>
<br/>
<br/>
*Tabs*<br/>
Open up multiple pages in the same window using tabs.   Command click on a link to open it in a new tab, or right click on a link and choose "Open Link in New Tab".  (And you can still open up pages in new windows by holding down shift-command when clicking on a link)<br/>
<br/>
*Search Improvements*<br/>
Search in VoodooPad is lightning fast now, and returns results in record times.<br/>
<br/>
*Support for big documents*<br/>
Stuff gigabytes of data inside a VoodooPad document, it won't mind.  A new file format makes saving documents super quick as well.<br/>
<br/>
*Linkback*<br/>
A user can paste content from any LinkBack-enabled application into VoodooPad and reopen that content later for editing with just a double-click.  See http://www.linkbackproject.org/ for more info.<br/>
<br/>
*Embed images, pdfs, and other types of files.*<br/>
The improved file format for VoodooPad 3.0 means you can embed files such as images, pdfs, mp3s, and most other types of files as well.  VoodooPad also includes a new PDF Service so you can print from any application directly into VoodooPad.<br/>
<br/>
*Full Screen*<br/>
Edit your pages in full screen mode, to keep you focused on the task at hand.<br/>
<br/>
*Script Plugins*<br/>
Script Plugins are an easy way to extend the functionality of VoodooPad.  Download new plugins or write your own.<br/>
<br/>
*Palettes*<br/>
VoodooPad sheds the drawer and moves content out into easy to use palettes.  Find your backlinks, pages list, categories, recently updated pages, and (new for 3.0) recently visited pages quick and easily.<br/>
<br/>
*Text Styles*<br/>
A new text styles palette lets you add and apply text styles to your pages.<br/>
<br/>
*Custom Shortcuts*<br/>
VoodooPad has a new preference pane where you can set and change the menu item shortcuts.  So if you don't like that a certain plugin has no shortcut- now you've got an easy way to fix it!<br/>
<br/>
*Merge and Split*<br/>
Merge two VoodooPad documents together using the import menu option, or split pages from a document into a new file to slim things down a bit.<br/>
<br/>
*Improvements and Other New Stuff*<br/>
<br/>
* Rulers stay in place now when moving from page to page.<br/>
* Smooth lines for sketch<br/>
* Clippings folder now supports RTFD files<br/>
* Sending by mail now includes images<br/>
* New Web Export date placeholders<br/>
* Upgraded linking engine recognizes CJK links without spaces, and much more.<br/>
* Copy no longer copies links that are only good to VoodooPad<br/>
* Plain text pages<br/>
* New package file format which is subversion friendly<br/>
* Double clicking an image will now prompt you to save the image to disk<br/>
* New toolbar buttons<br/>
* Window and tab states are now stored in the document<br/>
* Updates to the plugin api<br/>
* New preference to choose wether or not to use the default welcome text for new documents<br/>
* The open page panel is no longer case sensitive<br/>
* New applescript command "current page name" to get the name of the front most page<br/>
<br/>
<br/>
h2. VoodooPad Pro<br/>
<br/>
There's a new addition to the VoodooPad family for the 5% of you who want some crazy advanced features.  And here's what it has:<br/>
<br/>
*Document level encryption*<br/>
Have every bit of your VoodooPad document protected by a password, and not just on a page by page basis.<br/>
<br/>
*Triggers*<br/>
A handy way to script VoodooPad when certain events occur such as a new page being created or deleted, documents opening or closing, files being written on web export and more.<br/>
<br/>
*Item Meta*<br/>
Assign meta data to an individual page which can be used for whatever you'd like, and access them in script plugins or triggers.<br/>
<br/>
*Webserver*<br/>
A built in webserver to share your pages with friends or co-workers on your local network without any pain.  Bonjour support so you don't have to hand around cryptic urls.<br/>
</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Old Versions</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/28fc7dd0-f3e0-01d9-0161-c0cbe4c49a7b" rel="alternate" title="VoodooPad: Old Versions" type="text/html" />
       <id>urn:uuid:28fc7dd0-f3e0-01d9-0161-c0cbe4c49a7b:12</id>
       <modified>2007-01-02T17:15:53Z</modified>
       <issued>2005-07-13T13:53:27Z</issued>
       <summary type="text/html"><html>Here are a list of links to older versions of VoodooPad, just in case you need one for some reason.  However, you should always be running the latest version of VP, since it usually has important bug fixes that older versions don't have.<br/>
<br/>
VoodooPad-2.5.5.dmg: http://flyingmeat.com/download/VoodooPad-2.5.5.dmg (Requires at least 10.3.9)<br/>
VoodooPadLite-2.5.5.dmg: http://flyingmeat.com/download/VoodooPadLite-2.5.5.dmg (Requires at least 10.3.9)<br/>
<br/>
VoodooPad 2.1.2 http://flyingmeat.com/download/VoodooPad-2.1.2.dmg<br/>
VoodooPad Lite 2.1.2: http://flyingmeat.com/download/VoodooPadLite-2.1.2.dmg<br/>
<br/>
VoodooPad 2.1.1: http://flyingmeat.com/download/VoodooPad-2.1.1.dmg<br/>
VoodooPad Lite 2.1.1: http://flyingmeat.com/download/VoodooPadLite-2.1.1.dmg<br/>
<br/>
VoodooPad 2.1: http://flyingmeat.com/download/VoodooPad-2.1.dmg<br/>
VoodooPad Lite 2.1: http://flyingmeat.com/download/VoodooPadLite-2.1.dmg<br/>
<br/>
VoodooPad 2.0.2: http://flyingmeat.com/download/VoodooPad-2.0.2.dmg<br/>
VoodooPad Lite 2.0.2: http://flyingmeat.com/download/VoodooPadLite-2.0.2.dmg<br/>
<br/>
VoodooPad 2.0.1: http://flyingmeat.com/download/VoodooPad-2.0.1.dmg<br/>
VoodooPad Lite 2.0.1: http://flyingmeat.com/download/VoodooPadLite-2.0.1.dmg<br/>
<br/>
VoodooPad 2.0: http://flyingmeat.com/download/VoodooPad2.dmg<br/>
VoodooPad Lite 2.0: http://flyingmeat.com/download/VoodooPadLite2.dmg<br/>
<br/>
VoodooPad 1.1.4 http://flyingmeat.com/x/VoodooPad1.1.4.dmg<br/>
VoodooPad Lite 1.1.4 http://flyingmeat.com/x/VoodooPadLite1.1.4.dmg<br/>
</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Hidden Preferences</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/1b17df8c-c750-01d9-0c13-c0cbe4c4e94a" rel="alternate" title="VoodooPad: Hidden Preferences" type="text/html" />
       <id>urn:uuid:1b17df8c-c750-01d9-0c13-c0cbe4c4e94a:13</id>
       <modified>2006-12-26T19:10:58Z</modified>
       <issued>2005-05-17T20:51:25Z</issued>
       <summary type="text/html"><html>Sometimes preferences will be built into VoodooPad without an interface to set them.  Usually these are turned on and off via the command line, invoked from within one of Terminal.app's windows.  Here are a few of them:<br/>
<br/>
_(If you are using VoodooPad Pro instead of VoodooPad, substitute_ *com.flyingmeat.VoodooPad_Pro* _for_ *com.flyingmeat.VoodooPad* _below.)_<br/>
<br/>
h3. Print Margins.<br/>
<br/>
If you want to set the margins to 1/4 inch all around, open up the terminal and type this:<br/>
defaults write com.flyingmeat.VoodooPad VPPrintMarginHack -string "{{0.25, 0.25}, {0.25, 0.25}}"<br/>
<br/>
The values are for left, right, top, bottom<br/>
To remove the margin, type:<br/>
defaults delete com.flyingmeat.VoodooPad VPPrintMarginHack<br/>
<br/>
h3. Setting an external editor that is not BBEdit (VP 2.1+ only)<br/>
<br/>
To use "SubEthaEdit":http://www.codingmonkeys.de/subethaedit/ type this in the terminal:<br/>
defaults write com.flyingmeat.VoodooPad odbeditor de.codingmonkeys.SubEthaEdit<br/>
<br/>
To use "TextMate":http://macromates.com/ type:<br/>
defaults write com.flyingmeat.VoodooPad odbeditor com.macromates.textmate<br/>
<br/>
h3. Single click to open a page from the drawer (2.1.2+ only)<br/>
<br/>
Quit VoodooPad, and type this in the terminal:<br/>
defaults write com.flyingmeat.VoodooPad singleClickBacklinksToOpen -bool YES<br/>
<br/>
Then relaunch and you should be good to go.<br/>
<br/>
h3. Keep VoodooPad from opening a new document on launch (2.5+ only)<br/>
<br/>
In some cases, for example when you quit VoodooPad without an open document, VP will try to create a blank document on relaunch.  Use this hidden pref to change the behavior.<br/>
<br/>
Quit VoodooPad, and type this in Terminal.app:<br/>
<br/>
defaults write com.flyingmeat.VoodooPad noNewDocumentOnStartup -bool YES<br/>
<br/>
h3. Show the old "Export As HTML..." menu option (2.5+ only)<br/>
<br/>
VoodooPad 2.5 has a new "Web Export" engine, replacing the older HTML export options.  However, if still want to use the older export options, you can bring them back with the following command: <br/>
<br/>
defaults write com.flyingmeat.VoodooPad showTwoOhHTMLExportMenu -bool YES<br/>
<br/>
h3. Requiring a prefix for AddressBook links. (VoodooPad 3.1+ only)<br/>
<br/>
If you don't like that the AddressBook links names automagically, you can make it so it only links up when a prefix is given, such as "ab:".  For example, say I would like to link to the AddressBook entry "Gus Mueller", but I wanted to have to type "ab:Gus Mueller" for the link to show up, this is what I would enter in the terminal:<br/>
<br/>
defaults write com.flyingmeat.VoodooPad ABPrefix "ab:"<br/>
<br/>
</html></summary>
     </entry>
  <entry>
       <title>FlySketch: Extra Scripts</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/5e635a12-d1f2-01d9-0622-c0cbe4c49347" rel="alternate" title="FlySketch: Extra Scripts" type="text/html" />
       <id>urn:uuid:5e635a12-d1f2-01d9-0622-c0cbe4c49347:13</id>
       <modified>2006-12-19T10:44:10Z</modified>
       <issued>2005-05-31T09:38:08Z</issued>
       <summary type="text/html"><html>h2. ~Extra Scripts<br/>
<br/>
These extra scripts can be placed in your ~/Library/Application Support/FlySketch/Workflow Scripts/ folder, to add additional actions to the Workflow Scripts toolbar button.<br/>
<br/>
As always, be careful when installing applications or scripts from third parties- they may contain malicious code who's sole purpose is to destroy your computer.  Any scripts downloaded from flyingmeat.com have been verified to be safe.<br/>
<br/>
* "Open in Eudora" script, by Stephen Dodd<br/>
http://flyingmeat.com/fs/contrib/flysketch/OpeninEudora.sh.zip<br/>
<br/>
* Upload to Flickr (10.4+ only)<br/>
Build an "Automator":http://www.apple.com/macosx/features/automator/ action you can use to upload your canvas to http://flickr.com/ <br/>
<br/>
* Upload to Blog<br/>
Upload an image to your weblog via the MetaWeblog API.</html></summary>
     </entry>
  <entry>
       <title>FlySketch: Upload to Blog</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/b56efb5a-a26b-01da-08d8-c0cbe4c4f980" rel="alternate" title="FlySketch: Upload to Blog" type="text/html" />
       <id>urn:uuid:b56efb5a-a26b-01da-08d8-c0cbe4c4f980:4</id>
       <modified>2006-12-19T01:13:41Z</modified>
       <issued>2006-02-20T15:50:45Z</issued>
       <summary type="text/html"><html>h2. Upload to Blog<br/>
<br/>
Here's a quick workflow script written in python to upload an image to your blog.<br/>
You'll have to change the parameters at the top to your specific settings, and besides that there are a couple of other requirements:<br/>
<br/>
a) Your weblog system needs to support the metaweblog api (such as movable type)<br/>
b) Your workflow image format needs to be set to "PNG"<br/>
<br/>
&amp;lt;code&amp;gt;#!/usr/bin/python<br/>
<br/>
import os<br/>
import sys<br/>
import xmlrpclib<br/>
<br/>
rpcurl      = "http://myhostname.com/mt/mt-xmlrpc.cgi"<br/>
blogurl     = "http://myhostname.com/mt/"<br/>
blogid      = "1"<br/>
username    = "admin"<br/>
password    = "mypassword"<br/>
<br/>
postTitle   = "FlySketch Image Upload"<br/>
<br/>
imagePath   = sys.argv[ 1]<br/>
<br/>
metaWeblog = xmlrpclib.Server(rpcurl).metaWeblog<br/>
<br/>
imageStruct = {}<br/>
imageStruct['type'] = 'image/png'<br/>
imageStruct['name'] = os.path.split(imagePath)[1]<br/>
imageStruct['bits'] = xmlrpclib.Binary(open(imagePath, 'rb').read())<br/>
<br/>
res = metaWeblog.newMediaObject(blogid, username, password, imageStruct)<br/>
# we just assume all was well.<br/>
<br/>
url = res['url']<br/>
<br/>
postStruct = {}<br/>
postStruct['title'] = postTitle<br/>
postStruct['description'] = """&amp;amp;lt;center&amp;gt;&amp;amp;lt;img src="%s" alt="%s" /&amp;gt;&amp;amp;lt;/center&amp;gt;""" % (url, postTitle)<br/>
<br/>
res = metaWeblog.newPost(blogid, username, password, postStruct, xmlrpclib.Boolean(True))<br/>
<br/>
os.popen('/usr/bin/open ' + blogurl)<br/>
&amp;lt;/code&amp;gt;<br/>
<br/>
</html></summary>
     </entry>
  <entry>
       <title>FlySketch: About FlySketch</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/bba1c8c6-fb14-01d9-06f5-c0cbe4c4c5ff" rel="alternate" title="FlySketch: About FlySketch" type="text/html" />
       <id>urn:uuid:bba1c8c6-fb14-01d9-06f5-c0cbe4c4c5ff:31</id>
       <modified>2006-12-11T11:18:11Z</modified>
       <issued>2005-07-22T17:57:25Z</issued>
       <summary type="text/html"><html>h2. About  FlySketch<br/>
<br/>
FlySketch is a unique new application that allows you to draw on top of just about anything on your screen.  Highlight words or paragraphs, draw shapes to help define what you want to say, and then drag and drop the results onto another application, or email it to a friend<br/>
<br/>
h3. Great uses for FlySketch:<br/>
<br/>
Some applications just don’t do what you want them to do.  Take TextEdit for example- it’s a great writing application, but it doesn’t come with any drawing tools, and the same can be said about many applications.  With FlySketch you can bring up a window without ever leaving TextEdit to create diagrams using the built in line and shape tools.  And then adding your creations to TextEdit is done with only the drag of a mouse.<br/>
<br/>
Or maybe you’re surfing the web, and you come across a great interface that you would like to study in detail later or maybe a picture that you know might not be around for much longer.  Pop up FlySketch, use the screen capture button and tuck it away to a special “web collections” folder that you added to the workflow actions.<br/>
<br/>
Workflow actions may also be created out of regular applications.  Simply drag an alias of Microsoft Entourage®  to the workflow folder, and when you choose its corresponding action in the workflow actions the image will be attached to a new email.  You can also apply the same trick to Corel Painter®, Adobe Photoshop®, Mail, or just about any other application that allows you to drag images on to its application icon.<br/>
<br/>
<br/>
h3. Getting images out of FlySketch is a piece of cake.<br/>
<br/>
To place an image into an application, just hold down the command key and drag on the canvas to pull the image off.  Let go of mouse when you have your cursor positioned over your destination.  If you would like the image to have a transparent background when pasted, hold down command-option while you drag the image.</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Trigger Examples</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/6e981020-ed40-01da-0879-c0cbe4c48c72" rel="alternate" title="VoodooPad: Trigger Examples" type="text/html" />
       <id>urn:uuid:6e981020-ed40-01da-0879-c0cbe4c48c72:14</id>
       <modified>2006-12-06T15:35:48Z</modified>
       <issued>2006-05-26T22:19:55Z</issued>
       <summary type="text/html"><html>h2. Trigger Examples<br/>
<br/>
*A trigger that creates a new page based on the current date when a document opens*<br/>
<br/>
&amp;lt;carea class="textareaCode60"&amp;gt;-- assign this to the "Document did open" event.<br/>
pageName = os.date("%Y.%m.%d", os.time())<br/>
triggerDictionary.document:openPageWithTitle(pageName)&amp;lt;/carea&amp;gt;<br/>
<br/>
*A simple trigger that you could use to modify the default text on a new page*<br/>
<br/>
&amp;lt;carea class="textareaCode300"&amp;gt;-- assign this to the "Page created" event<br/>
newPage = triggerDictionary.item<br/>
-- check and see if we are dealing with a regular page type.<br/>
-- if it's not a regular page type, then bail out on this trigger.<br/>
if (newPage:type() ~= VPPageType) then<br/>
    return<br/>
end<br/>
 <br/>
-- we grab the contents of the page<br/>
attributedString = newPage:dataAsAttributedString()<br/>
 <br/>
-- using objc_mutableString() insteadof mutableString() will return an objective-c object which we can then<br/>
-- call a function on, instead of a lua string.<br/>
attributedString:objc_mutableString():appendString("\nThis is an addition to the new page text.")<br/>
attributedString:objc_mutableString():appendString("\nThis new page's name is '" .. newPage:displayName() .. "'")<br/>
 <br/>
-- and now we set the value in the new page.<br/>
newPage:setDataAsAttributedString(attributedString)&amp;lt;/carea&amp;gt;<br/>
<br/>
<br/>
*A WebServer trigger example:*<br/>
<br/>
&amp;lt;carea class="textareaCode250"&amp;gt;-- assign this to the "Web server will send page" event<br/>
 <br/>
-- check and see if we are dealing with a regular page type.<br/>
-- if it's not a regular page type, then return.<br/>
if (triggerDictionary.item:type() ~= VPPageType) then<br/>
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;return<br/>
end<br/>
 <br/>
-- grab what's going to be sent out to the browser (this is the raw html)<br/>
output = triggerDictionary.output<br/>
 <br/>
-- look for the key $lookingFor$ , and replace it with the string "replaceValue"<br/>
-- notice that we assign the value back to the trigger dictionary.  This way, VoodooPad<br/>
-- gets the updated value.<br/>
triggerDictionary.output = output:replace("$lookingFor$", "replaceValue")&amp;lt;/carea&amp;gt;<br/>
<br/>
<br/>
*A Trigger to update a page listing all the pages in the document:*<br/>
<br/>
&amp;lt;carea class="textareaCode250"&amp;gt;-- assign this to the "Page Deleted" and "Page Created" events.<br/>
-- the index is created in a page named "Page Index"<br/>
indexPageName = "Page Index"<br/>
document = triggerDictionary.document<br/>
list = "All the pages in this document:\n"<br/>
for key in objc.values(document:keys()) do<br/>
    page = document:pageForKey(key)<br/>
    list = list .. page:displayName() .. "\n"<br/>
end<br/>
document:createNewPageWithName(indexPageName) -- noop if it's already around.<br/>
pageData = document:pageForKey(indexPageName)<br/>
attributedString = pageData:dataAsAttributedString()<br/>
attributedString:objc_mutableString():setString(list)<br/>
pageData:setDataAsAttributedString(attributedString)<br/>
&amp;lt;/carea&amp;gt;<br/>
<br/>
<br/>
*Replace the template placeholder $clipboard$ with the text on the clipboard:*<br/>
<br/>
&amp;lt;carea class="textareaCode400"&amp;gt;-- assign this to the "Page created" event<br/>
newPage = triggerDictionary.item<br/>
-- check and see if we are dealing with a regular page type.<br/>
-- if it's not a regular page type, then bail out on this trigger.<br/>
if (newPage:type() ~= VPPageType) then<br/>
    return<br/>
end<br/>
-- we grab the contents of the page<br/>
attributedString = newPage:dataAsAttributedString()<br/>
-- grab the clipboard<br/>
p = objc.class("NSPasteboard"):generalPasteboard()<br/>
t = p:stringForType("NSStringPboardType")<br/>
range = objc.luaToNSRange({location=0, length=attributedString:objc_mutableString():length()})<br/>
if (t ~= nil) then<br/>
    count = attributedString:objc_mutableString():replaceOccurrencesOfString_withString_options_range_("$clipboard$", t, 0, range)<br/>
else<br/>
    -- otherwise just make the $clipboard$ placeholder an empty string<br/>
    attributedString:objc_mutableString():replaceOccurrencesOfString_withString_options_range_("$clipboard$", "", 0, range)<br/>
end<br/>
-- and now we set the value in the new page.<br/>
newPage:setDataAsAttributedString(attributedString)&amp;lt;/carea&amp;gt;<br/>
</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Gems</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/81c0220a-83ea-01db-0f39-c0cbe4c4b42b" rel="alternate" title="VoodooPad: Gems" type="text/html" />
       <id>urn:uuid:81c0220a-83ea-01db-0f39-c0cbe4c4b42b:4</id>
       <modified>2006-12-04T14:57:41Z</modified>
       <issued>2006-12-04T14:55:16Z</issued>
       <summary type="text/html"><html>h2. VoodooPad Gems, or otherwise known as "Cool Tips"<br/>
<br/>
h3. Moving text between open windows.<br/>
<br/>
If you'd like to drag and drop text from window a, to window b, and have the text removed from window a after the drop, hold down the command key.  If you just do a normal drag and drop it will be copied instead of moved.</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: New in 3.1</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/7df7bd64-3a0b-01db-0eee-c0cbe4c4f9b3" rel="alternate" title="VoodooPad: New in 3.1" type="text/html" />
       <id>urn:uuid:7df7bd64-3a0b-01db-0eee-c0cbe4c4f9b3:20</id>
       <modified>2006-11-29T04:11:57Z</modified>
       <issued>2006-09-01T15:44:57Z</issued>
       <summary type="text/html"><html>h2. New in VoodooPad 3.1:<br/>
<br/>
(If you are new to VoodooPad, or are just curious; be sure to check out what's new in 3.0 as well)<br/>
<br/>
h3. Unified Window look, and Drawers are back<br/>
<br/>
After receiving tons off feedback we discovered something; people really liked the old drawers and the way the windows used to look.  So now you can have it both ways! If you like the darker "Pro" look, you can turn that on in the prefs. Otherwise you get the 100% all natural, no-preservatives traditional “Unified” windows.  And if you really liked the drawers or you would like to play with them to see how the other half lives, you can flip that option on in the prefs as well.<br/>
<br/>
Our new motto is: "We're not changing our mind, we're just agile".<br/>
<br/>
h3. New preferences pane for opening links in tabs and windows<br/>
<br/>
We got a lot of feedback about opening pages in new windows too, and a few of you wanted them to open up in new tabs all the time as well.  So for VoodooPad 3.1 a new preference pane has been added which allows you to control where new pages are opened up; in the same view, in a new tab, or in a new window.<br/>
<br/>
h3. Text Zoom<br/>
<br/>
VoodooPad as a presentation tool?  It’s been done on multiple occasions.  But man, sometimes that text is just a little too small to see from the back of the room...<br/>
<br/>
Text Zoom to the rescue!<br/>
<br/>
Located under the View menu, you can now control magnification of what you’re looking at.  Too big?  Shrink it down.  Too small?  Blow it up.<br/>
<br/>
h3. Sketch Improvements<br/>
<br/>
Want to draw some lines on an image you’ve already got in a VoodooPad page?  Now you can select an inline image and bring it up in the sketch sheet to edit it.<br/>
<br/>
h3. Links to run plugins.<br/>
<br/>
There are some folks out there with some crazy ideas.  They want to click on a link and have it run a plugin, and _make stuff happen_.<br/>
<br/>
It seems like it could be useful, who am I to say otherwise?  (Besides being the guy who wrote VoodooPad and having the ability to say “no!” that is…)<br/>
<br/>
So VoodooPad 3.1 includes a new url scheme “runplugin:”.  It’s pretty simple.<br/>
<br/>
Let’s say you made your own little script plugin named “Send Page to Entourage".  You could then make a custom url link like so: “runplugin:Send Page to Entourage” and with an alias of “Ent”.  Stay with me here...<br/>
<br/>
Now you can type Command-Shift-O to bring up the “Open Page” sheet, type “ent”, and have your plugin run automagically.  You can also add on parameters to the custom url, and it will be passed along to your script plugin.  How cool is that?<br/>
<br/>
Yes, it’s very geeky.  The theory is that some of you will be able to do some cool things with this and hopefully share it with everyone else.<br/>
<br/>
h3. New document idle trigger for VoodooPad Pro<br/>
<br/>
Have you got a trigger that you want to run when you aren’t doing anything?  Maybe commit your document to a Subversion repository, or something else?  With a new event named “Document went idle”, VoodooPad Pro can run a trigger to act on your very wishes.  After 15 seconds of you doing nothing at the computer, it’ll run.<br/>
<br/>
If you would like to change the timeout to something other than 15 seconds, you can do so with the following defaults command in Terminal.app:<br/>
<br/>
defaults write com.flyingmeat.VoodooPad_Pro documentIdleTimeoutSeconds 30<br/>
<br/>
Where the value 30 would make it time out at 30 seconds.<br/>
<br/>
h3. New "Send To" plugin.<br/>
<br/>
Take a copy of a page and send it to another application or folder.<br/>
<br/>
Place aliases of applications, shell scripts, or aliases to folders in the ~/Library/Application Support/VoodooPad/Send To/ folder, and it will magically show up in the Plugin menu.  You can then call on that menu item and the current page will be sent to it!  And for things like audio files or PDFs it will be copied out of VoodooPad and handed to your app/script/whatever.<br/>
<br/>
If you'd like for the current page to be sent as plain text to your "Send To" item, just hold down the option key when calling upon it.<br/>
<br/>
h3. New "Record Audio" plugin.<br/>
<br/>
Ok, this really happened in VoodooPad 3.0.2 but we thought it deserved its own headline here.<br/>
<br/>
If you have a microphone hooked up to your mac, or you have one of those fancy new intel machines with the microphone built in, you can now record audio notes for yourself and keep them inside VoodooPad for listening to later.  You can also combine this with the new "Send To" plugin to record something, and then send it off to your favorite email application to share with other folks.<br/>
<br/>
h3. Bug fixes, little things, and performance enhancements<br/>
<br/>
* VoodooPad is slightly faster at importing documents and xml files.  It's also faster at exporting as xml as well.<br/>
* If a bad search index is found, it's deleted and rebuilt instead of just VP beeping at you.<br/>
* Palette windows no longer float above all other windows.<br/>
* When importing files, you are now given the option to skip all duplicates when a conflicting page name is found.<br/>
* Fixed a crasher when embedding a file with drag and drop<br/>
* $clipboard$, and $fromPage$ can be used now as a variable in the new page template.<br/>
* New lua functions- vp.formatViaMarkdown(string) and vp.formatViaTextile(string).<br/>
* The new page sheet now has an "open in new tab" button, and auto fills the name box with "Untitled", "Untitled 2", etc..<br/>
* New preference to use smart quotes when editing text.<br/>
* Added a bit of eye candy when switching tabs in the preferences window.<br/>
* The voodoopad: bookmarklet now accepts some new parameters, such as "pageName" and "addDate".<br/>
* Holding down the option key while clicking the categories toolbar button will add the current page to the currently selected category.<br/>
* The plugin menu now shows up in the contextual menu when editing text.  You can right click on a link, and the Send To plugin will act on what is behind the link instead of the current page.<br/>
</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Andy's Web Export Category Moving</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/ffd0144a-7a5b-01db-1622-c0cbe4c4a00b" rel="alternate" title="VoodooPad: Andy's Web Export Category Moving" type="text/html" />
       <id>urn:uuid:ffd0144a-7a5b-01db-1622-c0cbe4c4a00b:8</id>
       <modified>2006-11-25T21:59:16Z</modified>
       <issued>2006-11-22T11:02:29Z</issued>
       <summary type="text/html"><html>h2. Andy's Web Export Category Moving script<br/>
<br/>
This is a script, written in Ruby, that will parse the meta.xml file that is created during a web export and move the rendered html files into folders named for the VoodooPad categories. These folders are created elsewhere, like in the preflight script.<br/>
<br/>
h3. Usage<br/>
<br/>
I have this script in my web export plugin and have modified my Info.plist to run it as a postflight script. Remember to make the script executable.<br/>
<br/>
h4. parseMetaXml.rb<br/>
<br/>
&amp;lt;carea class="textareaCodeLarge"&amp;gt;#!/usr/bin/env ruby -w<br/>
# for use in web export plugin<br/>
# written by Andy Fragen &amp;lt;andy@thefragens.com&amp;gt;<br/>
 <br/>
require 'rexml/document'<br/>
require 'fileutils'<br/>
include REXML<br/>
include FileUtils<br/>
 <br/>
c = 0<br/>
dir = ENV['VPWebExportOutputDirectory'] + "/"<br/>
 <br/>
meta = dir + ("meta.xml")<br/>
file = File.new(meta)<br/>
doc = Document.new(file)<br/>
num = XPath.match(doc, "//page")<br/>
files = XPath.match(doc, "//fileName")<br/>
subcat = XPath.match(doc, "//category")<br/>
cat = XPath.match(doc, "//categories")<br/>
 <br/>
for i in 0..(num.size-1)<br/>
  if cat[i].size == 1<br/>
    c=c+1<br/>
    next <br/>
  end<br/>
  newDir = dir + subcat[i-c].text<br/>
  fp = subcat[i-c].text + ("/".concat(files[i].text))<br/>
  fpOld = dir + (files[i].text)<br/>
  fpNew = dir + fp<br/>
 <br/>
  if File.exists?(fpOld)<br/>
    if File.exists?(newDir)<br/>
      mv(fpOld, fpNew)<br/>
    else<br/>
      next<br/>
    end<br/>
  else<br/>
    next<br/>
  end<br/>
end<br/>
&amp;lt;/carea&amp;gt;<br/>
</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Poor Man's AppleScript HTML Export</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/42444f08-3610-01da-10f7-c0cbe4c4e0d3" rel="alternate" title="VoodooPad: Poor Man's AppleScript HTML Export" type="text/html" />
       <id>urn:uuid:42444f08-3610-01da-10f7-c0cbe4c4e0d3:7</id>
       <modified>2006-11-22T23:18:44Z</modified>
       <issued>2005-10-05T19:24:02Z</issued>
       <summary type="text/html"><html>h2. Poor Man's AppleScript HTML Export<br/>
<br/>
This example AppleScript will talk to the first document, gather all the pages, and then export them as pre-formatted html to the folder specified in the variable "outFolder"<br/>
<br/>
&amp;lt;carea class="textareaCodeLarge"&amp;gt;-- this is the path to the folder you would like to write out to.<br/>
set outFolder to "srv:Users:gus:Desktop:html"<br/>
tell application "VoodooPad"<br/>
    repeat with i from 1 to number of items in pages of document 1<br/>
        set s to text of page i of document 1<br/>
        set n to name of page i of document 1<br/>
        <br/>
        set s to my findAndReplace("&amp;amp;", "&amp;amp;amp;", s)<br/>
        set s to my findAndReplace("&amp;lt;", "&amp;amp;lt;", s)<br/>
        set s to my findAndReplace("&amp;gt;", "&amp;amp;gt;", s)<br/>
        <br/>
        set outfile to outFolder &amp;amp; ":" &amp;amp; n &amp;amp; ".html"<br/>
        set outText to "&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&amp;gt;&amp;lt;html xmlns="http://www.w3.org/1999/xhtml"&amp;gt;&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;Here the title&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;&amp;lt;pre&amp;gt;" &amp;amp; s &amp;amp; "&amp;lt;/pre&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;"<br/>
        <br/>
        tell application "Finder"<br/>
            set f to outfile<br/>
            set nref to open for access file f with write permission<br/>
            set eof nref to 0<br/>
            write outText to file f<br/>
            close access nref<br/>
        end tell<br/>
    end repeat<br/>
end tell<br/>
-- shamelessly stolen from http://bbs.applescript.net/viewtopic.php?id=13008<br/>
on findAndReplace(tofind, toreplace, TheString)<br/>
    set ditd to text item delimiters<br/>
    set text item delimiters to tofind<br/>
    set textItems to text items of TheString<br/>
    set text item delimiters to toreplace<br/>
    if (class of TheString is string) then<br/>
        set res to textItems as string<br/>
    else -- if (class of TheString is Unicode text) then<br/>
        set res to textItems as Unicode text<br/>
    end if<br/>
    set text item delimiters to ditd<br/>
    return res<br/>
end findAndReplace&amp;lt;/carea&amp;gt;</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Files and Documents</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/248431b4-ccaa-01da-044b-c0cbe4c49273" rel="alternate" title="VoodooPad: Files and Documents" type="text/html" />
       <id>urn:uuid:248431b4-ccaa-01da-044b-c0cbe4c49273:6</id>
       <modified>2006-11-01T10:08:01Z</modified>
       <issued>2006-04-15T11:03:29Z</issued>
       <summary type="text/html"><html>h2. Files and Documents<br/>
<br/>
You can create several pages of text with VoodooPad, and like a word processor, when you save all the pages that you've created go into the single document.<br/>
<br/>
However, unlike the pages in a word processor which represent printed pages, VoodooPad's pages represent ideas. They grow as large as needed to accommodate the text you add for the idea that the page represents. As long as you keep entering text in the page, it keeps growing.<br/>
<br/>
To understand VoodooPad's notion of a document, let's start by opening the "LinksAndPages.vpdoc" document that we saved at the end of the last topic. The easiest way to do this in Mac OS X is to first make VoodooPad the active application. Do this by clicking on it's icon in the Dock. Then choose the File-&amp;gt;Open Recent-&amp;gt;LinksAndPage.vpdoc menu item. If you don't see LinksAndPage.vpdoc within that menu, it may have been discarded from the Recent Items list by other new documents that you've opened since you worked with it.<br/>
<br/>
When the document has opened, hold down the command key and click the document icon in the Title bar of the window. This should open a drop-down menu showing the directories in the path to the document as menu item choices. If you drag to, and click on, one of the directories in the menu, of course, that directory will open in a Finder window, illustrating the fact that our VoodooPad document is similar in most ways to any other document or file on the system.<br/>
<br/>
There is another way that VoodooPad are dissimilar to a word processor's pages. Within the VoodooPad document there is no "natural" sequence of pages. Like the web, any VoodooPad page is a click away on an appropriate hyperlink. And, of course, this is a natural way to organize ideas. Any given page is a single page (or click) away from any other page on which there is a link to it.<br/>
<br/>
This is what helps VoodooPad organize our minds. As we write about an idea or concept on a named page, we naturally include words about related ideas on that page. The words for those related ideas can be made into pages of their own, in which case they are automatically related through links from the original page.<br/>
<br/>
Where VoodooPad's pages represent ideas and are easy to physically relate to other pages for closely related ideas, a word processor uses a completely different model for pages. A word processor "page" is analogous to the printed page within a printed document. It is of a fixed size and comes in a predetermined sequence within the document. The printing of a word processor document is the natural consequence of creating such a document.<br/>
<br/>
In the last topic, all the links that we created were to pages within the document that contained the link. This is convenient and works well for some situations. However, as our use of VoodooPad grows and we save several documents, it becomes increasingly useful to link between them.<br/>
<br/>
To establish a link from one VoodooPad document to another, it helps to think of the source document which will contain the link we're trying to establish, and the target document which will be where we end up when we click the link.<br/>
<br/>
First, make sure you have two documents open in VoodooPad, and make sure they have been saved.  Next, click and hold the proxy icon in the title bar of the source document (the proxy icon is the little graphic in the toolbar next to the name of the document).  Drag the proxy icon into a page of the target document.  VoodooPad will then ask if you want pick a page in the document, or just link to the whole document.  Choose "Pick Page".<br/>
<br/>
A new sheet will come up asking for the name of the page you want to link to.  Find your page in the combo box, and press "Insert".  Tada!  You've successfully created an inter-document link.<br/>
<br/>
Next: Importing and Exporting.<br/>
</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: GTD</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/66857fba-4a5d-01db-0c1c-c0cbe4c4de4e" rel="alternate" title="VoodooPad: GTD" type="text/html" />
       <id>urn:uuid:66857fba-4a5d-01db-0c1c-c0cbe4c4de4e:4</id>
       <modified>2006-10-29T21:02:46Z</modified>
       <issued>2006-09-22T10:11:35Z</issued>
       <summary type="text/html"><html>h2. GTD, aka "Getting Things Done"<br/>
<br/>
Share your scripts or plugins that help you get along in the GTD world.<br/>
<br/>
<br/>
Not Scripts perse, but here's a collection of resources on GTD and VoodooPad that I've come across in my search for the perfect VPgtd solution. <br/>
<br/>
"A Rough Kinkless VoodooPad Sketch":http://flyingmeat.com/board/viewtopic.php?p=2517&amp;amp;sid=e0ee431cdd1576e2a0466e0206706110#2517<br/>
<br/>
"An Alpah GTD Plugin":http://www.flyingmeat.com/board/viewtopic.php?t=204<br/>
<br/>
"Action Item Script":http://www.flyingmeat.com/board/viewtopic.php?t=742<br/>
<br/>
"Warmed Yet Streamlined: vpGTD":http://mistercharlie.co.uk/blog/getting-things-done-with-voodoopad</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Trouble tickets / bugs</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/f2b06f12-48c4-01db-0735-c0cbe4c4e42e" rel="alternate" title="VoodooPad: Trouble tickets / bugs" type="text/html" />
       <id>urn:uuid:f2b06f12-48c4-01db-0735-c0cbe4c4e42e:8</id>
       <modified>2006-09-20T13:38:34Z</modified>
       <issued>2006-09-20T09:27:46Z</issued>
       <summary type="text/html"><html>If you've got a bug you would like to let us know about, please use the bug reporter here:<br/>
<br/>
http://www.flyingmeat.com/pyr/</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: FAQ</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/a646a22a-c753-01d9-1489-c0cbe4c4c865" rel="alternate" title="VoodooPad: FAQ" type="text/html" />
       <id>urn:uuid:a646a22a-c753-01d9-1489-c0cbe4c4c865:31</id>
       <modified>2006-09-18T11:43:01Z</modified>
       <issued>2005-05-17T21:16:47Z</issued>
       <summary type="text/html"><html>h2. FAQ (Frequently Asked Questions)<br/>
<br/>
Here are a set of questions that seem to get asked a bit.  They are asked often enough to warrant their own entry on this page- maybe you will find an answer here.<br/>
<br/>
h3. How can I open a single page in a new window?<br/>
<br/>
Hold down the command key while clicking on a link.<br/>
<br/>
h3. I don't like a certain menu shortcut, or it doesn't have one.  How do I make/change it?<br/>
<br/>
If you are running 10.3 or later, you can assign or change a menu shortcut in the "Keyboard Shortcuts" tab of the Keyboard &amp;amp; Mouse system preference pane.<br/>
<br/>
h3. Does VoodooPad work with "Spotlight":http://www.apple.com/macosx/features/spotlight/?<br/>
<br/>
VoodooPad 2.1 comes with a bundled Spotlight plugin.  So yes, VoodooPad will work with Spotlight in version 2.1.<br/>
<br/>
h3. Can VoodooPad resize images when they are pasted?<br/>
<br/>
Currently this is not possible.<br/>
<br/>
h3. I lost my registration number.  How can I get it back?<br/>
<br/>
Visit our handy "serial number page":http://www.flyingmeat.com/voodoopad/serial/ and we'll send it to you.<br/>
<br/>
h3. Does VoodooPad support page anchors / can I link to a particular paragraph in a page?<br/>
<br/>
Currently this is not possible, but it is something we are investigating.<br/>
<br/>
h3. Can I pay with PayPal?<br/>
<br/>
Yes.<br/>
<br/>
h3. Does VoodooPad support versioning?<br/>
<br/>
Not at this time.<br/>
<br/>
h3. Does VoodooPad support Textile / Markdown formatting?<br/>
<br/>
VoodooPad does not support Textile or Markdown formatting.<br/>
<br/>
The primary reason for this is because things are supposed to be easy in VoodooPad.  Command-b makes text bold, command-i italicizes text, etc... just like every other writing application you use on your Macintosh.  While textile/markdown do offer some interesting features, they are not in line with what VoodooPad is about. <br/>
<br/>
h3. Can I "unlink" a word?<br/>
<br/>
Yes, VoodooPad 2.1 now supports the ability to unlink a single instance of a page link.<br/>
<br/>
h3. Can I rename a page?<br/>
<br/>
Yes, you can.  Navigate to the page you want to rename, and then choose "Document and Page Inspector" from the Window-&amp;amp;gt;Palettes menu.  A window will appear where you can change properties about the page, including the page name.  (The one exception is when you are trying to rename your default page (normally "index").  You can't currently change the name of that one)<br/>
<br/>
h3. How do I open a page in a new window, when I'm in browser mode?<br/>
<br/>
Hold down the command key when you click on a link.<br/>
<br/>
h3. What type of encryption does VoodooPad use?<br/>
<br/>
"The Blowfish Encryption Algorithm.":http://www.schneier.com/blowfish.html<br/>
<br/>
h3. How do I stop words from linking on just one page?<br/>
<br/>
Click on the info toolbar button of the page you want links to go away on, and then uncheck the button "Highlight linked words"<br/>
<br/>
h3. What's the difference between a page and a pad? What is considered a "document"?<br/>
<br/>
A page is a single entry- a single window that you can type in. Multiple pages go in a pad, like a notebook. A pad and a document are the same thing- a collection of pages. A pad can also contain file links that you dropped in from the Finder. The document is stored in a file like a world processing application would, and it usually ends with the extension .vdoc<br/>
<br/>
h3. Do I have to mash words together to make a link?<br/>
<br/>
No, you do not. You can link a single word, with or without capitalization just as easily as a mashed word, it just doesn't appear underlined before you make it a link. To make a new page with the word (or phrase), just select the text and choose "Make Link" from the Edit menu, or type Command-L.<br/>
<br/>
h3. Why can't I underline or change the font color?<br/>
<br/>
VoodooPad uses colorized and underlined text to denote a link, so it would be confusing if you came across underlined text that does not function as a link.  However you can change this behavior by opening up the Preferences and under the Appearance section turn on the option "Allow manual underlining and font color changes".<br/>
<br/>
h3.  Is there any revision control in VoodooPad like a full history of changes?<br/>
<br/>
No, there is not.<br/>
<br/>
h3. What is the difference between VoodooPad and VoodooPad Lite?<br/>
<br/>
| Feature | VoodooPad Lite | VoodooPad |<br/>
| Inline editing and realtime linking of pages | • | • |<br/>
| Unicode, Rich Text support, and image embedding | • | • |<br/>
| Auto-complete page opening | • | • |<br/>
| Save / Export to iPod | • | • |<br/>
| Links to pages in another document |  | • |<br/>
| Spotlight support |  | • |<br/>
| Categories/tag support |  | • |<br/>
| AppleScript support |  | • |<br/>
| Encryption |  | • |<br/>
| Sketch |  | • |<br/>
| Plug-In Support |  | • |<br/>
| Export as HTML or RTFD |  | • |<br/>
| Save pages as Microsoft Word documents |  | • |<br/>
| View recently updated pages |  | • |<br/>
| Clippings folder for frequently used bits of text |  | • |<br/>
<br/>
h3. What are the valid options for the date format field in the Preferences?<br/>
<br/>
| Specifier | Description |<br/>
| %% | A '%' character |<br/>
| %a | Abbreviated weekday name |<br/>
| %A | Full weekday name |<br/>
| %b | Abbreviated month name |<br/>
| %B | Full month name |<br/>
| %c | Shorthand for “%X %x", the locale format for date and time |<br/>
| %d | Day of the month as a decimal number (01-31) |<br/>
| %e | Same as %d but does not print the leading 0 for days 1 through 9 (unlike strftime(), does not print a leading space) |<br/>
| %F | Milliseconds as a decimal number (000-999) |<br/>
| %H | Hour based on a 24-hour clock as a decimal number (00-23) |<br/>
| %I | Hour based on a 12-hour clock as a decimal number (01-12) |<br/>
| %j | Day of the year as a decimal number (001-366) |<br/>
| %m | Month as a decimal number (01-12) |<br/>
| %M | Minute as a decimal number (00-59) |<br/>
| %p | AM/PM designation for the locale |<br/>
| %S | Second as a decimal number (00-59) |<br/>
| %w | Weekday as a decimal number (0-6), where Sunday is 0 |<br/>
| %x | Date using the date representation for the locale, including the time zone (produces different results from strftime()) |<br/>
| %X | Time using the time representation for the locale (produces different results from strftime()) |<br/>
| %y | Year without century (00-99) |<br/>
| %Y | Year with century (such as 1990) |<br/>
| %Z | Time zone name (such as Pacific Daylight Time; produces different results from strftime()) |<br/>
| %z | Time zone offset in hours and minutes from GMT (HHMM) | <br/>
<br/>
</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Lua Plugin Snippets</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/f6688c9a-6880-01da-1072-c0cbe4c49e38" rel="alternate" title="VoodooPad: Lua Plugin Snippets" type="text/html" />
       <id>urn:uuid:f6688c9a-6880-01da-1072-c0cbe4c49e38:46</id>
       <modified>2006-08-31T21:12:52Z</modified>
       <issued>2005-12-08T22:56:46Z</issued>
       <summary type="text/html"><html>h2. Lua  Plugin Snippets<br/>
<br/>
Besides these examples, you'll want to read http://flyingmeat.com/fs/contrib/voodoopad/VPPlugin.h for information on what is available.  It's just an Objective-C header file, but it's what we've got to go on for now :)<br/>
<br/>
h3. List all the page names in the current document to the current page.<br/>
<br/>
&amp;lt;carea class="textareaCode150"&amp;gt;thelist = ""<br/>
textView = windowController:textView()<br/>
for key in objc.values(document:keys()) do<br/>
    page = document:vpDataForKey(key)<br/>
    thelist = thelist .. page:displayName() .. "\n"<br/>
end<br/>
 <br/>
textView:insertText(thelist)&amp;lt;/carea&amp;gt;&amp;lt;br/&amp;gt;<br/>
&amp;amp;#187; &amp;lt;a href="x-voodoopad-scriptplugin:http://www.flyingmeat.com/voodoopad/script_plugins/list_pages_in_document.lua"&amp;gt;install&amp;lt;/a&amp;gt;<br/>
<br/>
h3. Creating a new page named "Lua Rocks"<br/>
<br/>
&amp;lt;carea class="textareaCode100"&amp;gt;document = windowController:document()<br/>
textView = windowController:textView()<br/>
document:createNewVPDataWithKey("Lua Rocks")<br/>
textView:insertText("Lua Rocks")&amp;lt;/carea&amp;gt;<br/>
<br/>
h3. Printing out the contents of the index page<br/>
<br/>
&amp;lt;carea class="textareaCodeSmall"&amp;gt;page = document:pageForKey("index")<br/>
pageText = page:dataAsAttributedString():string()<br/>
vpconsole(pageText)&amp;lt;/carea&amp;gt;<br/>
<br/>
h3. Lookup the page data for the current page, and change it's contents.<br/>
<br/>
(Note: this is not undoable)<br/>
<br/>
&amp;lt;carea class="textareaCodeSmall"&amp;gt;currentPageKey = windowController:key()<br/>
pageData = document:pageForKey(currentPageKey)<br/>
attributedString = pageData:dataAsAttributedString()<br/>
attributedString:objc_mutableString():setString("It's all gone!")<br/>
pageData:setDataAsAttributedString(attributedString)&amp;lt;/carea&amp;gt;<br/>
<br/>
h3. Tell the text view to select all, and then insert the text "Hi".<br/>
<br/>
&amp;lt;carea class="textareaCodeMini"&amp;gt;windowController:textView():selectAll()<br/>
windowController:textView():insertText("Hi")&amp;lt;/carea&amp;gt;<br/>
<br/>
h3. Display a dialog box.<br/>
<br/>
This example displays a dialog box with a default button that says "Go Away"<br/>
<br/>
&amp;lt;carea class="textareaCodeMini"&amp;gt;objc.nsAlert("Hello", "This is a message", "Go Away", nil, nil)&amp;lt;/carea&amp;gt;<br/>
&amp;lt;!--<br/>
The previous example works just fine for me- can you send me a bug report about it?  gus@flyingmeat.com<br/>
<br/>
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;CAVEAT :&amp;lt;/b&amp;gt; The following code does not appear to work with Mac OS X 10.4 (Tiger). On these systems, you can use the following Lua function instead.&amp;lt;/p&amp;gt;<br/>
&amp;lt;carea class="textareaCode300"&amp;gt;NSA_BUTTON1_PRESSED = 1000;<br/>
NSA_BUTTON2_PRESSED = 1001;<br/>
NSA_BUTTON3_PRESSED = 1002;<br/>
 <br/>
-- produce an objective-c NSAlert Dialog<br/>
function nsAlert(title, message, b1, b2, b3)<br/>
    local nsaClass  = objc:class("NSAlert")<br/>
    local nsaObject = nsaClass:alloc():init():autorelease()<br/>
    nsaObject:setMessageText(title)<br/>
    nsaObject:setInformativeText(message)<br/>
    nsaObject:addButtonWithTitle(b1)<br/>
    nsaObject:addButtonWithTitle(b2)<br/>
    nsaObject:addButtonWithTitle(b3)<br/>
    return nsaObject:runModal()    <br/>
end&amp;lt;/carea&amp;gt;<br/>
--&amp;gt;<br/>
<br/>
<br/>
h3. Highlight the selected text yellow.<br/>
<br/>
(this will work best as a plugin, since the Run as Lua Script option deselects the currently selected text before running the script)<br/>
<br/>
&amp;lt;carea class="textareaCodeSmall"&amp;gt;textView = windowController:textView()<br/>
color = objc.class("NSColor"):yellowColor()<br/>
textView:textStorage():addAttribute_value_range_("NSBackgroundColor", color, textView:selectedRange())&amp;lt;/carea&amp;gt;&amp;lt;br/&amp;gt;<br/>
&amp;amp;#187; &amp;lt;a href="x-voodoopad-scriptplugin:http://www.flyingmeat.com/voodoopad/script_plugins/highlight_selected_text_yellow.lua"&amp;gt;install&amp;lt;/a&amp;gt;<br/>
<br/>
<br/>
h3. Change the font for the current page to Monaco 10<br/>
<br/>
&amp;lt;carea class="textareaCode150"&amp;gt;textView = windowController:textView()<br/>
Font = objc.class("NSFont")<br/>
f = Font:fontWithName_size("Monaco", 10)<br/>
Dict = objc.class("NSMutableDictionary")<br/>
attrs = Dict:alloc():init():autorelease()<br/>
attrs:setObject_forKey(f, "NSFont")<br/>
range = objc.luaToNSRange({location=0, length=textView:textStorage():length()})<br/>
textView:textStorage():setAttributes_range(attrs, range)&amp;lt;/carea&amp;gt;<br/>
<br/>
h3. Change the font for the current selection.<br/>
<br/>
&amp;lt;carea class="textareaCodeMini"&amp;gt;textView = windowController:textView()<br/>
font = objc.class("NSFont"):fontWithName_size("Helvetica", 14)<br/>
textView:textStorage():addAttribute_value_range_("NSFont", font, textView:selectedRange())&amp;lt;/carea&amp;gt;<br/>
<br/>
h3. List all the pages in the document with a meta value named "todo".<br/>
<br/>
(Metas are a feature only available in VoodooPad Pro)<br/>
<br/>
&amp;lt;carea class="textareaCode"&amp;gt;textView = windowController:textView()<br/>
list = "My todo pages list:\n"<br/>
for key in objc.values(document:keys()) do<br/>
    page = document:pageForKey(key)<br/>
    if (page:metaValueForKey("todo") ~= nil) then<br/>
        list = list .. page:displayName() .. "\n"<br/>
    end<br/>
end<br/>
textView:insertText(list)&amp;lt;/carea&amp;gt;&amp;lt;br/&amp;gt;<br/>
&amp;amp;#187; &amp;lt;a href="x-voodoopad-scriptplugin:http://www.flyingmeat.com/voodoopad/script_plugins/list_pages_with_todo_meta.lua"&amp;gt;install&amp;lt;/a&amp;gt;<br/>
<br/>
<br/>
h3. Look for the word "@todo" in all the pages, and list page name with the line.<br/>
<br/>
&amp;lt;carea class="textareaCode300"&amp;gt;function trim(s)<br/>
    return (string.gsub(s, "^%s*(.-)%s*$", "%1"))<br/>
end<br/>
 <br/>
theList = ""<br/>
for key in objc.values(document:keys()) do<br/>
    page = document:pageForKey(key)<br/>
    if page:type() == VPPageType then<br/>
        attString = page:dataAsAttributedString()<br/>
        for line in objc.values(attString:objc_string():componentsSeparatedByString("\n")) do<br/>
            if string.find(line, "@todo") ~= nil then<br/>
                theList = theList .. "\n" .. page:displayName() .. ": " .. trim(line)<br/>
            end<br/>
        end<br/>
    end<br/>
end<br/>
 <br/>
windowController:textView():insertText(theList)&amp;lt;/carea&amp;gt;&amp;lt;br/&amp;gt;<br/>
&amp;amp;#187; &amp;lt;a href="x-voodoopad-scriptplugin:http://www.flyingmeat.com/voodoopad/script_plugins/find_todo_lines.lua"&amp;gt;install&amp;lt;/a&amp;gt;<br/>
<br/>
<br/>
h3. Reveal document in Finder (uses AppleScript + Lua)<br/>
<br/>
&amp;lt;carea class="textareaCode250"&amp;gt;--[[<br/>
VPLanguage = lua<br/>
VPScriptMenuTitle = Reveal Document in Finder<br/>
]]<br/>
script = 'set s to "' .. document:fileName() ..'"\n'<br/>
script = script .. 'set p to POSIX file s\n'<br/>
script = script .. 'tell application "Finder"\n'<br/>
script = script .. '	activate\n'<br/>
script = script .. '	reveal p\n'<br/>
script = script .. 'end tell\n'<br/>
os.execute("/usr/bin/osascript -e '" .. script .. "'")&amp;lt;/carea&amp;gt;&amp;lt;br/&amp;gt;<br/>
&amp;amp;#187; &amp;lt;a href="x-voodoopad-scriptplugin:http://www.flyingmeat.com/voodoopad/script_plugins/reveal_document_in_finder.lua"&amp;gt;install&amp;lt;/a&amp;gt;<br/>
<br/>
<br/>
h3. Make a new page with the selected text, without opening it.<br/>
<br/>
&amp;lt;carea class="textareaCode250"&amp;gt;--[[<br/>
VPLanguage = lua<br/>
VPScriptMenuTitle = Make Link Without Opening<br/>
VPShortcutKey = l<br/>
VPShortcutMask = command shift<br/>
VPEndConfig<br/>
--]]<br/>
textView = windowController:textView()<br/>
pageName = textView:objc_string():objc_trim():substringWithRange(textView:selectedRange())<br/>
if pageName:len() == 0 then<br/>
    objc.nsAlert("Sorry, blank words are not allowed")<br/>
    return<br/>
end<br/>
document:createNewVPDataWithKey(pageName)<br/>
&amp;lt;/carea&amp;gt;&amp;lt;br/&amp;gt;<br/>
&amp;amp;#187; &amp;lt;a href="x-voodoopad-scriptplugin:http://www.flyingmeat.com/voodoopad/script_plugins/make_link_without_opening.lua"&amp;gt;install&amp;lt;/a&amp;gt;<br/>
<br/>
h3. Commit changes to subversion<br/>
<br/>
Subversion is a version control system.  If you already have your document in a subversion repository this script will add new files, remove deleted files, and commit the changes.  To learn more about subversion, visit http://subversion.org/<br/>
<br/>
&amp;lt;carea class="textareaCode400"&amp;gt;--[[<br/>
VPLanguage = lua<br/>
VPScriptMenuTitle = Subversion Commit<br/>
VPEndConfig<br/>
]]<br/>
-- we assume subversion is located in /usr/local/bin/svn<br/>
 <br/>
posix.chdir(document:fileName())<br/>
 <br/>
-- add new files<br/>
os.execute("/usr/local/bin/svn st | " ..<br/>
           "/usr/bin/grep '^\?' | " ..<br/>
           "/usr/bin/sed -e 's/\?[ ]*//g' | " ..<br/>
           "/usr/bin/xargs /usr/local/bin/svn add")<br/>
 <br/>
-- clean up deleted pages<br/>
os.execute("/usr/local/bin/svn st | " ..<br/>
           "/usr/bin/grep '^\!' | " ..<br/>
           "/usr/bin/sed -e 's/\![ ]*//g' | " ..<br/>
           "/usr/bin/xargs /usr/local/bin/svn rm")<br/>
 <br/>
os.execute("/usr/local/bin/svn ci -m'auto commit'")<br/>
os.execute("/usr/local/bin/svn st")<br/>
vpconsole("Commit complete.")&amp;lt;/carea&amp;gt;&amp;lt;br/&amp;gt;<br/>
&amp;amp;#187; &amp;lt;a href="x-voodoopad-scriptplugin:http://www.flyingmeat.com/voodoopad/script_plugins/subversion_commit.lua"&amp;gt;install&amp;lt;/a&amp;gt;<br/>
<br/>
<br/>
</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Hello World in Lua</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/a38ed4de-6880-01da-1b45-c0cbe4c4f7dd" rel="alternate" title="VoodooPad: Hello World in Lua" type="text/html" />
       <id>urn:uuid:a38ed4de-6880-01da-1b45-c0cbe4c4f7dd:10</id>
       <modified>2006-08-18T12:28:16Z</modified>
       <issued>2005-12-08T22:54:27Z</issued>
       <summary type="text/html"><html>h2. Hello  World in Lua<br/>
<br/>
What's Lua? "Lua is a powerful light-weight programming language designed for extending applications" : http://www.lua.org/<br/>
<br/>
We're going to create our own script plugin using Lua- a really simple one that just inserts the words "Hello World" into the current page.  I promise it'll be really easy.<br/>
<br/>
First, create a new page in your VoodooPad document named "Hello World".  When the page comes up, select everything and delete it.  We're going to want a completely empty page to write this in.<br/>
<br/>
Next, type (or cut and paste) the following line into your new page:<br/>
<br/>
&amp;lt;carea class="textareaCodeMini"&amp;gt;windowController:textView():insertText("Hello World")&amp;lt;/carea&amp;gt;<br/>
<br/>
Now go to the Plugin-&amp;gt;Lua-&amp;gt;Run Page as Lua Plugin menu item.  You should then see the text "Hello World" inserted into the page.  Congratulations!  That's all it takes to make a simple VoodooPad plugin.  Now let's explain what's going on.<br/>
<br/>
There is a variable in every lua script plugin we write named "windowController".  This can be thought of as a reference to the window that the plugin is running in.  We can then call various methods on the windowController, one such is textView().  This returns the editing portion of the window- the one where we actually do the typing in VoodooPad.  We could have also written this plugin as:<br/>
<br/>
&amp;lt;carea class="textareaCodeMini"&amp;gt;textView = windowController:textView()<br/>
textView:insertText("Hello World")&amp;lt;/carea&amp;gt;<br/>
<br/>
But that's two lines and isn't as good a demo.  But it is however a little bit clearer.<br/>
<br/>
So windowController is a reference to window stuff, and textView is a reference to the editing text part of the window.  Then when we call the method insertText(), passing in the string Hello World, we're saying insert the text "Hello World", in the text view of the current window.<br/>
<br/>
That's all great- but how do we get our Hello World plugin up in the menu bar?  That it turns out, is a piece of cake as well.  Delete the text in the page that got inserted (the part that sayd "Hello ..." and make sure your page just looks like this:<br/>
<br/>
&amp;lt;carea class="textareaCodeMini"&amp;gt;textView = windowController:textView()<br/>
textView:insertText("Hello World")&amp;lt;/carea&amp;gt;<br/>
<br/>
Now, select the "Plugin-&amp;gt;Lua-&amp;gt;Save Page as Lua Plugin..." menu item, and VoodooPad will prompt you to save the plugin in the Script Plugins folder.  Press the Save button.<br/>
<br/>
Now if you go back to the "Plugin-&amp;gt;Lua" menu, you'll see a new item in there named "Hello World".  Select it, and tada! your new plugin was run.  You can now use this plugin from any page within VoodooPad.<br/>
<br/>
For more examples of script plugins, visit the Lua Plugin Snippets page.</html></summary>
     </entry>
  <entry>
       <title>FlySketch: Start Page</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/442576da-c72a-01d9-080c-c0cbe4c4bd01" rel="alternate" title="FlySketch: Start Page" type="text/html" />
       <id>urn:uuid:442576da-c72a-01d9-080c-c0cbe4c4bd01:40</id>
       <modified>2006-08-16T17:48:11Z</modified>
       <issued>2005-05-17T16:20:33Z</issued>
       <summary type="text/html"><html>h2. "FlySketch":http://flyingmeat.com/flysketch/<br/>
<br/>
* About FlySketch<br/>
Learn what FlySketch is all about.<br/>
<br/>
* The Toolbar<br/>
Learn what all the little buttons in the toolbar do.  <br/>
<br/>
* The Palettes (New in FlySketch 1.5)<br/>
Find out what you can do with all those fun palettes.<br/>
<br/>
* Extra Scripts<br/>
Add functionality to the workflow scripts menu.<br/>
<br/>
* Shortcuts <br/>
Find out how to access features without using the mouse.<br/>
<br/>
* Be Creative<br/>
Be an artist (or pretend to be one), and let FlySketch help you out.<br/>
<br/>
* Compositing Modes  (New in FlySketch 1.5)<br/>
What are all these options anyway?<br/>
<br/>
* New in FlySketch 1.5<br/>
Find out the cool new features that makes you a happy FlySketch user.<br/>
<br/>
* New in FlySketch 1.6<br/>
Full Screen Captures!<br/>
<br/>
* Feedback Links<br/>
Find out how to contact us and tells us what you think.<br/>
<br/>
* "List of all pages":/fs/flystashweb.cgi?allPages=1&amp;amp;space=442576da-c72a-01d9-1c64-c0cbe4c4e230</html></summary>
     </entry>
  <entry>
       <title>FlyGesture: About FlyGesture</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/db0b0f42-0578-01da-19a5-c0cbe4c48706" rel="alternate" title="FlyGesture: About FlyGesture" type="text/html" />
       <id>urn:uuid:db0b0f42-0578-01da-19a5-c0cbe4c48706:6</id>
       <modified>2006-08-02T20:41:57Z</modified>
       <issued>2005-08-04T23:19:19Z</issued>
       <summary type="text/html"><html>h3. Quckstart:<br/>
<br/>
Press and hold f1.  Move mouse around.  Watch as your bidding is done.<br/>
<br/>
h3. The Longer Explanation:<br/>
<br/>
FlyGesture is an application that sits in the background and waits for you to call on it.  And when you do, FlyGesture executes an action based on the movements of your mouse through a series of "guides." (These guides are just little nifty circles that change color as you move your mouse through them, but they track your mouse movements to figure out what command to execute.)<br/>
<br/>
A gesture's action(s) can be setup to launch an application, type some text, run your automator action, or even execute custom AppleScript.  You decide.  FlyGesture comes with multiple actions which you can mix, match, and rearrange to create your own workflows.<br/>
<br/>
And after a bit of use, you'll find that you really don't need to pay attention to the gestures you're making—-muscle memory starts to take over for you.  This is where the power of mouse gestures really shines. You don't even think about what you want to do because it just happens at the flick of a mouse--it's effortless.<br/>
<br/>
By default, FlyGesture comes with a set of common commands such as "Close Window," "New Window," "Hide All Applications," "Open iTunes," "iTunes Next Song," "New Mail Message," etc.<br/>
<br/>
You will probably want to add your own gestures and actions, which you can do by bringing up the catalog window (press Command-T or choose it from the Window menu) and clicking the "+" button.  Single click your mouse in the middle of the gesture window and move your mouse through the guides you want to define your gesture with.<br/>
<br/>
If you don't like F1 as the hot key, you can change it to something a bit more tasty in the Preferences.  You may also change the color of the gesture line, or turn it off completely.<br/>
<br/>
Create as many gestures as you want- an infinite number of guide combinations are available. Make a gesture to open all of your favorite applications at once. Or have it save the current window and put the computer to sleep.  Or even open four different Web pages, start a new mail message, copy a file in the Finder to a remote server and display a dialog box saying "My work here is done."<br/>
<br/>
As with any application from Flying Meat, we are eager to hear your comments and suggestions about FlyGesture. If you want to share them send an email to flygesture@flyingmeat.com<br/>
</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Script Plugins</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/0b22e862-ee03-01da-010f-c0cbe4c49366" rel="alternate" title="VoodooPad: Script Plugins" type="text/html" />
       <id>urn:uuid:0b22e862-ee03-01da-010f-c0cbe4c49366:11</id>
       <modified>2006-07-25T08:57:14Z</modified>
       <issued>2006-05-27T21:33:00Z</issued>
       <summary type="text/html"><html>h2. Script Plugins<br/>
<br/>
(For a quick start tutorial on writing a script plugin, visit the "Hello World in Lua" page.  For a bunch of examples, see Lua Plugin Snippets)<br/>
<br/>
Script Plugins are extensions to VoodooPad to add extra functionality.  To put it simply, they are text files written in the Lua scripting language and executed inside VoodooPad.  These scripts have access to certain parts of VoodooPad and may manipulate and create pages, carry out specific tasks, or just insert some text into a page.<br/>
<br/>
The scripts are placed inside the ~/Library/Application Support/VoodooPad/Script&amp;amp;nbsp;~PlugIns folder, with a file name that has an extension of .lua .  You can also write and test your scripts within a VoodooPad page, and then just select the "Plugin-&amp;gt;Lua-&amp;gt;Save Page as Lua Plugin..." for a quick and easy way of developing the plugin.<br/>
<br/>
When run, a script plugin is given 2 global variables named "windowController" and "document".  "windowController" basically represents the window that the script is running in (and the current page), while "document" represents the whole Voodoopad document. You can then call methods on these obects to perform certain tasks.  Here's an example:<br/>
<br/>
&amp;lt;carea class="textareaCodeMini"&amp;gt;-- print out the file path of the current document<br/>
documentPath = document:fileName()<br/>
vpconsole(documentPath)&amp;lt;/carea&amp;gt;<br/>
<br/>
Copy and paste that script into an empty VoodooPad page, and select the "Plugin-&amp;gt;Lua-&amp;gt;Run Page as Lua Script" menu item.  You will see a little window pop up and the path of the current document print out in it.<br/>
<br/>
There are a couple of things to point out here:<br/>
<br/>
* two dashes (--) mark the beginning of a comment, so that's not run by Lua.<br/>
* methods are called with ":", so when we do "document:fileName()" we are calling the fileName method of the document.  (In objective-c this would be written as [document fileName] , and in java or python, it would be document.fileName())<br/>
* vpconsole() is a special method that is build into VoodooPad, and not a standard part of the Lua language.<br/>
<br/>
What else can you call on windowController or document? (And the technical names are "VPPluginWindowController" and "VPPluginDocument")<br/>
<br/>
*VPPluginWindowController:*<br/>
<br/>
* :textView() returns the current "NSTextView":http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/Classes/NSTextView_Class/index.html#//apple_ref/doc/uid/TP40004140<br/>
* :window() returns the current "NSWindow":http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/Classes/NSWindow_Class/index.html#//apple_ref/doc/uid/TP40004151<br/>
* :setStatus(string) will send a string to the little status field at the bottom of the window.<br/>
* :key() will return the "key" for the current page name<br/>
* :document() will return an object that represents the current document.<br/>
<br/>
The document that is returned by windowController:document() is known as "VPPluginDocument"<br/>
<br/>
*VPPluginDocument:*<br/>
<br/>
* :countOfPages() returns the number of pages in a document.<br/>
* :pageForKey(string) returns an object that represents the page for the given key<br/>
* :keys() returns a NSArray of all the keys in the document<br/>
* :fileName() returns the (posix) path of the document<br/>
* :synchronizeDocs() tells the document to commit all the data in the windows.<br/>
* :openPageWithTitle(string) open a page with the given title- if the page does not exist it is created.<br/>
* :createNewPageWithName(string) makes a new page, and returns it as an object.<br/>
<br/>
<br/>
VPData is the class that represents the contents on a page, plus other attributes.<br/>
<br/>
*VPData*<br/>
<br/>
* :modifiedDate() returns a NSDate representing the last time it was changed<br/>
* :createdDate() returns a NSDate representing the time it was created<br/>
* :displayName() returns a (possibly) mixed case name of the page<br/>
* :key() returns the "key" of the page, which is always lowercase.<br/>
* :dataAsAttributedString() returns the contents of the page as a "NSMutableAttributedString":http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSMutableAttributedString_Class/index.html#//apple_ref/doc/uid/TP40003689<br/>
* :setDataAsAttributedString(attributedString) sets the content of the page to the value passed in as a NSAttributedString.<br/>
* :isEncrypted() returns a boolean to let you know if the page is encrypted or not.<br/>
* :uuid() returns a Universally Unique Identifier (UUID) for the page.<br/>
* :type() returns the type of the page, such as VPPageType, VPAliasType, VPURLType, VPFileAliasType, and VPInjectedFileType.<br/>
* :metaValueForKey() returns the meta value for the given key, or null if it isn't there.<br/>
* :metaValues() returns a NSDictionary of the meta values and keys for the page.<br/>
<br/>
For a full list of methods, check out VPPlugin.h which you can grab from the Plugin Development page.<br/>
<br/>
h2. Extra functions<br/>
<br/>
As already mentioned, "vpconsole(string)" can be used to print out text to a little window in VoodooPad.  Another function that's built in is "objc.values(objc-array)", where you pass in a NSArray and get back an iterator.  This comes in pretty handy when you want to cycle through all the pages in a document:<br/>
<br/>
&amp;lt;carea class="textareaCodeMini"&amp;gt;for key in objc.values(document:keys()) do<br/>
    vpconsole(key)<br/>
end&amp;lt;/carea&amp;gt;<br/>
 <br/>
<br/>
Another extra function that needs to be mentioned is string.replace, and you use it like so:<br/>
<br/>
&amp;lt;carea class="textareaCodeMini"&amp;gt;s = "VoodooPad"<br/>
s = string.replace(s, "Voo", "Foo")<br/>
vpconsole(s)&amp;lt;/carea&amp;gt;<br/>
<br/>
This will take the string "VoodooPad, search for any occurrences of "Voo" and replace it with "Foo", giving us the string "FoodooPad".<br/>
<br/>
An lastly, VoodooPad comes with a bunch of extra functions in the posix package:&amp;lt;br/&amp;gt;<br/>
posix.access, chdir, chmod, chown, ctermid, dir, errno, exec, files, fork, getcwd, getenv, getgroup, getlogin, getpasswd, getprocessid, kill, link, mkdir, mkfifo, pathconf, putenv, readlink, rmdir, setgid, setuid, sleep, stat, symlink, sysconf, times, ttyname, umask, uname, unlink, utime, wait, mkstemp, setenv, unsetenv<br/>
<br/>
<br/>
h2. Where do errors go?<br/>
<br/>
Errors are printed out to Console.app, located in the Utilities folder.  So if you have having problems running your script then it's likely that you're getting errors and you should check there.  As well, any calls to print() appear in Console.app<br/>
<br/>
h2. Type Conversions<br/>
<br/>
Lua and VoodooPad talk to each other via a "bridge".  Since VoodooPad is written in Objective-C (objc) and your scripts are written in Lua, a little bit of trickery has to happen behind the scenes to make things talk to each other.  For instance, NSStrings in objc are converted to Lua strings, and ints, floats, doubles, longs, etc are translated into Lua numbers (Lua only has a single number type).  If the bridge can't figure out how to convert an objc object into a Lua type then it is converted into a Lua table.<br/>
<br/>
However, there are times when you don't want the bridge to convert a value for you.  One such instance is for NSMutableString.  Take this line of code:<br/>
<br/>
page:dataAsAttributedString():mutableString():setString("hi")<br/>
<br/>
Well, that's not going to work.  When we call mutableString(), the bridge is going to convert that to a Lua string, and then when we try and add text to that object via the appendString() call Lua is going to throw an error.  What we want is for the bridge to not convert the NSMutableString into a Lua string, and we do that by changing our call from attributedString:mutableString() to attributedString:objc_mutableString(). This tells the bridge to not convert the value to a Lua type, and we can then play with the value returned as a regular Objective-C type.<br/>
<br/>
h2. VoodooPad Lua Constants<br/>
<br/>
Pages in a VoodooPad document have a type associated with them.  This lets the system distinguish between regular pages, pdf's, urls, etc.  For example all the regular pages you create are of type "VPPageType".  When you write triggers and you want to play with the contents of the page, you need to make sure it's a page type first.  Use these values to compare what type page is combined with a call to page:type()<br/>
VPPageType, VPAliasType, VPURLType, VPFileAliasType, VPInjectedFileType<br/>
<br/>
And here are some constant meta names you might find useful.:<br/>
VPFileWrapperMetaName, VPUTIMetaName<br/>
<br/>
Extra data names:<br/>
VPIconExtraDataName (used for embed applications, to store the icon in).<br/>
<br/>
Printing out stuff for debugging or whatever:<br/>
vpconsole("hello!") (used for debugging or whatever you'd like to use it for).<br/>
<br/>
h2. Other topics:<br/>
<br/>
* Lua Plugin Snippets<br/>
* The Lua Programming Language: http://www.lua.org/</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Command Line Script to Pipe Text</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/3e12336c-6a92-01da-0ff6-c0cbe4c4c85d" rel="alternate" title="VoodooPad: Command Line Script to Pipe Text" type="text/html" />
       <id>urn:uuid:3e12336c-6a92-01da-0ff6-c0cbe4c4c85d:7</id>
       <modified>2006-07-24T15:22:40Z</modified>
       <issued>2005-12-11T14:05:30Z</issued>
       <summary type="text/html"><html>h2. Command Line Script to Pipe Text.<br/>
<br/>
This is a simple python script, that'll take text from stdin and pipe it to a page in VoodooPad:<br/>
<br/>
&amp;lt;carea class="textareaCode400"&amp;gt;#!/usr/bin/python<br/>
import sys<br/>
import os<br/>
import getopt<br/>
import string<br/>
pageName = "piped text"<br/>
if len(sys.argv) == 2:<br/>
    pageName = sys.argv[1]<br/>
data = sys.stdin.read()<br/>
data = data.replace('"', '\\"')<br/>
script = '''tell application "VoodooPad"<br/>
  tell document 1 to create page with title "%s" with contents ""<br/>
  append text "%s" to page "%s" of document 1<br/>
  activate<br/>
end tell''' % (pageName, data, pageName)<br/>
script = script.replace("'", "\\'")<br/>
os.popen("/usr/bin/osascript -e '%s'" % (script))&amp;lt;/carea&amp;gt;</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Cool Features</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/ef0fe032-368b-01da-19a2-c0cbe4c4e0de" rel="alternate" title="VoodooPad: Cool Features" type="text/html" />
       <id>urn:uuid:ef0fe032-368b-01da-19a2-c0cbe4c4e0de:5</id>
       <modified>2006-07-21T09:31:20Z</modified>
       <issued>2005-10-06T10:09:20Z</issued>
       <summary type="text/html"><html>h3. Export<br/>
<br/>
No lock in! That is one of our favorite sayings. VoodooPad has 7 (SEVEN!) different ways for you to export or save your data.<br/>
<br/>
* Export to your iPod Notes folder for a live wiki on the go. (3rd generation iPods only).<br/>
* Export to your iPod Contacts folder (1st and 2nd generation iPods)<br/>
* Save as Microsoft Word documents with Mac OS X 10.3.<br/>
* Export RTFD (Rich Text Format) files.<br/>
* Export as HTML, so you can view your wiki in a web browser, or ftp it to a website.<br/>
* XML Export. You can even import it back in (great for merging documents!).<br/>
* And finally, as good and reliable plain text files.<br/>
<br/>
(Not all export options are available in VoodooPad Lite)<br/>
<br/>
h3. Use the clippings folder to access frequently used text.<br/>
<br/>
(Not available in VoodooPad Lite)<br/>
<br/>
VoodooPad creates a folder in your home directory under ~/Library/Application Support/VoodooPad/Clippings/ where you can place text files which will show up in the "Insert" submenu under the Edit menu. When you choose the menu item, the text from the clipping will be inserted into the current page.<br/>
<br/>
*Stupid Unix Tricks:* VoodooPad will also look to see if the text file has the executable bit set, and if it does it will be executed just like a shell script (using /bin/sh). Using this technique, you can place dynamic content into a page with a couple of mouse clicks!<br/>
<br/>
h3. Customize the look of your HTML exports.<br/>
<br/>
(Not available in VoodooPad Lite)<br/>
<br/>
When exporting your document as HTML, VoodooPad will look for a certain page to apply formatting to your pages. Visit the HTML exporting section of the manual for more information.<br/>
<br/>
h3. Command-Shift-O is your personal hero.<br/>
<br/>
Did you know that there is a shortcut to open up any page with auto-complete hiding within VoodooPad? If you hit Command-Shift-O a sheet will open up in the current window, where you can begin typing the name of a page that you want access to quickly. And if you type in the name of a new page, it will be created for you!<br/>
<br/>
h3. Auto-complete.<br/>
<br/>
(Not available in VoodooPad Lite)<br/>
<br/>
What was the name of that page again.. Voodoo.. something?<br/>
<br/>
Bring up the "Open Page.." sheet by typing Command-Shift-O or selecting it under the Edit menu, and bring forth auto-complete goodness. Just type in the beginning of any page and VoodooPad will find it for you.<br/>
<br/>
Mac OS X 10.3 even brings in auto-complete features in the page! Type the beginnings of a linked item, and hit Command-K to bring up an auto-complete selection based off what you typed.<br/>
<br/>
h3. UNIX Scripting Geeks Wanted.<br/>
<br/>
#!/bin/sh echo "Hello from VoodooPad!"<br/>
<br/>
Whether it's Python, Perl, Ruby or any other of your favorite Unix scripting languages- VoodooPad can run it and display the results. Just type in a script and hit Command-R and it will run just like you were at a terminal. VoodooPad works great as a script library.<br/>
<br/>
h3. What's New?<br/>
<br/>
(Not available in VoodooPad Lite)<br/>
<br/>
VoodooPad has a "Recently Updated" window that will show you what pages have been recently changed. Go to the menu "Window" and select "Recently Updated". Click on an item in the window to bring up it's corresponding page.<br/>
<br/>
h3. iPod Note Navigation<br/>
<br/>
If you are the lucky owner of at least a 3rd generation iPod, then we've got some great news for you- You can export your VoodooPad document to your "iPod Notes" folder, and you can read and navigate your document just like you were running VoodooPad on your iPod. The same linked words show up for you to click on, and you can go from page to page just like you were using VoodooPad, only with an iPod scroll wheel instead of a mouse!<br/>
<br/>
h3. AppleScript Support<br/>
<br/>
(Not available in VoodooPad Lite)<br/>
<br/>
VoodooPad has AppleScript support for the basic document commands, as well as exporting your pages as RTFD, HTML or text. Find out more on VoodooPad's AppleScript page.<br/>
<br/>
h3. Drag and Drop<br/>
<br/>
VoodooPad does some cool tricks with drag and drop. If you drag and drop images into VoodooPad, it'l ask you if you want to embed them into the page, or link to it. Even drag and drop URL's and images straight from Safari or any other browser!<br/>
<br/>
Drop files, folders, and applications from the Finder- they will be linked up just like a VoodooPad page.<br/>
<br/>
h3. Mac OS X Goodness<br/>
<br/>
VoodooPad takes advantage of cool Mac OS X features like sheets, Inkwell, Services, Toolbars, and OS X's Unix underpinnings.<br/>
<br/>
h3. Unicode<br/>
<br/>
Hello!, 早晨, 你好, こんにちは, 안녕하세요, Grüß Gott!<br/>
<br/>
VoodooPad supports Unicode, for all your multi-lingual needs.<br/>
<br/>
h3. Uber Rich Text<br/>
<br/>
VoodooPad takes advantage of Mac OS X's built in text system, so you get access to all kinds of text services like spell checking, and formatting options like multiple fonts and font sizes per page, kerning, rulers, and even text shadowing and strike-through support in Mac OS X 10.3 and up.</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: OPML Export Plugin</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/39f39cfa-0e50-01db-1658-c0cbe4c4baff" rel="alternate" title="VoodooPad: OPML Export Plugin" type="text/html" />
       <id>urn:uuid:39f39cfa-0e50-01db-1658-c0cbe4c4baff:6</id>
       <modified>2006-07-08T00:24:57Z</modified>
       <issued>2006-07-08T00:06:07Z</issued>
       <summary type="text/html"><html>h2. OPML Export Plugin<br/>
<br/>
Here's the code for the start of a lua script to export the contents of the document into OPML.  It's pretty bare.<br/>
<br/>
&amp;lt;carea class="textareaCode400"&amp;gt;NSFileHandlingPanelOKButton = 1<br/>
savePanel = objc.class("NSSavePanel"):savePanel()<br/>
savePanel:setTitle("Save the OPML file")<br/>
response = savePanel:runModalForDirectory_file_(nil, document: displayName() .. ".opml")<br/>
if response == NSFileHandlingPanelOKButton then<br/>
    filename = savePanel:filename()<br/>
    output = '&amp;lt;opml version="1.0"&amp;gt;&amp;lt;head&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;'<br/>
    for key in objc.values(document:keys()) do<br/>
        page = document:vpDataForKey(key)<br/>
        if page:type() == "page" then<br/>
            pageString = page:dataAsAttributedString():string()<br/>
            -- this stuff should be in a function<br/>
            pageString = pageString:replace("&amp;amp;", "&amp;amp;amp;amp;")<br/>
            pageString = pageString:replace("&amp;lt;", "&amp;amp;amp;lt;")<br/>
            pageString = pageString:replace("&amp;gt;", "&amp;amp;amp;gt;")<br/>
            pageString = pageString:replace("\"", "&amp;amp;amp;quot;")<br/>
            pageString = '&amp;lt;outline text="' .. pageString .. '" /&amp;gt;'<br/>
            output = output .. pageString .. "\n"<br/>
        end<br/>
    end<br/>
    output = output .. '&amp;lt;/body&amp;gt;&amp;lt;/opml&amp;gt;'<br/>
    fd = io.open(filename, "w")<br/>
    fd:write(output)<br/>
    fd:close()<br/>
    vpconsole("all done")<br/>
end&amp;lt;/carea&amp;gt;</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Linking, Pasting, and Embedding Files</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/7c19c9a2-02f1-01db-09c7-c0cbe4c496c8" rel="alternate" title="VoodooPad: Linking, Pasting, and Embedding Files" type="text/html" />
       <id>urn:uuid:7c19c9a2-02f1-01db-09c7-c0cbe4c496c8:3</id>
       <modified>2006-06-23T13:38:16Z</modified>
       <issued>2006-06-23T12:50:13Z</issued>
       <summary type="text/html"><html>h2. Linking, Pasting, and Embedding Files<br/>
<br/>
*Linking or pasting images*<br/>
If you drag and drop a file into VoodooPad and it recognizes it as an image format, you'll get a sheet asking what you want to do with it.  Since VoodooPad can paste images inline with text, you are given that option or you can link to the file on your disk.<br/>
<br/>
If you paste it in, it will display inline with any text in your page.  To get the image out just double click it and VoodooPad will ask you where to save it.  If you drag and drop a PDF file in, it will display inline like any other image as well- but only if the PDF has a single page.  If it has more pages then it will be treated like a regular file.<br/>
<br/>
If you choose to link to the image, VoodooPad will make a new link for that file and insert it into the page.  If you later decide you don't want the link anymore you can remove it from the File and URLs table of the document properties window.<br/>
<br/>
Tip: To suppress VoodooPad from asking each time you want a dragged image to be pasted in , hold down the option and command keys when performing the action.<br/>
<br/>
*Embedding Files*<br/>
If you want to include a file in VoodooPad, but you don't want it to display inline with text and you want to delete the original, then embedding is for you.<br/>
<br/>
Choose "Embed Files…" from the File menu, and select the file(s) you'd like imported into your document.  VoodooPad will then make links in your document to that file.  If VoodooPad can display the file (such as images, pdfs, some movies, mp3 files) it will do so.  Otherwise you'll get a simple page with the ability to save the item to disk.  You can also choose "Export Page As…" from the file menu to save out an image or any other file that VoodooPad is displaying.</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Data Sent to Flying Meat</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/171420a4-fd95-01da-05bd-c0cbe4c49338" rel="alternate" title="VoodooPad: Data Sent to Flying Meat" type="text/html" />
       <id>urn:uuid:171420a4-fd95-01da-05bd-c0cbe4c49338:4</id>
       <modified>2006-06-16T17:18:53Z</modified>
       <issued>2006-06-16T17:06:14Z</issued>
       <summary type="text/html"><html>h2. Data Sent to Flying Meat<br/>
<br/>
h3. Auto-update:<br/>
<br/>
When VoodooPad checks for newer versions, it sends along information such as what version of Mac OS X you are running, what brand of processor you are using (ppc or intel), a unique string to weed out duplicate requests, and of course- what version of VoodooPad you are running.<br/>
<br/>
If you would like to have this information not sent when an update check is performed, uncheck the option "Include system information" in the Options preferences.  If you would like to not have auto update performed at all, uncheck the option "Check for updates at startup".<br/>
<br/>
<br/>
<br/>
h3. Registration:<br/>
<br/>
When you register VoodooPad, your serial number is sent to our servers to make sure it is valid.  This only happens once when you press the "Register" button in the registration panel.  VoodooPad does not perform any other checks (besides auto-update if you have it turned on) after this.<br/>
<br/>
If you are not online, VoodooPad will just try again at a later point and allow you to use the software like you normally would.</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Links and New Pages</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/f4d4271e-cca7-01da-1723-c0cbe4c49ef5" rel="alternate" title="VoodooPad: Links and New Pages" type="text/html" />
       <id>urn:uuid:f4d4271e-cca7-01da-1723-c0cbe4c49ef5:6</id>
       <modified>2006-06-05T13:33:15Z</modified>
       <issued>2006-04-15T10:47:50Z</issued>
       <summary type="text/html"><html>h2. Links and New Pages<br/>
<br/>
VoodooPad is a tool to help you organize information. One of the most obvious ways to do this is to use hyperlinks, popularized by the World Wide Web.<br/>
<br/>
Although hyperlinks, or links, on the web are a great way to find information and dig through related topics, most people have not had the tools or the experience with HTML (the markup language of most web pages) to make use of this organizing tool for their own notes and ideas.<br/>
<br/>
Let's start fresh by creating a new VoodooPad document (by pressing Cmd-Shft-N) and removing all of its content. To do that, click anywhere in the text area of our new Work Area, choose Edit-&amp;gt;Select All and press the Delete key.<br/>
<br/>
In the new blank window, let's note some things we've discovered about VoodooPad. Type (or Copy from this tutorial and Paste) into the Work Area the following indented text:<br/>
<br/>
p{padding-left: 20px;}. My VoodooPad notes:<br/>
<br/>
p{padding-left: 20px;}. Uses HyperLinks<br/>
  Creates pages automatically when needed<br/>
  Allows ~aliases to access my pages<br/>
<br/>
If you've entered the text exactly as shown above in the new page, notice that the words "VoodooPad" and "HyperLinks" are underlined. The reason that they're underlined is that they were created as default links. During input of text, whether typed in or Copied from the clipboard, VoodooPad parses the text looking for words that are mashed together. Basically, VoodooPad is looking for two or more sequences of uppercase letters in each word and when it finds such a word on its input, it immediately makes a potential link out of it.<br/>
<br/>
The difference between a potential link and a real link is that no page yet exists for a potential link. That page is created, instead, the first time the potential link is clicked. To watch this happen, let's open the Pages List for our document. To do that, choose Window-&amp;gt;Palettes-&amp;gt;Pages List.<br/>
<br/>
When the window appears, notice that there is only one page listed, "Index". That's because the Index page (or Home page) is always created as part of creating the new document. Now, let's click on the word VoodooPad and watch as a new page appears in the window and it's name appears on the Pages list.<br/>
<br/>
As before, we'll add some text to be able to distinguish the new page from another one that VoodooPad might create just like it. So, on the new page named "VoodooPad", enter the following line:<br/>
<br/>
p{padding-left: 20px;}. A tool for linking related information through local HyperLinks.<br/>
<br/>
Next, click the Home button in the Toolbar to return to the first page. Now notice that though both "VoodooPad" and "HyperLinks" are underlined, only "VoodooPad" is displayed in blue. That's because "HyperLink is still only a potential link and "VoodooPad" is a link to a real page. Once again, watch the Pages list to the right as you click on the word, "HyperLinks".<br/>
<br/>
A second new page, named "HyperLinks" has been created appearing in the Pages list. On this new "HyperLinks" page, enter the following line:<br/>
<br/>
p{padding-left: 20px;}. VoodooPad's most used organizing principle.<br/>
<br/>
as a brief note on HyperLinks as they relate to VoodooPad.<br/>
<br/>
As you enter this line, notice that the word "VoodooPad" immediately turned to blue and became underlined as you typed the last letter. VoodooPad has recognized that this was a potential link and found the page it references, so it displays it as a bonafide link. Also note that no new page named "VoodooPad" was added to the Pages list. Since it already existed, there was no need to create another.<br/>
<br/>
If we click on the word "VoodooPad" on the "HyperLinks" page, notice that it takes us back to the "VoodooPad" page on which we typed its definition. While we're on the "VoodooPad" page, we might want to add to the information here. So let's add the following new text:<br/>
<br/>
p{padding-left: 20px;}. Always open for editing, additions<br/>
<br/>
Now that we've moved through a few pages, let's look again at page navigation. To retrace the path we took to get here, try clicking the Back button in the Toolbar until it grays out (indicating that it's no longer active). Now click the Forward button until it does the same to move us forward to the end of our path.<br/>
<br/>
Like browser Forward buttons, the path forward is only retained until we change our path. So if we've gone back a few pages and then click on another link to move forward, our previous Forward path will be deleted.<br/>
<br/>
At this point we should be on the VoodooPad page in our Work Area. Let's add the following line to our notes on that page:<br/>
<br/>
p{padding-left: 20px;}. A potential HyperLink is created whenever we smash capitalized words together.<br/>
<br/>
As we enter this line, we notice that the word "HyperLink", though underlined, is not displayed in blue. That means that we've created a potential HyperLink, but there is no page to go with it yet. Of course, the reason is that we first pluralized the word "HyperLink", so only the plural form has an associated page. We have three choices, then: we can modify the line to integrate the plural form, "HyperLinks", we can click the word in its singular form to create a new page and repeat what we've put in the page for the plural form, or we can create an alias, so that both words point to the same page.<br/>
<br/>
Clearly, the last of these options is the preferable one, so to create a "HyperLink" alias for "HyperLinks", either click on the word "HyperLinks" in the page, or double click on it in the Pages list to get to the page for the plural form. Next, click on the Info button in the Toolbar to make an Info sheet appear. Under the box labeled "Aliases:" at the bottom of the page's Info sheet, click on the "+" sign and enter the word "HyperLink" in the input text box that appears. To complete the input field, press either the Tab key or the Return key, then click the Close button.<br/>
<br/>
If we now go back to the "VoodooPad" page by clicking on the link on the "HyperLinks" page, we can see that the word "HyperLink" (singular) is displayed in blue, indicating that it's a real hyperlink to a real page. Click on it, and we see that we've arrived back at the page labeled with the plural "HyperLinks". While we're back on the "HyperLinks" page, lets open the Info sheet again by clicking on the Info button in the Toolbar and add two more aliases to the page:<br/>
<br/>
p{padding-left: 20px;}. hyper link<br/>
hyper links<br/>
<br/>
Let's now return to the "VoodooPad" page and type the following note:<br/>
<br/>
p{padding-left: 20px;}. A hyperlink is a hyper link is a HyperLink is a HyperLinks is a Hyper Link is a Hyper Links.<br/>
<br/>
As we enter this line, notice that each form of "hyperlink" whether capitalized or not, has become a link to our page. In other words, although VoodooPad is sensitive to capitalization when automatically creating potential hyperlinks, it is insensitive to capitalization when entering words that already exist as linked pages.<br/>
<br/>
The result is that once we've created a page for a hyperlink, we needn't enter all possible forms of capitalization as aliases to the page.<br/>
<br/>
We can also create links manually which can be much more flexible than mashed and capitalized words. For instance, enter the following line on the Index page:<br/>
<br/>
p{padding-left: 20px;}. Allows manual creation of links from any word or phrase without regard to capitalization.<br/>
<br/>
Notice that none of the words in that line are aliases or potential aliases. In order to change that, select the phrase, "manual creation of links". Then click on the blue Link button in the Toolbar.<br/>
<br/>
As we click on the Link button, notice that we've just created a new page for "manual creation of links", whose name was also just entered into the Pages list. If we use the Back button to go back to the previous page, we also notice that the phrase we selected is now a link.<br/>
<br/>
Another problem arises if we have some material to copy into a VoodooPad document and aren't quite sure where, or  even if, it's referenced in the rest of the document. To solve that problem, we can create a new page and give it a name whether the name exists anywhere else in the document or not. So, for instance, copy the following indented text to the clipboard:<br/>
<br/>
p{padding-left: 20px;}. VoodooPad pages can be created without a corresponding link.<br/>
  A new page is created by pressing Cmd-n on the keyboard.<br/>
  A new page is also created by choosing File-&amp;gt;New Page in the menu.<br/>
  Upon creation, any reference to the new page automatically becomes a link.<br/>
  After creation, the page title becomes a link immediately upon being input.<br/>
<br/>
Now, go to the Work Area, press the Cmd-n keys to create a new page and enter the word "Pages" into the sheet that drops down for the page title and press Return. Paste the text you copied above from the clipboard to the new page. Go back to the Index page and notice that the word "pages" has become a link on the line "Allows aliases to access my pages".<br/>
<br/>
Creating a page is easy and we've seen a couple ways to do it. How about deleting one of those pages if we created it by mistake or if we simply no longer need it?  First we have to be on the page we want to delete. So to illustrate, let's first create a new page called "mistake". Press Cmd-n to display the New Page Title sheet, enter the word "mistake", and press Return. We now have a new page named mistake which is just what the name implies, a mistake. So how do we delete it?<br/>
<br/>
If you see a red "Delete" icon at the far right of the Toolbar in the Work Area, that represents the easiest way to delete a page. If you don't see it, either click on the double arrow heads at the far right of the Toolbar to see and click it, or simply widen the Work Area window until it appears.<br/>
<br/>
When we click the Delete icon, a confirmation sheet appears. When you see it, click the Delete button and the new page named mistake will be deleted from our document. Any links to the new document would no longer be links, but would revert back to regular words or revert back to potential links if they were capitalized words mashed together.<br/>
<br/>
When a VoodooPad document starts to become large, it often becomes helpful to know where all the links are to a given page. For instance, if we are on the "HyperLinks" page, we might want to check all the links to this page for additional information about "HyperLinks" from the context of the sentences in which the links are found.<br/>
<br/>
In order to find back links to a given page, we first go to the referenced page. In order to demonstrate, let's return to the "HyperLinks" page. Once there, choose the menu item Window-&amp;gt;Palettes-&amp;gt;Backlinks and a Backlink palette listing all the pages with hyperlinks to this page.<br/>
<br/>
If we click on any of the titles in the Backlinks page, it will take us to the page with that title in which we're guaranteed at least one back link to the original page.<br/>
<br/>
Go to Files and Documents<br/>
</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Tutorial Introduction</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/87bf921e-cca5-01da-0982-c0cbe4c4bd2e" rel="alternate" title="VoodooPad: Tutorial Introduction" type="text/html" />
       <id>urn:uuid:87bf921e-cca5-01da-0982-c0cbe4c4bd2e:6</id>
       <modified>2006-06-05T13:32:32Z</modified>
       <issued>2006-04-15T10:30:28Z</issued>
       <summary type="text/html"><html>h2. Tutorial Introduction<br/>
<br/>
Before we explore VoodooPad's details, let's take a brief top level view of what VoodooPad is about.<br/>
<br/>
When you install VoodooPad and open it up for the first time, you should see a page with a clipboard pictured at the top and a heading underneath that says, "VoodooPad. You put your brain in it." like this:<br/>
<br/>
p=. !/fs/images/voodoopad/vp2introheader.png!<br/>
<br/>
Let's use that page to get a brief overview of VoodooPad. If that page isn't currently showing, then go to the File menu and choose New Document. We'll call the window holding this page our Work Area. One way to get a good overview of VoodooPad is to read that page. It provides an excellent overview of VoodooPad's capabilities.<br/>
<br/>
Don't worry about losing that description. It will appear just like you see it on the first page of any new VoodooPad document you create. We're going to ask you to modify it's text, but remember, you can always get a new version of it with a new document. So let's continue by reviewing some of that description here in a tutorial format.<br/>
<br/>
Although it's much more, VoodooPad is a text editor at its foundation. For instance, click on the new window you've opened and click at the end of the first sentence before the period. That should put the blinking text insertion bar between the word "explanation" and the sentence's period.<br/>
<br/>
Now, type a space followed by the words, "and it's all some people need". Notice that as you typed, your words were inserted into the sentence at the insertion bar pushing the rest of the words of the paragraph to the right and rewrapping the text appropriately. Nothing particularly surprising here if you're familiar with most any text editor on the Mac.<br/>
<br/>
Now, double click the word "some" that you've just typed, hold the Command key down and press the "i" key on your keyboard. Notice that you've just italicized the word "some" in the sentence.<br/>
<br/>
For convenience in this tutorial, from now on we'll abbreviate such key combinations in the following ways:<br/>
<br/>
  Command - Cmd<br/>
  Control - Cntrl<br/>
  Option - Opt<br/>
  Shift - Shft<br/>
<br/>
so that holding the Command and the Option keys simultaneously while pressing the "k" key will be abbreviated Cmd-Opt-k.<br/>
<br/>
Of course, we could also have italicized the word "some" by selecting it, as before, and then clicking the Font menu item in the Format menu and dragging to the right in the hierarchical menu to choose the Italic menu item. Again, for convenience, we will abbreviate such menu choices as follows: "Format-&amp;gt;Font-&amp;gt;Italic"<br/>
<br/>
p=. !$imagesDir$/voodoopad/vp2formatmenu.png!<br/>
<br/>
In short, on the surface, VoodooPad behaves very much like the Apple TextEdit program when TextEdit is in Rich Text mode. Like TextEdit, we can display the Text Ruler and format our paragraphs.<br/>
<br/>
To do this, click just before the first word of the first paragraph in the Work Area and drag all the way to the bottom of the last paragraph. That is, select all the text of the page except the graphic at the top and the heading. Now choose the menu item Format-&amp;gt;Text-&amp;gt;Show Ruler.<br/>
<br/>
A text ruler should appear at the top of the page, like this<br/>
<br/>
p=. !/fs/images/voodoopad/vp2ruler.png!<br/>
<br/>
which will allow you to format the paragraphs. Notice a triangle pointing downward with a short bar over it at the left edge of the ruler.<br/>
<br/>
p=. !{border: solid 1px}/fs/images/voodoopad/a323f572-9d44-4707-9569-312784216686.png!<br/>
<br/>
If you click on the bar (not the triangle) and drag it one quarter inch to the right, it separates from the triangle and forms a "T".<br/>
<br/>
p=. !{border: solid 1px}/fs/images/voodoopad/26370942-da35-4fe0-8956-00ee9de95149.png!<br/>
<br/>
This is used to set the indentation for any selected paragraphs. Notice that you've just indented all the paragraphs on this page.<br/>
<br/>
There's much more to text editing, but VoodooPad generally uses the text editing capabilities built into MacOS X. If you're not familiar with the richness associated with such text editing capabilities, you can open TextEdit and choose Help-&amp;gt;TextEdit Help for help with most of those text editing capabilities. We've also included a couple topics at the end of this tutorial if you would like to explore the text editing facilities in greater depth.<br/>
<br/>
Our purpose here, however, is to help you learn how VoodooPad can help you organize your mind, so let's do a couple more fun things.<br/>
<br/>
Notice in your document that the word, VoodooPad is highlighted and underlined just like a link in a web browser. That's because it is a link. Just click on it and you will be taken to a new page within VoodooPad.<br/>
<br/>
The first interesting thing about clicking on that word is that the page you are taken to didn't exist until you clicked. When you did so, VoodooPad looked for a page for that alias, and when unable to find it, created a new page with the sentence "Write about VoodooPad here." at the top.<br/>
<br/>
In general, when a new page is created for a link, the default format is to put a similar sentence at the top of an empty page that mentions the word (or phrase) you clicked, as follows:<br/>
<br/>
    "Write about &amp;lt;referenced word or phrase&amp;gt; here."<br/>
<br/>
In order to see this in action, click at the end of the sentence on the new page and press the Return key twice to enter an empty line. Now type (or copy from this page) the words, "VoodooPad has shown that it clearly differs from TextEdit." As you do this, notice that the word "TextEdit" displays as a link as well.<br/>
<br/>
Now click on the new TextEdit link and another new page will be created as we described. Add your name to this new page to make it unique.<br/>
<br/>
Now, click the Back button at the very top of the new page twice and you will be taken back to the first page that was opened. We will refer to this first page as the Home page from now on. Once again, click on the word VoodooPad anywhere else in the Home page and you will be taken back to the VoodooPad page to see the additional text you added. This demonstrates that you're going to the same VoodooPad page from any VoodooPad link.<br/>
<br/>
Once again, click on the Home page of VoodooPad and click to put the insertion bar at the very bottom of the page. Press the Return key twice and add the words, "TextEdit and more." Notice that the word, "TextEdit" has again been highlighted. Click on it and confirm that VoodooPad takes you to the same TextEdit page that was created by linking from your second page where you added your name.<br/>
<br/>
Of course, not all links in VoodooPad are links to pages within the VoodooPad document. VoodooPad can distinguish real web links and will act appropriately.<br/>
<br/>
To see this, go back to the Home page and scroll to the bottom where you will see a link to the VoodooPad web site ( http://www.flyingmeat.com/ ) in the second to last paragraph. When you click on that link, your browser will open and take you to the Flying Meat home page, the makers of this and other useful desktop tools for your Mac.<br/>
<br/>
VoodooPad can be very intelligent about links and recognize them as they are typed in. As a final exercise in this topic, again go to the bottom of the text in the Home page and click on the TextEdit link. Add a space and the following after your name on the page: "http://www.apple.com". Notice that as soon as you type it in, it becomes a link. Click on the link and your browser will once again open and take you to the Apple home page.<br/>
<br/>
We won't be using the document you just modified, so you're welcome to close it either by clicking the red Close button in the top left corner of the window or by choosing the File-&amp;gt;Close or its keyboard equivalent, Cmd-w.<br/>
<br/>
Doing so should display a sheet indicating that you've made changes to the document and asking what you would like to do. We would suggest clicking the Don't Save button.<br/>
<br/>
Go to Links and New Pages.<br/>
</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: VoodooPad Tutorial</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/f4399428-cca3-01da-043f-c0cbe4c49399" rel="alternate" title="VoodooPad: VoodooPad Tutorial" type="text/html" />
       <id>urn:uuid:f4399428-cca3-01da-043f-c0cbe4c49399:7</id>
       <modified>2006-06-05T13:31:57Z</modified>
       <issued>2006-04-15T10:19:11Z</issued>
       <summary type="text/html"><html>h2. VoodooPad Tutorial<br/>
<br/>
VoodooPad is a simple and elegant Mac application that extends the concept behind a wiki to your desktop and puts you in control. That's a great explanation if you've actively contributed to a wiki, but if you haven't or don't know what a wiki is, then use this tutorial to get you started and comfortable with VoodooPad's features.<br/>
<br/>
If you have contributed to a wiki, you might still want to skim through this tutorial to discover the many ways in which having a wiki on your desktop can help you painlessly organize your mind!<br/>
<br/>
If you are familiar with a wiki, feel free to click on any of the following topics to review that material. Otherwise, it's probably wise to take the topics in order. There's a link at the end of each topic to the next topic.<br/>
<br/>
Before we get lost, however, let's take a look at VoodooPad's navigation. Notice the 9 blue button icons in the toolbar at the top of the page. If you don't see any blue buttons, click the grey button in the upper right corner of the window once. Click it again, if they just disappeared.<br/>
<br/>
p=. !$imagesDir$/voodoopad/vp2toolbar.png! &amp;lt;br/&amp;gt;(VoodooPad's default toolbar)<br/>
<br/>
VoodooPad can display pages very much like a web browser. The Back and Forward buttons shown at the left edge of the toolbar are to take you back or move you forward through the pages you've already explored. Similarly, the Home button near the center of the ToolBar will take you to the first page of a VoodooPad's document.<br/>
<br/>
Now let's explore VoodooPad by clicking on the "Tutorial Introduction" link below:<br/>
<br/>
Tutorial Introduction<br/>
Links and New Pages<br/>
Files and Documents<br/>
Importing and Exporting<br/>
Editing Text<br/>
Advanced Text Editing<br/>
<br/>
<br/>
p{color: #fff;}. Here are some future topics:<br/>
Getting Content Information<br/>
Automating with Scripts<br/>
Using ~Plugins<br/>
Adding ~Plugins<br/>
<br/>
</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Page Templates</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/ea844ef8-efec-01d9-1a55-c0cbe4c4b030" rel="alternate" title="VoodooPad: Page Templates" type="text/html" />
       <id>urn:uuid:ea844ef8-efec-01d9-1a55-c0cbe4c4b030:9</id>
       <modified>2006-06-03T16:23:51Z</modified>
       <issued>2005-07-08T13:14:41Z</issued>
       <summary type="text/html"><html>h2. Customize the look of new pages with page templates.<br/>
<br/>
Tired of the way all your new pages look? Wish you could center your text, add newlines, or just bold something? Help is on the way!<br/>
<br/>
Create a page named "NewPageTemplate" and new page will come up with the content "Describe $title$ here." This new page now represents a template for your document when making new pages.  Whenever we make changes to this page, all new pages will reflect those changes.  For example- select the text "Describe" and bold it. Add some newlines to the page and type "$date$. Now make a new page.  You'll see the new page created based off of the template we just modified.  You can even insert images in the "NewPageTemplate" and they will show up on all your new pages.<br/>
<br/>
What are some good uses of this?<br/>
<br/>
* Making a default footer or header with links to new pages- a sort of built in navigation system.<br/>
* Setting a default background that might be easier on your eyes.<br/>
<br/>
Note: This setting (per document) will override the setting you have in the preferences.<br/>
<br/>
&amp;lt;br/&amp;gt;<br/>
<br/>
h3. Mini-FAQ:<br/>
<br/>
*Q. Is CSS usable ?*<br/>
<br/>
A. No. VoodooPad uses OS X's native text format, RTFD as the format of its pages.  Since CSS is based off HTML it is not used for page templates.</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Lua Plugin Enabler</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/753b8d4e-ee03-01da-0caf-c0cbe4c4beb9" rel="alternate" title="VoodooPad: Lua Plugin Enabler" type="text/html" />
       <id>urn:uuid:753b8d4e-ee03-01da-0caf-c0cbe4c4beb9:3</id>
       <modified>2006-05-28T20:31:36Z</modified>
       <issued>2006-05-27T21:35:58Z</issued>
       <summary type="text/html"><html>h2. Lua Plugin Enabler<br/>
<br/>
Download for VoodooPad 2.5: http://flyingmeat.com/download/plugin/LuaPluginEnabler.vpplugin.zip (universal binary)<br/>
<br/>
If you are using VoodooPad 3.0 and up, it's included by default so there's nothing for you to download.<br/>
<br/>
The Lua Plugin Enabler lets your write simple VoodooPad plugins in the Lua programming language. If you are looking for a super easy way to extend VoodooPad, this is it.<br/>
<br/>
We also provide a tutorial for writing your own Lua plugins: Hello World in Lua<br/>
As well there is a page of useful VoodooPad/Lua snippets for you to take advantage of: Lua Plugin Snippets</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Page Meta</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/520fdc5a-ee01-01da-105a-c0cbe4c48f7e" rel="alternate" title="VoodooPad: Page Meta" type="text/html" />
       <id>urn:uuid:520fdc5a-ee01-01da-105a-c0cbe4c48f7e:6</id>
       <modified>2006-05-28T20:21:21Z</modified>
       <issued>2006-05-27T21:20:40Z</issued>
       <summary type="text/html"><html>h2. Page Meta<br/>
<br/>
VoodooPad Pro has a feature that lets you set arbitrary keys and values on a page, which can the be used later on in script plugins or triggers.<br/>
<br/>
To add meta values for a page, bring up the Page and Document Inspector and select the "Page Meta" tab.<br/>
<br/>
p=. !$imagesDir$/voodoopad/edit_meta_value.png!<br/>
<br/>
<br/>
h2. Scripts and Triggers<br/>
<br/>
Meta values will be useful for you when combined with triggers or script plugins. Here's an example of a script plugin that uses a meta value named "todo" given to certain pages.  It searches through all the pages in a document, finds the ones with the "todo" meta value set, and inserts those names in the current page.<br/>
<br/>
&amp;lt;carea class="textareaCode"&amp;gt;textView = windowController:textView()<br/>
list = "My todo pages list:\n"<br/>
for key in objc.values(document:keys()) do<br/>
    page = document:pageForKey(key)<br/>
    if (page:metaValueForKey("todo") ~= nil) then<br/>
        list = list .. page:displayName() .. "\n"<br/>
    end<br/>
end<br/>
textView:insertText(list)&amp;lt;/carea&amp;gt;</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Tips</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/45fb1e4c-d0d0-01d9-1bf4-c0cbe4c48b7b" rel="alternate" title="VoodooPad: Tips" type="text/html" />
       <id>urn:uuid:45fb1e4c-d0d0-01d9-1bf4-c0cbe4c48b7b:15</id>
       <modified>2006-05-28T13:22:48Z</modified>
       <issued>2005-05-29T23:01:33Z</issued>
       <summary type="text/html"><html>h3. Paste and Match Style<br/>
<br/>
Sometimes you've got some text on the clipboard, and you want to paste it in to your page.  But you know that since you copied it from Safari or Word that the text styling is just &amp;lt;em&amp;gt;not&amp;lt;/em&amp;gt; going to match what you've set up on your page.  And what a bummer that is.  But wait- we've got that problem solved!  Under the Edit menu, right next to the Paste command is another command labeled "Paste and Match Style".  This will take what's on the clipboard and paste it into your page without any funky formatting.  Just nice clean text the way you like it.<br/>
<br/>
h3. Custom URLs<br/>
<br/>
Did you know you can have a word or phrase link directly to a URL, so when clicked on it will open up in Safari?  Choose the Edit-&amp;gt;New URL... menu item, and enter the address (such as "http://flyingmeat.com/") and then the phrase you want to link to (like "Flying Meat" or something).  Now whenever you type "Flying Meat" (or whatever) it will highlight and open up in your browser when clicked on.<br/>
<br/>
To delete a custom URL, bring up the document info panel, and delete it from the table named "Files and URLs".<br/>
<br/>
h3. Following Links with the Keyboard<br/>
<br/>
If the insertion point happens to be on a link in VoodooPad and you want to open it, you don't have to reach for the mouse.  Just type command-L and VoodooPad will do the right thing.  Instead of creating a new page it'll just open up the link that you are on.  It even works for multi-word links so you don't need to worry about selecting it first.<br/>
<br/>
h3. VoodooPad &amp;amp; LaunchBar:<br/>
<br/>
You can directly open a page by name with launchbar (in 10.4).  Find out more from http://flyingmeat.com/board/viewtopic.php?t=205<br/>
<br/>
h3. Quicksilver, too<br/>
<br/>
The Launchbar tip works in Quicksilver. Just add the same folder to the index.<br/>
<br/>
h3. Including the output of scripts in from your clippings folder.<br/>
<br/>
If you create a unix shell script, and place it in VoodooPad's clippings folder, it will be run when selected from the insert menu, and then the output created from the script will be inserted where you have the cursor.<br/>
<br/>
h3. Setting $PATH or other variables for scripts run from VoodooPad<br/>
<br/>
If you want to set environment variables for your shell scripts, have a look at this Technical Q&amp;amp;A from apple:<br/>
http://developer.apple.com/qa/qa2001/qa1067.html</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Lua Plugin Enabler</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/402f3ace-ee03-01da-0a4b-c0cbe4c4ff62" rel="alternate" title="VoodooPad: Lua Plugin Enabler" type="text/html" />
       <id>urn:uuid:402f3ace-ee03-01da-0a4b-c0cbe4c4ff62:3</id>
       <modified>2006-05-27T21:36:12Z</modified>
       <issued>2006-05-27T21:34:29Z</issued>
       <summary type="text/html"><html>h2. Lua Plugin Enabler<br/>
<br/>
The Lua Plugin Enabler lets your write simple VoodooPad plugins in the Lua programming language. If you are looking for a super easy way to extend VoodooPad, this is it.<br/>
<br/>
VoodooPad 3.0 and later has this plugin bundled by default.<br/>
<br/>
Download: http://flyingmeat.com/download/plugin/LuaPluginEnabler.vpplugin.zip (universal binary)<br/>
<br/>
We also provide a tutorial for writing your own Lua plugins: Hello World in Lua<br/>
As well there is a page of useful VoodooPad/Lua snippets for you to take advantage of: Lua Plugin Snippets<br/>
<br/>
For more information on Lua, visit http://www.lua.org/</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Web Server</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/8e7e9680-de58-01da-0286-c0cbe4c4b944" rel="alternate" title="VoodooPad: Web Server" type="text/html" />
       <id>urn:uuid:8e7e9680-de58-01da-0286-c0cbe4c4b944:4</id>
       <modified>2006-05-27T17:57:19Z</modified>
       <issued>2006-05-07T23:04:48Z</issued>
       <summary type="text/html"><html>h2. VoodooPad Pro's Web  Server<br/>
<br/>
One of the advanced features of VoodooPad Pro is a built in web server to share your document on the internet or your local network.  The web server also lets your network neighbors know about the service by broadcasting its availability via "Bonjour":http://www.apple.com/macosx/features/bonjour/ , making the ability to connect to it super easy.<br/>
<br/>
h3. Starting up the web server:<br/>
<br/>
VoodooPad Pro ships with the web server turned off by default, so to turn it on open up the preferences and choose the toolbar button labeled "Web Server", and click the button labeled "start".<br/>
<br/>
When the server starts up correctly you may click the web address that appears above the stop button.  Doing so will open up your web browser and allow you to pick from an open document to browse.<br/>
<br/>
If no documents are listed, read on to learn how to turn on access to a document.<br/>
<br/>
h3. Setting up a document to appear in the web server<br/>
<br/>
By default all documents have the option to appear in the web server turned off.  This is to keep you from accidentally sharing sensitive data over the internet.<br/>
<br/>
To turn on web access for a document, bring up the Inspector (via the "View-&amp;gt;Item and Document Inspector" menu) and flip on the "Show in local web access" setting under the Document tab.<br/>
<br/>
h3. Problems?<br/>
<br/>
*I can view my documents in the web browser, but nobody else can!*<br/>
It may be that you have a firewall running on your computer.  To see if this is the case, open up the System Preferences and look under the "Sharing" preferences.<br/>
<br/>
The tab marked "Firewall" should have the firewall turned off.  If it is running, you may create a new setting to allow connections on port 8080 (which is the default port that VoodooPad's webserver runs on).  Simply press the "New..." button, choose "Other" for the port name and enter 8080 for the port numbers.  For the description enter "VoodooPad Web Server".  Now your network neighbors should be able to connect.<br/>
</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: AppleScript</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/6073cece-d0b5-01d9-13d8-c0cbe4c4a707" rel="alternate" title="VoodooPad: AppleScript" type="text/html" />
       <id>urn:uuid:6073cece-d0b5-01d9-13d8-c0cbe4c4a707:27</id>
       <modified>2006-05-27T17:29:26Z</modified>
       <issued>2005-05-29T19:49:01Z</issued>
       <summary type="text/html"><html>h2. AppleScript<br/>
<br/>
* Simple AppleScript Examples<br/>
Whet your appetite.<br/>
<br/>
* "Poor Man's AppleScript HTML Export":$scriptName$/42444f08-3610-01da-10f7-c0cbe4c4e0d3<br/>
An example that loops through all the pages, and writes out the contents between pre tags in html files.<br/>
<br/>
* Copy Backlinks<br/>
Copies out a list of backlinks to the current page.<br/>
<br/>
* Copy Pages List<br/>
Copies out a list of page titles of the current document.<br/>
<br/>
* Get Random Paragraph<br/>
A fun little utility that prompts you with a random snippet<br/>
from your document, and lets you do various things with it.<br/>
<br/>
* Export Current Page<br/>
This script will export the current page to HTML.<br/>
<br/>
* Export Selection<br/>
This VP/Tex-Edit Plus script generates simplified HTML code.<br/>
<br/>
* Add Style Tags To Selection<br/>
This VP/Tex-Edit Plus script adds HTML tags for bold and italics to the current selection.<br/>
<br/>
* Open Exported Page<br/>
Opens an exported HTML version of the current page.<br/>
<br/>
* Collect Prefixed Lines<br/>
Locates all the lines with a given prefix in your entire document and copies them to your clipboard. Useful, for example, if you wanted to extract all the lines beginning with "TODO: " from various project pages and place them in a single "To Do" page. (Requires VP 2.5+)<br/>
<br/>
* Quicksilver Append to VoodooPad<br/>
Allows appending from Quicksilver to any of a number of VoodooPad pages based upon keywords.</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Make this the Start Page</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/5af55478-f7dd-01d9-0886-c0cbe4c4ac29" rel="alternate" title="VoodooPad: Make this the Start Page" type="text/html" />
       <id>urn:uuid:5af55478-f7dd-01d9-0886-c0cbe4c4ac29:7</id>
       <modified>2006-05-27T17:29:15Z</modified>
       <issued>2005-07-18T15:43:27Z</issued>
       <summary type="text/html"><html>*Note: This script no longer works in Voodoopad 3.0*<br/>
<br/>
Due to interface issues, it can sometimes be difficult to quickly set your "Index Page" aka "Home Page" aka "Start Page" in VoodooPad.  This GUI AppleScript aids the process by setting the start page to the currently open page of your active VoodooPad Document.<br/>
<br/>
Note that this GUI script was tested in 2.1.2, and that the GUI might change in future versions.<br/>
<br/>
&amp;lt;carea class="textareaCodeLarge"&amp;gt;set VPinfo to getVPinfo()<br/>
set theDoc to item 1 of VPinfo<br/>
set thePage to item 2 of VPinfo<br/>
set thePropWindow to theDoc &amp;amp; " Properties" as string<br/>
tell application "VoodooPad" to activate<br/>
tell application "System Events" to tell process "VoodooPad"<br/>
	if (exists of window thePropWindow) is false then<br/>
		click menu item "Document Info" of menu 1 of menu bar item "Page" of menu bar 1<br/>
		repeat until (window thePropWindow exists)<br/>
			delay 0.5<br/>
		end repeat<br/>
	end if<br/>
	tell window thePropWindow<br/>
		tell pop up button 1<br/>
			click<br/>
			click menu item thePage of menu 1<br/>
		end tell<br/>
		click button 1 -- close property window<br/>
	end tell<br/>
end tell<br/>
on getVPinfo()<br/>
	tell application "VoodooPad"<br/>
		set oldDelims to AppleScript's text item delimiters<br/>
		set theNames to ""<br/>
		set theNames to name of window 1<br/>
		if theNames is "" then set theNames to name of window 2<br/>
		set AppleScript's text item delimiters to ".vdoc:"<br/>
		set theNames to theNames's text items as list<br/>
		set AppleScript's text item delimiters to oldDelims<br/>
	end tell<br/>
	return theNames<br/>
end getVPinfo&amp;lt;/carea&amp;gt;<br/>
<br/>
Submitted by – mike [dot] com [at] mac [dot] com</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Collect Prefixed Lines</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/b1519ab8-4bf0-01da-1aac-c0cbe4c4bcae" rel="alternate" title="VoodooPad: Collect Prefixed Lines" type="text/html" />
       <id>urn:uuid:b1519ab8-4bf0-01da-1aac-c0cbe4c4bcae:7</id>
       <modified>2006-05-27T17:26:36Z</modified>
       <issued>2005-11-02T14:33:30Z</issued>
       <summary type="text/html"><html>h2. Collect Prefixed Lines.<br/>
<br/>
&amp;lt;carea class="textareaCodeLarge"&amp;gt;tell application "VoodooPad"<br/>
	set linePrefix to text returned of (display dialog "What prefix should I look for when gathering lines?" default answer "TODO: ")<br/>
	set foundItems to {}<br/>
	repeat with myPage in pages of document 1<br/>
		set pageParagraphs to paragraphs of text of myPage<br/>
		repeat with myParagraph in pageParagraphs<br/>
			set lineText to myParagraph as text<br/>
			<br/>
			set AppleScript's text item delimiters to the linePrefix<br/>
			set linePieces to every text item of lineText<br/>
			if (count of linePieces) is greater than 1 then<br/>
				set foundItem to the last item of linePieces<br/>
				set the end of foundItems to "From " &amp;amp; (display name of myPage) &amp;amp; ": " &amp;amp; foundItem<br/>
			end if<br/>
		end repeat<br/>
	end repeat<br/>
	<br/>
	set AppleScript's text item delimiters to return<br/>
	set the clipboard to foundItems as string<br/>
	<br/>
	display alert "Finished" message "You may now paste the collected lines into any page."<br/>
end tell&amp;lt;/carea&amp;gt;<br/>
<br/>
Submitted by chiznibitz at yahoo</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Open Exported Page</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/67086cda-d28c-01d9-04f2-c0cbe4c49adb" rel="alternate" title="VoodooPad: Open Exported Page" type="text/html" />
       <id>urn:uuid:67086cda-d28c-01d9-04f2-c0cbe4c49adb:6</id>
       <modified>2006-05-27T17:25:40Z</modified>
       <issued>2005-06-01T04:00:45Z</issued>
       <summary type="text/html"><html>Do you regularly export your wiki to HTML?  Do you ever wonder what a particular page looks like after it has been exported?  Are you frustrated by the formatted filenames VP uses to make its URLs work? Then this script is for you!  <br/>
<br/>
This AppleScript takes the currently visible VoodooPad page and looks for its corresponding HTML document on either the web or your local disk. Please note that you must actually export your .vdoc document somewhere first, or at least the individual page you're looking for. (to find out how to export just the current page with a proper filename, see Export Current Page )<br/>
<br/>
&amp;lt;carea class="textareaCodeLarge"&amp;gt;<br/>
set thePath to "http://homepage.mac.com/MYUSERNAME/wiki/"<br/>
-- set this to the path of  the server (or file:/// location)<br/>
-- of your wiki's html export.<br/>
-- Don't forget the trailing "/"<br/>
tell application "VoodooPad"<br/>
	set thePage to ""<br/>
	set thePage to the name of window 1 as text<br/>
	if thePage = "" then set thePage to the name of window 2 as text<br/>
	set theDoc to the name of document 1 as text<br/>
	set theDoc to theDoc &amp;amp; ":"<br/>
end tell<br/>
set x to the length of theDoc<br/>
repeat while thePage begins with the theDoc<br/>
	set thePage to characters (x + 1) thru -1 of thePage as string<br/>
end repeat<br/>
set the comparison_string to "ABCDEFGHIJKLMNOPQRSTUVWXYZ"<br/>
set the source_string to "abcdefghijklmnopqrstuvwxyz"<br/>
set the newFile to ""<br/>
repeat with thisChar in thePage<br/>
	set x to the offset of thisChar in the comparison_string<br/>
	if x is not 0 then<br/>
		set the newFile to (the newFile &amp;amp; character x of the source_string) as string<br/>
	else<br/>
		set the newFile to (the newFile &amp;amp; thisChar) as string<br/>
	end if<br/>
end repeat<br/>
set AppleScript's text item delimiters to " "<br/>
set newFile to (text items of newFile)<br/>
set AppleScript's text item delimiters to "_20"<br/>
set newFile to newFile as text<br/>
set AppleScript's text item delimiters to ""<br/>
try<br/>
	set newFile to (characters 1 thru 23 of newFile)<br/>
end try<br/>
set newFile to (thePath &amp;amp; newFile &amp;amp; ".html") as text<br/>
tell application "Safari"<br/>
	make new document at end of documents<br/>
	set URL of document 1 to newFile<br/>
end tell<br/>
&amp;lt;/carea&amp;gt;<br/>
<br/>
Submitted by - mike [dot] com [at] mac [dot] com</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Add Style Tags To Selection</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/77954688-ffa8-01d9-1af9-c0cbe4c4a457" rel="alternate" title="VoodooPad: Add Style Tags To Selection" type="text/html" />
       <id>urn:uuid:77954688-ffa8-01d9-1af9-c0cbe4c4a457:7</id>
       <modified>2006-05-27T17:23:54Z</modified>
       <issued>2005-07-28T13:45:01Z</issued>
       <summary type="text/html"><html>This AppleScript requires Tex-Edit Plus to work and is based on the "Export Selection" script. The purpose of the script is to insert the HTML tags for bold, italics, and strikethrough into VoodooPad's currently selected text. That's all it does; links are untouched and the underlining is ignored.  This is useful for pasting into some bulletin boards and blogs.<br/>
<br/>
Notes:<br/>
<br/>
* For some reason this script seems to take &amp;gt;30 seconds to run, and ActivityMonitor shows the hard drive is not busy.  I'm not sure why this is.  If anyone knows, I'd appreciate an email to alangenh [at] excite [dot] com.  Thanks!<br/>
* I seem to have to copy the the clipboard manually before calling the script.  Don't know why.<br/>
<br/>
&amp;lt;carea class="textareaCodeLarge"&amp;gt;<br/>
--script to convert text styles in the selection to html tags using Tex-Edit Plus<br/>
tell application "VoodooPad"<br/>
  activate<br/>
  tell application "System Events" to keystroke "c" using command down<br/>
end tell<br/>
tell application "Tex-Edit Plus"<br/>
  activate<br/>
  make new document at front<br/>
  tell application "System Events" to keystroke "v" using command down<br/>
  set temporaryWin to name of front window<br/>
  tell window temporaryWin<br/>
    replace looking for "^*" looking for styles {style:{bold, italic, underline}} replacing with "&amp;amp;lt;b&amp;gt;&amp;amp;lt;i&amp;gt;^*&amp;amp;lt;/i&amp;gt;&amp;amp;lt;/b&amp;gt;"<br/>
    replace looking for "^*" looking for styles {style:{bold, italic}} replacing with "&amp;amp;lt;b&amp;gt;&amp;amp;lt;i&amp;gt;^*&amp;amp;lt;/i&amp;gt;&amp;amp;lt;/b&amp;gt;"<br/>
    replace looking for "^*" looking for styles {style:{bold, underline}} replacing with "&amp;amp;lt;b&amp;gt;^*&amp;amp;lt;/b&amp;gt;"<br/>
    replace looking for "^*" looking for styles {style:{italic, underline}} replacing with "&amp;amp;lt;i&amp;gt;^*&amp;amp;lt;/i&amp;gt;"<br/>
    replace looking for "^*" looking for styles {style:bold} replacing with "&amp;amp;lt;b&amp;gt;^*&amp;amp;lt;/b&amp;gt;"<br/>
    replace looking for "^*" looking for styles {style:italic} replacing with "&amp;amp;lt;i&amp;gt;^*&amp;amp;lt;/i&amp;gt;"<br/>
    replace looking for "^*" looking for styles {style:outline} replacing with "&amp;amp;lt;strike&amp;gt;^*&amp;amp;lt;/strike&amp;gt;"<br/>
    replace looking for "^*" looking for styles {style:strikethrough} replacing with "&amp;amp;lt;strike&amp;gt;^*&amp;amp;lt;/strike&amp;gt;"<br/>
  end tell<br/>
end tell&amp;lt;/carea&amp;gt;</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Export Selection</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/068321d0-dcc7-01d9-0b38-c0cbe4c4e017" rel="alternate" title="VoodooPad: Export Selection" type="text/html" />
       <id>urn:uuid:068321d0-dcc7-01d9-0b38-c0cbe4c4e017:8</id>
       <modified>2006-05-27T17:23:11Z</modified>
       <issued>2005-06-14T04:25:35Z</issued>
       <summary type="text/html"><html>This AppleScript requires Tex-Edit Plus to work.  The purpose of the script is to convert VoodooPad's currently selected text into a highly simplified block of HTML code.  The entire selection is rendered as plain text, except for the links. The links are wrapped in a properly formatted HTML link tag, either with or without a path to the location of your HTML export. <br/>
<br/>
Note that external URL links are handled appropriately, but External URL aliases will end up linking to a non-existent page. If you manually associate external links to individual words (aliases) in your VoodooPad document, this script probably won't help you.<br/>
<br/>
Please note that this script uses the odd characters "µ" and "Ω" which should look like a horseshoe turned up, and one turned down. (they are the greek letters mu &amp;amp; omega)  If this doesn't appear correctly in your browser, you'll need to replace them with two unique characters that you don't typically use in your VoodooPad document.<br/>
<br/>
&amp;lt;carea class="textareaCodeLarge"&amp;gt;on trim(theSource)<br/>
	set thePath to "http://homepage.mac.com/USERNAME/wiki/"<br/>
	(* <br/>
Change the preceding line to the path (either local or remote) of your <br/>
VoodooPad HTML Export (Don't forget the trailing "/").  If the selection and<br/>
HTML will be used in the same directory, you can change this to "" (blank).<br/>
*)<br/>
	set the comparison_string to "ABCDEFGHIJKLMNOPQRSTUVWXYZ"<br/>
	set the source_string to "abcdefghijklmnopqrstuvwxyz"<br/>
	set newFile to ""<br/>
	repeat with thisChar in theSource<br/>
		set x to the offset of thisChar in the comparison_string<br/>
		if x is not 0 then<br/>
			set the newFile to (the newFile &amp;amp; character x of the source_string) as string<br/>
		else<br/>
			set the newFile to (the newFile &amp;amp; thisChar) as string<br/>
		end if<br/>
	end repeat<br/>
	set AppleScript's text item delimiters to " "<br/>
	set newFile to (text items of newFile)<br/>
	set AppleScript's text item delimiters to "_20"<br/>
	set newFile to newFile as text<br/>
	set AppleScript's text item delimiters to ""<br/>
	try<br/>
		set newFile to (characters 1 thru 23 of newFile)<br/>
	end try<br/>
	set newFile to "&amp;lt;a href=\"" &amp;amp; (thePath &amp;amp; newFile &amp;amp; ".html") &amp;amp; "\"&amp;gt;" as text<br/>
end trim<br/>
tell application "VoodooPad"<br/>
	activate<br/>
	tell application "System Events" to keystroke "c" using command down<br/>
end tell<br/>
set AppleScript's text item delimiters to "Ω"<br/>
tell application "Tex-Edit Plus"<br/>
	activate<br/>
	make new document at front<br/>
	tell application "System Events" to keystroke "v" using command down<br/>
	tell document 1<br/>
		replace looking for "^*" looking for styles {style:underline} replacing with "Ωµ^*Ω"<br/>
		set thebin to contents as text<br/>
	end tell<br/>
end tell<br/>
set thebin to text items of thebin<br/>
set thebin to thebin as list<br/>
repeat with x from (count of text items of thebin) to 1 by -1<br/>
	if item x of thebin starts with "µ" then<br/>
		if item x of thebin starts with "µhttp://" then<br/>
			set item x of thebin to "&amp;lt;a href=\"" &amp;amp; (item x of thebin) &amp;amp; "\"&amp;gt;" &amp;amp; item x of thebin &amp;amp; "&amp;lt;/a&amp;gt;"<br/>
		else<br/>
			set item x of thebin to trim(item x of thebin) &amp;amp; item x of thebin &amp;amp; "&amp;lt;/a&amp;gt;"<br/>
		end if<br/>
	end if<br/>
end repeat<br/>
set AppleScript's text item delimiters to ""<br/>
tell application "Tex-Edit Plus"<br/>
	tell document 1<br/>
		set contents of document 1 to thebin as text<br/>
		replace looking for "µ" replacing with ""<br/>
		set style of contents to plain<br/>
		set color of contents to black<br/>
		set size of contents to 10<br/>
		set font of contents to "Monaco"<br/>
	end tell<br/>
end tell&amp;lt;/carea&amp;gt;<br/>
</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Export Current Page</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/268fede8-d1c1-01d9-0b51-c0cbe4c4a9af" rel="alternate" title="VoodooPad: Export Current Page" type="text/html" />
       <id>urn:uuid:268fede8-d1c1-01d9-0b51-c0cbe4c4a9af:20</id>
       <modified>2006-05-27T17:22:04Z</modified>
       <issued>2005-05-31T03:45:49Z</issued>
       <summary type="text/html"><html>This AppleScript is intended to replicate VoodooPad's default HTML export behavior for the currently visible page.  Its critical feature is the ability to correctly name the exported file so that other pages in your wiki will link to it properly.<br/>
<br/>
&amp;lt;carea class="textareaCodeLarge"&amp;gt;<br/>
set thePath to "/testwiki/"<br/>
-- it's important to set this path to the folder where<br/>
-- you'd like the resulting file to be saved, and don't<br/>
-- forget the trailing "/"<br/>
tell application "VoodooPad"<br/>
	set thePage to ""<br/>
	set thePage to the name of window 1 as text<br/>
	if thePage = "" then set thePage to the name of window 2 as text<br/>
	set theDoc to the name of document 1 as text<br/>
	set theDoc to theDoc &amp;amp; ":"<br/>
end tell<br/>
set x to the length of theDoc<br/>
repeat while thePage begins with the theDoc<br/>
	set thePage to characters (x + 1) thru -1 of thePage as string<br/>
end repeat<br/>
set the comparison_string to "ABCDEFGHIJKLMNOPQRSTUVWXYZ"<br/>
set the source_string to "abcdefghijklmnopqrstuvwxyz"<br/>
set the newFile to ""<br/>
repeat with thisChar in thePage<br/>
	set x to the offset of thisChar in the comparison_string<br/>
	if x is not 0 then<br/>
		set the newFile to (the newFile &amp;amp; character x of the source_string) as string<br/>
	else<br/>
		set the newFile to (the newFile &amp;amp; thisChar) as string<br/>
	end if<br/>
end repeat<br/>
set AppleScript's text item delimiters to " "<br/>
set newFile to (text items of newFile)<br/>
set AppleScript's text item delimiters to "_20"<br/>
set newFile to newFile as text<br/>
set AppleScript's text item delimiters to ""<br/>
try<br/>
	set newFile to (characters 1 thru 23 of newFile)<br/>
end try<br/>
set newFile to (thePath &amp;amp; newFile &amp;amp; ".html") as text<br/>
tell application "VoodooPad"<br/>
	activate<br/>
	tell document 1<br/>
		export the page named thePage to newFile as HTML<br/>
	end tell<br/>
end tell<br/>
&amp;lt;/carea&amp;gt;<br/>
<br/>
Script submitted by - mike [dot] com [at] mac [dot] com<br/>
</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Get Random Paragraph</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/eb3bb9c0-eef8-01d9-1072-c0cbe4c4d753" rel="alternate" title="VoodooPad: Get Random Paragraph" type="text/html" />
       <id>urn:uuid:eb3bb9c0-eef8-01d9-1072-c0cbe4c4d753:7</id>
       <modified>2006-05-27T17:20:14Z</modified>
       <issued>2005-07-07T08:08:05Z</issued>
       <summary type="text/html"><html>This AppleScript will find a random paragraph on a random page of your wiki, and then display it in a window.  It also has some neat features built into it, such as:<br/>
<br/>
* Open the quoted VoodooPad page<br/>
<br/>
* Put the quote on your clipboard<br/>
<br/>
* automatically find all URLs in a quote, and open any or all of them in your default client.<br/>
<br/>
* Set preferences while the script is running:<br/>
     - the minimum paragraph word length to find<br/>
     - the maximum number of times to try and find a suitable paragraph on each random page.<br/>
     - the maximum number of random pages to look for a suitable paragraph in before giving up. (might increase the wait time)<br/>
        <br/>
Note that preferences will only be saved between runs if you use the system-wide script <br/>
menu, save the script as an application, or use a script launcher that supports persistent properties.  As of version 2.1.1, VoodooPad's built-in script menu does not support this. As a work-around, you can change the default values directly in the script.<br/>
<br/>
<br/>
&amp;lt;carea class="textareaCodeLarge"&amp;gt;property minWords : 10<br/>
property maxPageTries : 10<br/>
property maxDocTries : 10<br/>
(*<br/>
July 7, 2005<br/>
100% original code written by Michael Henley (mike.com@mac.com)<br/>
http://silvermeteors.com<br/>
-<br/>
This is Emailware, ergo, if you use this script regularly, or if you<br/>
use any part of it in your own scripts, you must send me a nice<br/>
email telling me how great I am. Thank you.<br/>
*)<br/>
set theCommand to "Try Again"<br/>
repeat while theCommand is "Try Again"<br/>
	set randomResult to getRandomText()<br/>
	set vpPage to (item 1 of randomResult)<br/>
	set randomText to (item 2 of randomResult)<br/>
	set randomMessage to "[" &amp;amp; vpPage &amp;amp; "]" &amp;amp; return &amp;amp; randomText<br/>
	set theCommand to button returned of ¬<br/>
		(display dialog randomMessage buttons {"Cancel", "Options", "Try Again"} default button 3)<br/>
	repeat while theCommand is not "Try Again"<br/>
		if theCommand is "Less Options" then<br/>
			set theCommand to button returned of ¬<br/>
				(display dialog randomMessage buttons {"Cancel", "Options", "Try Again"} default button 3)<br/>
		else if theCommand is "Options" then<br/>
			set theCommand to button returned of ¬<br/>
				(display dialog randomMessage buttons {"More Options", "Copy Clip", "Open Page"} default button 3)<br/>
		else if theCommand is "More Options" then<br/>
			set theCommand to button returned of ¬<br/>
				(display dialog randomMessage buttons {"Less Options", "Open URLs", "Configure"} default button 3)<br/>
		else if theCommand is "Copy Clip" then<br/>
			set the clipboard to vpPage &amp;amp; ": " &amp;amp; randomText<br/>
			set theCommand to "Less Options"<br/>
		else if theCommand is "Open Page" then<br/>
			tell application "VoodooPad" to tell document 1 to open page with title vpPage<br/>
			set theCommand to "Less Options"<br/>
		else if theCommand is "Open URLs" then<br/>
			try<br/>
				set theURLs to getURLs(randomText) as list<br/>
				if length of theURLs is 1 then<br/>
					set theURL to theURLs as string<br/>
				else<br/>
					set theURL to choose from list theURLs<br/>
				end if<br/>
				open location theURL<br/>
				tell me to activate<br/>
				set theCommand to "Less Options"<br/>
			on error<br/>
				set URLerror to return &amp;amp; return &amp;amp; "Error! Couldn't find any URLs. Please select another option."<br/>
				set theCommand to button returned of ¬<br/>
					(display dialog randomMessage &amp;amp; URLerror buttons {"More Options", "Copy Clip", "Open Page"} default button 3)<br/>
			end try<br/>
		else if theCommand is "Configure" then<br/>
			set minWords to text returned of ¬<br/>
				(display dialog "Only find paragraphs longer than<br/>
				this number of words:" default answer minWords)<br/>
			set maxPageTries to text returned of ¬<br/>
				(display dialog "Maximum attempts per page:" default answer maxPageTries)<br/>
			set maxDocTries to text returned of ¬<br/>
				(display dialog "Maximum attempts per document:" default answer maxDocTries)<br/>
			set theCommand to "Less Options"<br/>
		end if<br/>
	end repeat<br/>
end repeat<br/>
on getRandomText()<br/>
	(*<br/>
July 7, 2005<br/>
100% original code written by Michael Henley (mike.com@mac.com)<br/>
http://silvermeteors.com<br/>
-<br/>
This is Emailware, ergo, if you use this script regularly, or if you<br/>
use any part of it in your own scripts, you must send me a nice<br/>
email telling me how great I am. Thank you.<br/>
*)<br/>
	tell application "VoodooPad"<br/>
		set randomRange to the count of pages of document 1<br/>
		repeat maxDocTries times<br/>
			set randomPage to (random number randomRange)<br/>
			set randomParaRange to count of paragraphs of (text of page randomPage of document 1)<br/>
			set randomPage to name of page randomPage of document 1<br/>
			repeat maxPageTries times<br/>
				set randomPara to (random number randomParaRange)<br/>
				set randomText to (paragraph randomPara of text of page randomPage of document 1) as text<br/>
				if (count of words of randomText) is greater than or equal to minWords then<br/>
					return {randomPage, randomText}<br/>
				end if<br/>
			end repeat<br/>
		end repeat<br/>
		return {randomPage, "Couldn't find a paragraph longer than " &amp;amp; minWords ¬<br/>
			&amp;amp; " words after " &amp;amp; maxPageTries &amp;amp; " attempts on " &amp;amp; maxDocTries &amp;amp; " pages."}<br/>
	end tell<br/>
end getRandomText<br/>
on getURLs(sourceText)<br/>
	(*<br/>
July 7, 2005<br/>
100% original code written by Michael Henley (mike.com@mac.com)<br/>
http://silvermeteors.com<br/>
-<br/>
This is Emailware, ergo, if you use this script regularly, or if you<br/>
use any part of it in your own scripts, you must send me a nice<br/>
email telling me how great I am. Thank you.<br/>
*)<br/>
	set endDelim to " " (* change this value if you're looking for<br/>
	 something other than a space at the end of your URLs *)<br/>
	set URLList to {}<br/>
	set oldDelims to AppleScript's text item delimiters<br/>
	set AppleScript's text item delimiters to "<br/>
" -- strip carriage returns<br/>
	set sourceText to text items of sourceText<br/>
	set AppleScript's text item delimiters to endDelim<br/>
	set sourceText to sourceText &amp;amp; endDelim as string<br/>
	set URISchemes to {"http:", "https:", "file:", "ftp:", "mailto:", "aim:", "telnet:", "news:", "rtsp:", "afp:", "eppc:", "rss:"}<br/>
	repeat with delim from 1 to length of URISchemes<br/>
		set delim to item delim of URISchemes as string<br/>
		set AppleScript's text item delimiters to delim<br/>
		set trimText to {}<br/>
		repeat with x from 2 to length of sourceText's text items<br/>
			set trimText to trimText &amp;amp; (text item x of sourceText) as list<br/>
		end repeat<br/>
		set AppleScript's text item delimiters to endDelim<br/>
		repeat with x from 1 to length of trimText<br/>
			set URLList to URLList &amp;amp; (delim &amp;amp; text item 1 of item x of trimText) as list<br/>
		end repeat<br/>
	end repeat<br/>
	set AppleScript's text item delimiters to oldDelims<br/>
	return URLList<br/>
end getURLs<br/>
&amp;lt;/carea&amp;gt;<br/>
<br/>
<br/>
Script submitted by – mike [dot] com [at] mac [dot] com<br/>
</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Copy Pages List</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/bfffa03e-da06-01d9-0970-c0cbe4c4e290" rel="alternate" title="VoodooPad: Copy Pages List" type="text/html" />
       <id>urn:uuid:bfffa03e-da06-01d9-0970-c0cbe4c4e290:5</id>
       <modified>2006-05-27T17:18:56Z</modified>
       <issued>2005-06-10T16:24:11Z</issued>
       <summary type="text/html"><html>This AppleScript finds the complete titles of every page in the currently active VoodooPad document, and copies them to the clipboard in an alphabetized list.  This script could take a few minutes to run depending on your system specs and the size of your .vdoc.  Be sure to save (or backup) your .vdoc before running this script for the first time.<br/>
<br/>
&amp;lt;carea class="textareaCode"&amp;gt;tell application "VoodooPad"<br/>
	set AppleScript's text item delimiters to ""<br/>
	set theCount to the number of pages of document 1<br/>
	set thePages to {}<br/>
	repeat with i from theCount to 1 by -1<br/>
		set the beginning of thePages to name of page i of document 1 as text<br/>
	end repeat<br/>
	set AppleScript's text item delimiters to return<br/>
	set the clipboard to thePages as string<br/>
end tell&amp;lt;/carea&amp;gt;<br/>
<br/>
Script submitted by - mike [dot] com [at] mac [dot] com</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Copy Backlinks</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/343844b4-da03-01d9-0340-c0cbe4c4f2af" rel="alternate" title="VoodooPad: Copy Backlinks" type="text/html" />
       <id>urn:uuid:343844b4-da03-01d9-0340-c0cbe4c4f2af:10</id>
       <modified>2006-05-27T17:05:47Z</modified>
       <issued>2005-06-10T15:58:48Z</issued>
       <summary type="text/html"><html>This AppleScript will copy all currently visible backlinks to the clipboard.  To load the backlinks for a particular page, open the page and hit Shift-Command-B.  It may take Voodoopad a few moments to find all of the backlinks for your page.  Wait for the progress <br/>
indicator to disappear before using this script.<br/>
<br/>
&amp;lt;carea class="textareaCode"&amp;gt;<br/>
tell application "System Events"<br/>
	set theBacklinks to value of text field of every row of table of scroll area of tab group of drawer of window of process "VoodooPad" as list<br/>
	set AppleScript's text item delimiters to return<br/>
	set the clipboard to theBacklinks as text<br/>
	set AppleScript's text item delimiters to ""<br/>
end tell<br/>
&amp;lt;/carea&amp;gt;<br/>
<br/>
Script submitted by - mike [dot] com [at] mac [dot] com</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Glossary</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/a0fff7fe-c08a-01da-099f-c0cbe4c4af7f" rel="alternate" title="VoodooPad: Glossary" type="text/html" />
       <id>urn:uuid:a0fff7fe-c08a-01da-099f-c0cbe4c4af7f:12</id>
       <modified>2006-05-27T14:46:23Z</modified>
       <issued>2006-03-30T23:47:40Z</issued>
       <summary type="text/html"><html>h2. The Glossary<br/>
<br/>
*Alias*: An alias is a word/link that goes to a page with a different title.  For example, a page named "Apple Computer" might have an alias of "AAPL" which will link to the "Apple Computer" page.  Find out more about aliases by reading it's topic page.<br/>
<br/>
*Backlinks*: The pages that link to the page you are currently viewing.  To view the backlinks for a given page, choose the "View-&amp;gt;Palettes-&amp;gt;Backlinks" menu item.<br/>
<br/>
*Item*: An "item" is a chunk of data inside your VoodooPad document.  Pages are items, but so are file links and custom url links.  It's just a way to group together the things you put in VoodooPad.<br/>
<br/>
*Orphan*: A page in a VoodooPad document that isn't linked to from any other pages in the document.<br/>
<br/>
*Pad*: Another word for "VoodooPad Document".  This was used way back for version 1.x, but the preferred term for the stuff you stick all your pages and items in is "Document".<br/>
<br/>
*Triggers*: A Pro only feature- triggers are a handy way to script VoodooPad when certain events occur, such as a new page being created or deleted, documents opening or closing, files being written on web export and more.</html></summary>
     </entry>
  <entry>
       <title>FlySketch: The Toolbar</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/2bb04e8a-fb15-01d9-0a29-c0cbe4c4eafb" rel="alternate" title="FlySketch: The Toolbar" type="text/html" />
       <id>urn:uuid:2bb04e8a-fb15-01d9-0a29-c0cbe4c4eafb:18</id>
       <modified>2006-04-15T23:39:33Z</modified>
       <issued>2005-07-22T18:00:33Z</issued>
       <summary type="text/html"><html>h2. The FlySketch Toolbar<br/>
<br/>
The  toolbar is packed with a bunch of really useful buttons to press- and it's best to know what each one does first.  Find out all about them below.<br/>
<br/>
&amp;lt;br/&amp;gt;<br/>
<br/>
!/fs/images/flysketch/toolbar-select.png!<br/>
The *Selection Tool* can be used to grab images and shapes for resizing or moving around the canvas.  This is the basic tool you will use to get around the canvas.<br/>
<br/>
*Key Shortcut:* V<br/>
<br/>
&amp;lt;br/&amp;gt;<br/>
<br/>
!/fs/images/flysketch/toolbar-oval.png!<br/>
The *Oval Tool* can be used to construct ovals or circles on the canvas.  Simply select the tool and drag the mouse around to create your shape.  Holding down the shift key while doing this will create a perfectly round circle for you.<br/>
<br/>
*Key Shortcut:* C<br/>
<br/>
*Tip:* Hold down the shift key to scale proportionally when resizing.<br/>
<br/>
&amp;lt;br/&amp;gt;<br/>
<br/>
!/fs/images/flysketch/toolbar-line.png!<br/>
The *Line Tool* can be used to make straight lines on the canvas.  You also have the option of placing arrows on either end of the line.<br/>
<br/>
Adding arrows is as simple as opening the inspector drawer in the box labeled “Arrow” use the checkboxs to mark which end(s) you want an arrow to appear.<br/>
<br/>
*Key Shortcut:* L<br/>
<br/>
*Tip:* Place arrows on the ends of your line with the arrow pallet to help with drawing diagrams. <br/>
<br/>
&amp;lt;br/&amp;gt;<br/>
<br/>
!/fs/images/flysketch/toolbar-rect.png!<br/>
The *Rectangle Tool* can be used to make rectangles or squares. Holding down the shift key while drawing this shape conforms it to a square.<br/>
<br/>
*Key Shortcut:* R<br/>
<br/>
*Tip:* Hold down the shift key to make your rectangle scale proportionally when resizing.<br/>
<br/>
&amp;lt;br/&amp;gt;<br/>
<br/>
!/fs/images/flysketch/toolbar-roundrect.png!<br/>
The *Round Rectangle Tool* can be used to make rectangles or squares with rounded edges. Holding down the shift key while drawing this shape conforms it to a square.<br/>
<br/>
*Key Shortcut:* E<br/>
<br/>
&amp;lt;br/&amp;gt;<br/>
<br/>
!/fs/images/flysketch/toolbar-text.png!<br/>
The *Text Tool* is used to add text to the canvas.  Choose the Text Tool and drag the mouse to create a rectangle where you want text to appear.  Type away to add your text to the canvas.  Change fonts using the font panel, which is brought up with the key combo Command-T.<br/>
<br/>
*Key Shortcut:* T<br/>
<br/>
&amp;lt;br/&amp;gt;<br/>
<br/>
!/fs/images/flysketch/toolbar-freehand.png!<br/>
The *Freehand Tool* allows you to sketch anywhere in the canvas with freeform lines. Once freehand objects are created, you can only move them around- resizing them is not possible after creation.<br/>
<br/>
Use this tool when you feel like being messy.  Or, if you have a tablet attached, FlySketch will sense the pressure you are drawing with and adjust the width of your line.<br/>
<br/>
*Key Shortcut:* F<br/>
<br/>
&amp;lt;br/&amp;gt;<br/>
<br/>
!/fs/images/flysketch/toolbar-highlight.png!<br/>
The *Highlighter Tool* is useful when you have a screen capture on the canvas, and you would like to highlight certain pieces such as text, or maybe images.  If you fancy a color other than yellow, you may change the color (and transparency) of the Highlighter Tool in the preferences.<br/>
<br/>
*Key Shortcut:* H<br/>
<br/>
&amp;lt;br/&amp;gt;<br/>
<br/>
!/fs/images/flysketch/toolbar-transparency.png!<br/>
The *Transparency Slider* is used when you want to make the canvas see-through, making it easier to see what you want to take a screen capture of.  It’s also just neat to use- show it to your windows-using friends and make them jealous.<br/>
<br/>
*Key Shortcuts:* 1-9, 0 (zero) to make the canvas opaque.<br/>
<br/>
&amp;lt;br/&amp;gt;<br/>
<br/>
!/fs/images/flysketch/toolbar-workflow.png!<br/>
*Workflow Actions* are used to perform actions against the images you create.  Click on the script icon and you will be presented with a list of actions to use against the graphics current canvas.  You can create a new action by opening up the Workflow Scripts folder, and dragging an alias of an application or folder in.  To open up the Workflow Scripts folder choose “Open Workflow Scripts folder” from the actions menu.<br/>
<br/>
When an action is run against an application alias (Like Mail, Photoshop, or Microsoft Entourage), FlySketch will open the image up just like you were dragging it to the applications’ icon.  When an action is run against a folder alias, FlySketch will copy in the image.<br/>
<br/>
*Tip:* If you are up to the challenge, with a little bit of scripting know-how, you can create and add your own unix shell scripts as actions by placing them in your “~/Library/Application Support/FlySketch/Workflow Scripts” folder.  FlySketch recognizes the following list as files that are meant to be run as shell scripts: “py", "pl", “sh", "rb", “as", and "applescript”.<br/>
<br/>
&amp;lt;br/&amp;gt;<br/>
<br/>
!/fs/images/flysketch/toolbar-clear.png!<br/>
The *Clear Canvas* tool does just what its name implies- it clears the canvas of any objects.  Deleting them forever.  Gone, poof, no more.<br/>
<br/>
...<br/>
<br/>
Ok, you can always choose undo if you did this by accident.<br/>
<br/>
&amp;lt;br/&amp;gt;<br/>
<br/>
!/fs/images/flysketch/toolbar-screenshot.png!<br/>
The *Screen Shot* tool takes a picture of whatever is currently behind the canvas, and adds it as an image object.  This is perfect for taking little shots of webpages, and then marking them up with the highlighter.<br/>
<br/>
If you would like to have these images locked or unlocked, check out the option “Lock screen capture backgrounds” in the Preferences window.<br/>
<br/>
</html></summary>
     </entry>
  <entry>
       <title>FlySketch: New in FlySketch 1.6</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/b2e841c6-53e6-01da-01a8-c0cbe4c4ffb8" rel="alternate" title="FlySketch: New in FlySketch 1.6" type="text/html" />
       <id>urn:uuid:b2e841c6-53e6-01da-01a8-c0cbe4c4ffb8:6</id>
       <modified>2006-04-07T22:14:00Z</modified>
       <issued>2005-11-12T17:42:07Z</issued>
       <summary type="text/html"><html>h2. What's New in FlySketch 1.6?<br/>
<br/>
* &amp;lt;b&amp;gt;Full Screen Captures.&amp;lt;/b&amp;gt;<br/>
New full screen shots, which will also take pictures of menus.  Invoked via holding down the command key when hitting the camera button, or cmd-shift-5 (which may be changeable in the prefs if you don't like that).  Find out more on the &amp;lt;!-- it's a bug, dont' ask.. --&amp;gt; Full Screen Capture page.<br/>
* &amp;lt;b&amp;gt;App Service Improvements&amp;lt;/b&amp;gt;<br/>
FlySketch will now put pdf and tiffs on the pasteboard for use in the application services menu.<br/>
<br/>
&amp;lt;b&amp;gt;Bug Fixes!!&amp;lt;/b&amp;gt;<br/>
<br/>
* Fixed a bug on export where the file extension of .png was given when no file extension was given in the export panel.<br/>
* Fixed a bug where the stroke size was lost when switching to the highlighter and back.<br/>
* Fixed a bug where a single click with the freehand tool would not draw a single dot.<br/>
</html></summary>
     </entry>
  <entry>
       <title>FlySketch: Be Creative</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/cd0be2d4-fc88-01d9-142f-c0cbe4c4d867" rel="alternate" title="FlySketch: Be Creative" type="text/html" />
       <id>urn:uuid:cd0be2d4-fc88-01d9-142f-c0cbe4c4d867:10</id>
       <modified>2006-04-04T22:42:12Z</modified>
       <issued>2005-07-24T14:20:47Z</issued>
       <summary type="text/html"><html>h2. Be  Creative with FlySketch<br/>
<br/>
&amp;lt;br/&amp;gt;<br/>
<br/>
h3=. Use FlySketch as digital tracing paper.<br/>
<br/>
p=. !/fs/images/flysketch/creative-trace.png!<br/>
<br/>
Since the FlySketch window supports multiple values of transparency, you can make the canvas act as tracing paper.  Combined with the freehand tool, you can have your own virtual scratchpad.<br/>
<br/>
Do you own a "Wacom":http://www.wacom.com/ tablet?  The FlySketch Freehand tool is pressure sensitive- meaning the harder you press your tablet pen, the thicker the lines it draws.  Combined with the "Darker" compositing mode, you get the feel of a real color pencil.<br/>
<br/>
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;<br/>
<br/>
h3=. Trace the human form with ease.<br/>
<br/>
p=. !/fs/images/flysketch/creative-handtrace.png!<br/>
<br/>
Maybe you have something more noble in mind than defacing websites.  What about practicing your drawing?  Place FlySketch over a masters' work, and start drawing and learning from the best.<br/>
<br/>
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;<br/>
<br/>
h3=. Smooth curves are a piece of cake.<br/>
<br/>
p=. !/fs/images/flysketch/creative-smooth.png!<br/>
<br/>
Built into FlySketch's freehand tool is the ability to have the lines that you draw come out smooth and beautiful.  Move your mouse as fast as you can- you won't see any jagged edges here.</html></summary>
     </entry>
  <entry>
       <title>FlyStash &amp;amp; Boomerang: Start Page</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/3ec82d22-c72a-01d9-1a6f-c0cbe4c4de81" rel="alternate" title="FlyStash &amp;amp; Boomerang: Start Page" type="text/html" />
       <id>urn:uuid:3ec82d22-c72a-01d9-1a6f-c0cbe4c4de81:9</id>
       <modified>2006-03-16T10:28:30Z</modified>
       <issued>2005-05-17T16:20:24Z</issued>
       <summary type="text/html"><html>h2. FlyStash &amp;amp; Boomerang<br/>
<br/>
*NOTE: There is currently no ongoing development with this project, and it's not supported.  But feel free to play with it if you'd like.*<br/>
<br/>
FlyStash is a server side wiki written in python which works along with Boomerang, which is a desktop application for Mac OS X.  It's a research project of Gus's - so it is very likely to change alot before it is done.  So don't put any important information in it, because you are sure to lose it at some point.<br/>
<br/>
The official website is located at: http://flyingmeat.com/flystash/<br/>
<br/>
* Backing up FlyStash<br/>
A must read if you use FlyStash.<br/>
<br/>
* The Birth of Boomerang<br/>
How this little project came about.</html></summary>
     </entry>
  <entry>
       <title>FlySketch: Entering Registration Information</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/834ed0aa-2615-01da-076a-c0cbe4c4ae13" rel="alternate" title="FlySketch: Entering Registration Information" type="text/html" />
       <id>urn:uuid:834ed0aa-2615-01da-076a-c0cbe4c4ae13:5</id>
       <modified>2006-02-22T23:26:52Z</modified>
       <issued>2005-09-15T11:21:20Z</issued>
       <summary type="text/html"><html>h2. Entering Registration Information<br/>
<br/>
Once you've purchased a license for FlySketch, you are going to want to enter that information into the application so you no longer see the watermark telling you to go register. To do that, follow these simple steps:<br/>
<br/>
1) Activate FlySketch by clicking on it's icon in the dock, or just by launching it.<br/>
2) Choose "Enter Serial Number…" from the Purchase menu in the menu bar.<br/>
3) Enter your registration name and serial number exactly as you received it when you purchased FlySketch.<br/>
4) Press the "Register" button.<br/>
<br/>
And that's it. If you get an error message, double check that the information you entered is correct and try again. If for some reason a problem persists, contact support@flyingmeat.com , and we'll get it all sorted out.</html></summary>
     </entry>
  <entry>
       <title>FlySketch: Compositing Modes</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/0f3ae094-ef71-01d9-0d3c-c0cbe4c4c1ec" rel="alternate" title="FlySketch: Compositing Modes" type="text/html" />
       <id>urn:uuid:0f3ae094-ef71-01d9-0d3c-c0cbe4c4c1ec:9</id>
       <modified>2006-02-22T23:25:49Z</modified>
       <issued>2005-07-07T22:28:05Z</issued>
       <summary type="text/html"><html>h2. FlySketch Graphic Compositing Modes<br/>
<br/>
If you are running FlySketch 1.5 on Mac OS X 10.4 or later, you will notice an extra pallet with various "Compositing modes".  What the heck are those?<br/>
<br/>
Well, direct from Apple, here's what you get:<br/>
<br/>
* Clear<br/>
Transparent.<br/>
<br/>
* Copy<br/>
Source image.<br/>
<br/>
* Destination Atop<br/>
Destination image wherever both images are opaque, source image wherever source image is opaque but destination image is transparent, and transparent elsewhere.<br/>
<br/>
* Destination In<br/>
Destination image wherever both images are opaque, and transparent elsewhere.<br/>
<br/>
* Destination Out<br/>
Destination image wherever destination image is opaque but source image is transparent, and transparent elsewhere.<br/>
<br/>
* Destination Over<br/>
Destination image wherever destination image is opaque, and source image elsewhere.<br/>
<br/>
* Plus Darker<br/>
Sum of source and destination images, with color values approaching 0 as a limit.<br/>
<br/>
* Plus Lighter<br/>
Sum of source and destination images, with color values approaching 1 as a limit.<br/>
<br/>
* Source Atop<br/>
Source image wherever both images are opaque, destination image wherever destination image is opaque but source image is transparent, and transparent elsewhere.<br/>
<br/>
* Source In<br/>
Source image wherever both images are opaque, and transparent elsewhere.<br/>
<br/>
* Source Out<br/>
Source image wherever source image is opaque but destination image is transparent, and transparent elsewhere.<br/>
<br/>
* Source Over<br/>
Source image wherever source image is opaque, and destination image elsewhere.<br/>
<br/>
* XOR<br/>
Exclusive OR of source and destination images. Works only with black and white images and is not recommended for color contexts.<br/>
<br/>
Shamelessly stolen from: http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/ObjC_classic/Classes/NSImage.html</html></summary>
     </entry>
  <entry>
       <title>FlySketch: Hidden Preferences</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/50589b9c-ecc0-01d9-08c5-c0cbe4c493bd" rel="alternate" title="FlySketch: Hidden Preferences" type="text/html" />
       <id>urn:uuid:50589b9c-ecc0-01d9-08c5-c0cbe4c493bd:10</id>
       <modified>2006-02-22T23:24:57Z</modified>
       <issued>2005-07-04T12:17:51Z</issued>
       <summary type="text/html"><html>*FlySketch 1.6:*<br/>
<br/>
*Don't use PDF for copy and paste.*<br/>
A problem arises when you use PDF as the format for copying between applications.  If you have compositing modes set on your graphics (such as darker/lighter drawing), then that information is lost when sent to PDF.  Using the command below, you can skip the copying of PDF to the clipboard, and only rely on the TIFF data being there.<br/>
<br/>
defaults write com.flyingmeat.FlySketch skipPDFCopy -bool YES<br/>
<br/>
Quit FlySketch, paste that in the terminal, and you should be good to go.<br/>
</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Lua Plugins</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/97eae072-6877-01da-1347-c0cbe4c4ccae" rel="alternate" title="VoodooPad: Lua Plugins" type="text/html" />
       <id>urn:uuid:97eae072-6877-01da-1347-c0cbe4c4ccae:6</id>
       <modified>2005-12-08T23:27:00Z</modified>
       <issued>2005-12-08T21:49:42Z</issued>
       <summary type="text/html"><html>h2. Extending VoodooPad with Lua "Script ~Plugins"<br/>
<br/>
<br/>
* Hello World in Lua<br/>
* Lua Plugin Snippets<br/>
* Lua's Homepage: http://www.lua.org/</html></summary>
     </entry>
  <entry>
       <title>FlySketch: The Palettes</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/5e187842-fb2a-01d9-1520-c0cbe4c48175" rel="alternate" title="FlySketch: The Palettes" type="text/html" />
       <id>urn:uuid:5e187842-fb2a-01d9-1520-c0cbe4c48175:8</id>
       <modified>2005-12-08T15:19:29Z</modified>
       <issued>2005-07-22T20:32:17Z</issued>
       <summary type="text/html"><html>h2. FlySketch's Palettes<br/>
<br/>
FlySketch 1.5 adds a new feature- side palettes.  Using these palettes, you can perform various operations on your selected graphics, like apply drop shadows, align graphics, change color and compositing modes, and more.<br/>
<br/>
!/fs/images/flysketch/palette-color.png!<br/>
<br/>
The *Color Palette* can is used to change the fill and stroke colors of the selected graphic.<br/>
<br/>
The filled in color well is used to control the fill color of the selected graphic.  The stroked color well is used to control the stroke color of the selected graphic.  Use the button with the arrows on either end to swap the fill and stroke colors.<br/>
<br/>
The button with the slash is used to remove the selected graphics' stroke or fill value.  When the fill color well is on top, pressing the slashed button will set the selected graphic to have no fill.  Pressing it again will give the graphic back it's fill value.  The same works for stroke values when the stroke color well is on top.<br/>
<br/>
&amp;lt;br/&amp;gt;<br/>
<br/>
!/fs/images/flysketch/palette-info.png!<br/>
<br/>
The *Info Palette* displays coordinate and size information about the selected graphic.<br/>
<br/>
&amp;lt;br/&amp;gt;<br/>
<br/>
!/fs/images/flysketch/palette-stroke.png!<br/>
<br/>
The *Stroke / Line Arrow Palette* allows you to change the stroke value for a selected graphic.  In addition, if you have a line graphic selected, you can choose to have the lines capped with various shapes, and alter the sizes of those shapes.<br/>
<br/>
&amp;lt;br/&amp;gt;<br/>
<br/>
!/fs/images/flysketch/palette-align.png!<br/>
<br/>
The *Align / Position Palette* is used to align selected graphics, or to move a single graphic to the front or back of the canvas.  Left, right, top, bottom, vertical and horizontal center align options are available.<br/>
<br/>
&amp;lt;br/&amp;gt;<br/>
<br/>
!/fs/images/flysketch/palette-shadow.png!<br/>
<br/>
The *Shadow Palette* is used to apply a drop shadow to a selected graphic.  Use the widgets to vary the size of the shadow radius, and the offset of the shadow from the graphic.<br/>
<br/>
&amp;lt;br/&amp;gt;<br/>
<br/>
!/fs/images/flysketch/palette-composite.png!<br/>
<br/>
The *Compositing  Mode Palette* is used to alter the way the graphic is drawn on the canvas. (This option is available for 10.4+ only).  Find out about the various options on the compositing modes page.<br/>
</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: New in 2.5</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/e977c19e-36ae-01da-1e44-c0cbe4c498a6" rel="alternate" title="VoodooPad: New in 2.5" type="text/html" />
       <id>urn:uuid:e977c19e-36ae-01da-1e44-c0cbe4c498a6:12</id>
       <modified>2005-12-06T11:59:09Z</modified>
       <issued>2005-10-06T14:19:43Z</issued>
       <summary type="text/html"><html>h2. New Features in VoodooPad 2.5<br/>
<br/>
h3. Web Export<br/>
<br/>
The HTML export has been completely redone, supporting exporting your pages as Markdown, Textile, plain text, or using Apple's RTF to HTML conversion (10.4 only) for high fidelity markup.<br/>
<br/>
And that's not all.  Web Export also allows you to choose from various plugins which will give your pages a distinct look and feel to them. <br/>
<br/>
h3. Multi-alias Support<br/>
<br/>
Now your pages can have more than one alias!  Make "Augie", "August", "Gustav", and "Gusser" all link to a page named "Gus".<br/>
<br/>
h3. Automator Actions<br/>
<br/>
VoodooPad 2.5 now comes with a handful of Automator actions.<br/>
<br/>
h3. More AppleScript Support<br/>
<br/>
New "display name" property for pages, and the ability to retrieve page keys from a document sorted by name, create date, and modified date.<br/>
<br/>
h3. Option to turn off self referencing links.<br/>
<br/>
No longer have the index page link to itself.<br/>
<br/>
h3. Application Services "Drop Page"<br/>
<br/>
Now in addition to "Make New Page" in the Application Services menu, we now have an "Append to Services Drop Page" menu item.  So when you are in Safari and you see a snippet of text you'd like to snatch and catalog later one, you can select this menu item and it will be appended to a special page for later cataloging.<br/>
<br/>
h3. The Smaller Things<br/>
<br/>
* Pages now re-encrypt themselves when you leave them.<br/>
* New "Skip on export" option for pages in the info sheet.<br/>
* Improved AddressBook integration.<br/>
* Spotlight enhancements.<br/>
* New "Highlight" menu item under the Format menu to change the background of selected text.<br/>
* Rename categories by holding down the option key while double clicking on the name.<br/>
* New preference for for setting the external editor.<br/>
* Bug fixes!<br/>
</html></summary>
     </entry>
  <entry>
       <title>FlySketch: Full Screen Capture</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/9946fbc2-53e6-01da-1852-c0cbe4c4cc7d" rel="alternate" title="FlySketch: Full Screen Capture" type="text/html" />
       <id>urn:uuid:9946fbc2-53e6-01da-1852-c0cbe4c4cc7d:3</id>
       <modified>2005-11-12T17:41:33Z</modified>
       <issued>2005-11-12T17:41:24Z</issued>
       <summary type="text/html"><html>h2. Full Screen Capture<br/>
<br/>
FlySketch 1.6 includes a new feature that allows you to take full screen captures, including the ability to take pictures of menus in addition to the older ability to take snapshots of what is below the canvas.<br/>
<br/>
By default you may use command-shift-5 to take full screen shots.  FlySketch will at this point freeze everything on your screen and allow you to crop out a portion of the screen that you would like to use.  Double click or press enter to accept what you have chosen, press esc to cancel.<br/>
<br/>
Some shortcuts:<br/>
<br/>
* Use the arrow keys to move the frame around.<br/>
* Use shift + the arrow keys to grow or shrink the frame left and down.<br/>
* Use command + the arrow keys to grow or shrink the frame right and up.<br/>
* Hold down the option key to move, grow, or shrink the frame in 5 pixel increments.<br/>
</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: VPWindowMovie</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/65d2db28-e33c-01d9-0aea-c0cbe4c4f835" rel="alternate" title="VoodooPad: VPWindowMovie" type="text/html" />
       <id>urn:uuid:65d2db28-e33c-01d9-0aea-c0cbe4c4f835:4</id>
       <modified>2005-11-01T15:34:16Z</modified>
       <issued>2005-06-22T09:40:53Z</issued>
       <summary type="text/html"><html>VPWindowMovie is a simple plugin that just makes a movie of what you are doing in a single window.  Its prime purpose is to help Gus debug problems people are having in VoodooPad.<br/>
<br/>
Currently, it has only been tested on 10.4.  <br/>
<br/>
Install: Just double click the plugin and VoodooPad should place it in the plugins folder.<br/>
<br/>
Use: Go to the "Plugin-&amp;gt;Miscellaneous-&amp;gt;Start/Stop movie" menu item.  Type type, click click away.  When you are done, choose the same menu option, and save the movie.<br/>
<br/>
You can download it from:<br/>
<br/>
http://flyingmeat.com/fs/contrib/voodoopad/VPWindowMovie.dmg</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Plugin Development</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/f9ca0dfe-4743-01da-0cd6-c0cbe4c4bb0e" rel="alternate" title="VoodooPad: Plugin Development" type="text/html" />
       <id>urn:uuid:f9ca0dfe-4743-01da-0cd6-c0cbe4c4bb0e:3</id>
       <modified>2005-10-27T16:48:30Z</modified>
       <issued>2005-10-27T16:47:04Z</issued>
       <summary type="text/html"><html>h2. Plugin Development with VoodooPad<br/>
<br/>
VoodooPad 2.0+ supports a plugin API, using loadable bundles written in Cocoa. Right now the documentation is located in VPPlugin.h, which can be download along with example code from here: <br/>
http://flyingmeat.com/download/plugin_latest.tgz<br/>
<br/>
One word of caution- even though I don't plan on changing the API for future releases, it might end up happening anyway since this is the first crack at a plugin api for VoodooPad.<br/>
<br/>
When you build your plugin in XCode, you'll need to link against VPPlugin.framework which is included along with source in the download. Sometimes paths get a little funny in XCode, so if you get errors building a stock plugin you might make sure this framework is reachable.<br/>
<br/>
If you have any questions, comments, or ideas- please let me know at gus@flyingmeat.com.<br/>
</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Copy all pages to TextEdit AppleScript</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/03e528c8-3da8-01da-040e-c0cbe4c490ba" rel="alternate" title="VoodooPad: Copy all pages to TextEdit AppleScript" type="text/html" />
       <id>urn:uuid:03e528c8-3da8-01da-040e-c0cbe4c490ba:3</id>
       <modified>2005-10-15T11:19:24Z</modified>
       <issued>2005-10-15T11:17:59Z</issued>
       <summary type="text/html"><html>Here's an example AppleScript that loops through all the pages in the first VoodooPad document, and then creates a new document in TextEdit with the contents of all those pages.<br/>
<br/>
&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;set allText to ""<br/>
set pageMarker to "------------------------------------------"<br/>
<br/>
tell application "VoodooPad"<br/>
  tell document 1<br/>
    repeat with i from 1 to number of items in pages<br/>
      set pageText to text of page i<br/>
      set pageName to name of page i<br/>
      <br/>
      set allText to allText &amp;amp; return &amp;amp; pageMarker &amp;amp; return &amp;amp; pageName &amp;amp; return &amp;amp; pageText<br/>
      <br/>
    end repeat<br/>
  end tell<br/>
end tell<br/>
<br/>
<br/>
tell application "TextEdit"<br/>
  tell application "TextEdit" to make new document at end of documents<br/>
  tell application "TextEdit" to set text of document 1 to allText<br/>
  activate<br/>
end tell<br/>
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;<br/>
</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: How to register VoodooPad</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/f1c47344-309e-01da-1ada-c0cbe4c49d83" rel="alternate" title="VoodooPad: How to register VoodooPad" type="text/html" />
       <id>urn:uuid:f1c47344-309e-01da-1ada-c0cbe4c49d83:5</id>
       <modified>2005-10-10T11:41:13Z</modified>
       <issued>2005-09-28T21:10:18Z</issued>
       <summary type="text/html"><html>h3. How to register VoodooPad<br/>
<br/>
Once you have your serial number for VoodooPad, you'll want to plug it in so VoodooPad knows you've done the good deed and you are allowed to have more than 15 pages.<br/>
<br/>
To do this, choose "Enter Registration..." from the VoodooPad menu.<br/>
<br/>
A panel will appear, with fields to enter your registration name and and serial number.  Make sure when you enter them they are spelled exactly the same way as given to you when you completed your order (either via email or the web page).  If it helps, you can cut and paste into these fields.<br/>
<br/>
Then just press the "Register" button and you are good to go.<br/>
<br/>
If you've already purchased VoodooPad and you don't now what your serial number is, visit our handy "serial number page":http://www.flyingmeat.com/voodoopad/serial/ and we'll send it to you via express email.<br/>
</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Contact Flying Meat</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/f89a48a2-368d-01da-135a-c0cbe4c497dc" rel="alternate" title="VoodooPad: Contact Flying Meat" type="text/html" />
       <id>urn:uuid:f89a48a2-368d-01da-135a-c0cbe4c497dc:3</id>
       <modified>2005-10-06T10:24:18Z</modified>
       <issued>2005-10-06T10:23:55Z</issued>
       <summary type="text/html"><html>h2. How to contact us<br/>
<br/>
There are a couple of different ways to reach us, choose which one is best for your inquiry:<br/>
<br/>
Our website: http://www.flyingmeat.com/<br/>
<br/>
Bug reporting and feature requests: http://www.flyingmeat.com/pyr/<br/>
<br/>
VoodooPad support email: voodoopad@flyingmeat.com<br/>
<br/>
All other inquiries: info@flyingmeat.com<br/>
</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Formatting</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/a65928c4-368d-01da-07c9-c0cbe4c4e487" rel="alternate" title="VoodooPad: Formatting" type="text/html" />
       <id>urn:uuid:a65928c4-368d-01da-07c9-c0cbe4c4e487:3</id>
       <modified>2005-10-06T10:23:08Z</modified>
       <issued>2005-10-06T10:21:37Z</issued>
       <summary type="text/html"><html>h2. Formatting Text in VoodooPad<br/>
<br/>
h3. Changing the Font<br/>
<br/>
VoodooPad supports the full range of text formatting that you have come to expect from a Mac OS X application. If you would like to change the current font, type Command-T to bring up the font panel. From here you can select from a list of styles and sizes.<br/>
<br/>
h3. Changing the Background color<br/>
<br/>
(Not available in VoodooPad Lite, 10.3 only)<br/>
<br/>
VoodooPad will also let you change the background color of a page, as long as you are running Mac OS X 10.3 and above. Simply type Command-T from the page you wish to change the background color from, and select the button in the toolbar that looks like a piece of paper with a color box next to it. Save your document and you are set.<br/>
<br/>
p=. !/fs/images/voodoopad/font_panel_document_color.png!<br/>
<br/>
h3. Changing font colors<br/>
<br/>
(Not available in VoodooPad Lite)<br/>
<br/>
To change the color of a font, you must first make sure that the option "Allow manual underlining and font color changes" in the preferences options pane is turned on. This is turned off by default in VoodooPad because a blue and underlined word is what delimits a link.<br/>
<br/>
Now if you would like to change the font color, bring up the font panel (Command-T) and select the appropriate color button to do so.<br/>
<br/>
h3. New Page Text<br/>
<br/>
You can change the default "Describe NewPage here" text when you create a new page.<br/>
Open up the prefrences, and alter the field "New page text" to your heart's content. Substitute $title$ for where the title of the page would go, $date$ where you would like an optional timestamp to go, and use \n to make where a newline should go.<br/>
<br/>
h3. How to get a more stylized new page.<br/>
<br/>
Tired of the way all your new pages look? Wish you could center your text, add newlines, or just bold something? Help is on the way!<br/>
<br/>
Create a new page named "NewPageTemplate". You should get a page come up that says "Describe $title$ here." Now select the text "Describe" and bold it. Add some newlines to the page and type "$date$. Now make a new page.<br/>
<br/>
Tada! Using this technique you can make your new pages look like you want to. You can even place images in by default.<br/>
<br/>
Note: This setting (per document) will override the setting you have in the preferences.<br/>
</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Auto-bullets and stroke-out</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/43b35b46-368c-01da-07cd-c0cbe4c4c191" rel="alternate" title="VoodooPad: Auto-bullets and stroke-out" type="text/html" />
       <id>urn:uuid:43b35b46-368c-01da-07cd-c0cbe4c4c191:3</id>
       <modified>2005-10-06T10:19:16Z</modified>
       <issued>2005-10-06T10:11:42Z</issued>
       <summary type="text/html"><html>VoodooPad 2.0 has new support for inserting and maintaining bullet lists, and striking out paragraphs. To make a line into a bullet item, use the key-combo "Command-\". To remove the bullet type "Command-\" again. This will insert a bullet in the beginning of the line, and indent any line wraps below it that are part of the paragraph.<br/>
<br/>
p=. !/fs/images/voodoopad/bullets.png!<br/>
<br/>
To create another bullet, you can just hit enter at the end of your sentence, and when a new line is inserted it will place a bullet at the same position as the bullet in the previous line.<br/>
<br/>
To end the bullet list, just hit enter twice at the end of your last bulleted line.<br/>
<br/>
Hint: If you want to enter a bullet at any point in a paragraph, do so by using the key-combo "Option-8".<br/>
<br/>
You may also indent and undent a line by using the key combos "Command-Option-]" and "Command-Option-[". Using this functionality you can create nice lists and outlines.<br/>
<br/>
If you want to strike out some text, you can use the key-combo "Command-Option-K". This will draw a single line through the currently selected text, or for the whole paragraph if no word is selected. Use the key-combo again to remove the strike-out.</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: New in 2.1</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/b07a2602-368b-01da-0b22-c0cbe4c4a51d" rel="alternate" title="VoodooPad: New in 2.1" type="text/html" />
       <id>urn:uuid:b07a2602-368b-01da-0b22-c0cbe4c4a51d:3</id>
       <modified>2005-10-06T10:08:34Z</modified>
       <issued>2005-10-06T10:07:35Z</issued>
       <summary type="text/html"><html>h3. Category / Tag support<br/>
<br/>
(Not available in VoodooPad Lite)<br/>
<br/>
You can now assign a category (or tag as it is sometimes called) to a page in your document. A page can also belong to multiple categories.<br/>
<br/>
To play with the categories choose "Show Categories" from the Page menu, and a drawer will pop open on the left side of your window. Create a new category by pressing the "+" button, delete an entry (or association to a page) by pressing the "-" button. The little green arrow will add the current page to the selected category, or you can hold down the option key when pressing the toolbar button to add the current page to the selected category.<br/>
<br/>
h3. Spotlight support<br/>
<br/>
VoodooPad comes with a plugin for 10.4 Tiger's Spotlight. Now you can search the contents of your VoodooPad documents (which can also be disabled in the document properties window).<br/>
<br/>
h3. HTML export improvements<br/>
<br/>
When exporting a page as HTML (not available in VoodooPad Lite) VoodooPad will now create CSS styles to reference for the markup of the page. Strikeouts in your text are now marked up for export as well.<br/>
<br/>
h3. Inter-document links<br/>
<br/>
You can now link to a specific page in another VoodooPad document. (Not available in VoodooPad Lite). Just drag and drop the document you want to link to onto your current VoodooPad page, and VoodooPad will give you the option to link to that document or to a specific page inside that document.<br/>
<br/>
h3. Remote wiki editing removed<br/>
<br/>
But it's not a bad thing!<br/>
<br/>
The remote editing functionality now lives on in a separate application known as Boomerang, where it is enjoying life and happily connecting and synchronizing with its partner in crime, FlyStash (the cgi script formerly known as VPStash). It's free for VoodooPad 2.0 owners, and you can find out all about it at http://flyingmeat.com/flystash/.<br/>
<br/>
h3. A new look for the Preferences<br/>
<br/>
The preferences window has been updated, and it no longer looks like it was made by a drunk Microsoft Windows programmer. Now it looks more like a drunk Macintosh programmer designed it.<br/>
<br/>
h3. Unlinking<br/>
<br/>
Choose "Unlink" from the Edit menu while on a VoodooPad link, and the link will be gone.<br/>
<br/>
h3. New AppleScript commands<br/>
<br/>
New AppleScript command "current selection" for use on windows, and a new command to export a single page as HTML, RTFD, or plain text.</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: New in 2.0</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/89bbef6e-368b-01da-18cf-c0cbe4c4a1cc" rel="alternate" title="VoodooPad: New in 2.0" type="text/html" />
       <id>urn:uuid:89bbef6e-368b-01da-18cf-c0cbe4c4a1cc:3</id>
       <modified>2005-10-06T10:07:29Z</modified>
       <issued>2005-10-06T10:06:30Z</issued>
       <summary type="text/html"><html>h3. Encryption<br/>
<br/>
(Not available in VoodooPad Lite)<br/>
<br/>
VoodooPad now supports encrypting individual pages in a document. You can be sure that your documents are secure because VoodooPad uses an industry standard encryption algorithm named "Blowfish" ( see http://www.schneier.com/blowfish.html for more information ).<br/>
<br/>
Too many passwords to remember? VoodooPad gives you the option to store your password on the KeyChain as well.<br/>
<br/>
h3. Sketch<br/>
<br/>
(Not available in VoodooPad Lite)<br/>
<br/>
"Because sometimes a picture is worth one thousand words."<br/>
<br/>
Feeling artistic? Bring down the Sketch sheet and draw what you can't express in words.<br/>
<br/>
h3. Backlinks<br/>
<br/>
(Not available in VoodooPad Lite)<br/>
<br/>
One of the most requested features- backlinks open up in a drawer, and give you a list of pages that link to the one you are currently viewing.<br/>
<br/>
h3. Saved Workspaces<br/>
<br/>
Quit with all your windows open. Relaunch, and there they are again. Great for pickup up where you left off.<br/>
<br/>
h3. New Search<br/>
<br/>
(Not available in VoodooPad Lite)<br/>
<br/>
VoodooPad's searching has improved by leaps and bounds. Search multiple documents and have the results return in a single list- double click a search result and be brought right to what you are looking for.<br/>
<br/>
h3. New AppleScript commands<br/>
<br/>
(Not available in VoodooPad Lite)<br/>
<br/>
New commands to export to the iPod, open, create, delete, append to, and prepend to pages. See for more information.<br/>
<br/>
h3. AddressBook Integration<br/>
<br/>
(Not available in VoodooPad Lite)<br/>
<br/>
Names in your AddressBook will now be highlighted, and when you can click on them you can open up the person in your address book, or be given the option to email them.<br/>
<br/>
h3. Indentation, and bullets<br/>
<br/>
VoodooPad now makes it really easy to create little outlines with new buttlet-item commands and text shifting.<br/>
<br/>
h3. Rename pages<br/>
<br/>
Do you not like the title you gave a page? No problem, in VoodooPad 2.0 you can now rename it.<br/>
<br/>
h3. Improved URL and email address markup<br/>
<br/>
We wrote a fancy new markup engine that's pretty darn fast had uses neat tricks to figure out just what is and is not a URL or email address. You just get to enjoy improved link recognition. Every one is happy.<br/>
<br/>
h3. Threaded exporting<br/>
<br/>
(Not available in VoodooPad Lite)<br/>
<br/>
Do you have lots and lots of pages, and does it took a loooong time to export? Now VoodooPad will take those tasks and put them in the background so you can keep on working in your pages without being interrupted.</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Introduction</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/9429bbb2-368a-01da-178e-c0cbe4c4e12a" rel="alternate" title="VoodooPad: Introduction" type="text/html" />
       <id>urn:uuid:9429bbb2-368a-01da-178e-c0cbe4c4e12a:3</id>
       <modified>2005-10-06T10:02:27Z</modified>
       <issued>2005-10-06T09:59:38Z</issued>
       <summary type="text/html"><html>h2. Introduction<br/>
<br/>
VoodooPad is best described as a self contained website that runs on your computer. It's a little brain where you can put disparate bits of information in that you need to keep around for whatever reason may suit you. It's super easy to use as well, just type whatever you need to remember, and link when you want to branch a thought or start a new page.<br/>
<br/>
Type in your notes, and highlight important words or phrases to create new pages; or drag and drop folders, images, applications, or URLs into VoodooPad - they're linked up whenever the word representing it is found.<br/>
<br/>
When you create a new document, it starts with an "Index" page which you are free to add and change the contents of all you want. You build your document up from this page; your personal info-web grows organically as you add more to it.<br/>
<br/>
h3. How Can I use VoodooPad?<br/>
<br/>
Use it for bits information that you want tucked away where you can easily get to it when you need it.<br/>
<br/>
VoodooPad is in use for such things as research projects, building quick and simple websites, storing directions to friend's houses, and documentation projects. It's uses are endless, and you will find yourself being productive with it right away.<br/>
<br/>
h3. How does it work?<br/>
<br/>
VoodooPad is based on a simple idea of linking pages of information that you write. It works just like you would browse on the internet, except you can edit any page. Drag and drop files into VoodooPad and they will become links as well. You can also type in common urls like http://www.apple.com/ and email addresses and they will be ready for you to click on them.<br/>
<br/>
Type the word "Index" anywhere on a page, notice that it is a different color and underlined. Anywhere you type in the word "Index" (or index - it is not case sensitive), it will automatically highlight because a page entitled Index is already in your VoodooPad document. And any time you click on the Index link it will take you to that page. You can also highlight any other word, and choose "Make Link" from the Edit menu, or use Command-L to make your selected word link the same way.<br/>
<br/>
You can create a new page in your document even if you aren't ready to link to it just yet- use Command-N and enter the title of it, and presto-magic, it's created for you.<br/>
You may notice that some words appear with underlines, but are not highlighted blue. These are words that are "potential links" (also known as wiki-words), but have not yet had a page created for them. Clicking on the link will create a new page, and change the color of the link to blue (unless you have changed the color in the preferences).<br/>
</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Web Export Notes</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/dbc5bb4a-3155-01da-1962-c0cbe4c48fd0" rel="alternate" title="VoodooPad: Web Export Notes" type="text/html" />
       <id>urn:uuid:dbc5bb4a-3155-01da-1962-c0cbe4c48fd0:13</id>
       <modified>2005-09-30T18:34:02Z</modified>
       <issued>2005-09-29T18:59:39Z</issued>
       <summary type="text/html"><html>( check out Web Export for the official docs)<br/>
<br/>
It seems that vphtmltemplate doesn't work with this new feature. I imagine that we will need to create our own _Web Export Plugins_?<br/>
<br/>
You can create a page named “WebExportPageTemplate”, this is just like the vphtmltemplate page- only I didn’t want it to be tied up with the legacy stuff with the old html exporting. -Gus<br/>
<br/>
...<br/>
<br/>
I don't really mind trying to create my own _personalized Web Export Plugin_, I just need to know where to put images etc.  -Andy<br/>
<br/>
Images can be wherever you want if you are creating a plugin- the a postflight script would just need to copy it to the right location (like the gmdc plugin does with gmdc.css) -gus<br/>
<br/>
For the record, it wasn't difficult. Besides it's a great place to store the css and images, etc. -Andy<br/>
<br/>
...<br/>
<br/>
I essentially copied lots of stuff to create a new _Web Export Plugin_. It works, but I need more info on the new variables for these templates.  -Andy<br/>
<br/>
I’ll try and get those documented sometime soon. -Gus<br/>
<br/>
...<br/>
<br/>
$vptitle used to insert the page's alias. $title$ seems to insert the page's name. -Andy<br/>
<br/>
I’ll see if I can add $alias$ to pull out the first alias. - gus<br/>
<br/>
</html></summary>
     </entry>
  <entry>
       <title>FlyGesture: Movies</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/820673de-03dc-01da-16df-c0cbe4c4eac5" rel="alternate" title="FlyGesture: Movies" type="text/html" />
       <id>urn:uuid:820673de-03dc-01da-16df-c0cbe4c4eac5:4</id>
       <modified>2005-08-26T14:59:51Z</modified>
       <issued>2005-08-02T22:07:37Z</issued>
       <summary type="text/html"><html>h2. Movies of FlyGesture in action.<br/>
<br/>
Sometimes you just can't capture what an application is about in just words or screenshots.  So we've put together some movies for you to watch to help get the point across.  (Note: "QuickTime":http://www.apple.com/quicktime/ 7+ is required to watch these movies).<br/>
<br/>
* Watch as simple mouse gestures control Safari, Exposé, and iTunes:<br/>
"itunes-safari.mp4":http://flyingmeat.com/fs/contrib/gesture/itunes-safari.mp4<br/>
<br/>
* See how to configure multiple actions together in a single gesture.<br/>
"chain-actions.mp4":http://flyingmeat.com/fs/contrib/gesture/chain-actions.mp4</html></summary>
     </entry>
  <entry>
       <title>FlyGesture: How it Works</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/13e8c95e-05f5-01da-063c-c0cbe4c4ebff" rel="alternate" title="FlyGesture: How it Works" type="text/html" />
       <id>urn:uuid:13e8c95e-05f5-01da-063c-c0cbe4c4ebff:5</id>
       <modified>2005-08-26T14:59:18Z</modified>
       <issued>2005-08-05T14:08:32Z</issued>
       <summary type="text/html"><html>h2. How FlyGesture Works.<br/>
<br/>
The idea behind mouse gestures is very simple, but makes for a very powerful and elegant solution for performing specific actions on your computer.  The way it works is you usually hit a modifier key (like F1 with gesture), and then draw on the screen with your mouse.  The symbol that is made by your movements is mapped to a specific action (or actions) that will be then performed.  Actions like "Create a new document", or "Start a new mail message", or "Close window".<br/>
<br/>
FlyGesture does all this and more.  FlyGesture provides "guides" on screen for you to move your mouse through and gives instant feedback to you so you know if you are on the right track to performing an action.  When the guides you are moving through are blue, it means you are going down a good path to a gesture. When the guides turn red, that means that FlyGesture no longer knows of any actions to perform based on the gesture you are creating.  Along with just giving feedback in the form of colors, when you come to the end of a path, the name of the gesture is displayed below the guides.<br/>
<br/>
Here's an example- let's say we want to invoke the "*Hide All*" gesture<br/>
<br/>
!/fs/images/gesture/how-it-works-step1.png!<br/>
<br/>
The first thing to do is invoke FlyGesture by press and holding F1.  FlyGesture automatically draws all the guides around your current mouse position, meaning you always start your gesture from the middle.  Now, move your mouse to the guide right below your current position as shown in the picture above.  Notice how the words "Page Down" appear below the guides- this indicates that if you were to release F1, the "Page Down" action would be invoked.  But don't do that- let's keep on moving our mouse.<br/>
<br/>
!/fs/images/gesture/how-it-works-step2.png!<br/>
<br/>
Now move your mouse to the right as shown in the image above.  The display now says "Hide All", and if we release F1 FlyGesture will tell all the running applications to "hide".<br/>
<br/>
Piece of cake.  Try looking through the FlyGesture catalog (opened by choosing "Open Catalog" from the menubar), and seeing what other gestures you can learn.  You can even add your own.</html></summary>
     </entry>
  <entry>
       <title>FlyGesture: AppleScript</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/e48fa318-c7eb-01d9-07aa-c0cbe4c4b542" rel="alternate" title="FlyGesture: AppleScript" type="text/html" />
       <id>urn:uuid:e48fa318-c7eb-01d9-07aa-c0cbe4c4b542:8</id>
       <modified>2005-08-26T14:58:21Z</modified>
       <issued>2005-05-18T15:26:35Z</issued>
       <summary type="text/html"><html>AppleScript is a basic building block of FlyGesture.  When you complete a gesture command, it looks up the gesture in it's catalog, finds the AppleScript associated with it, and executes it.<br/>
<br/>
To learn move about AppleScript, visit http://www.apple.com/applescript/<br/>
<br/>
Here are a couple of sample scripts that may be used in FlyGesture:<br/>
<br/>
Simply tell the finder to activate:<br/>
@tell application "Finder" to activate@<br/>
<br/>
Activate Safari, and create a new window:<br/>
&amp;lt;code&amp;gt;tell application "Safari"<br/>
	activate<br/>
	make new document<br/>
end tell&amp;lt;/code&amp;gt;</html></summary>
     </entry>
  <entry>
       <title>FlyGesture: Frequently Asked Questions</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/f0f0e2fa-0528-01da-102d-c0cbe4c4c388" rel="alternate" title="FlyGesture: Frequently Asked Questions" type="text/html" />
       <id>urn:uuid:f0f0e2fa-0528-01da-102d-c0cbe4c4c388:5</id>
       <modified>2005-08-26T14:56:26Z</modified>
       <issued>2005-08-04T13:47:16Z</issued>
       <summary type="text/html"><html>h2. Frequently Asked Questions (FAQ)<br/>
<br/>
h3. How can I have gesture run my unix shell script?<br/>
<br/>
The easiest way to do this is to wrap your shell script in a .command file for Terminal.app to open up.  Then add a "Open File or Folder" action to your gesture, and select the .command script / file you just created.<br/>
<br/>
h3. Why do the guides I've moved through turn from blue to red?<br/>
<br/>
FlyGesture gives feedback in the form of changing the colors of the guides to let you know you are on the right track to finding your gesture.  When it's blue, that means you are going down a good path to a gesture.  When the guides turn red, that means that FlyGesture no longer knows of any actions to perform based on the gesture you are creating.</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: HTML Exporting</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/f0a6607e-0828-01da-1a1c-c0cbe4c496c9" rel="alternate" title="VoodooPad: HTML Exporting" type="text/html" />
       <id>urn:uuid:f0a6607e-0828-01da-1a1c-c0cbe4c496c9:4</id>
       <modified>2005-08-08T09:25:53Z</modified>
       <issued>2005-08-08T09:24:49Z</issued>
       <summary type="text/html"><html>h2. HTML Exporting<br/>
<br/>
(This is just a stub page, to get this AppleScript in place).<br/>
<br/>
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;<br/>
tell application "VoodooPad"<br/>
	activate<br/>
	set p to {fileExtension:"php", filePath:"/tmp"}<br/>
	tell window 1 to use plugin named "Export as HTML..." with properties p<br/>
end tell<br/>
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;</html></summary>
     </entry>
  <entry>
       <title>FlySketch: FTP Upload</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/8435226a-05d8-01da-18b9-c0cbe4c495be" rel="alternate" title="FlySketch: FTP Upload" type="text/html" />
       <id>urn:uuid:8435226a-05d8-01da-18b9-c0cbe4c495be:3</id>
       <modified>2005-08-05T10:50:25Z</modified>
       <issued>2005-08-05T10:44:05Z</issued>
       <summary type="text/html"><html><br/>
h2. FTP Upload Script<br/>
<br/>
As seen on the FM Board ( http://flyingmeat.com/board/viewtopic.php?p=946 ) by "dvancamp":<br/>
<br/>
Most of the time when I take a screen shot it is to share it. I end up going right to the FTP anyway; so I added this little script to cut out the middleman. I have it automatically saving my shots to my server and placing the URL in my clipboard ready for pasting into my BaseCamp messages. <br/>
<br/>
Currently it's encoding that space between the date and time so it's ready to paste. If you don't want the encoding delete | sed 's/ /%20/g' <br/>
<br/>
Save it as "Send to FTP.sh" in your Workflow Scripts folder, update it with your server info, and set the permissions "chmod 755". <br/>
<br/>
Works for me. YMMV <br/>
<br/>
&amp;lt;code&amp;gt;<br/>
#!/bin/bash <br/>
<br/>
#FlySketchCloseWindow=YES <br/>
<br/>
HOST='example.com/httpdocs/folder/' <br/>
USER='username' <br/>
PASS='password' <br/>
URL='http://www.example.com/folder/' <br/>
FILE=`basename "$*"` <br/>
<br/>
echo "$URL$FILE" | sed 's/ /%20/g' | pbcopy <br/>
<br/>
curl -T "$*" ftp://$USER:$PASS@$HOST<br/>
&amp;lt;/code&amp;gt;</html></summary>
     </entry>
  <entry>
       <title>FlyStash &amp;amp; Boomerang: Backing up FlyStash</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/ca56c33a-c7ed-01d9-1bca-c0cbe4c4809e" rel="alternate" title="FlyStash &amp;amp; Boomerang: Backing up FlyStash" type="text/html" />
       <id>urn:uuid:ca56c33a-c7ed-01d9-1bca-c0cbe4c4809e:9</id>
       <modified>2005-08-04T11:06:26Z</modified>
       <issued>2005-05-18T15:40:10Z</issued>
       <summary type="text/html"><html>h2. Backing up FlyStash<br/>
<br/>
Assuming you installed FlyStash the way it is recommended on Mac OS X, simply follow the instructions below to make an xml document containing your FlyStash data.<br/>
<br/>
&amp;lt;code&amp;gt;cd /Library/WebServer/CGI-Executables/flystash/<br/>
<br/>
./flystashadmin.py  --dump ~/flystashbackup.xml&amp;lt;/code&amp;gt;<br/>
<br/>
<br/>
You will then have a copy of the data in your home directory, in a document named "flystashbackup.xml"</html></summary>
     </entry>
  <entry>
       <title>FlyStash &amp;amp; Boomerang: The Birth of Boomerang</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/348c223e-0512-01da-1c41-c0cbe4c4fc75" rel="alternate" title="FlyStash &amp;amp; Boomerang: The Birth of Boomerang" type="text/html" />
       <id>urn:uuid:348c223e-0512-01da-1c41-c0cbe4c4fc75:3</id>
       <modified>2005-08-04T11:04:59Z</modified>
       <issued>2005-08-04T11:04:31Z</issued>
       <summary type="text/html"><html>h2. The Birth of Boomerang.<br/>
<br/>
So here's the story on how Boomerang and FlyStash came to be, and the current state of things as of August 4, 2005.<br/>
<br/>
A long, long time ago VoodooPad 1.1 introduced a new feature known as "Remote Editing".  This feature would allow you to connect to a custom built wiki server known as "vpwiki",  and allow you to click through the pages, edit, and save back to the server.  These pages were also editable from the web.<br/>
<br/>
However, there was one very large problem- VoodooPad uses rich text to store it's contents, but web-browsers have no way to view and edit this format- so when VoodooPad saved to the server it sent two versions of the page- one in rich text format, and one in plain text format (so web visitors could see the page).  If someone edited a page from the web, then the rich text version was thrown away because it was now out of date.  And there goes all the fancy bolding and highlighting, and embedded images, files, and the text layout you put together.  Bummer.<br/>
<br/>
Alot of work was put into VoodooPad 2.0 improve the situation.  VoodooPad moved to using plugins to talk to the wiki server, so in theory a plugin could be made to talk to a Wikimedia wiki, Twiki, or any other wiki providing someone was willing to do the work to write the plugin.  And now instead of sending two formats to the server, VoodooPad sent three- rich text, plain text, and a in-between format which could be thought of as "textile lite".  VoodooPad (and now vpwiki) also supported the uploading of attachments- so if a VoodooPad page had an image displaying in it, you could now also see it from the web.<br/>
<br/>
But some basic problems still remained.  All the rich text formatting was still lost if edited from the web, multiple people working on the same page at the same time would be overwriting each other's work, and it just wasn't very a smooth experience.<br/>
<br/>
Some major features that were missing were things like conflict resolution, having a local copy of the contents for offline editing and viewing, syncing, security, and basic account management.<br/>
<br/>
And besides not having all the features it needed, the remote editing api was actually holding VoodooPad back from evolving on it's own.  Since so much was shared in the code between the two editing modes (local vs. remote) design decisions were made that crippled the way VoodooPad worked when just editing on regular documents.  That sucked.<br/>
<br/>
So the (very hard) decision was made to split the remote editing out of VoodooPad 2.1, and put it in a separate application.  And thus Boomerang was made, and vpwiki was redesigned and reborn as "flystash".<br/>
<br/>
I'll be honest and say not as much work has gone into Boomerang as I'd like, which is why it isn't talked about much and why it is still considered a "research project" (but it's a project that I'm just dying to do.).  In it's current state however, it is still much better than what was provided in VoodooPad for remote editing.  Current features include authentication, http gzip compression, offline editing, syncing, and conflict resolution.  It still obviously has a long way to go, but it's a start.</html></summary>
     </entry>
  <entry>
       <title>FlySketch: New in FlySketch 1.5</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/99e78032-ff28-01d9-1ca2-c0cbe4c4fbfe" rel="alternate" title="FlySketch: New in FlySketch 1.5" type="text/html" />
       <id>urn:uuid:99e78032-ff28-01d9-1ca2-c0cbe4c4fbfe:8</id>
       <modified>2005-07-28T08:04:44Z</modified>
       <issued>2005-07-27T22:29:43Z</issued>
       <summary type="text/html"><html>h2. What's New in FlySketch 1.5?<br/>
<br/>
* &amp;lt;b&amp;gt;PDF Workflow support.&amp;lt;/b&amp;gt;<br/>
Now part of the workflow menu, supporting all the system wide PDF Workflow scripts, including Automator support.<br/>
<br/>
* &amp;lt;b&amp;gt;Fancy Pants Palettes.&amp;lt;/b&amp;gt;<br/>
The drawer is gone, and now we have the palettes to stash all kinds of new features in.<br/>
<br/>
* &amp;lt;b&amp;gt;Smooth Freehand Lines.&amp;lt;/b&amp;gt;<br/>
FlySketch now makes those pesky straight lines in the freehand tool nice and smoooth.<br/>
<br/>
* &amp;lt;b&amp;gt;Resize canvas to super small.&amp;lt;/b&amp;gt;<br/>
You can now change the canvas size all the way down to 1x1.  Also includes a new widget to let you know what size you are at as well.<br/>
<br/>
* &amp;lt;b&amp;gt;New color picker.&amp;lt;/b&amp;gt;<br/>
FlySketch mimics what the big boys do for selecting colors now.<br/>
<br/>
* &amp;lt;b&amp;gt;Shadows on Graphics!&amp;lt;/b&amp;gt;<br/>
Set a shadow on any selected graphic, even images.  Control the offset and blur radius of the shadow as well.<br/>
<br/>
* &amp;lt;b&amp;gt;Compositing modes.&amp;lt;/b&amp;gt;<br/>
New for 10.4 users. Darker, Lighter, Source In, Source Out, etc..  See the compositing modes page for more information.<br/>
<br/>
* &amp;lt;b&amp;gt;Grids!&amp;lt;/b&amp;gt;<br/>
The canvas now has an optional grid, with snap to support.<br/>
<br/>
* &amp;lt;b&amp;gt;New startup pref&amp;lt;/b&amp;gt;<br/>
What's that?  You just want FlySketch to disappear into the background when launched?  No problem, we can do that.<br/>
<br/>
* &amp;lt;b&amp;gt;Lots of new menu widget commands, including:&amp;lt;/b&amp;gt;<br/>
** Import image.<br/>
** Resize canvas.<br/>
** Add border around canvas.<br/>
<br/>
* &amp;lt;b&amp;gt;New "round rectangle" shape.&amp;lt;/b&amp;gt;<br/>
By popular demand- rounded rectangles are our friends now.<br/>
<br/>
* &amp;lt;b&amp;gt;New "configure sheet" for new shapes&amp;lt;/b&amp;gt;<br/>
Invoked via a single click on the canvas while a tool is selected, it allows you to set dimensions and other properties of a new graphic.<br/>
<br/>
* &amp;lt;b&amp;gt;New line end shapes in addition to arrow- circle and diamond.&amp;lt;/b&amp;gt;<br/>
Stroked and filled varients as well.<br/>
<br/>
* &amp;lt;b&amp;gt;Auto-detect new scripts&amp;lt;/b&amp;gt;<br/>
The workflow scripts menu updates when new scripts are added/removed from the workflow directory.  No more restarting to see new workflows!<br/>
<br/>
*Various Bug fixes:*<br/>
<br/>
* Window now stays transparent when resizing.<br/>
* Default stroke size is remembered between launches.<br/>
* Fixed a problem when resizing an image with the shift key held down.<br/>
* You can no longer set the fill color for a text box- this caused confusion when trying to set the color for a range of text.<br/>
* Lines with arrows now remember the side the arrow was on when resizing from the lower left corner<br/>
* Freehand lines now do left/right/top/bottom alignment.<br/>
* Straight lines with arrows on the end no longer freak out when doing multiple alignments.<br/>
* Fixed "Send to Mail" bug on 10.4<br/>
* If a screen capture is at the bottom of the graphics stack and it is locked, "send to back" will no longer place an image below it, instead it we be placed right above it.<br/>
</html></summary>
     </entry>
  <entry>
       <title>FlySketch: Upload to Flickr</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/23f23e28-ec2a-01d9-16df-c0cbe4c4b0d0" rel="alternate" title="FlySketch: Upload to Flickr" type="text/html" />
       <id>urn:uuid:23f23e28-ec2a-01d9-16df-c0cbe4c4b0d0:11</id>
       <modified>2005-07-23T20:18:06Z</modified>
       <issued>2005-07-03T18:22:52Z</issued>
       <summary type="text/html"><html>h2. Upload to Flickr Workflow<br/>
<br/>
First- what is Flickr?  http://flickr.com/ - "The best way to store, search, sort and share your photos." <br/>
<br/>
Ok, so the idea is that you create something in FlySketch, and then choose "Upload to Flickr" from the workflow menu, and tada- the world gets to see your beautiful drawing / creation / screen grab / whatever.<br/>
<br/>
To set this up, you are going to need an "Automator":http://www.apple.com/macosx/features/automator/ action (link provided below), you have to configure the action and then save it as an app in the FlySketch workflow folder.  It's pretty simple, let's get started.<br/>
<br/>
# Grab the "Automator action":http://fraserspeirs.livejournal.com/869471.html , lovingly provided by "Fraser Speirs":http://fraserspeirs.livejournal.com/ .<br/>
# Install the action in your ~/Library/Automator folder ( you might have to create the Automator folder first)<br/>
# Open up Automator and include your account information, and configure it as you may.  Save the workflow as an action in your ~/Library/Application Support/FlySketch/Workflow Scripts folder.  Call it "Upload to Flickr".  You may have to quit and restart FlySketch to see the workflow action show up.<br/>
# Make sure your workflow settings are set to "png" in the preferences.<br/>
# Try it out by choosing "Upload to Flickr" from your workflow actions (the button with the script symbol on it).<br/>
<br/>
<br/>
<br/>
*Troubleshooting:*<br/>
<br/>
* It isn't working for me!<br/>
Are you sure you put in the right username (it's your email address) and password?<br/>
<br/>
* I'm still on 10.3 - what are my options?<br/>
None right now- however it shouldn't be too hard for another script that works on 10.3 to come along and do the same thing.  If one ever shows up we'll update this page.</html></summary>
     </entry>
  <entry>
       <title>FlySketch: Feedback Links</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/c1ed7348-fb27-01d9-03f2-c0cbe4c4c575" rel="alternate" title="FlySketch: Feedback Links" type="text/html" />
       <id>urn:uuid:c1ed7348-fb27-01d9-03f2-c0cbe4c4c575:6</id>
       <modified>2005-07-23T18:16:41Z</modified>
       <issued>2005-07-22T20:13:36Z</issued>
       <summary type="text/html"><html>h2. Talk to us and let us know what you think<br/>
<br/>
We are always wanting to hear from our customers or potential customers.  So if you have a comment, question, or just want us to hear from you, send an email to info@flyingmeat.com.<br/>
<br/>
You can also check us out on the web: http://www.flyingmeat.com/<br/>
<br/>
For specific support questions with regards to FlySketch, email: flysketch@flyingmeat.com<br/>
<br/>
For bugs and feature requests, please visit: http://www.flyingmeat.com/bugs<br/>
</html></summary>
     </entry>
  <entry>
       <title>FlyGesture: Key Codes</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/117afd02-f657-01d9-0fb0-c0cbe4c4edd6" rel="alternate" title="FlyGesture: Key Codes" type="text/html" />
       <id>urn:uuid:117afd02-f657-01d9-0fb0-c0cbe4c4edd6:4</id>
       <modified>2005-07-16T17:10:45Z</modified>
       <issued>2005-07-16T17:09:40Z</issued>
       <summary type="text/html"><html>Here's a big list of the keycodes you can use when telling System Events to type one.<br/>
<br/>
keycode: keystroke<br/>
0: A<br/>
1: S<br/>
2: D<br/>
3: F<br/>
4: H<br/>
5: G<br/>
6: Z<br/>
7: X<br/>
8: C<br/>
9: V<br/>
10: $<br/>
11: B<br/>
12: Q<br/>
13: W<br/>
14: E<br/>
15: R<br/>
16: Y<br/>
17: T<br/>
18: 1<br/>
19: 2<br/>
20: 3<br/>
21: 4<br/>
22: 6<br/>
23: 5<br/>
24: =<br/>
25: 9<br/>
26: 7<br/>
27: -<br/>
28: 8<br/>
29: 0<br/>
30: ]<br/>
31: O<br/>
32: U<br/>
33: [<br/>
34: I<br/>
35: P<br/>
36: Return<br/>
37: L<br/>
38: J<br/>
39: '<br/>
40: K<br/>
41: ;<br/>
42: \<br/>
43: ,<br/>
44: \/<br/>
45: N<br/>
46: M<br/>
47: .<br/>
48: Tab<br/>
49: Space<br/>
50: `<br/>
51: Delete<br/>
53: Esc<br/>
55: Command<br/>
56: Shift<br/>
57: Caps Lock<br/>
58: Option<br/>
59: Control<br/>
65: Pad .<br/>
67: Pad *<br/>
69: Pad +<br/>
71: Clear<br/>
75: Pad /<br/>
76: Pad Enter<br/>
78: Pad -<br/>
81: Pad =<br/>
82: Pad 0<br/>
83: Pad 1<br/>
84: Pad 2<br/>
85: Pad 3<br/>
86: Pad 4<br/>
87: Pad 5<br/>
88: Pad 6<br/>
89: Pad 7<br/>
91: Pad 8<br/>
92: Pad 9<br/>
96: F5<br/>
97: F6<br/>
98: F7<br/>
99: F3<br/>
100: F8<br/>
101: F9<br/>
103: F11<br/>
105: F13<br/>
107: F14<br/>
109: F10<br/>
111: F12<br/>
113: F15<br/>
114: Ins<br/>
115: Home<br/>
116: Page Up<br/>
117: Del<br/>
118: F4<br/>
119: End<br/>
120: F2<br/>
121: Page Down<br/>
122: F1<br/>
123: Left Arrow<br/>
124: Right Arrow<br/>
125: Down Arrow<br/>
126: Up Arrow<br/>
<br/>
<br/>
keystroke: keycode:<br/>
<br/>
0: 29<br/>
1: 18<br/>
2: 19<br/>
3: 20<br/>
4: 21<br/>
5: 23<br/>
6: 22<br/>
7: 26<br/>
8: 28<br/>
9: 25<br/>
<br/>
A: 0<br/>
B: 11<br/>
C: 8<br/>
D: 2<br/>
E: 14<br/>
F: 3<br/>
G: 5<br/>
H: 4<br/>
I: 34<br/>
J: 38<br/>
K: 40<br/>
L: 37<br/>
M: 46<br/>
N: 45<br/>
O: 31<br/>
P: 35<br/>
Q: 12<br/>
R: 15<br/>
S: 1<br/>
T: 17<br/>
U: 32<br/>
V: 9<br/>
W: 13<br/>
X: 7<br/>
Y: 16<br/>
Z: 6<br/>
<br/>
`: 50<br/>
-: 27<br/>
,: 43<br/>
;: 41<br/>
.: 47<br/>
': 39<br/>
[: 33<br/>
]: 30<br/>
/: 44<br/>
\: 42<br/>
=: 24<br/>
$: 10<br/>
<br/>
F1: 122<br/>
F10: 109<br/>
F11: 103<br/>
F12: 111<br/>
F13: 105<br/>
F14: 107<br/>
F15: 113<br/>
F2: 120<br/>
F3: 99<br/>
F4: 118<br/>
F5: 96<br/>
F6: 97<br/>
F7: 98<br/>
F8: 100<br/>
F9: 101<br/>
<br/>
Ins: 114<br/>
Option: 58<br/>
<br/>
Pad -: 78<br/>
Pad .: 65<br/>
Pad *: 67<br/>
Pad /: 75<br/>
Pad +: 69<br/>
Pad =: 81<br/>
Pad 0: 82<br/>
Pad 1: 83<br/>
Pad 2: 84<br/>
Pad 3: 85<br/>
Pad 4: 86<br/>
Pad 5: 87<br/>
Pad 6: 88<br/>
Pad 7: 89<br/>
Pad 8: 91<br/>
Pad 9: 92<br/>
<br/>
Return: 36<br/>
Pad Enter: 76<br/>
<br/>
Home: 115<br/>
End: 119<br/>
<br/>
Page Up: 116<br/>
Page Down: 121<br/>
<br/>
Del: 117<br/>
Delete: 51<br/>
<br/>
Right Arrow: 124<br/>
Left Arrow: 123<br/>
Up Arrow: 126<br/>
Down Arrow: 125<br/>
<br/>
Esc: 53<br/>
Caps Lock: 57<br/>
Clear: 71<br/>
Command: 55<br/>
Control: 59<br/>
Shift: 56<br/>
Space: 49<br/>
Tab: 48<br/>
</html></summary>
     </entry>
  <entry>
       <title>VoodooPad: Export Pages List</title>
       <link href="http://www.flyingmeat.com/fs/flystashweb.cgi/a1a0d5b4-d1b8-01d9-13ea-c0cbe4c4e4d9" rel="alternate" title="VoodooPad: Export Pages List" type="text/html" />
       <id>urn:uuid:a1a0d5b4-d1b8-01d9-13ea-c0cbe4c4e4d9:11</id>
       <modified>2005-06-24T14:55:33Z</modified>
       <issued>2005-05-31T02:44:50Z</issued>
       <summary type="text/html"><html>This AppleScript has been moved to Copy Pages List</html></summary>
     </entry>

   </feed>


