home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-05-29 | 4.3 KB | 221 lines | [TEXT/CWIE] |
- unit MyAddressInput;
-
- interface
-
- uses
- MyOOMainLoop;
-
- const
- ai_ok = 1;
- ai_cancel = 2;
- ai_setdefault = 3;
- ai_user_item = 4;
- ai_user = 5;
- ai_machine = 6;
-
- var
- default_user, default_machine: Str255;
-
- type
- AIObject = object(DObject)
- 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, MyDialogs, MyNewPreferences;
-
- 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));
- GetDialogItem(dp, fi.ok_item, kind, h, r);
- PenSize(3, 3);
- InsetRect(r, -4, -4);
- if not GetDCtlEnable(dp, fi.ok_item) or not fi.is_active then begin
- PenPat(Pattern(gray));
- FrameRoundRect(r, 16, 16);
- PenPat(Pattern(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;
- begin
- if okon <> IsOKOn then begin
- okon := not okon;
- SetDCtlEnable(window, ai_ok, okon);
- MyOutlineDefault(window, ai_user_item);
- end;
- if setdefon <> IsSetDefaultOn then begin
- setdefon := not setdefon;
- SetDCtlEnable(window, ai_setdefault, setdefon);
- end;
- end;
-
- procedure AIObject.SetDialog;
- begin
- SetItemText(window, ai_user, default_user);
- SelectDialogItemText(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
- PutResource(Handle(NewString(s)), 'STR ', defaultStrResID);
- end;
-
- procedure GetDefaultString (var s: Str255);
- var
- h: Handle;
- rn: integer;
- begin
- ReadPrefsHandle(h, 'STR ', defaultStrResID);
- if h <> nil then begin
- s := StringHandle(h)^^;
- DisposeHandle(h);
- end
- else begin
- s := '';
- end;
- 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;
- GetDialogItem(window, ai_ok, kind, h, r);
- InsetRect(r, -10, -10);
- SetDialogItem(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 begin
- PackString(s);
- end;
- 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);
- 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.