home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-04-20 | 4.3 KB | 222 lines | [TEXT/PJMM] |
- unit MyAddressInput;
-
- { This program was written by Peter N Lewis, Mar 1992 in THINK Pascal 4.0.1 }
-
- interface
-
- uses
- OOMainLoop;
-
- const
- ai_ok = 1;
- ai_cancel = 2;
- ai_setdefault = 3;
- ai_user = 4;
- ai_machine = 5;
- ai_user_item = 6;
-
- var
- default_user, default_machine: str255;
-
- type
- AIObject = object(DTObject)
- okon, setdefon: boolean;
- procedure Create (id: integer);
- override;
- procedure DoItem (item: integer);
- override;
- procedure DoKey (modifiers: integer; ch: char; code: integer);
- override;
- procedure DoEditMenu (item: integer);
- override;
- procedure DoActivateDeactivate (activate: boolean);
- override;
- procedure SetOK;
- procedure GetDialog;
- procedure SetDialog;
- procedure PackStringBlank (var s: str255);
- procedure PackString (var s: str255);
- procedure UnPackString (s: str255);
- function IsOKOn: boolean;
- function IsSetDefaultOn: boolean;
- procedure DoCommand (s: str255);
- end;
-
- procedure InitAddressInput;
-
- implementation
-
- uses
- BaseGlobals, AppGlobals, MyTypes, MyUtils, MyTEUtils, MyPreferences, MyDialogs;
-
- var
- first: boolean;
-
- procedure InitAddressInput;
- begin
- first := true;
- end;
-
- procedure MyOutlineDefault (dp: dialogPtr; item: integer);
- var
- kind: integer;
- h: handle;
- r: rect;
- fi: AIObject;
- begin
- SetPort(dp);
- fi := AIObject(GetWObject(dp));
- GetDItem(dp, fi.ok_item, kind, h, r);
- PenSize(3, 3);
- InsetRect(r, -4, -4);
- if not ControlEnabled(dp, fi.ok_item) or not fi.is_active then begin
- PenPat(gray);
- FrameRoundRect(r, 16, 16);
- PenPat(black);
- end
- else
- FrameRoundRect(r, 16, 16);
- end;
-
- procedure AIObject.DoActivateDeactivate (activate: boolean);
- begin
- inherited DoActivateDeactivate(activate);
- MyOutlineDefault(window, ok_item);
- end;
-
- procedure AIObject.SetOK;
- var
- nsetdefon: boolean;
- begin
- if okon <> IsOKOn then begin
- okon := not okon;
- HiliteItem(window, ai_ok, okon);
- MyOutlineDefault(window, ai_user_item);
- end;
- if setdefon <> IsSetDefaultOn then begin
- setdefon := not setdefon;
- HiliteItem(window, ai_setdefault, setdefon);
- end;
- end;
-
- procedure AIObject.SetDialog;
- begin
- SetItemText(window, ai_user, default_user);
- SelIText(window, ai_user, 0, maxInt);
- SetItemText(window, ai_machine, default_machine);
- end;
-
- procedure AIObject.GetDialog;
- begin
- GetItemText(window, ai_user, default_user);
- GetItemText(window, ai_machine, default_machine);
- end;
-
- procedure SetDefaultString (s: str255);
- begin
- SetPrefsResource('STR ', defaultStrResID, handle(NewString(s)));
- end;
-
- procedure GetDefaultString (var s: str255);
- var
- h: handle;
- rn: integer;
- begin
- rn := GetPrefsResource('STR ', defaultStrResID, h);
- s := stringHandle(h)^^;
- if rn <> -1 then
- CloseResFile(rn);
- end;
-
- procedure AIObject.Create (id: integer);
- var
- kind: integer;
- h: handle;
- r: rect;
- s: str255;
- begin
- inherited Create(id);
- okon := true;
- setdefon := true;
- ok_item := ai_ok;
- cancel_item := ai_cancel;
- GetDItem(window, ai_ok, kind, h, r);
- InsetRect(r, -10, -10);
- SetDItem(window, ai_user_item, userItem, handle(@MyOutlineDefault), r);
- if first then begin
- first := false;
- GetDefaultString(s);
- UnpackString(s);
- end;
- SetDialog;
- SetOK;
- end;
-
- procedure AIObject.DoItem (item: integer);
- var
- s: str255;
- begin
- case item of
- ai_cancel, ai_ok, ai_setdefault: begin
- if item <> ai_cancel then begin
- GetDialog;
- if item = ai_setdefault then begin
- PackStringBlank(s);
- SetDefaultString(s);
- PackString(s);
- if s = '?' then begin
- Destroy;
- ShowCursor;
- exit(DoItem);
- end;
- end
- else
- PackString(s);
- DoCommand(s);
- end;
- Destroy;
- ShowCursor;
- end;
- otherwise
- ;
- end;
- end;
-
- procedure AIObject.DoKey (modifiers: integer; ch: char; code: integer);
- begin
- SetOK;
- end;
-
- procedure AIObject.DoEditMenu (item: integer);
- var
- modified: boolean;
- begin
- inherited DoEditMenu(item);
- SetOK;
- end;
-
- procedure AIObject.PackStringBlank (var s: str255);
- begin
- end;
-
- procedure AIObject.PackString (var s: str255);
- begin
- end;
-
- procedure AIObject.UnPackString (s: str255);
- begin
- end;
-
- function AIObject.IsOKOn: boolean;
- begin
- end;
-
- function AIObject.IsSetDefaultOn: boolean;
- begin
- end;
-
- procedure AIObject.DoCommand (s: str255);
- begin
- end;
-
- end.