|
Squeak is an open, highly-portable, free Smalltalk-80 implementation. This is a list of enhancements and fixes I have written for Squeak. For feedback or comments please send email to Steve Wessels.
NOTICE 30-Jun-2007 In September of 2002 I wrote some Squeak code to help move Squeak source files easily between 2 computer systems. While doing that work it occurred to me to write a Squeak development example (tutorial) to share how it was done with others. I've updated that tutorial in April of 2003 to reflect the use of Squeak 3.5. |
The table below includes the descriptions for my modifications and enhancemnts, a link to a desktop snapshot picture showing the feature, and a link to the change-sets themselves. Note the Squeak 3.4 and Squeak 3.5 change-sets are all in ASCII text format. The Squeak 3.7/3.8 and Squeak 3.9 change-sets are in either Monticello format, SAR format or ASCII text format. Newest entries are at the top.
Change sets for Squeak 3.5 will also work with Squeak 3.4. If you are working with Squeak 3.2, versions of many of these older enhancements are available here, now that I have changed to a new web service host and have the capacity to keep more files on-line.
Note: Many of the Squeak 3.5 change-set attempt to load in prerequisite change sets via SqueakMap. It should all happen automatically for you. If you do not want to use SqueakMap, or if you do not have it installed, you can still file-in the prerequisite change sets manually from these files. This is not an issue for the enhancements published here that pertain to Squeak 3.7 or newer.
Last update: 04-Jul-2007
| Description | Change-Set for Squeak 3.2 | Change-Set for Squeak 3.5 | Change-Set for Squeak 3.7/3.8 | Change-Set for Squeak 3.9 | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
The Laser Game. This is actually part of my latest version of a Squeak tutorial. There are actually 2 Monticello packages. One for the application itself, the other for the unit tests. For the latest version of this application I recommend you refer to the "Notes" page in the tutorial. That image is the highest "score" I've reached so far. |
Laser Game Laser Game Tests |
|||||||||||||||||||||
NsGame ("The Electricity Game") began as a Squeak port of the Shockwave Flash game by Pavils Jurjans. See http://www.jurjans.lv/stuff/net/freenet.htm. This is the game I demoed at OOPSLA 2003 during the Squeak BOF. There was a problem with opening the instructions window for this game under Squeak 3.8 gamma. The latest release (Jan 4th, 2005) solves that problem. The game now works great in Squeak 3.8 gamma. I had problems with the instructions window again when Squeak 3.9 was released. The 10-Dec-2006 release resolves that problem. |
Electricity Game | Electricity Game | ||||||||||||||||||||
Sokoban is a wonderfully addictive little puzzle game. This is an enhanced version of the original version as found on Squeak Map. The original version was published for Squeak by Robert Hirschfeld.
Update 16-Sep-2005: After playing it for a while I made a few enhancements to the game. A lot of the changes were cosmetic. But the most important enhancement is that an undo command was added. The game is a lot more playable. All the original rules about moves and the original puzzle/board configurations are intact. I just added a move stack that allows you to use the "z" key and roll-back any move you had already made. I also added a move that allows the use of the Control key modifier and causes a move to repeat. It's easier to just try it than explain it here. |
Enhanced Sokoban | |||||||||||||||||||||
This enhancement adds a new gradient setting capability for the desktop. In standard Squeak the desktop gradient can be set from the appearance menu. That gradient offers the choice of setting the second gradient color, at the bottom of the screen. Although you can then get to the style from the halo morph for the desktop and set both colors (top and bottom), I wanted a simple tool that made this a more direct activity. When you use this new tool 2 color pickers appear on the desktop at once easily allowing you to set both colors the first time you set the desktop background to be gradient. It's a simple tool and also takes advanage of the appearance menu registry code available below to make a direct entry for the tool in your appearance menu. |
Gradient Background Tool | |||||||||||||||||||||
Creates a web site from a folder of pictures. You select a folder full of pictures you want to include on your web site, then select the output folder where your web site contents will be generated. The photos publisher will produce the html files necessary to share your photos. It will copy the original images to the target web site folder as well as create image thubmnails that look pretty nice. It will create the subdirectory folder structure as required. The main starting page is named "index.html". July 7th, 2005 update corrects a bug where second thumbnails page did not get created under certain conditions. Also, a feature was added to optionally show the count of pictures per category with each category thumbnail. April 15th, 2005 update changes the GUI to incorporate the New Folder button inside the output folder panel border. Update on April 11, 2005 fixes a bug with generating the colors hex values in the output sheets. It also uses the new border design with labels inside the border edge.
The April 5, 2005 update adds support for colors, user specified thumbnails size and optional
clipping of the copied images. The generated HTML pages use the style sheet to control the colors of the page background, the heading text, the navigation text and the thumbnails dimensions text. You can select custom colors using the GUI. The output page can now look like this example. Click on the picture for a larger image. Note that you need to have the copy files option selected for clipping of the output files to work. The April 3, 2005 update makes the window taller and introduces a number of cosmetic changes. It also has a lot of changes behind the scenes related to GUI refactoring and getting ready to add support for new features as specified by the user from the GUI. Added support for specifying the number of rows and columns per page. The March 26, 2005 update provides a new GUI feature as well as an enhancement to the HTML pages created as output. The GUI now provides a progress bar, making it easier to understand what the application is doing while processing a lot of pictures. The second significant change is that the output pages use cascading style sheets. A new file is created "photos.css" included in the HTML output set. The user can go back and modify that style sheet to change fonts, spacing and other CSS features of the generated output pages. The 21-Mar-2005 update allows picture files that end in uppercase filename extensions and the option to show image sizes under thumbnails is no longer being ignored. The latest (19-Jan-2005) release adds a "new folder" button for the output directory tree. The (27-June-2004) release of this package supports nested photographs by categories. If your input images folder is structured into a set of sub-folders of pictures divided into categories, that structure will be re-created for the target web site and a master thumbnails page is created which links to each individual category. The Categories have thumbnail pages for each of their own photographs. The name of the image subfolders are taken as the category names. The first picture in each category is used as that category index thumbnail unless you name a specific picture after the category itself. In that case the specific named picture is used as the category thumbnail. For example, if you have an images folder with a subfolder containing animal pictures you could name that folder "animal". The folder name "animal" will be used as a category name. If you also ensure that one of the pictures in the animal subfolder also has the same name (animal.jpg for example) then that picture will be used as the thumbnail.
You launch via:
The tool prompts you with a dialog where you would specify the input folder. Another dialog is then presented where you specify the folder for all the output files. For an example of the output pages this tool creates look here. NOTE: This change set requires that the prerequisite change set "Dialogs" is installed first if you are using Squeak 3.4. Squeak 3.7 does not have this requirement. The release for Squeak 3.7 adds several new features including a new control morph which can be seen in the picture, and image attributes included as an option on the generated pages. |
Photos Publisher | Photos Publisher | Photos Publisher | |||||||||||||||||||
This enhancement provides a new border for wrapping morphs. Click on the picture to see a clearer view. The essential feature of this new border design is that it allows skips along the top and bottom edge. You can insert text or other morphs into these skips.
A "helper" class is included in this package. This enhancement package does not change existing base code but adds a few new classes and some method extensions to an existing class. No code should break from installing this package in a Squeak 3.7 image. Development of this enhamcement will continue. I provided the mechanism for skips along the left and right side but have not coded the changes to how the border would be drawn for that enhancement yet. Also, I wrote this enhancement because I intend to deploy it in one or more of my other Squeak applications. The Photos Publisher will be modified to use a variation of this tool. |
Border with Skips | |||||||||||||||||||||
My son has been coming home from school with a need to do multiplication problems for homework. For several nights in a row I would make up multiplication math problems, about 15 on a sheet, and then ask him to work them out. After he finished we would review his work and talk about any errors we found. The tedious part for me was making new problems up every night and then checking all the numbers. Ever the Squeaker that I am, I decided to write a utility to help me do this work.
This application will generate multiplication problems and output them in a table on an html page. Having an html page output makes it easy to throw at a printer. The child then takes the paper and solves the problems.
Another sheet is simultaneously created which provides the same problems with the answers included. Since these are multiplication tables involving 3 digit values and 2 digit values, the intermediate answer numbers are also provided.
The output files are factored into directories by date. I can create more than one set of problems. All the test questions for the same date are published to the same folder. They have unique file names (using seconds for uniqueness) and are always produced in pairs (questions and answers).
Browse
|
Math Tests | |||||||||||||||||||||
This tool will re-create the Projects, ChangeSets, ProjectViewMorphs and project view hierarchies in a new Squeak image. If the Projects or ChangeSets do not already exist in the new image they will be created, but empty. That is, you will need to install the change set sources or packages manually. The process requires this tool to be installed on both the originating Squeak image (where the media and packages are found) and the destination Squeak image. This tool assists with moving your projects and changesets environment to a new Squeak image. I usually put a lot of effort into creating a Squeak development environment that organizes my projects and change sets into a specific hierarchy of ProjectViewMorphs. The projects usually have desktops associated with them, also unique. Sometimes these desktops are just a fixed color, or a fully scaled image. Sometimes they have a gradient color background. And there are those projects that have a gradient background color with an image centered and inset. All of these preferences need to be restablished whenever I move to a new Squeak image. With this tool the work of moving to a new Squeak image is simplified. There is at least one prerequisite. I use the Desktop Background Loader enhancement (also found on this page) to install all of my JPEG image backgrounds. This tool names each background Morph JPEG as they are installed, making the extraction process easier.
Blaine Buxton tweaked this enhancment so that regular SystemWindow project views are also now managed by this too. That modification is included in the package released here. Thanks Blaine. Also, the current project you choose when you run the extract tool in your originating Squeak image will be the base of the extracted information. The current project and all sub-projects will be extracted. |
Extract Desktops | |||||||||||||||||||||
This is a quick enhancement I knocked out over dinner one evening. So it likes refinement and may not work in all situations. For some of my Morphic Project windows I have several Morphic Project Views all lined up neatly in a row. However, I also resize them to be really small. Often I cannot read the project name. When you hover the cursor over a project view morph a little balloon appears with the name of the project. That's standard Squeak behavior. With this enhancement I added a preference that, when turned on, will magnify the small project morphs quickly while you are hovered over them. Project view morphs that are large enough do not get magnified. |
Magnify Project Thumbnails | |||||||||||||||||||||
Adds a menu item to the appearance menu, "clean up project morphs". When selected the project morphs are sorted alphabetically and placed as if on a grid, evenly spaced. A preference controls whether the project thumbnails are created horizontally or vertically. The spacing is determined by the way it finds the first morph in the World. The amount of margin it is currently using, and it's size, is used to resize and position the other project thumbnails. This latest update includes a tweak from Blaine Buxton to allow the alignment of regular System Window projects too. |
Align Project Thumbnails | |||||||||||||||||||||
Provides a menu registry for the World project and appearance menus. This is a generalized refactoring of the Project Menu Registry and Appearance Menu Registry enhancements I published for Squeak 3.4 and 3.5. The version for Squeak 3.7 ehances the framework to handle if this package is installed after other packegs that may use it. |
World Menu Registry | |||||||||||||||||||||
NEW Skins support for Squeak 3.4/3.5/3.6/3.7 This new model attempts to accomplish a couple of goals that I saw as defects in the original skins model: I've accomplished those goals. Also, the framework can be extended to support other imported theme files. At this time the skins framework will import the "Ice Window Manager" themes directly as can be found at a site like http://themes.freshmeat.net. I have successfuly imported and tested 35 themes from that site in Squeak with this new skins code. No special handling of the theme files is required. Just uncompress them and tell Squeak where to find them. More about the actual skins theme process later... The nice part about this approach is that I don't have to concern myself with distibution of themes and art work. Lots of existing themes already exist and are being added regularly. The Ice Window Manager themes were selected as my first importer because they seemed to be the easiest to understand and seem to be standard forms based theme designs. At this time window title bar, title bar buttons and window borders are imported and managed by the skins framework. The old skins code required special subclasses of standard windows to override and install it's pieces. This new model make some intrusive changes to the SystemWindow architecture, but not really much, and performs a "swap out" of the morphic components that comprise the window with new ones created by the skin. Also, this technique allows me to easily remove a skin from a window from it's window menu. The original widow shape and style is restored completely. You can even skin selected windows and leave others alone. This approach does allow for the condition where you could have multiple skins installed on windows at once. Every open window could wear it's own skin. User interface folks would have a fit over that one, but you can try it out. 3 change sets must be installed before the skins change set can be installed and used. The "dialogs", "xpm-support" and "importer-support" change sets must be installed first. The skins change set is named "skin-importer". After you install the 4 change sets, you will need to download some theme files from the site mentioned above. Some of the ICE WM themes work better than others. Ones that I have used with Squeak and like include "18k", "aesthete", "aeteria", "Athens", "beamer", "bluecrux" (my favorite), "bluesteel", "Eazel", "helix", "ubicande", and "xp new". When you uncompress the themes they create individual folders. Put the whole batch of folders anywhere. The first time you try to use one after an image startup the skins framework will ask you for the location of these folders. The dialog looks like this. A Preference is added to the #windows category to support automatic creation of windows using the "current" theme. The easiest way to establish a skin for a window is to use it's own window menu. There will be a choice to select a theme (or remove one if one is already assigned to the window). The skins framework will scan through the folder and present you with a menu of skins you can use, The skins work is incomplete. Internal borders, alignment pane backgrounds, and popup dialogs need to be addressed. Nevertheless this is a great starting point. I'm perfectly happy to see the open source Squeak community adopt this framework and enhance and complete as best we can. I want to take a crack at importing some other open unix theme formats soon to further refine the framework and refactor as necessary. I'm interested in dynamic theme designs too (not just strictly form based) and want to adopt some ideas I have along those lines into this framework as time permits. Note. If you are using my IRC Enhancements change set, there is an additional change set you can install, AFTER you install the skins code. Install this change set only if you also have IRC enhancements installed. Note. If you are using Squeak 3.7, I just (June 19, 2004) released a package that works with this version of Squeak. It is a Monticello package and is the only thing you need to install. Just save the download file and open it up as a Monticello package via the File List. (This is the same installation proceedure for all of my Squeak 3.7 enhancements). The feature content of the Skins 3.7 package is not as complete as some of the earlier versions, but I wanted to get something ported and released quickly to respond to the email requests I have been getting.
Another Note about Squeak 3.7 and Skins II |
dialogs XPM Support Importer Support Skin Importer |
Skins 3.7 | ||||||||||||||||||||
This is a significant rewrite of the built-in Squeak IRC client GUI. A new user interface includes having one console window per connection and then having all console messages, channel messages and private messages contained inside the main console window using tabbed swapped panes. Numerous other changes are also included but are not described here. The change-set contains documentation for all features added or modified. I wrote some basic setup and operation instructions for this client. They can be found here. This update has preliminary mIRC color text support. Channel messages received will show colors as controlled by the color mapping tables. At this time only foreground color messages are processed. Background color messages are decoded by the software but no attempt has been made at this time to display channel message text in any other than a white background. Update 11-Jan-2003 - Added better control over management of topic pane. Also added logging of channel traffic option. Fixed bug with collision of world open menu. - not needed with 3.4. Defined IRC.FREENODE.NET server. UPDATE For Squeak 3.7 |
Enhanced IRC client |
IRCe client Test Suite for IRCe client |
||||||||||||||||||||
This change-set combines features from 2 previous ones I had released. It also adds capability.
Provides a menu option to allow a crop operation on an existing SketchMorph. Very handy for modifying a SketchMorph on your desktop. Also provides basic change to how a rectangle is grabbed from the screen. A new crop/grab UI design is used. Here's how you use it:
In addition, two new Utility methods were added and one was re-grouped. The new Utilities grabScreenAndSaveOnDiskAsJpeg will save the grabbed rectangle as a JPEG file. It also prompts you for the output file name. A default file name is provided. |
Crop SketchMorphs and Grab Rect | Crop SketchMorphs and Grab Rect | Crop SketchMorphs and Grab Rect | |||||||||||||||||||
This change-set provides a new editor allowing the easy modification of #colorPrint values.
If you turn on the Browsing preferences of
To open the editor perform: NOTE: This change set requires that the prerequisite change set "Appearance Menu Registry" is installed first if you are using Squeak 3.4. |
Edit Text Colors | Edit Text Colors | Edit Text Colors | |||||||||||||||||||
The most common method of "breakpointing" is to modify the code you are working on and include a
When this enhancement is installed, the debug menu provides a toggle to enable and disable this feature. your
This enhancement provides for the following methods which can be used instead of
|
Halt Once | |||||||||||||||||||||
Simple enhancement that provides an instance method
|
Color swatch | |||||||||||||||||||||
If you use method pretty printing, the { and } groups do not show very nicely when they are nested. This enhancement fixes that. |
ParseNode mods | |||||||||||||||||||||
Squeak Pipes Game is a little experiment I did to draw some graphics with Morphic and then use them in a game. It's using a lot of the framework/ideas from the Electricity Game with some new animation. I've actually spent some time working on a better animation sequence when the circuit completes. The code currently has all the provisions to make this work, just needs another pass at it.
Open the
|
Squeak Pipes Game | |||||||||||||||||||||
Provides a previewer for images that can be loaded as the desktop. Accessed via the appearance menu, just as before. The modified file browser is produced for background image browsing. This new version provides options over how the image is placed in the desktop. Only some of the image placement options are completed. The options "tile", "center", and "scale retain aspect" are working. The "center" placement option is my favorite. I usually use Morphic to create a gradient background and then use this too to add a centered image.
NOTE: This change set requires that the prerequisite change sets "Dialogs" and "Appearance Menu Registry" be installed first if you are using Squeak 3.4. |
Preview Loader | Preview Loader | Desktop Background Loader | |||||||||||||||||||
If new morphic projects are opened in a project view, check the Preferences to see if we should automatically apply a drop shadow. Also, changed the new creation of project morphs to be attached to the cursor and having the user locate the new project morph in the world/ This was done because the original technique always slammed the new project in the left top most corner of the world and invariable the user had to pick it up and put it somewhere else. |
Project Views with Shadow | Project Views with Shadow | Project Views with Shadow | |||||||||||||||||||
Create morphic project views with an aspect ratio that agrees with the screen, if the preference is set. Also, another new preference controls if the drag resize should also constrain the user to the same aspect ratio. This enhancement is mostly for my own working style. |
Project View Aspects | Project View Aspects | Project View Aspects | |||||||||||||||||||
Provides a menu registry for the World project menu. For example... |
Project Menu Registry | |||||||||||||||||||||
Provides an automatic mechanism for creating version history in a change-set preamble and a consequent mechanism allowing for queries on a change set for a latest revision level tag. Also can create a preflight check for a change set to better support prerequisite loading. See ChangeSorter class>>generatePreflightCheckExample. Adds a new field to the change set preamble: SM Name (Squeak Map Name). |
Change Set Revisions Tag | |||||||||||||||||||||
The change set fixes the project hierarchy display. It's a fix for an old bug that still hasn't been picked up by the "harvesters". I came upon this error recently while working in Squeak 3.5 and decided to publish this revised update. |
Fix Projects List | Fix Projects List | ||||||||||||||||||||
Adds variables pane to several of the Browsers, similar to old Smalltalk/V browsers.
The variables pane includes menu items for searching for accesses and references to a selected variable from the list.
This code was tested for the full system browser and the class hierarchy browser. It was verified to behave correctly both with the
Latest revision 2/8/2003 includes modification to work in MVC. Vars list menu in Browser is not working yet in MVC. |
Vars Pane in Browsers | Vars Pane in Browsers | ||||||||||||||||||||
By default weeks begin on Monday in Squeak and code exists to toggle between Sunday start and Monday start. This change set adds a explicit setting methods for the start of week day. There were a few places in the code where proper adjustment to Sunday beginning weeks were not correct. The Date #weekday math was corrected to account for Monday/Sunday week start. Month has a new #weeksInMonth method. Week #indexInMonth: method was also fixed. Note that the MonthMorph still works correctly since it coded around this. Wrote some SUnit tests for Date and Week. |
Week and Date fixes | |||||||||||||||||||||
Provides a menu registry for the world appearance menu. This is a prerequisite change set required for some of my Squeak 3.5 enhancments. |
Appearance Menu Registry | |||||||||||||||||||||
Provides extensions to dialogs available from FileList2. This is a prerequisite change set required for some of my Squeak 3.4 enhancments. |
Dialogs | |||||||||||||||||||||
IMPORTANT: If you downloaded a version of this change-set before 16-Nov-2002 you need to get this latest version. The previous version produced problems with image save/load operations. Provides an easy to use mechanism for change-set fileouts to go to a specified location. By default the location is still the image directory. However, you can specify a new location in any change sorter. The change-set repository location remains constant regardless of which change-set is current. |
Common Code Repository | Common Code Repository | ||||||||||||||||||||
| The rest of this table contains "placeholders" for future work. | ||||||||||||||||||||||
DESCRIPTIONTEXT |
||||||||||||||||||||||
DESCRIPTIONTEXT |
||||||||||||||||||||||