Printable Rendering

What does Buzz do?
- Buzz is fundamentally an outliner
- Design Philosophy
- Buzz views outlines as part of a web of outlines that refer to each other. Buzz
- supports links and xlinks between the outlines and keeps a history of
- navigation as well as recently editted files.
- As my note taking as evolved closer to Topic Maps I have begun implementing Topic Map features
- Outlines can be imported and exported from:
- Windows
- Word
- Save as html and then import into Buzz
- Reverse for export. In Word view as an outline to see the tree
- Powerpoint
- Via Word 97 Outline Format
- Excel
- Export Via XSL Rendering (csv.xsl) to csv
- Import into XML from csv
- All rows of your spreadsheet must have the same number of elements
- You may be able to Repair poorly formed csv files with icsv2xml.py
- OpenOffice / Staroffice
- Writer
- HowTo
- Export your OPML file to MS Word HTML
- Open a blank document in Writer
- Insert the HTML file generated above into writer
- Open the Navigator in Writer from the Edit Menu
- Verify that you are in the correct mode by seeing the outline
- Impress
- Follow the instructions for Writer
- From the file menu choose Send-> Outline to Presentation
- Spreadsheets
- Export Via XSL Rendering (csv.xsl) to csv
- Import into XML from csv
- Repair poorly formed csv files with icsv2xml.py
- Dot graphviz graphs
- This allows exporting to graphs for example:
- 3d Graphs
- use opml2hv.xsl or opml2hvflat.xsl

