axel@tub.UUCP (04/03/86)
Subject: Sharing History goodie Hi !!!!!! I'd like to share a goodie with you, which I developed the last week. It's an offspring of my "Diplomarbeit" and I use it to ex- amine the development of object oriented applications written in ST80. It may be used to access a Smalltalk-formatted file in a struc- tured, graphical, way. In some aspects it may be used like the ChangeManagement Browser which is provided with Version 2 of ST80. So, I think it is quit useful, for the rest of us, hacking in ST80, Version 1, on the Macintosh. Because I use the line drawing capabilities of the Macintosh toolbox, you will have to make some changes to this goodie, if you want to use it in a different system. It should be no prob- lem, I just have no time doing it. (Hints for that are in ChangesHistory class|readMe). The History goodie was developed on my 1MB Mac with a 20MB Hyper- drive. I don't know whether it will fitt into the 512KB image, its size is about 450 ObjectPointers and 7500 words. The largest file I scanned until now was about 327KB long (a changes file), but if you have enough patience you may examine even bigger files. The following text is copied from ChangesHistory class|howToUseIt, to give you some more information about the goodie. The History.st sources are contained in my next mail. Hope you'll enjoy it axel (axel@tub.UUCP) PS: I currently have no access to a Version2 system and would like to get some information how the source file is scanned and what data structures are build by the ChangeManagement Browser. How fast is it compared to the goodie? ------------------------------------------------------- ChangesHistory class methodsFor: 'copyright/documentation' howToUseIt " A ChangesHistoryView is opened by several messages to the ChangesHistory class.(See ChangesHistory|instance creation/examples). It is possible to open the view on an arbitrary file, or to recover i-characters from the current changes file. The view consists of 2 panes, in the upper pane you will see a visual representation of the history, namely horizontal bars in four categories, and in the lower pane you will see source text, if an entry in the upper pane is selected. The leftmost category in the upper pane represents actions which have implications on the class hierarchy, e.g. the first definition of a class, changes in the subclass relationship and renaming of classes will appear here. The second category shows actions which result in the change of a class description, e.g. adding/removing protocol and variables, comments of a class. The third category represents changes in the source text of methods. The first definition of a method goes in the second category (protocol change), all further definitions will go in the third category. All the rest of expressions and actions appear in the fourth category, e.g. doIt's from testing, snapshot and quit messages. The first time the view comes up, all entries appear in black, they are emphasized and may be selected by pointing and clicking with the mouse. A selection results in a change of the second pane, which always displays the source text of the selection (OK. don' bother a selection is currently not highlighted). If the entries seem to small for you to be properly selected, use the bigger/smaller command of the pop up menu of this pane. The searchUp and searchDown command let you search for the next emphasized entry, which will be selected and its source text displayed. The two buttons at the bottom of the upper pane let you choose restrict the emphasized entries to those of the same class (class button) or of the same detail (detail button), or both. Associated with each entry is its detail name: #subclass: --> class definitions #rename: --> class renaming #removeSelector: --> removing methods from a class method selector --> different for each method definition #snapshot --> snapshot (at category four) #quit --> quit (also at category four) #DoIt --> all other expressions All entries are linked to the class they belong to, except most of the doIt's in category four. Only in obvious cases, when the receiver is in the set of previously used classes, the doIts get their class link as well. If you make a selection and then choose one of the two buttons all entries which are not equal to the selection, in the sense of the class/detail relationship, are deemphasized. You may not select deemphasized entries unless you press the shift key while clicking the mouse. The searchEntry command in the pum gives you a template for searching entries from the beginning of the file. It will select and scroll to the entry, or will flash the view. All emphasized entries, or those of certain categories may be transferred to the edit pane. Use the editEmphasized, hierarchy level, class level, and method level command in the pum for this purpose. (The transfer happens via a temporary file, so don't get upset when the disk starts running here). The transferred entries in the edit pane are headed by a string which describes the entries. You may perform the Smalltalk-traditional editing command in the editPane, even it won't have any implications on the source. The command fileItIn of the editPane pum will fileIn the current selection. The command fileIn will fileIn the entire content of the editPane. The command fileOut will ask you for a filename and will fileOut the entire content of the edit pane."
steve@lpi3230.UUCP (Steve Burbeck) (04/10/86)
>I'd like to share a goodie with you, which I developed the last >week. It's an offspring of my "Diplomarbeit" and I use it to ex- >amine the development of object oriented applications written >in ST80. The posting didn't seem to make it this far intact. We only received the first 129 lines. Could you please repost? The goodie sounds useful, and I would like to try it on our IMB PC/AT Version 2 system. Steve Burbeck Linus Pauling Institute 440 Page Mill Road Palo Alto, CA 94306 (415)327-4064