From 99988430fc43b1f42276e5771bde0fb328db9853 Mon Sep 17 00:00:00 2001 From: benfry Date: Mon, 6 Jan 2003 01:51:40 +0000 Subject: [PATCH] final tidbits, closing in on 47 --- processing/app/PdeBase.java | 85 ++++++--------- processing/app/PdeEditor.java | 6 +- processing/build/macosx/make.sh | 2 +- processing/build/shared/lib/pde.properties | 116 ++++++++++++--------- processing/build/shared/readme.txt | 75 ++++++++++--- processing/build/shared/revisions.txt | 41 ++++++++ processing/todo.txt | 81 +++++++------- 7 files changed, 247 insertions(+), 159 deletions(-) diff --git a/processing/app/PdeBase.java b/processing/app/PdeBase.java index 9840728d6..d456ba9fd 100644 --- a/processing/app/PdeBase.java +++ b/processing/app/PdeBase.java @@ -548,7 +548,8 @@ public class PdeBase extends Frame implements ActionListener { //menu.add(newSkechItem); //menu.addSeparator(); - sketchbookFolder = new File("sketchbook"); + //sketchbookFolder = new File("sketchbook"); + sketchbookFolder = new File(get("sketchbook.path", "sketchbook")); sketchbookPath = sketchbookFolder.getCanonicalPath(); if (!sketchbookFolder.exists()) { System.err.println("sketchbook folder doesn't exist, " + @@ -556,7 +557,6 @@ public class PdeBase extends Frame implements ActionListener { sketchbookFolder.mkdirs(); } - // files for the current user (for now, most likely 'default') // header knows what the current user is @@ -570,6 +570,7 @@ public class PdeBase extends Frame implements ActionListener { userFolder.mkdirs(); } + /* SketchbookMenuListener userMenuListener = new SketchbookMenuListener(userPath); @@ -578,8 +579,8 @@ public class PdeBase extends Frame implements ActionListener { for (int j = 0; j < entries.length; j++) { if (entries[j].equals(".") || entries[j].equals("..") || - entries[j].equals("CVS") || - entries[j].equals(".cvsignore")) continue; + entries[j].equals("CVS")) continue; + //entries[j].equals(".cvsignore")) continue; added = true; if (new File(userPath, entries[j] + File.separator + entries[j] + ".pde").exists()) { @@ -595,51 +596,19 @@ public class PdeBase extends Frame implements ActionListener { menu.add(item); } menu.addSeparator(); - - // other available subdirectories - /* - String toplevel[] = sketchbookFolder.list(); - added = false; - for (int i = 0; i < toplevel.length; i++) { - if (toplevel[i].equals(editor.userName) || - toplevel[i].equals(".") || - toplevel[i].equals("..") || - toplevel[i].equals("CVS") || - toplevel[i].equals(".cvsignore")) continue; - - added = true; - Menu subMenu = new Menu(toplevel[i]); - File subFolder = new File(sketchbookFolder, toplevel[i]); - String subPath = subFolder.getCanonicalPath(); - SketchbookMenuListener subMenuListener = - new SketchbookMenuListener(subPath); - - entries = subFolder.list(); - if (entries != null) { - for (int j = 0; j < entries.length; j++) { - if (entries[j].equals(".") || - entries[j].equals("..") || - entries[j].equals("CVS") || - entries[j].equals(".cvsignore")) continue; - //subMenu.add(entries[j]); - if (new File(subFolder, entries[j] + File.separator + - entries[j] + ".pde").exists()) { - MenuItem item = new MenuItem(entries[j]); - item.addActionListener(subMenuListener); - subMenu.add(item); - } - } - } - - menu.add(subMenu); - } - if (added) menu.addSeparator(); */ - addSketches(menu, sketchbookFolder, true); + if (addSketches(menu, userFolder, false)) { + menu.addSeparator(); + } + if (!addSketches(menu, sketchbookFolder, true)) { + MenuItem item = new MenuItem("No sketches"); + item.setEnabled(false); + menu.add(item); + } /* - // doesn't seem that refresh is worthy of its own menu item - // people can stop and restart p5 if they want to muck with it + // doesn't seem that refresh is worthy of its own menu item + // people can stop and restart p5 if they want to muck with it menu.addSeparator(); MenuItem item = new MenuItem("Refresh"); item.addActionListener(this); @@ -652,15 +621,18 @@ public class PdeBase extends Frame implements ActionListener { } - protected void addSketches(Menu menu, File folder, boolean root) + protected boolean addSketches(Menu menu, File folder, + /*boolean allowUser,*/ boolean root) throws IOException { // skip .DS_Store files, etc - if (!folder.isDirectory()) return; + if (!folder.isDirectory()) return false; String list[] = folder.list(); SketchbookMenuListener listener = new SketchbookMenuListener(folder.getCanonicalPath()); + boolean ifound = false; + for (int i = 0; i < list.length; i++) { if (list[i].equals(editor.userName) && root) continue; @@ -673,13 +645,20 @@ public class PdeBase extends Frame implements ActionListener { MenuItem item = new MenuItem(list[i]); item.addActionListener(listener); menu.add(item); + ifound = true; } else { // might contain other dirs, get recursive Menu submenu = new Menu(list[i]); - menu.add(submenu); - addSketches(submenu, subfolder, false); + // needs to be separate var + // otherwise would set ifound to false + boolean found = addSketches(submenu, subfolder, false); + if (found) { + menu.add(submenu); + ifound = true; + } } } + return ifound; } @@ -1073,7 +1052,11 @@ public class PdeBase extends Frame implements ActionListener { String str = get(which); if (str == null) return otherwise; // ENABLE LATER StringTokenizer st = new StringTokenizer(str, ","); - return new Font(st.nextToken(), Font.PLAIN, + String fontname = st.nextToken(); + String fontstyle = st.nextToken(); + return new Font(fontname, + (fonstyle.indexOf("bold") ? Font.BOLD : 0) | + (fonstyle.indexOf("italic") ? Font.ITALIC : 0), Integer.parseInt(st.nextToken())); } diff --git a/processing/app/PdeEditor.java b/processing/app/PdeEditor.java index f69461b33..f5390662d 100644 --- a/processing/app/PdeEditor.java +++ b/processing/app/PdeEditor.java @@ -1116,8 +1116,8 @@ afterwards, some of these steps need a cleanup function File file = new File(directory, filename); try { - System.out.println("handleSave: results of getText"); - System.out.print(s); + //System.out.println("handleSave: results of getText"); + //System.out.print(s); BufferedReader reader = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(s.getBytes()))); @@ -1126,7 +1126,7 @@ afterwards, some of these steps need a cleanup function String line = null; while ((line = reader.readLine()) != null) { - System.out.println("w '" + line + "'"); + //System.out.println("w '" + line + "'"); writer.println(line); } writer.flush(); diff --git a/processing/build/macosx/make.sh b/processing/build/macosx/make.sh index 77f9dd345..a85e54793 100755 --- a/processing/build/macosx/make.sh +++ b/processing/build/macosx/make.sh @@ -74,7 +74,7 @@ echo Building PDE for JDK 1.3 CLASSPATH=../build/macosx/work/classes:../build/macosx/work/lib/kjc.jar:../build/macosx/work/lib/oro.jar:$MACOSX_CLASSPATH -perl ../bagel/buzz.pl "jikes +D -classpath $CLASSPATH -d ../build/macosx/work/classes" -dJDK13 -dMACOS *.java lexer/*.java +perl ../bagel/buzz.pl "jikes +D -classpath $CLASSPATH -d ../build/macosx/work/classes" -dJDK13 -dMACOS *.java jeditsyntax/*.java cd ../build/macosx/work/classes rm -f ../lib/pde.jar diff --git a/processing/build/shared/lib/pde.properties b/processing/build/shared/lib/pde.properties index 2beb3a9a7..426dd69dd 100644 --- a/processing/build/shared/lib/pde.properties +++ b/processing/build/shared/lib/pde.properties @@ -3,32 +3,69 @@ # edit these only if you know what you're doing. +# a pound sign at the beginning of a line is a comment +# parameters need to be un-commented before they take effect + + +# font size for editor +#editor.program.font=Monospaced,plain,12 + +# foreground and background colors +#editor.program.fgcolor=#000000 +#editor.program.bgcolor=#ffffff + +# styles for various types of text + +# comments +#editor.program.comment1.style=#666666,plain +#editor.program.comment2.style=#666666,plain + +# abstract, final, private +#editor.program.keyword1.style=#aa6666,plain +# beginShape, point, line +#editor.program.keyword2.style=#993333,plain +# byte, char, short, color +#editor.program.keyword3.style=#660000,bold + +# constants: null, true, this, RGB, TWO_PI +#editor.program.literal1.style=#333399,plain +# p5 built in variables: mouseX, width, pixels +#editor.program.literal2.style=#6666aa,plain + +# ?? +#editor.program.label.style=#009900,bold + +# + - = / +editor.program.operator.style=#000000,plain + +# caret blinking and caret color +#editor.program.caret.blink=true +#editor.program.caret.color=#808080 + +# selection color +#editor.program.selection.color=#ccccff + +# highlight for the current line +#editor.program.linehighlight.enabled=true +#editor.program.linehighlight.color=#f0f0f0 + +# bracket/brace highlighting +#editor.program.brackethighlight.enabled=true +#editor.program.brackethighligh.color=#666666 + +# little pooties at the end of lines that show where they finish +#editor.program.eolmarkers.enabled=false +#editor.program.eolmarkers.color=#cccccc + +# area that's not in use by the text (replaced with tildes) +#editor.program.invalid.enabled=false +#editor.program.invalid.style=#00cc00,bold + + #editor.buttons.bgcolor = #999999 #editor.buttons.status.font = SansSerif,plain,10 #editor.buttons.status.color = #333333 -# default/base style for everything -editor.program.default.style = Monospaced,plain,12,#000000,#ffffff - -# int, void, public, etc.. -editor.program.reserved_word.style = Monospaced,plain,12,#000080,#ffffff - -# numbers, quoted tidbits -editor.program.literal.style = Monospaced,plain,12,#800000,#ffffff - -# self explanatory -editor.program.comment.style = Monospaced,plain,12,#808080,#ffffff -editor.program.whitespace.style = Monospaced,plain,12,#000000,#ffffff - -# brackets, semicolons, etc -#editor.program.separator.style = Monospaced,plain,12,#008000,#ffffff - -# math guys + - / * -#editor.program.operator.style = Monospaced,plain,12,#008000,#ffffff - -# just about everything (ignored, default is used instead) -#editor.program.identifier.style = Monospaced,plain,12,#000000,#ffffff - #editor.header.bgcolor = #333333 #editor.header.fgcolor.primary = #ffffff #editor.header.fgcolor.secondary = #cccccc @@ -48,11 +85,10 @@ editor.program.whitespace.style = Monospaced,plain,12,#000000,#ffffff #editor.status.prompt.bgcolor = #CC9900 #editor.status.font = SansSerif,plain,12 -# not necessary to set bgcolor of window b/c it comes from os -#run.window.bgcolor = #666666 -#run.window.width.minimum = 120 -#run.window.height.minimum = 120 -#run.present.bgcolor = #999999 +#editor.expand_tabs=true +#editor.tab_size=2 +#editor.auto_indent=true +#editor.balance_parens=false #serial.port = COM1 #serial.rate = 9600 @@ -60,24 +96,10 @@ editor.program.whitespace.style = Monospaced,plain,12,#000000,#ffffff #serial.databits = 8 #serial.stopbits = 1 -#editor.expand_tabs=true -#editor.tab_size=2 -#editor.auto_indent=true -#editor.balance_parens=false - -# these properties are no longer in use - -# enable this to run hack-version mildly stabler external processing -#play.external = true - -# use this with above under windows 2000 -#play.externalCommand = .\\bin\\jre -cp lib;lib\\sketchbook;lib\\pde.jar;lib\\kjc.jar;lib\\comm.jar ProcessingAppletViewer - -# use this with above for window 95/98/ME and you want play.external -# it will also be necessary to put processing in c:\ -#play.externalCommand = C:\\processing\\bin\\jre -cp c:\\processing\\lib;c:\\processing\\lib\\pde.jar;c:\\processing\\lib\\kjc.jar;c:\\processing\\lib\\comm.jar ProcessingAppletViewer - -# auto updating -#update.url = http://acg.media.mit.edu/people/fry/processing/update/ -#update.url = http://imrf.or.jp/processing/update/ +# preliminary for rev 0047, can point sketchbook at +# another location. this can be a full or relative path +# no promises on how well this works, and note that +# a 'default' directory will be created inside it, +# which is where any new sketches will be thrown +#sketchbook.path=sketchbook diff --git a/processing/build/shared/readme.txt b/processing/build/shared/readme.txt index 3f90d3e5e..9711da9b9 100644 --- a/processing/build/shared/readme.txt +++ b/processing/build/shared/readme.txt @@ -1,8 +1,8 @@ PROCE55ING DEVELOPMENT ENVIRONMENT -RELEASE 0046 - 20 NOVEMBER 2002 +RELEASE 0047 - 5 JANUARY 2003 -(c) 2002, 2001 Massachusetts Institute of Technology +(c) 2001-03 Massachusetts Institute of Technology and Interaction Design Institute Ivrea @@ -83,22 +83,44 @@ we prefer to call them "issues." first, be sure to check under the notes for your specific platform to make sure it isn't a known issue or that there isn't a simple fix. +second, check the bboard to see if something related has been +reported, or if there is already a workaround. + you can either post to the bulletin board at: http://proce55ing.net/discourse/ or send email to bugs@proce55ing.net. the bboard is probably the better way to go, because more people will be watching it. the email goes straight to the developers, but their schedules are erratic and -it could be anywhere from two minutes to two weeks before you receive +it could be anywhere from two minutes to two months before you receive a response. if you want to go straight to the bugs page, it's: http://proce55ing.net/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs when reporting this "bug" please include information about -1. the revision number (i.e. 0043) +1. the revision number (i.e. 0047) 2. what operating system you're using, on what kind of hardware 3. a copy of your code 4. details of the error, which may be the last few lines from the files stdout.txt or stderr.txt from the 'lib' folder. +for stranger errors during compile time, you can also look inside the +"build" folder inside "lib", which is an intermediate (translated into +java) version of your code. + + +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + +KNOWN BUGS + +there are many more, which are in a cryptic 'todo.txt' list that we +keep, but some of the larger ones that we know about: + +- random freezes under windows, after running a few time. every 20th + or every 100th time the app just freaks out. use ctrl-alt-del to + kill the java runtime and restart your app. this will slowly be + ironed out. + +- wheel mouse is disabled again in 47 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @@ -108,6 +130,9 @@ GENERAL NOTES / COMMON MISTAKES - size() must use numbers, not variables. this is because of how the size command is interpreted by proce55ing. +- size() must also be the first thing inside setup(). we hope to fix + this in the future, but the issue is pricklier than might be expected. + - when using draw() mode, background() must also use only numbers, and no variables. this is similar to the issue with the size command, because in both cases, Proce55ing needs to know the size and @@ -130,6 +155,15 @@ GOODIES & SEMI-HIDDEN FEATURES - for quick renaming, just click on the sketch title +- inside the 'lib' folder is a 'pde.properties' file, which contains a + handful of settings for your app and how it's set up. you can change + the coloring of things, or even change your sketchbook location + inside this file. a second file with a similar title but that + includes "windows" or "macosx" etc in the name is for tweaks + specific to your platform. for instance, we use the macosx-specific + properties file to set the font size a little differently than on + windows. + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @@ -189,8 +223,8 @@ mileage may vary if you're running something else. actually, your mileage will vary no matter what, because who knows what this software is gonna do. you're playing with free, alpha software. get psyched! -minimum requirements.. processing requires at least Mac OS X 10.1. if -you're running anything older than 10.2, you'll need "Java 1.3.1 +minimum requirements.. processing requires at least Mac OS X 10.1. +if you're running anything older than 10.2, you'll need "Java 1.3.1 Update 1", the latter of which is available as a free update from the "Software Update" control panel. it can also be downloaded from http://www.apple.com/downloads/macosx/apple/ or from: @@ -205,6 +239,9 @@ support is disabled until apple finishes an implementation of java java team quit patting themselves on the back and get to work on finishing 1.4. +we're currently playing with the developer preview releases of 1.4, +but haven't done anything too fancy with it yet. + "Caught java.lang.UnsatisfiedLinkError" on startup.. in order to use the serial port under macosx, you'll need to install RXTX, the serial port driver. this is for more advanced users, and the @@ -343,10 +380,11 @@ would have been called "Processing" and not "Proce55ing." PROCE55ING IS FREE TO DOWNLOAD / FREE TO USE -we think it's important to have processing freely available, rather +we think it's important to have Proce55ing freely available, rather than selling it for a million dollars under some godawful yearly contract update scheme. to that end, we encourage people to distribute -it widely and refer back to the site: http://Proce55ing.net +the word widely and refer them to the site: http://Proce55ing.net + on most of our own projects, we usually list them as "Built with Proce55ing" or something similar, with a link back to the site. of course this isn't a necessity, but it makes us happy when you do. @@ -372,14 +410,15 @@ share anyway). more information about the gnu public license can be found here: http://www.gnu.org/copyleft/gpl.html -processing also includes other open projects, namely the oro matcher -and the kjc compiler. the oro tools are distributed under a bsd style -license as part of the apache jakarta project, and the kjc compiler is -part of the kopi suite of tools, which is released under the gpl. so -in fact, if the final, publicly available version of processing still -uses kjc, the code for processing will have to be released gpl. -more about the oro tools is at: http://www.savarese.org/oro/ -and the home for kopi/kjc is here: http://www.dms.at/kopi/ +processing also includes other open projects, namely the oro matcher, +the kjc compiler, and the jedit syntax package. the oro tools are +distributed under a bsd style license as part of the apache jakarta +project, and the kjc compiler is part of the kopi suite of tools, +which is released under the gpl. so in fact, if the final, publicly +available version of processing still uses kjc, the code for +processing will have to be released gpl. more about the oro tools is +at: http://www.savarese.org/oro/ and the home for kopi/kjc is here: +http://www.dms.at/kopi/ we're sorry that the source code isn't available just yet, we're cleaning and scrubbing it, it was a decision between getting the alpha @@ -387,3 +426,7 @@ out to people to try versus taking a few more weeks to clean up the project and deal with the technology licensing departments at mit and ivrea. these things are far more difficult and time consuming than they would appear. + +our plan is to have the code available with the first "beta" release, +which will be the first release that is publicly available and +downloadable from the site. diff --git a/processing/build/shared/revisions.txt b/processing/build/shared/revisions.txt index e0987f81f..552de04bc 100644 --- a/processing/build/shared/revisions.txt +++ b/processing/build/shared/revisions.txt @@ -1,3 +1,44 @@ +ABOUT REV 0047 - 5 january 2003 + +[ happy new year ] + +- hopefully january 2003 will be a good month for p5, as i have + a short bit of time to work on it and there was a beautiful little + ibook under the p5 xmas tree to help me with the mac releases. + i hope to get a few revisions out this month so i can get back + my 'real' work. + +[ features ] + +- the text editor has once again been replaced. the new one is fancier + and less buggy. most obvious thing to note is text coloring. + the editor is based on the jedit 'syntax' package. jedit is an + amazing and feature heavy java-based text editor with an online + community the size of an organized religion as compared to our + little p5 cult. see http://www.jedit.org for worship times. + +- sketchbook can now be more recursive (folders within folders) than + it used to be. for those inclined to playing with fire (you're using + alpha software, so this must be you) you can set the root of your + sketchbook directory to something besides "sketchbook" inside the + Proce55ing folder. details in the 'readme' doc. + +[ bug fixes ] + +- a strange crashing after a few weeks of use on the macosx has been + fixed. it got upset as soon as a .DS_Store file made its way into + the sketchbook directory. i'd get upset too since those little + buggers get pooped all over the place as soon as a mac connects to + anything, but instead some code was written to ignore them. i'm + trying to learn to ignore them myself. thanks to fdb, brendanberg, + jes and perhaps others who notified of this one. + +- the undo forever problem has (hopefully) been squashed. in 0046, + one could undo until the text area went empty, or the previous + project loaded. if one were to hit undo quickly enough, they might + have noticed the clock on their wall moving backwards. + + ABOUT REV 0046 - 20 november 2002 [ major release, new features ] diff --git a/processing/todo.txt b/processing/todo.txt index f8034c438..2961e1e8e 100644 --- a/processing/todo.txt +++ b/processing/todo.txt @@ -15,35 +15,8 @@ again, after i moved my sketches over it broke permanently... / 46 dies when run from desktop on some machines [jes] / spaces in the dir name? o is sketch.properties getting mangled on the mac? - -_ crashes while starting -LaunchRunner Error] PdeBase.main(String[]) threw an exception: -java.lang.NullPointerException - at PdeBase.addSketches(PdeBase.java:598) - at PdeBase.addSketches(PdeBase.java:615) - at PdeBase.rebuildSketchbookMenu(PdeBase.java:476) - at PdeEditor.skNew2(PdeEditor.java:872) - at PdeEditor.checkModified2(PdeEditor.java:814) - at PdeEditor.checkModified(PdeEditor.java:797) - at PdeEditor.checkModified(PdeEditor.java:785) - at PdeEditor.skNew(PdeEditor.java:826) - at PdeEditor.init(PdeEditor.java:428) - at PdeBase.(PdeBase.java:361) - at PdeBase.main(PdeBase.java:102) - at java.lang.reflect.Method.invoke(Native Method) - at com.apple.buckyball.app.LaunchRunner.run(LaunchRunner.java:82) - at com.apple.buckyball.app.LaunchRunner.callMain(LaunchRunner.java:44) - at com.apple.buckyball.app.CarbonLibApp.main(CarbonLibApp.java:76) - -_ recursive sketch add that works properly and ignores crap - -_ jedit text area -_ change bg color for 'use external editor' -_ enable wheel mouse -_ extra linefeeds is getting annoying for folks -_ line endings joy -_ how are line endings working during save? - +X jedit text area +X change bg color for 'use external editor' X enable/disable undo/redo X don't let undo after setting text X get focus after setText @@ -61,28 +34,53 @@ X rect, line etc as another X width, height, pixels as a third X jump to top of document on load X change style of ~ at end of document for unused area +X extra linefeeds is getting annoying for folks +X line endings joy +X how are line endings working during save? +X recursive sketch add that works properly and ignores crap +X crashes while starting +LaunchRunner Error] PdeBase.main(String[]) threw an exception: +java.lang.NullPointerException + at PdeBase.addSketches(PdeBase.java:598) + at PdeBase.addSketches(PdeBase.java:615) + at PdeBase.rebuildSketchbookMenu(PdeBase.java:476) + at PdeEditor.skNew2(PdeEditor.java:872) + at PdeEditor.checkModified2(PdeEditor.java:814) + at PdeEditor.checkModified(PdeEditor.java:797) + at PdeEditor.checkModified(PdeEditor.java:785) + at PdeEditor.skNew(PdeEditor.java:826) + at PdeEditor.init(PdeEditor.java:428) + at PdeBase.(PdeBase.java:361) + at PdeBase.main(PdeBase.java:102) + at java.lang.reflect.Method.invoke(Native Method) + at com.apple.buckyball.app.LaunchRunner.run(LaunchRunner.java:82) + at com.apple.buckyball.app.LaunchRunner.callMain(LaunchRunner.java:44) + at com.apple.buckyball.app.CarbonLibApp.main(CarbonLibApp.java:76) +X undo/redo can go to far +X docs +X make a note that size() has to come first [nluken] +X look at the code that's created in build/ +X known issues +X random freezes.. especially under windows +X wheel mouse is gone again, to return later +X describe rundown of constants pulled from pde.properties +X coloring for syntax +X sketchbook.path, very preliminary, still creates 'default' -MENTION IN DOCS -_ describe rundown of constants pulled from pde.properties +................................................................ + + +docs/faq _ notes on debugging -_ look at the code that's created in build/ _ run with java -Xint blahblah (turns off jit) -_ known issues -_ random freezes.. especially under windows -_ make a note that size() has to come first [nluken] -_ doesn't yet run under java 1.4 on mac -_ undo/redo can go to far - +_ doesn't yet run under java 1.4 on mac (?) _ p5 faq items: re midi support, msgs w/ adam hoyle in mail folder _ also 'why p5' message from amit pitaru on 12/15/02 _ and p5 versus flash stuff _ lists the main arguments, could be a useful document -................................................................ - - bagel _ getting mouse movement outside the window _ delay() should sleep the thread [glen murphy] @@ -105,6 +103,7 @@ _ font smoothing (unless hint SMOOTH_IMAGES enabled) is broken pde / bugs +_ re-enable wheel mouse _ can't used random() inside constructor.. (Glen Murphy) _ maybe related to problems loading images in constructors _ images don't load during setup [reas]