From 391ca270ffbf562c61542ff440b1fb2177cd9c3e Mon Sep 17 00:00:00 2001 From: benfry Date: Thu, 1 Aug 2002 04:17:57 +0000 Subject: [PATCH] X serial X some method for getting list of serial ports X pde menu item for listing serial ports available o could just println them to the console X import javax.comm stuff as standard in kjc (but not export) X can't get fonts to load - tested working ok X bagel complaint: could not load font Univerx76.vlw.gz X why the x? what's going on? --- processing/app/KjcEngine.java | 7 +- processing/app/PdeBase.java | 93 +++++++++++++----- processing/build/windows/dist/Proce55ing.exe | Bin 110681 -> 122880 bytes processing/build/windows/launcher/.cvsignore | 1 + .../build/windows/launcher/launcher.dsp | 10 +- processing/done.txt | 22 +++++ processing/todo.txt | 62 ++++-------- 7 files changed, 122 insertions(+), 73 deletions(-) diff --git a/processing/app/KjcEngine.java b/processing/app/KjcEngine.java index ab22e982e..271b6cd7f 100644 --- a/processing/app/KjcEngine.java +++ b/processing/app/KjcEngine.java @@ -190,7 +190,7 @@ public class KjcEngine extends PdeEngine { index = s.indexOf(' '); name = s.substring(0, index); tempClass = name; - + // and we're running inside if (kjc) { // if running inside processing... index = program.indexOf(EXTENDS); // ...and extends BApplet @@ -213,12 +213,15 @@ public class KjcEngine extends PdeEngine { // spew out a bunch of java imports for (int i = 0; i < imports.length; i++) { writer.print("import " + imports[i] + ".*; "); + // add serial if running inside pde + if (kjc) writer.print("import javax.comm.*;"); if (!kjc) writer.println(); } if (!kjc) writer.println(); writer.print("public class " + name + " extends " + - ((kjc && !usingExternal) ? "KjcApplet" : "BApplet") + " {"); + ((kjc && !usingExternal) ? + "KjcApplet" : "BApplet") + " {"); } if (programType == BEGINNER) { if (!kjc) writer.println(); diff --git a/processing/app/PdeBase.java b/processing/app/PdeBase.java index be6186e0f..052b566da 100644 --- a/processing/app/PdeBase.java +++ b/processing/app/PdeBase.java @@ -5,6 +5,7 @@ import java.io.*; import java.net.*; import java.util.*; import java.util.zip.*; +import javax.comm.*; public class PdeBase implements ActionListener { @@ -30,6 +31,8 @@ public class PdeBase implements ActionListener { } }; + Menu serialMenu; + static final String WINDOW_TITLE = "Proce55ing"; // the platforms @@ -223,20 +226,16 @@ public class PdeBase implements ActionListener { item.setEnabled(false); menu.add(item); menu.addActionListener(this); - menubar.add(menu); + + //menu.addSeparator(); + serialMenu = new Menu("Serial Port"); + menu.add(serialMenu); + buildSerialMenu(); + + menubar.add(menu); // add the sketch menu frame.setMenuBar(menubar); - /* - Menu fileMenu = new Menu("File"); - MenuItem mi; - goodies.add(new MenuItem("Save QuickTime movie...")); - goodies.add(new MenuItem("Quit")); - goodies.addActionListener(this); - menubar.add(goodies); - frame.setMenuBar(menubar); - */ - Insets insets = frame.getInsets(); Toolkit tk = Toolkit.getDefaultToolkit(); Dimension screen = tk.getScreenSize(); @@ -267,27 +266,15 @@ public class PdeBase implements ActionListener { // the directories above it class SketchbookMenuListener implements ActionListener { - //PdeEditor editor; String path; - public SketchbookMenuListener(/*PdeEditor editor,*/ String path) { - //this.editor = editor; + public SketchbookMenuListener(String path) { this.path = path; } public void actionPerformed(ActionEvent e) { - //if (e.getActionCommand().equals(NEW_SKETCH_ITEM)) { - //editor.handleNew(); - - //} else { - //editor.sketchbookOpen(path + File.separator + e.getActionCommand()); - //} - //System.out.println("got action in skbkmenulistener " + e); String name = e.getActionCommand(); - //System.out.println("calling editor.skOpen on " + path + " " + name); - //editor.skOpen(path, name); editor.skOpen(path + File.separator + name, name); - //File.separator + name + ".pde"); } } @@ -471,6 +458,64 @@ public class PdeBase implements ActionListener { } + class SerialMenuListener implements ItemListener /*, ActionListener*/ { + //public SerialMenuListener() { } + + public void itemStateChanged(ItemEvent e) { + int count = serialMenu.getItemCount(); + for (int i = 0; i < count; i++) { + ((CheckboxMenuItem)serialMenu.getItem(i)).setState(false); + } + CheckboxMenuItem item = (CheckboxMenuItem)e.getSource(); + item.setState(true); + String name = item.getLabel(); + //System.out.println(item.getLabel()); + PdeBase.properties.put("serial.port", name); + //System.out.println("set to " + get("serial.port")); + } + + /* + public void actionPerformed(ActionEvent e) { + System.out.println(e.getSource()); + String name = e.getActionCommand(); + PdeBase.properties.put("serial.port", name); + System.out.println("set to " + get("serial.port")); + //editor.skOpen(path + File.separator + name, name); + // need to push "serial.port" into PdeBase.properties + } + */ + } + + protected void buildSerialMenu() { + // get list of names for serial ports + // have the default port checked (if present) + + SerialMenuListener listener = new SerialMenuListener(); + String defaultName = get("serial.port", "unspecified"); + //boolean found; + + try { + Enumeration portList = CommPortIdentifier.getPortIdentifiers(); + while (portList.hasMoreElements()) { + CommPortIdentifier portId = + (CommPortIdentifier) portList.nextElement(); + + if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) { + //if (portId.getName().equals(port)) { + String name = portId.getName(); + CheckboxMenuItem mi = + new CheckboxMenuItem(name, name.equals(defaultName)); + //mi.addActionListener(listener); + mi.addItemListener(listener); + serialMenu.add(mi); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + public void actionPerformed(ActionEvent event) { String command = event.getActionCommand(); //System.out.println(command); diff --git a/processing/build/windows/dist/Proce55ing.exe b/processing/build/windows/dist/Proce55ing.exe index 8e5084d77996f3442fc9554dbfa9c75c95283478..93a3225d9857de142a85bec5bcfed866a49e3a5a 100755 GIT binary patch literal 122880 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 EKhSQKtpET3 literal 110681 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 diff --git a/processing/build/windows/launcher/.cvsignore b/processing/build/windows/launcher/.cvsignore index 1edae2c96..738a5cd6f 100644 --- a/processing/build/windows/launcher/.cvsignore +++ b/processing/build/windows/launcher/.cvsignore @@ -1,4 +1,5 @@ Debug +Release launcher.dsw launcher.ncb launcher.opt diff --git a/processing/build/windows/launcher/launcher.dsp b/processing/build/windows/launcher/launcher.dsp index 0797c76d2..c84e59404 100644 --- a/processing/build/windows/launcher/launcher.dsp +++ b/processing/build/windows/launcher/launcher.dsp @@ -36,24 +36,24 @@ RSC=rc.exe # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" -# PROP Use_MFC 6 +# PROP Use_MFC 5 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /Yu"stdafx.h" /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /Yu"stdafx.h" /FD /c +# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /Yu"stdafx.h" /FD /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 # ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL" -# ADD RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL" +# ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /subsystem:windows /machine:I386 -# ADD LINK32 /nologo /subsystem:windows /machine:I386 +# ADD LINK32 /nologo /subsystem:windows /machine:I386 /out:"Release/Proce55ing.exe" !ELSEIF "$(CFG)" == "Launcher - Win32 Debug" @@ -79,7 +79,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 /nologo /subsystem:windows /debug /machine:I386 /out:"Proce55ing.exe" /pdbtype:sept +# ADD LINK32 /nologo /subsystem:windows /debug /machine:I386 /out:"Debug/Proce55ing.exe" /pdbtype:sept !ENDIF diff --git a/processing/done.txt b/processing/done.txt index 717a3ed0b..a12a29483 100644 --- a/processing/done.txt +++ b/processing/done.txt @@ -1,4 +1,17 @@ 0039 BUGS WITH CODE + +// font problems +BFont font; +font = loadFont("Univers76.vlw.gz"); +//font = loadFont("Bodoni.vlw.gz"); +//BFont font = loadFont("Univerx76.vlw.gz"); +setFont(font); +String happy = "FontTest"; +//float happyWidth = font.stringWidth(happy); +//text(happy, (width - happyWidth)/2, 10); +text(happy, 20, 50); + +// float issues //BFont font1; //BFont font2; //font1 = loadFont("Univers76.vlw.gz"); @@ -62,6 +75,15 @@ X float f = 0.3; and fill(0.3, 0.2, 0.1); X windows needs to work from the .exe X also included run.bat just in case X test the gcc executable, and tweak dist script accordingly +X add 'readme.txt' to dist.sh.. change notes to revisions +X add examples to dist.sh scripts +X separate shared script to cleanup? +X or small script to remove CVS directories from a tree +X check osname under win98 and linux +X information on how to submit bugs to p5-bugs@proce55ing.net +X include release number, platform, and a copy of the code +X proce55ing thinks the following numbers are a double: +X float a = .5; float b = 0.5; 0037 diff --git a/processing/todo.txt b/processing/todo.txt index bc9897a6e..dbb1ea33b 100644 --- a/processing/todo.txt +++ b/processing/todo.txt @@ -6,15 +6,18 @@ X much reworking for run/present modes X run/present modes are getting confused X [esc] to exit presentation mode X remove 'edit' menu because it's worthless +X build 'release' version of app that doesn't need MFC42D.dll +X check on linefeeds and other errors with bbs on web site +X serial +X some method for getting list of serial ports +X pde menu item for listing serial ports available +o could just println them to the console +X import javax.comm stuff as standard in kjc (but not export) +X can't get fonts to load - tested working ok +X bagel complaint: could not load font Univerx76.vlw.gz +X why the x? what's going on? -bagel -a _ serial -a _ some method for getting list of serial ports -a _ pde menu item for listing serial ports available -a _ could just println them to the console -a _ import javax.comm stuff as standard in kjc (not in applet) - pde a _ move background() out of draw() for draw mode apps a _ click on project name to quickly go to rename mode @@ -29,8 +32,10 @@ macos9 a _ apple control keys register as edit events in buffer a _ use Toolkit.getShortcutKeymask() to figure out what's up a _ set file type/creator for .pde files.. TEXTPde1 +a _ try using serial macosx +a _ try using serial a _ test presentation mode for window sizing status macos @@ -44,45 +49,16 @@ a _ URLConnection.setUseCaches(false) a _ parent.obj.close() on the url a _ check to see if lines for error messages are off -windwows -a _ build 'release' version of app, wants MFC42D.dll +windows a _ splash screen.. check win95 book for simple code -release -a _ add 'readme.txt' to dist.sh.. change notes to revisions -a _ add examples to dist.sh scripts -a _ separate shared script to cleanup? -a _ or small script to remove CVS directories from a tree -a _ check osname under win98 and linux -a _ information on how to submit bugs to p5-bugs@proce55ing.net -a _ include release number, platform, and a copy of the code - web / docs +a _ finish writing 'readme.txt' a _ change download/index.html to not describe dates but process a _ "this is alpha, we're heading to beta with series of sm releases" -a _ check on linefeeds and other errors with bbs on web site -a _ online discussion/talk system (gets people using the site too) -a _ online signup cgi for people to add themselves to the list -a _ see about setting up simple bug tracker/feature system -a _ queue for people reporting things externally -a _ bugzilla but simpler -a _ would also be nice for people to be able to vote on features a _ document serial a bit more in release notes -a _ can't get fonts to load -a _ bagel complaint: could not load font Univerx76.vlw.gz -a _ why the x? what's going on? -BFont font; -font = loadFont("Univers76.vlw.gz"); -//font = loadFont("Bodoni.vlw.gz"); -//BFont font = loadFont("Univerx76.vlw.gz"); -setFont(font); -String happy = "FontTest"; -//float happyWidth = font.stringWidth(happy); -//text(happy, (width - happyWidth)/2, 10); -text(happy, 20, 50); - a _ this code is not performing correctly BImage b; // declare variable "b" of type BImage b = loadImage("image.gif"); @@ -119,10 +95,6 @@ rect(20, 20, 50, 50); fill(rr); rect(50, 50, 50, 50); -a _ proce55ing thinks the following numbers are a double: -float a = .5; -float b = 0.5; - //////////////////////////////////////////////////////////////////// @@ -134,6 +106,7 @@ b _ projectX, projectY, .. or projectedX ? BAGEL / high & time consuming +b _ color won't set for fonts b _ alpha b _ concave/complex polygon shtuff b _ eventually POLYGON auto-detects convex/concave polygon @@ -283,6 +256,11 @@ b _ lockup when something missing from classpath on dynamic load b _ but makes no error.. peditorconsole probably swallowing it b _ change writeJava/start functions to be combined in kjc b _ but the rest inside PdeEditor that takes care of launching/placing +b _ online signup cgi for people to add themselves to the list +b _ see about setting up simple bug tracker/feature system +b _ queue for people reporting things externally +b _ bugzilla but simpler +b _ would also be nice for people to be able to vote on features PDE / medium