Thread View: comp.sources.apple2
1 messages
1 total messages
Started by Jonathan A. Chandross
Fri, 10 May 1991 19:46
v001SRC047: Texter -- text editor (GS Only) Part 01/02
Author: Jonathan A. Chandross
Date: Fri, 10 May 1991 19:46
Date: Fri, 10 May 1991 19:46
617 lines
20034 bytes
20034 bytes
Submitted-by: Joel Sumner (q4kx@cornella.ccs.cornell.edu)
Posting-number: Volume 1, Source:47
Archive-name: editor/texter/part01
Architecture: ONLY_2gs
Version-number: 1.1.1
Texter is a text editor for the GS.
Enjoy.
=Read.Me
-
-Texter
-
-Version 1.1.1
-
-I am not perfect so please point out errors, suggestions, etc. to
-me. I would appreciate knowing what I am doing right or wrong.
-
-This source is compiled with Orca/Pascal (tm Byteworks) and the
-Resource was created with Genesys (tm SSSI) though I created APW
-Rez (tm Apple Computer) source with Genesys so you could see what
-the resource fork was.
-
-Also included is a unit by Dave Lyons of Apple Computer to utilitize
-MessageCenter. This unit is Public Domain. I made 1 little change
-to it because of compiler type-checking and such. His original code
-is still there, enclosed in comments.
-
-This code is for demonstration purposes only. Please do not re-distribute
-without this header.
-
-If you have any questions, contact me at:
-
- Joel Sumner
- 19 Fossen Way
- Andover, MA 01810
-
- GEnie: JOEL.SUMNER
- Internet: q4kx@cornella.ccs.cornell.edu
- q4kx@vax5.cit.cornell.edu
- Bitnet: q4kx@CORNELLA
- q4kx@CRNLVAX5
-
-Release Notes:
-
- Fixed bug in Version 1.1 where PrDefault() was called every
- time the user selected "Page Setup" instead of calling
- PrDefault() when Texter was started up and then PrValidate
- after that.
-
=Manifest
-
-Read.Me
-icons.bsc
-messunit.pas
-mystuffintf.pas
-texter.doc
-texter.pas
-texter.r.equ
-texter.r.src
-texter2.pas
-
=texter.doc
-
- Texter v1.1
- By Joel Sumner
-
-Background
-----------
- This is the next in a continuing series of little programs that
-I have made because I needed them. This one in particular is
-just a text editor. Simple enough. But I couldn't find one
-that allowed you to double-click on the file from the finder
-and have it load the text editor and the file you double-
-clicked upon. Appleworks GS does this but many other programs
-don't. Therefore, I decided to write one. I happened to write
-this the same week that I had two exams and a long paper due.
-I always seem to do that to myself. Anyway, I hope you like it.
-
-Use
----
- You can run Texter one of two ways. Either run it as a regular
-application just as you would any other program, or you can
-double-click upon a text file in a finder window and Texter
-will automatically be run and the file you clicked upon will
-be run. You can even select more than one file and double-
-click upon them. A maximum of 5 files will be loaded though,
-even if you select more than that.
-
-Installation
-------------
- Included in this archive is the program (Texter), the
-documentation file (Texter.Doc), and an Icon file (Texter.ICN).
-Place the Icon file in the ICONS folder of your boot disk
-and place Texter in the SYSTEM subdirectory of your boot
-disk. It should now work just fine.
- If you need to put Texter somewhere besides the SYSTEM
-subdirectory of your boot disk (due to space or preference),
-you will have to edit the attributes of the Icon file to
-reflect the new loaction of Texter. This can be accomplished
-with one of the Icon Editors out there. (I recommend DiCeD by
-Dave Lyons.) Simply load the Icon file into the editor
-and change the attributes like that says:
-
-*/SYSTEM/TEXTER
-
-to whatever pathname that Texter currently resides in.
-(The '*' refers to your boot disk. My hard drive title is '/js'
-and I boot off it so '*' is the same as '/js')
-
-Note, if you try to run the program and get a text dialog saying
-"Error $1E06", that means that the resource fork was not copied
-properly. Make sure you extract the archive with GSHK and copy
-it to your destination with the Apple IIgs Finder.
-
-Features
---------
- This is pretty no-frills. You can open up to 5 files at a
-time. Their full pathname will be displayed in the window
-title and part of their pathname can be seen in the 'Windows'
-menu. If you have a bunch of windows open and you wish to
-view one of the bottom ones, you can either move all the top
-windows out of the way (slow way), or you can simply select
-that window in the 'Windows' menu (fast way).
- You can cut and paste text between windows, but the Undo
-command does not function.
-
-Texter uses all of the standard Text Edit shortcuts:
-
-- The arrow keys can be used to move the cursor
-- Control-D or Delete will delete the current selection or the
- character to the left of the cursor.
-- Clear clears the current selection
-- Control-F removes the current selection or deletes the
- character to the right of the cursor
-- Control-Y removes all characters from the cursor to the
- end of the line
-- Control-X cuts the selection like OA-X and Cut
-- Control-C copies the selection like OA-C and Copy
-- Control-V pastes from the clipboard like OA-V and Paste
-- A single click places the cursor where the click was
-- A double click selects the word under the arrow
-- A triple click selects the line under the arrow
-- Holding down shift selects everything from the cursor to the
- mouse click
-
-You can also print your document. I assure you that the default
-font (Shaston 8) looks pretty horrid on a printer. Thus, simply
-select the Choose Font option from the Goodies menu and select
-a better font to print with. Experiment until you find something
-that looks acceptable.
-
-Finally, you can choose if you want the document word-wrapped or
-not. Simply select the toggle in the Goodies Menu. If "Word Wrap On"
-is checked, then the current document has word wrap activated.
-This setting is dependent on the window so turning it on or off
-only affects the current window.
-
-None of the above settings are changed because, after all, this edits
-straight text files, not word processor files.
-
-Other Notes
------------
-- TextEdit automatically formats your files so they word wrap.
-This takes a certain amount of time. Thus loading large files
-(200K or more) can take a good amount of time (20-25 seconds)
-to be formatted. Please be patient.
-- Files cannot be loaded that are more than 1/2 of available
-memory. This is because two copies of the file must temporarily
-be in memory simultaneously when loading or saving files and
-there would be no memory available to do this.
-
-Conclusion
-----------
- Well, that's about it. I hope you enjoy or use this program.
-As you may notice, I have said nothing about money. That's
-because I don't want any. This is Freeware. As a request though,
-if you do actually install it and use it, please drop me a line
-and let me know what you think. If you send it via E-Mail, even
-the response doesn't cost anything. If you have any questions,
-comments, or responses, I can be reached at the following
-addresses:
-
-Joel Sumner
-19 Fossen Way
-Andover, MA 01810
-
-GEnie: JOEL.SUMNER
-Internet:
-q4kx@cornella.ccs.cornell.edu
-q4kx@vax5.cit.cornell.edu
-Bitnet:
-q4kx@cornella
-q4kx@crnlvax5
-
-Updates
---------
-(Version 1.1)
-- Fixed bug that caused an error $206 on startup and prevented printing
- with anything but the ImageWriter driver.
-- Added Goodies Menu with Word Wrap selection and Font selection.
-- Added 'Formatting Text' dialogs.
-- Better Tool Error dialogs to determine where errors have occurred.
-- New (and improved) icon file.
-
=icons.bsc
-FiLeStArTfIlEsTaRt
-ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789()
-IICONS.BSC AMQuAAAAAYwwDIAA2qKAq(AHPUhtAMQuAcj0
-GVvTlzW6BcbYAAAAOwCAEkwWAAAAb5ALAQQCAIAAAAAAAAAA5CAAAAwAAAAAAAAA
-GVvTRLJ2BAAPAMAABAAAA8CAAAw4AoMAAAAAAAAAAAgAbFBKAMAHFAAAcslEAAwA
-OwCAEkwWAAAAAAAAAAwAAAAAMAAAAAAAAAAIAAAABAAAAAAAAAAAAgMACAAAAIAA
-AAAAGYAA1AAAAAgAYVEVSVEVDlkLT50TAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAA4jMAFsNAbHABIwAACCJEPAQqYyLVOc2ktJTnEzjXOB18zJjmhaJJObEWyBDm
-EYAMFBUEEYAwAIhACBABPAwSz0vtm)EAxcQgAWx)AN7l)LAwI4jgn9g(IBAUTI8i
-pTjSwDwPb5PomTlWwoKAjKckqPvmEBQUF4UuqU9y18Z1IiRAADeCP8p1Urv0ASRi
-RJATVLd7pCwW85Lz97e)wgxKICc4ABQQgjDsbNKAFC0HnSZGV6JZV474mbFGJMoh
-8ZzFiFHGZsYx8fXTOLHGnIJyklaYlJd62opTl7fcncf(CFa0VddgrTvyLha0z7)y
-yQl(MXOVl5Un6VnGnVe1MweAgaDuxl7WW7xfwe7iHScee9w09g5bMWsUGiTEyMHz
-QtMcOt27zD6O80wv7CUEwoHgNqIgIogKanVggYi2hDAAKA4BACMAS0LPXeGgYBBn
-ZfBYrFn)u31lD3MuAC(WRc7Ygjz7OtrpOaA3yxcASAAExj27aIqJFbA64GAFK74A
-mnuuPchGHvGaMtoH4RUsqypUbNCSHrGHsj5fh4gBrpwniumy5mGr49ALvwq0tJ9b
-hnCzroKWMaKe7a6CGRoegTgJBkCz6TlvEA6JLokh8KaAq42AC6u70666pppUolpP
-OtuqMiDpFYiSHwv5YE8TmQ9oV4zx(bD60pg7MBrvAAYBLdhQ)EQNvJ42IKbMqyme
-qb5H4m5jAgHYAWOmwsYIii85KvMrUIDrYPKrZXtgF4Jgpp9CgWQpAAwHAAAAAAAA
-AE2e
=messunit.pas
-{$Keep 'MessUnit'}
-UNIT MessUnit;
-{
- PUBLIC DOMAIN 20-Sep-89 v1.1
-
- Easy-to-use interface for reading a list of pathnames
- passed to an application by the Finder or another
- program selector. This list is passed in the Message
- Center as described in the Tool Locator chapter of
- the Toolbox Reference, Volume 2.
-
- Modified September 1989 for TML Pascal II.
-
- To use:
- Call InitReadMC with a valid memory ID. If it returns
- -1, no message was available. If InitReadMC returns 0
- or 1, then a list of pathnames is available. 0 means
- the application should OPEN the files, and 1 means it
- should PRINT them.
-
- Repeatedly call ReadNextMC to get a pathname. It
- returns FALSE when there are no more pathnames to
- get. (To clarify, False means the PREVIOUS call gave
- you the last available pathname.)
-
- Even if you are going to accept only one pathname from
- the MessageCenter (not recommended), you should still
- call ReadNextMC until it returns FALSE. Otherwise some
- memory will needlessly be left allocated.
-
- Tip: Be sure to allow for people fiddling with their
- icon files! Do NOT assume that any pathname given to
- you by the MessageCenter will specify a file of the
- type you expect--check.
-
- Also, don't assume that the volumes containing the files
- are necessarily online when your application is launched.
- You may need to ask the user to insert the correct disk.
-
- by David A. Lyons a.k.a. DAL Systems
- P.O. Box 287
- North Liberty, IA 52317
-
- CompuServe 72177,3233
- GEnie D.LYONS2
- AppleLink--PE Dave Lyons
-}
-
-INTERFACE
-
-USES Common, ToolLocator, MemoryMgr;
-
-Type Str255 = string[255]; {My Additions to TYPE}
- StringPtr = ^Str255;
-
-function InitReadMC(id: integer): integer;
-function ReadNextMC(s: StringPtr): boolean;
-
-IMPLEMENTATION
-type
- myMessageRec = RECORD
- messageNext: longint;
- messageType: integer;
- messageData: integer;
- fileNames: packed array[1..32000] of char;
- END;
- MessagePtr = ^myMessageRec;
- MessageH = ^MessagePtr;
-
-var
- MsgHand: MessageH;
- MsgIndex: integer;
-
-function InitReadMC;
-var
- err: integer;
-begin
- InitReadMC := -1;
- MsgIndex := 1;
- MsgHand := MessageH(NewHandle(0,id,attrNoCross,nil));
- MessageCenter(getMessage,1,Handle(MsgHand));
- err := ToolError;
- MessageCenter(deleteMessage,1,nil);
- if err=0 then
- InitReadMC := MsgHand^^.messageData
- else
- DisposeHandle(handle(MsgHand));
-end;
-
-function ReadNextMC;
-var
- len,i: integer;
- tempStr: Str255;
-begin
- s^ := '**********';
- ReadNextMC := false;
- len := ord(MsgHand^^.FileNames[MsgIndex]);
- if len<>0 then begin
- ReadNextMC := true;
- {BlockMove(@MsgHand^^.FileNames[MsgIndex],ptr(s),len+1);} {Dave's}
- For i:=0 to len do
- tempStr[i]:=MsgHand^^.FileNames[MsgIndex+i]; {My [Joel's] Routine}
- MsgIndex := MsgIndex + len + 1;
- end else
- DisposeHandle(handle(MsgHand));
-s^:=TempStr;
-end;
-
-END.
=mystuffintf.pas
-{$Keep 'MyStuff'}
-Unit MyStuff;
-Interface
-
-Uses Common,
- DialogMgr,
- MscToolSet,
- WindowMgr,
- QuickDrawII,
- {$LibPrefix '0/'}
- MessUnit; {Dave Lyon's Unit for Message Center}
-
-
-type
- SubstArray = Array [0..1] of StringPtr;
-
-var
- TempTextString: Str255;
- result: Integer;
- errString: StringPtr;
- errStringArr: SubstArray;
- errStringPtr: ^SubstArray;
-
-
-PROCEDURE SystemError (ErrNum : Integer);
-Function cnvihs(theint:integer):StringPtr;
-Procedure ErrorBox(error,where:integer);
-
-Implementation
-PROCEDURE SystemError;
-
- BEGIN { This is to save code - we don't need Pascal's Run-Time errors }
- END;
-
-Function cnvihs; {converts integer to hex string}
-var tmpStrPtr :StringPtr;
- TmpStr :String;
- i: integer;
-begin
-tmpstr[0]:=char(5);
-i:=integer((theint & $F)+48);
-if I<58 then tmpstr[5]:=char(i)
- else tmpstr[5]:=char(i+7);
-i:=integer((theint & $F0) div $10 +48);
-if I<58 then tmpstr[4]:=char(i)
- else tmpstr[4]:=char(i+7);
-i:=integer((theint & $F00)div $100 + 48);
-if I<58 then tmpstr[3]:=char(i)
- else tmpstr[3]:=char(i+7);
-i:=integer((theint & $F000)div $1000 + 48);
-if (I<56) and (I>47) then tmpstr[2]:=char(i)
- else if (I=40) or (I=41) then tmpstr[2]:=char(I+16)
- else if I>41 then tmpstr[2]:=char(i+23);
-tmpstr[1]:=char('$');
-TempTextString:=tmpstr;
-tmpstrPtr:=@TempTextString;
-cnvihs:=tmpstrPtr;
-end;
-
-Procedure ErrorBox; {put error dialog on screen}
-begin
-SysBeep;
-errString:=cnvihs(Error);
-new(ErrStringArr[0]);
-errStringArr[0]^:=errString^;
-errString:=cnvihs(where);
-new(ErrStringArr[1]);
-errStringArr[1]^:=errString^;
-result:=AlertWindow(5,ptr(ErrStringPtr),pointer(2));
-end;
-
-
-END.
=texter.r.equ
-// --------------------------------------------------------------------
-// Genesys created REZ defines
-// Simple Software Systems International, Inc.
-// APWREZ.SCG 1.2
-// --------------------------------------------------------------------
-
-
-// --- type $8004 defines
-
-#define Text_Edit_Control $00000001
-
-// --- type $8006 defines
-
-#define Apple_pString $00000001
-#define File_pString $00000002
-#define Edit_pString $00000003
-#define Windows_pString $00000004
-#define Goodies_pString $00000005
-#define Undo_pString $000000FA
-#define Cut_pString $000000FB
-#define Copy_pString $000000FC
-#define Paste_pString $000000FD
-#define Clear_pString $000000FE
-#define Close_pString $000000FF
-#define About_pString $00000100
-#define Quit_pString $00000101
-#define New_pString $00000102
-#define Open_pString $00000103
-#define Save_pString $00000104
-#define SaveAs_pString $00000105
-#define Page_Setup_pString $00000107
-#define Print_pString $00000108
-#define Window1_pString $00000109
-#define Window2_pString $0000010A
-#define Window3_pString $0000010B
-#define Window4_pString $0000010C
-#define Window5_pString $0000010D
-#define Word_Wrap_pString $0000010E
-#define Choose_Font_pString $0000010F
-#define Text_Window_Title $00010005
-
-// --- type $8008 defines
-
-#define Application_Menu_Bar $00000001
-
-// --- type $8009 defines
-
-#define Apple_Menu $00000001
-#define File_Menu $00000002
-#define Edit_Menu $00000003
-#define Window_Menu $00000004
-#define Goodies_Menu $00000005
-
-// --- type $800A defines
-
-#define Undo_Menu_Item $000000FA
-#define Cut_Menu_Item $000000FB
-#define Copy_Menu_Item $000000FC
-#define Paste_Menu_Item $000000FD
-#define Clear_Menu_Item $000000FE
-#define Close_Menu_Item $000000FF
-#define About_Menu_Item $00000100
-#define Quit_Menu_Item $00000101
-#define New_Menu_Item $00000102
-#define Open_Menu_Item $00000103
-#define Save_Menu_Item $00000104
-#define SaveAs_Menu_Item $00000105
-#define Page_Setup_Item $00000107
-#define Print_Item $00000108
-#define Window1_Item $00000109
-#define Window2_Item $0000010A
-#define Window3_Item $0000010B
-#define Window4_Item $0000010C
-#define Window5_Item $0000010D
-#define Word_Wrap_Item $0000010E
-#define Choose_Font_Item $0000010F
-
-// --- type $800E defines
-
-#define Text_Window $00000FFA
-
-// --- type $8010 defines
-
-#define Text_Window_wColor $00000001
-
-// --- type $8013 defines
-
-#define Tool_Startup_Table $00000001
-
-// --- type $8015 defines
-
-#define Printing_Alert $00000001
-#define Tool_Error_Alert $00000002
-#define Save_Alert $00000003
-
-// --- type $8016 defines
-
-#define Window_Text $00000003
=texter2.pas
-{$Keep 'Texter2'}
-Unit Texter2;
-Interface
-
-Uses Common,
- ToolLocator,
- DialogMgr,
- ControlMgr,
- WindowMgr,
- QuickDrawII,
- {$LibPrefix '0/'}
- MessUnit, {Dave Lyon's Unit for Message Center}
- MyStuff;
-
-type
- Document =
- RECORD
- index: integer;
- InUse: Boolean;
- New: Boolean;
- Saved: Boolean;
- Wrap: boolean;
- DocGSString: GSOSInString;
- DocRef: Integer;
- DocWindow: GrafPortPtr;
- WindowTitle: Str255;
- end;
-
- DocumentPtr = ^Document;
-
-var Windows: Array[1..5] of Document;
-
-Procedure DoAbout;
-procedure NoRun(i:integer);
-Procedure DoToFront(thewind:Integer);
-procedure DrawWindow;
-
-Implementation
-
-
-procedure DrawWindow;
-begin
-DrawControls(GetPort);
-end; { of DrawWindow }
-
-Procedure DoToFront;
-begin
-SelectWindow(Windows[thewind].DocWindow);
-end;
-
-Procedure NoRun;
-var string2ptr:pStringPtr;
-begin
-string2ptr:=pStringPtr(cnvihs(i));
-result:=TLTextMountVolume(@'Unable to run due to Tool Error #',
- string2ptr,
- @'Quit',
- @'Quit');
-end;
-
-Procedure DoAbout;
-var AboutDlog,
- ApplicPort: GrafPortPtr;
- r: Rect;
- itemHit: Integer;
-
-begin
-ApplicPort:=GetPort;
- SetRect(r,20,40,320,170);
- AboutDlog :=NewModalDialog(r,true,0);
-If ToolError<>0 then ErrorBox(ToolError,$1201);
- SetPort(AboutDlog);
-
- SetRect(r,230,18,290,30);
- NewDItem(AboutDlog,1,r,10,@'Ok',0,0,nil);
-If ToolError<>0 then ErrorBox(ToolError,$1202);
-
-SetForeColor(1);
-MoveTo(65,20);DrawString(@'Texter v1.1');
-SetForeColor(0);
-Moveto(20,35);DrawString(@'Another little Utility by:');
-MoveTo(30,50);DrawString(@'Joel Sumner');
-MoveTo(30,60);DrawString(@'19 Fossen Way');
-MoveTo(30,70);DrawString(@'Andover, MA 01810');
-MoveTo(30,80);DrawString(@'q4kx@cornella.ccs.cornell.edu');
-MoveTo(30,90);DrawString(@'q4kx@CORNELLA.BITNET');
-
-MoveTo(15,110);DrawString(@'Some code property of ByteWorks and');
-MoveTo(25,120);DrawString(@'Apple Computer Inc. 1986-1989');
-
- itemHit := ModalDialog(nil);
-If ToolError<>0 then ErrorBox(ToolError,$1203);
- CloseDialog(AboutDlog);
-If ToolError<>0 then ErrorBox(ToolError,$1204);
-SetPort(ApplicPort);
-end; { of AboutDlog }
-
-END.
-
+ END OF ARCHIVE
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads