home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-02-24 | 3.3 KB | 148 lines | [TEXT/PJMM] |
- unit MyInternetMenu;
-
- { This code is part of the Finger/Fingerd source code, written in THINK Pascal 4 }
- { Copyright 1991-1992 Peter N Lewis }
- { If you use this code, you must give me credit in your about box and documentation }
- { This is part of my generic library of routines }
-
- interface
-
- procedure InitInternetMenu;
- procedure FinishInternetMenu;
- procedure AddInternetCommand (s: str255);
- function GetInternetCommand (themenu, theitem: integer): str255;
- procedure RemoveInternetCommand (themenu, theitem: integer);
- procedure SetXMenu (themenu, theitem: integer);
-
- implementation
-
- uses
- AppGlobals, MyUtils, MyPreferences, MyFMenus;
-
- var
- send_to_mh, remove_mh: menuHandle;
- modified: boolean;
-
- procedure AddInternetCommand (s: str255);
- var
- i, c: integer;
- lessthan: boolean;
- mi: str255;
- begin
- c := CountMItems(send_to_mh);
- i := 1;
- lessthan := false;
- while (i <= c) and not lessthan do begin
- GetItem(send_to_mh, i, mi);
- lessthan := (s <= mi);
- if not lessthan then
- i := i + 1;
- end;
- if not lessthan or (s <> mi) then begin
- InsMenuItem(send_to_mh, 'fred', i - 1);
- InsMenuItem(remove_mh, 'fred', i - 1);
- SetItem(send_to_mh, i, s);
- SetItem(remove_mh, i, s);
- end;
- modified := true;
- end;
-
- procedure SetXMenu (themenu, theitem: integer);
- begin
- SetIDItemEnable(themenu, theitem, CountMItems(send_to_mh) > 0);
- end;
-
- function GetInternetCommand (themenu, theitem: integer): str255;
- var
- s: str255;
- begin
- GetItem(send_to_mh, theitem, s);
- GetInternetCommand := s;
- end;
-
- procedure RemoveInternetCommand (themenu, theitem: integer);
- begin
- DelMenuItem(send_to_mh, theitem);
- DelMenuItem(remove_mh, theitem);
- modified := true;
- end;
-
- procedure SaveInternetMenu;
- type
- intPtr = ^integer;
- intHandle = ^intPtr;
- var
- oe, ooe: OSErr;
- vrn: integer;
- dirID: longInt;
- i, rn, count, len: integer;
- s: str255;
- h: handle;
- begin
- if modified then begin
- count := CountMItems(send_to_mh);
- len := SizeOf(integer);
- for i := 1 to count do begin
- GetItem(send_to_mh, i, s);
- len := len + Length(s) + 1;
- end;
- h := NewHandle(len);
- if h <> nil then begin
- intHandle(h)^^ := count;
- len := 2;
- for i := 1 to count do begin
- GetItem(send_to_mh, i, s);
- BlockMove(@s, ptr(longInt(h^) + len), Length(s) + 1);
- len := len + Length(s) + 1;
- end;
- SetPrefsResource(to_rsrc, to_strh_id, h);
- end;
- modified := false;
- end;
- end;
-
- procedure SetSaveMenu (themenu, theitem: integer);
- begin
- SetIDItemEnable(themenu, theitem, modified);
- end;
-
- procedure LoadInternetMenu;
- type
- intPtr = ^integer;
- intHandle = ^intPtr;
- var
- i, rn, count: integer;
- s: str255;
- h: handle;
- begin
- rn := GetPrefsResource(to_rsrc, to_strh_id, h);
- if h <> nil then begin
- count := intHandle(h)^^;
- for i := 1 to count do begin
- GetIndString(s, to_strh_id, i);
- AddInternetCommand(s);
- end;
- DisposHandle(h);
- end;
- if rn <> -1 then
- CloseResFile(rn);
- end;
-
- procedure InitInternetMenu;
- begin
- send_to_mh := NewMenu(M_InternetTo, 'Send To');
- InsertMenu(send_to_mh, -1);
- remove_mh := NewMenu(M_RemoveTo, 'Remove');
- InsertMenu(remove_mh, -1);
- LoadInternetMenu;
- modified := false;
- SetFBoth(CSaveMenu, @SaveInternetMenu, @SetSaveMenu);
- SetFSetMenu(CXInternet, @SetXMenu);
- SetFSetMenu(CXRemove, @SetXMenu);
- end;
-
- procedure FinishInternetMenu;
- begin
- end;
-
- end.