Richard Jones' Log: Bruce the Presentation Tool 2.0 (beta)

Mon, 03 Mar 2008

I've released Bruce 2.0 beta 1, yay.

On the project site you can see some screenshots and sample presentation source that was used to generate the screenshots. One of the goals of Bruce is to make it really easy to knock up a quick presentation in a plain-text format. The most basic presentation consists of:

--- text
=This is a title
This is a new line

--- text
=Another page, another title
.You can have bullet points
.If you must
..Even nested ones
...And nestedier ones
.I call this BrucePoint

--- video foot_stomp.mpg

--- py
# generates an interactive Python session (with intro sound)

--- image kitten.jpg
# displays a kitten (and this is a comment)

Note that the above BrucePoint style stuff relies on some post-beta1 changes only in SVN.

Because it's using pyglet it's got some really nice features I've already implemented like the video and audio stuff. Also the screen control is nice too -- have it display the presentation on one screen (projector) and in the other screen (laptop) have the presentation source being displayed (along with your notes embedded in the source). It can display pages of HTML (though it's a little slow), and will be able to display pages of ReStructuredText soon. Hell, if you're on a Mac it can also display PDFs :)

It also generates some nice HTML running notes (which include the "#" comments for reference) which print up quite nicely.

I'm still working on it, and there's some bugs but nothing show-stopping. Still to do transitions, but they're not high on the priority list.

Comment by Catherine Devlin on Mon, 03 Mar 2008

That's great! I've used Bruce in several presentations, and the new version should be even better. For the sake of anybody else who has trouble like I did figuring out the command for checking out a copy, it's svn co bruce

Comment by slinkp on Mon, 03 Mar 2008

I tried it on python 2.4.4 on gentoo; no dice. I have pyglet 1.1alpha1 installed in a virtualenv, and I have openal 0.0.8-r2 installed on the system, but every time I run I get:

$ python installopen /dev/[sound/]dsp: No such file or directory
open /dev/[sound/]dsp: No such file or directory
Traceback (most recent call last):
  File "", line 8, in ?
    from bruce import __version__
  File "/home/pw/brucetest/bruce-2.0beta1/bruce/", line 9, in ?
    from bruce import parser
  File "/home/pw/brucetest/bruce-2.0beta1/bruce/", line 75, in ?
    from import VideoPage
  File "/home/pw/brucetest/bruce-2.0beta1/bruce/", line 7, in ?
    from pyglet import media
  File "build/bdist.linux-x86_64/egg/pyglet/media/", line 1303, in ?
  File "build/bdist.linux-x86_64/egg/pyglet/media/drivers/openal/", line 332, in driver_init
Exception: No OpenAL device.
Any idea what that's about? Also, the project page seems to be really flaky right now.

Comment by slinkp on Mon, 03 Mar 2008

After googling a bit, apparently the gentoo build for openal doesn't create a necessary config file ...

now that that's sorted, Bruce apparently depends on python 2.5 ... which is fine, but should probably be explicitly documented somewhere:

$ python install
Traceback (most recent call last):
File "", line 8, in ?
from bruce import __version__
File "/home/pw/brucetest/bruce-2.0beta1/bruce/", line 9, in ?
from bruce import parser
File "/home/pw/brucetest/bruce-2.0beta1/bruce/", line 78, in ?
from bruce.python_interpreter import PythonInterpreterPage
File "/home/pw/brucetest/bruce-2.0beta1/bruce/", line 1
from __future__ import absolute_import
SyntaxError: future feature absolute_import is not defined

Comment by Richard on Mon, 03 Mar 2008

Catherine: that's great, I hope you like the new version as much as (hopefully better than) the old Bruce!

slinkp: I've added some requirements info to the project page, thanks. Too bad the project page is having trouble responding...

Comment by Chris on Thu, 03 Apr 2008

Hi, the website and SVN seem to be down.

Comment by Chris on Thu, 03 Apr 2008

Ah, that's because it lives over here now:

Comment by Steve Holden on Mon, 01 Dec 2008

The above links should be copied and pasted: they appear to be merged somehow when you try to click them, and so are horribly broken. PyPi downloads are failing somehow, the above-advertised SVN repository isn't working and the latest links (over six months old) were broken when posted. I sense this project needs some love ... Try these for the project management page and the PyPi home page - they seem to work.

Comment by Steve Holden on Mon, 01 Dec 2008

Please also note that the download link on is borked, and should be this instead. Has anyone actually installed this package? As a Windoze user (fortunately with Cygwin available), should I just give up now?

Comment by Steve Holden on Mon, 01 Dec 2008

OK, the cocos download link is similarly broken. If downloading and installing the correct one doesn't get me there I am regarding this project as dead of bitrot.

Comment by Steve Holden on Mon, 01 Dec 2008

Well, I've seen video and heard sound, and many of the tests work, so Bruce is starting to live up to my expectations. Sadly I am getting a traceback from

Traceback (most recent call last):
  File ".\scripts\bruce", line 5, in 
  File "C:\Python25\lib\site-packages\bruce\", line 121, in main
  File "C:\Python25\lib\site-packages\bruce\", line 33, in 
  File "c:\python25\lib\site-packages\cocos2d-0.3.0-py2.5.egg\cocos\", line 287, in run
  File "build/bdist.linux-x86_64/egg/pyglet/app/", line 47, in run
  File "build/bdist.linux-x86_64
/egg/pyglet/app/", line 153, in _setup
  File "build/bdist.linux-x86_64/egg/pyglet/window/win32/", line 842,
 in dispatch_pending_events
  File "build/bdist.linux-x86_64/egg/pyglet/window/win32/", line 1120, in _event_size
  File "build/bdist.linux-x86_64/egg/pyglet/window/win32/", line 1073, in _immediate_redraw
  File "build/bdist.linux-x86_64/egg/pyglet/window/", line 1217, in dispatch_event
  File "build/bdist.linux-x86_64/egg/pyglet/", line 340, in dispatch_event
  File "c:\python25\lib\site-packages\cocos2d-0.3.0-py2.5.egg\cocos\", line 303, in on_draw
  File "c:\python25\lib\site-packages\cocos2d-0.3.0-py2.5.egg\cocos\", line 577, in visit
  File "c:\python25\lib\site-packages\cocos2d-0.3.0-py2.5.egg\cocos\", line 570, in visit
  File "C:\Python25\lib\site-packages\bruce\", line 165, in draw
  File "build/bdist.linux-x86_64/egg/pyglet/graphics/", line 538, in draw
  File "C:\Python25\lib\site-packages\bruce\", line 59, in set_state
    glScissor(parent_x + self._scissor_x - 1,
AttributeError: 'MyScrollableTextLayoutGroup' object has no attribute '_scissor_
Windows Vista, Python 2.5.2