MyTools Smalltalk Toolkit
MyTools is YAST (Yet Another Smalltalk Tool) - this is a collection of
various tools and helpful snippets. Why write yet another tool/extension?
Primarily because I haven't seen a toolkit that is open, portable, and
extendible by the community. Secondly, my intention is that if (when?
the Java juggernaut beckons) I leave the Smalltalk community, that I find
a good home for MyTools so it keeps getting updated. This toolkit
is freely distributable with all source code, with two caveats: 1)
It is not distributed/included for profit (if you want to do this, contact
me). 2) That any modifications/improvements/updates are sent to me
for inclusion in a future version. I'll be sure to add/withhold credit
as requested. See notes in help/documentation protocol of MyToolsBase
for more information - especially before firing off questions/suggestions
to me. Enjoy.
Environments tried in:
-
VW 2.5.2
-
VW 3.1
-
ENVY 3.01
Jason Steffler
jagwar@magma.ca
The current version is 0.4, and is available at the UIUC
archives.
1 Functions/Description
[R] - indicates it's for the Refactoring Browser
[E] - indicates it's for ENVY
Menu Items
-
Find complete string
-
Looks for occurances of entire string within the image. (case sensitive,
relatively fast)
-
Find substring
-
Allows you to scope the search by specifying class to start in. Will
search all subclasses.
-
Not case sensitive, relatively slow (why scoping is good) and runs in the
foreground.
-
Find substring, background.
-
Same as find substring, but runs in background for those times when you
can't reduce the scope.
-
Add extensions to Refactoring Browser
-
Only adds extensions to currently open refactoring browsers
-
Build MyTools
-
Make MyTools fileouts for the various platforms that it is possible for
current environment to do
Miscellaneous Protocol
"An easier BOSS interface."
MyTools bossOutObject: anObject on: 'aFilenameString'.
MyTools bossInObjectFrom: 'aFilenameString'.
"Various Customizations"
MyTools addToLauncher. "MyTools
submenu is dropped on image save for some reason."
MyTools setDefaultKeyBindings.
MyTools setEmacsKeyBindings.
MyTools setDeleteKey.
MyTools setFileBrowserToShowAllFiles.
MyTools setUiLookToMotif.
[R]MyTools extendRefactoringBrowserMenus "A non-intrusive way
to extend the RB menus."
"Misc Envy stuff."
[E] MyTools loadConfigMapsWithRequired.
[E] MyTools loadConfigMapsWithRequired: 'ENVY/Manager'.
[E] MyTools reportOnConfigMapDiffs.
[E] MyTools reportOnConfigMapDiffs: #('ConfigMap1' 'ConfigMap2').
[E] MyTools changeOwnershipsOfUser. "Use this method with care!"
Examples
"There's a number of examples of snippets of how to do things
in the examples protocol on the class side of MyToolsBase"
MyTools browseAllClassExamples.
MyTools changeImageColours. "Not the
best choice in the world for the defaults ;-)"
MyTools openWindowWithTextInIt.
MyTools openWindowWithCapturedImage.
Your own extensions
If your extensions are generic, please send them to me for future
inclusion in the toolkit. If your extensions are employer/situation-specific,
then your best option is to subclass off of the MyTools proxy class, or
if you prefer, you can subclass off of MyToolsBase or MyToolsEnvy, as the
case may be.
Extensions to base
*NOTE* These are the extensions to the base classes.
They will show up in the category where the base class is defined.
[E] They will show up in the default application.
StandardSystemController>inspectView
StandardSystemController class>initializeForAdditions
[R] SystemNavigator>findSubStringOverClasses
[R] SystemNavigator>inspectSelectedMethod
[R] SystemNavigator>sendSelectedMethod
[R] SystemNavigator>copyFullClassSpec
[E] EtApplicationsChangesBrowser>printChangesReportToTranscript
2 Installation notes
2.1 To install into a VW image:
-
Unzip source files to your image directory
-
Load the Refactoring Browser Goodie, if Refactoring extensions are desired
-
File in the MyTools-Vw-x.x.st file
-
It's normal to have a number of warnings on the filein, these haven't been
cleaned up yet.
2.2 To install into a VW+ENVY image:
-
Unzip source files to your image directory
-
Load the Refactoring Browser Goodie, if Refactoring extensions are desired
(put in RefactoringBrowserApp)
-
Make new app called MyToolsApp
-
Set it's prerequisites to be (note, if prerequisites are not set, then
the extensions will not be filed in):
-
EtTools
-
RefactoringBrowserApp
-
Put in a loaded method: <MyTools initialize> to initialize MyTools on
subsequent ENVY loads
-
File in the MyTools-VwEnvy-x.x.st file
-
It's normal to have a number of warnings on the filein, these haven't been
cleaned up yet.
3 Change history:
0.4
-
Modularized ENVY extensions into their own .dat file - a cleaner implementation
and makes exchanging code between VW platforms easier
-
Bugs addressed:
-
003) Busy cursor is not displayed when doing a foreground search.
-
005) [VW 2.5.2] Installed keyboard shortcuts do not work in text pane of
RB
-
Turns out the RB uses a valueholder on Text, which has events processed
via TextEditorController, which in turn has its own copy of the dispatch
table. Just needed to reinitialize TextEditorController.
-
006) [ENVY] Loaded in MyTools, versioned and released classes to app.
When reloading app, the extensions are reloaded too causing unnecessary
class editions.
-
If extension files are detected, user is now prompted if they want to refilein
the extensions
-
Note: this behaves the same in VW when MyTools is already loaded in the
image.
-
007) The building facilities assume the RB is loaded, if it is not loaded
a walkback occurs.
-
008) [RB] Add extensions to RB menu item assumes that RB is loaded, if
it is not loaded, a walkback occurs
-
Put in a defensive fix so that a dialog appears when this condition is
met. Certainly not the best fix (would prefer to just disable or
remove the inappropriate menu option alltogether), but I am short on time
right now so this will have to do.
0.3
-
Added some ENVY extensions
-
building in ENVY, finding string tweaks, Config map loading, config map
diffing, change ownerships, copy class specification [R], storing workspaces
in comments of methods
-
Decoupled Refactoring Browser extensions from the base installation
0.2
-
Added help text
-
Added notes in help/documentation protocol of MyToolsBase
-
Refactored design to make it more portable across versions/dialects of
Smalltalk (put in proxy, bridge). However, as noted in the help text,
the primary platform for this toolkit is VWNC. I do not have the
spare time to regularly or ever try/test it on other platforms.
-
Added a packaging facility (file out).
-
Added naming convention to indicate that a method is bridged (implement*)
-
Added naming convention to indicate private methods (my*)
-
Added emacs keybindings
-
Added refactoring browser extensions
0.1
-
Initial implementation, purely for myself and a few friends on VWNC