home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Source Code / Pascal / Snippets / PNL Libraries / MyAddressInput.p < prev    next >
Encoding:
Text File  |  1996-05-29  |  4.3 KB  |  221 lines  |  [TEXT/CWIE]

  1. unit MyAddressInput;
  2.  
  3. interface
  4.  
  5.     uses
  6.         MyOOMainLoop;
  7.  
  8.     const
  9.         ai_ok = 1;
  10.         ai_cancel = 2;
  11.         ai_setdefault = 3;
  12.         ai_user_item = 4;
  13.         ai_user = 5;
  14.         ai_machine = 6;
  15.  
  16.     var
  17.         default_user, default_machine: Str255;
  18.  
  19.     type
  20.         AIObject = object(DObject)
  21.                 okon, setdefon: boolean;
  22.                 procedure Create (id: integer);
  23.                 override;
  24.                 procedure DoItem (item: integer);
  25.                 override;
  26.                 procedure DoKey (modifiers: integer; ch: char; code: integer);
  27.                 override;
  28.                 procedure DoEditMenu (item: integer);
  29.                 override;
  30.                 procedure DoActivateDeactivate (activate: boolean);
  31.                 override;
  32.                 procedure SetOK;
  33.                 procedure GetDialog;
  34.                 procedure SetDialog;
  35.                 procedure PackStringBlank (var s: Str255);
  36.                 procedure PackString (var s: Str255);
  37.                 procedure UnPackString (s: Str255);
  38.                 function IsOKOn: boolean;
  39.                 function IsSetDefaultOn: boolean;
  40.                 procedure DoCommand (s: Str255);
  41.             end;
  42.  
  43.     procedure InitAddressInput;
  44.  
  45. implementation
  46.  
  47.     uses
  48.         BaseGlobals, AppGlobals, MyTypes, MyUtils, MyTEUtils, MyDialogs, MyNewPreferences;
  49.  
  50.     var
  51.         first: boolean;
  52.  
  53.     procedure InitAddressInput;
  54.     begin
  55.         first := true;
  56.     end;
  57.  
  58.     procedure MyOutlineDefault (dp: DialogPtr; item: integer);
  59.         var
  60.             kind: integer;
  61.             h: Handle;
  62.             r: Rect;
  63.             fi: AIObject;
  64.     begin
  65.         SetPort(dp);
  66.         fi := AIObject(GetWObject(dp));
  67.         GetDialogItem(dp, fi.ok_item, kind, h, r);
  68.         PenSize(3, 3);
  69.         InsetRect(r, -4, -4);
  70.         if not GetDCtlEnable(dp, fi.ok_item) or not fi.is_active then begin
  71.             PenPat(Pattern(gray));
  72.             FrameRoundRect(r, 16, 16);
  73.             PenPat(Pattern(black));
  74.         end
  75.         else
  76.             FrameRoundRect(r, 16, 16);
  77.     end;
  78.  
  79.     procedure AIObject.DoActivateDeactivate (activate: boolean);
  80.     begin
  81.         inherited DoActivateDeactivate(activate);
  82.         MyOutlineDefault(window, ok_item);
  83.     end;
  84.  
  85.     procedure AIObject.SetOK;
  86.     begin
  87.         if okon <> IsOKOn then begin
  88.             okon := not okon;
  89.             SetDCtlEnable(window, ai_ok, okon);
  90.             MyOutlineDefault(window, ai_user_item);
  91.         end;
  92.         if setdefon <> IsSetDefaultOn then begin
  93.             setdefon := not setdefon;
  94.             SetDCtlEnable(window, ai_setdefault, setdefon);
  95.         end;
  96.     end;
  97.  
  98.     procedure AIObject.SetDialog;
  99.     begin
  100.         SetItemText(window, ai_user, default_user);
  101.         SelectDialogItemText(window, ai_user, 0, maxInt);
  102.         SetItemText(window, ai_machine, default_machine);
  103.     end;
  104.  
  105.     procedure AIObject.GetDialog;
  106.     begin
  107.         GetItemText(window, ai_user, default_user);
  108.         GetItemText(window, ai_machine, default_machine);
  109.     end;
  110.  
  111.     procedure SetDefaultString (s: Str255);
  112.     begin
  113.         PutResource(Handle(NewString(s)), 'STR ', defaultStrResID);
  114.     end;
  115.  
  116.     procedure GetDefaultString (var s: Str255);
  117.         var
  118.             h: Handle;
  119.             rn: integer;
  120.     begin
  121.         ReadPrefsHandle(h, 'STR ', defaultStrResID);
  122.         if h <> nil then begin
  123.             s := StringHandle(h)^^;
  124.             DisposeHandle(h);
  125.         end
  126.         else begin
  127.             s := '';
  128.         end;
  129.     end;
  130.  
  131.     procedure AIObject.Create (id: integer);
  132.         var
  133.             kind: integer;
  134.             h: Handle;
  135.             r: Rect;
  136.             s: Str255;
  137.     begin
  138.         inherited Create(id);
  139.         okon := true;
  140.         setdefon := true;
  141.         ok_item := ai_ok;
  142.         cancel_item := ai_cancel;
  143.         GetDialogItem(window, ai_ok, kind, h, r);
  144.         InsetRect(r, -10, -10);
  145.         SetDialogItem(window, ai_user_item, userItem, Handle(@MyOutlineDefault), r);
  146.         if first then begin
  147.             first := false;
  148.             GetDefaultString(s);
  149.             UnpackString(s);
  150.         end;
  151.         SetDialog;
  152.         SetOK;
  153.     end;
  154.  
  155.     procedure AIObject.DoItem (item: integer);
  156.         var
  157.             s: Str255;
  158.     begin
  159.         case item of
  160.             ai_cancel, ai_ok, ai_setdefault:  begin
  161.                 if item <> ai_cancel then begin
  162.                     GetDialog;
  163.                     if item = ai_setdefault then begin
  164.                         PackStringBlank(s);
  165.                         SetDefaultString(s);
  166.                         PackString(s);
  167.                         if s = '?' then begin
  168.                             Destroy;
  169.                             ShowCursor;
  170.                             exit(DoItem);
  171.                         end;
  172.                     end
  173.                     else begin
  174.                         PackString(s);
  175.                     end;
  176.                     DoCommand(s);
  177.                 end;
  178.                 Destroy;
  179.                 ShowCursor;
  180.             end;
  181.             otherwise
  182.                 ;
  183.         end;
  184.     end;
  185.  
  186.     procedure AIObject.DoKey (modifiers: integer; ch: char; code: integer);
  187.     begin
  188.         SetOK;
  189.     end;
  190.  
  191.     procedure AIObject.DoEditMenu (item: integer);
  192.     begin
  193.         inherited DoEditMenu(item);
  194.         SetOK;
  195.     end;
  196.  
  197.     procedure AIObject.PackStringBlank (var s: Str255);
  198.     begin
  199.     end;
  200.  
  201.     procedure AIObject.PackString (var s: Str255);
  202.     begin
  203.     end;
  204.  
  205.     procedure AIObject.UnPackString (s: Str255);
  206.     begin
  207.     end;
  208.  
  209.     function AIObject.IsOKOn: boolean;
  210.     begin
  211.     end;
  212.  
  213.     function AIObject.IsSetDefaultOn: boolean;
  214.     begin
  215.     end;
  216.  
  217.     procedure AIObject.DoCommand (s: Str255);
  218.     begin
  219.     end;
  220.  
  221. end.