http://graphics.stanford.edu/~munzner/h3/
- IPAQ
- List Pro
- Palm
- Shadow Planner 2.0
- ThoughtMill - via Word Format
- Doc Format using the Pyrite Project
- HTML
- Static and Active Documents
- Like this Page!
- vCal Calendar files
- This makes it easy to turn OPML into ToDo lists
- This is verified to work with Korganizer, Gnomecal, Exchange
- NB: Use merge calendar from Korganizer
- XML Decision Trees
-
- Text
- Arbitrary Text Files with indentation
- Buzz contains cross file (cross internet) xml search, XLINK and link
- This is coded as an external command also:
- xsearch "something to search for" "filename" "casesensitive(0 or 1)"
- This will recursively search and create a set of xlinks into the web
- caveat coder: There is no depth limit
- It supports the subset of xlinks where the path elements are referenced by offset only
- Outlines are syntactically compatible with Userland
- Buzz and Userland have overlapping functionality.
- With Peerkat and Buzz one can have Userland functionality on Linux or anywhere Python runs
- Because Peerkat is SLOW, I created a script that feeds RSS/RDF to a web server via XSL
- In addition a script that filters a pubmed query through XML is here
- Outlines can be editted in structured manner or free form (text edittor)
- Topic Map like outlines
- Buzz handles topic maps by adding instance and role attributes to outline elements
- xlinks and links are supported as a means of turning the tree into a true graph
- The files .buzztopics and .buzzroles currently define the defaults but any role or topic can be assigned
- Ultimately I plan to export my knowledge bases to topic maps or RDF frameworks
- The xsearch capability of Buzz will be extended to include or exclude nodes based on their XTM characteristics
- XML
- Buzz can convert back and forth between OPML and XML
- Buzz can create its schema by example. Give it a set of files and it will produce a schema
- Complete with values for the attributes
- XML can be transformed to multiple modalities using XSL
- EG Export you XML as a spreadsheet, Bibliography,
- XSL
- Buzz has a schema for XSL and supports accurate white space preservation
- Buzz can export,import save and send to the browser any xml file passed thru XSL
- For example Buzz renders to HTML using the format you see here but
- you can render using many formats including the "standard" Userland formats
- Choose rendep to browser and then the opml2userland.xsl file
- NB:remember to copy the javascript file to the target directory
- Buzz can pass xml thru xsl:fo via FOP
- HTML
- Buzz has a schema for html/ xhtml
- Speed
- Buzz is faster than Userland, Xeena and JOE by 2-10 times
- The 3000 line Buzz source OPML file takes 15 seconds to load in Userland on a PIII 650
- The same file takes 1.5-2 seconds in Buzz
- Interacting with XML on the Web
- I use Buzz to do all my Pubmed queries in XML
- You can exchange them with Endnote via the XSL rendering facilities
- You can do RSS queries and view the results in Buzz and render them with XSL to a browser
- Talk to a Manila XMLRPC server
- Writing Python Code
- Buzz was written in Buzz
Mouse
- Left Click: On Text: Select; On Button: Expand
- Double Click: Expand Node
- Right Click: Popup Menu
Menus
- File Menu
- Open: Opens a File
- New OPML:
- Choose Recen Filet: 10 recent files are maintained the most recent file is opened by default
- Choose Recent URL: 10 recent URLS
- Open URL: Open an XML file at an arbitrary URL
- Render Open: Render a file with XSL and open the product
- Print OPML: Prints to from HTML Version. Places images inline
- Preview HTML: Send the actual content of the file unrendered to the browser
- Webify: Like print except centralizes external references into directory of document
- Save
- Save As: Save a copy as
- Save HTML
- Exit
- Import Menu
- Import: Import a text file as an indented Outline
- Export: Export OPML as indented text
- Import HTML Outline: Import MS word html outline file
- Import / Export ...: Imports and exports Lpro, Shadow and MS Word documents
- MS Word import and export works via HTML as an intermediary format
- In other words use Save As HTML in MS Word prior to importing
- Export HTML Outline: Useful for interacting with MS products like Word
- If you open a file exported as an HTML Outline Word will open it as an outline
- This is especially useful for interacting with Powerpoint for slides
- Rendering:
- Buzz is setup to render XSL and XSL:FO in place, to a browser, file, acrobat etc
- Render Directory
- This will render all the OPML files in a directory as HTML and create a document with links
- to all the files
- X Render Directory this render the files you choose from a directory with an xsl file you choose
- Edit Menu
- Paste Clipboard: Pastes clipboard as child of current node
- May be faster than normal pasting when pasting more than 100 lines
- Paste Clipboard as CDATA
- Insert URL
- Insert Image
- Insert File
- Insert File from URL
- Find Item
- Find and Replace
- Xsearch
- This starts a text search that will procede across any LINK,XLINK,HREF,URL and
- returns the result as a file of XLINKS
- XML
- Open XML
- This differs from Open in that characters are forced into ISO-8859-1 and long text blocks
- are broken word wrapped to less than 200 character blocks.
- Webify XML: Display XML as HTML Document
- Preview Decision Tree: Shows an HTML version of a DT schema
- Save as XML
- It is easy tm mix XML and OPML when editting OPML files
- Using this converts all OPML elements to XML on the presumptions:
- Outline items are tag names or attributes
- Attributes come before children and anything with the = sign is an attribute
- Text elements are not assumed and must be created using the appropriate keys
- New from schema: create a document using schema layout
- Set XML Schema: Loads a BUZZ specific schema to appropriately structured XML
- X Favorites: Set of XLINK favorites
- Delete Favorites
- Add Favorite
- Schema from example: Creates a buzz schema from a set of XML files
- Schema from example with attributes: as above but includes values of attributes
- Options
- Toggle Find and Replace: Useful for interactive find and replace
- Toggle Case sensitive find: By default find is not case sensitive
- Toggle Free Form XML Mode: While a schema is active allows arbitrary XML to be entered
- Can be set from the config file
- Wrap text fields
- Configure Buzz: Setup default configuration options
- Manila
- Preliminary functions
Default Keys
- Left/Right/Up/Down: Navigate Tree
- Ctrl-R: Open Recent File
- F1: [s]ave
- F2: Assign Topic
- F3: Find below current node
- N,I: repeat find
- e,a: edit node
- Ctrl-F: Find below root node
- Ctrl-C : Copy Node
- Copies into the cut buffer ring
- Allows one to select multiple items and paste them in back somewhere else
- F4: Open node as URL
- F5: Open a node next to my parent
- o,F6: [o]pen a node at the same level
- c,F7: open a [c]hild node
- F8: Goto last selected node
- Useful under Windows where alpha keystrokes jump to nearest node that starts with that key
- Ctrl-J: Join Node with next sibling
- Shift-J: Join Node with first child
- F9: Toggle between most recent files
- F10: Enter Free text
- F11: Expand URL below current Item
- F12: Insert an OPML/XML file below the current Item
- Ctrl-A: open attribute
- <enter>: open a new node below the current, will create a child if node has children
- <Home>: Move Node Up
- <End>: Move Node Down
- <Tab>: Indent item
- Shift-<Tab>: Outdent Item
- Backspace: Outdent Item
- b- back in history
- Ctrl-X or <Delete>: Cut branch to buffer
- Ctrl-V :paste into tree from buffer
- Ctrl-D :paste into tree from buffer as child
- Ctrl-U : Insert URL
- Ctrl-O : Insert Picture
- Ctrl-P: Paste Clipboard
- Shift-B: Generate a Unique ID for Xref targetting
- Shift-X: Store an xmark to this location
- Shift-V: Paste the stored xmark
- Shift-G: Goto the stored xmark
- Shift-P: Insert Pubmed Link
- <Insert> or Ctrl-B: Repeated use will progressively insert the cut ring
- <space>: expand or collapse branch
- Ctrl-T: open child [t]ext node
- <up>/<down>: up/down visible nodes
- <left>/<right>:Parent/Child of current node
- PgUp/PgDn: Move Fast
Command Line Options
- First item on line is assumed to be an XML file
- Second Item is optional. 0 turns off highlighting
Crash Recovery
- Buzz copies the file to filename~ before saving for crash recovery
Author
- Charles Nofsinger
Helpful Feedback
- Simon Kittle
- Andrew Pearle
- David Rosen
- Christian Boehme
Schemas
- Schemas are currently implemented at a crude level and use a modified BNF syntax
- However, that is ameliorated by the schema generator. It builds schema from xml files by example
- Use the schema from example option in the XML menu
- This is a work in progress. I recommend that you edit the schemas generated to validate their
- structure
- The syntax is: tag | required children | optional children
- Double quoted elements are assumed to be text, underscores are translated to spaces
- You must order the file in dependency tree order with the leaves first and the root last
- schemas should be named foo.schema. Files created with the schema should be named
- baz.foo (for the foo schema). and placed in the buzzdir
ChangeLog
- 7/27/01 - First Schema Supporting Version
- 8/21/01 - Switched to Sax2 parser from Expat
- 8/31/01 - Added xsl:fo functionality and compatibility
- 9/01/01 - Added Cross File XML Search and XLINK functionality
- 9/14/01 - XLINK history added. Schema generation from GUI
- 10/19/01 - Added Toolbar and Popup on Right Click
- 11/2/01 - Added Preliminary Manila Functionality
- 11/15/01 - Added Free Form Text Editting of Outlines
- 11/28/01 -
- Updated Shadow Plan import export to 2.0
- Controls keys working under wxGTK
- 12/1/01 - Cleaned up importing text and free form text editting
- 12/2/01 - Import and Export of CSV Spreadsheets to XML,HTML
- 12/5/01 - Added Todo Schema and Export to Vcal
- 12/8/01 - Cleaned up multiple issues with wxGTK
- 12/11/01 - Fixed the Dreaded wxGTK Label Editting focus bug
- 12/14/01 - Continued wxGTK bug cleanup
- 12/19/01 - Pyrite Palm OS integration started
- 3/3/02 - Automated configuration file creation
- 3/11/02 - Made history more reliable
- 3/12/02 - Under *nix Sablotron can be used for all XSL - Rendering is FAST!!!
- 3/19/02 - Toolbar help - web rendering clean up
- 3/21/02 - Font selection added
- 3/30/02 - Added SVG and Flowchart XSL rendering
- 4/2/02 - Added initial Topic Map capabilities
- 4/10/02 - Added Xsearch attribute that automatically recreates an xsearch
- 4/21/02 - minor fixes to allow buzz to run on Mac OS X
- 5/30/02 - Unique ID support added to XPATH and graph export
- 6/10/02 - Buzz Lite in pygtk for the Familiar Distribution
- 6/12/02 - Cleaned up many issues in Buzz Lite
- 6/13/02 - Added pyqt version of Buzz Lite
- 8/20/02 - Compatibility updates for wxwindows
- 2/1/03 - Multiple Bug Fixes, Features OpenOffice, Staroffice compatibility
- 2/1/03 - Interactive Font Selection
- 2/11/03 - Multiple fixes for XML file compatibility
- 4/5/3 - Buzzlite in C code
- 1/11/4 - Removing Dependency on external xsl processor - using libxml2
- 1/12/4 - Cygwin no longer necessary for Windows
- 2/4/4 - saxon or sablotron no longer necessary . Fixed multiple bugs
Background
- Buzz is an XML/OPML editor based on Woody, Radio Userland and Xeena
- It Run's on OS X, Windows and Linux and soon PDAs with Nano-X
Standard Installation
- NB: These are largely deprecated but are included for border cases
- Necessary
- The minimal installation will allow editting and saving opml and xml
- See mac os x notes below
- Download and Install python 2.2 or greater
- Download and install wxpython/wxwindows
- On X-windows systems this will require wxGTK that can be found in the "other" section of the wxpython download
http://wxpython.sourceforge.net
- Download buzz.tgz to /usr/share on *nix or c:\buzz on windows
buzz.tgz
- *nix
- Open a terminal
- Verify that the HOME environment variable is set
- cd /usr/share ; tar xzvf buzz.tgz
- cd /usr/share/buzz
- cp buzz /usr/bin
- windows:
- xfind support requires cygwin
- cp xfind.py.win xfind.py
- *nix
- python buzz.py NB for Mac: Double click on buzz.py from the finder. See below
- Buzz will ask you to configure it if this is the first time you've run it.
- If you are *nix wizard you can edit the configuration file as described below
- Configuration File
- first line is buzzdir a "shared directory". For example:
- *nix and OS X
- /usr/share/buzz/
- win2k
- e:\\buzz\\
- win98
- e:\buzz\
- next line is the command that will "expand"/open any file
- explorer.exe on windows
- I use konqueror on linux
- On OS X use "open"
- next line is a temporary directory
- next line is a command to execute scripts
- Under windows this should be the cygwin bash command
- e:\\cygin\\bin\\bash --login -c
- If your default shell on *nix or OS X is bash leave this blank
- otherwise use
- bash -c
- The next line is a configuration switch to turn on free form editting of XML while a schema is set.
- The next line is the "Home" file
- Next is your manila site
- Next is your manila username
- Next is 0 or 1 for whether or not to use the size parameters of the OPML file
- They are always saved this enables automatic resizing to the location and size that
- the file was last saved with.
- Next is the font name
- Next is the font size
- Optional
- These functions are necessary for importing, exporting, printing etc
- Necessary for all exporting:
- New: For buzz releases in and after 2004
- Install python libxml2 wrappers
- Deprecated after 2/2004
- Download and install sabcmd for Unix or instant-saxon for Windows or full Saxon for OS X
http://saxon.sourceforge.net
http://www.gingerall.com
- Make sure the saxon command is in your PATH
- Unix
- There is a script that uses sabcmd to emulate saxon
- You should copy this script to your PATH. Sabcmd is orders of magnitude faster than saxon
- If you don't use sabcmd copy xfind.py.win to xfind.py. It's compatible with saxon's parameter passing
- NB: instant-saxon requires the MS JVM, which you must install if you're using windows 2000 or greater
- Necessary for Schema from example under linux
- Necessary for rendering Acrobat Files
- Download and install FOP
http://xml.apache.org/fop/
- You'll need to modify the fop script to point to the installation directory of fop
- Necessary for Importing HTML
- Download and install tidy
- Necessary for Importing Spreadsheets to XML
- The file csv-0.5.tgz is included in the tarball. decompress this and install it with
- python setup.py build ; python setup.py install
- Windows
- put csv.pyd where python can find it.
- Necessary for creating Graphs (GIF,SVG) of OPML files
- Necessary for communicating directly with Palm OS 3
http://www.pyrite.org
- Use pyrpub to publish buzz html files to Doc format
- Install with Jpilot or pilot-link
- Coming soon direct integration...
- Necessary for Palm OS 5
- plucker web compression using the opml2flatweb.xsl for render directory
- Mac OS X Notes
- Os X installation is now EASY! Three cheers for the OS X port!
- NB: Buzz is somewhat crippled by the standard Mac mouse - use a wheel mouse
- you'll love the functionality in all the mac programs
- Notes on OS X weirdness
- use 'sudo command' to do anything as root
- or use 'sudo -s'
- Deprecated (See install in homepage)
- Guide
- Go to wxpython.org
- Get mac-pythonOSX and wxpython os x
- Follow the instructions for installation
- Install Buzz
- Download buzz.tgz
- move the buzz directory to /usr/share/buzz
- mv buzz /usr/share
- cd /usr/share/buzz
- cp smallbmp/* .
- Install Saxon or Sablotron
- I recommend sablotron
- Saxon
- use saxon 6.5.2 from saxon.sourceforge.net
- Sablotron
- Install Fink and install the expat libraries
- Download sablotron and compile against the fink libraries in /sw
- The expat library may not have the latin1 codepage
- in that case all the latin1 references can be replaced with ISO-8859-1
- The script convertencodings takes a fileprefix oldencoding newencoding
- Start Buzz
- Double click on the buzz.py from the finder.
- Or use pythonw buzz.py from the command line
- The non mac guide applies from here
Buzzlite Installation
- buzz.c is an alpha version of Buzz Lite in C code using the libxml2 library
- The source and an arm binary are available
- Buzz Lite is a py gtk and a py qt version of Buzz that runs on the Ipaq. It is only the most essential features
- of Buzz.
- buzzlite.py <filename> or buzzqt.py <filename>
- Be cautious, these are alpha versions...
- See screenshots below
- 6/17/02 update - I'm only continuing development of the pygtk version secondary to
- the excellent handwriting recognition with xstroke
- The command interface is soley single characters:
- a,e - edit
- return,o - new node
- c - child node
- @ - attribute
- . - cdata
- <q button> or / - scroll incrementally right
- <menu button> or v - scroll completely left
- z or ipaq keypad right- zoom node (open)
- l - move node left
- r - move node right
- u - move node up
- d - move node down
- h - home file (file buzzlite was opened with)
- H - Help file
- x - cut node
- p - paste node
- f - find
- n,i - iterate find
- S - save
- A - save as
- m - clear modified status
- b - back one file
- double click or <ipaq enter key> or space or / - go to url of url=foo.bar attribute, if opml file or dillo url or open a file if not on a url attribute
- t - toggle all nodes below node
- 4 - toggle 4 levels deep
- Use this ~/.gtkrc for left and right arrow expansion
-
binding "my-ctree-bindings" { bind "Right" {"change_focus_row_expansion" (expand) } bind "Left" {"change_focus_row_expansion" (collapse) } }class "GtkCTree" binding "my-ctree-bindings"