fpmhelp.inc 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338
  1. {
  2. $Id$
  3. This file is part of the ffff
  4. Copyright (c) 1998 by Berczi Gabor
  5. Help menu entries
  6. See the file COPYING.FPC, included in this distribution,
  7. for details about the copyright.
  8. This program is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  11. **********************************************************************}
  12. procedure TIDEApp.HelpContents;
  13. begin
  14. HelpTopic('Help_Contents'{0,hcContents,false});
  15. end;
  16. procedure TIDEApp.HelpHelpIndex;
  17. begin
  18. HelpIndex('');
  19. end;
  20. procedure TIDEApp.HelpTopicSearch;
  21. begin
  22. end;
  23. procedure TIDEApp.HelpPrevTopic;
  24. begin
  25. if HelpWindow=nil then HelpContents else
  26. with HelpWindow^ do
  27. if GetState(sfVisible) then Message(HelpWindow^.HelpView,evCommand,cmPrevTopic,nil)
  28. else begin HelpWindow^.Show; HelpWindow^.MakeFirst; end;
  29. end;
  30. procedure TIDEApp.HelpUsingHelp;
  31. begin
  32. Help(0,hcUsingHelp,false);
  33. end;
  34. type
  35. PHelpFileListBox = ^THelpFileListBox;
  36. THelpFileListBox = object(TListBox)
  37. function GetText(Item: sw_Integer; MaxLen: sw_Integer): String; virtual;
  38. end;
  39. PHelpFilesDialog = ^THelpFilesDialog;
  40. THelpFilesDialog = object(TCenterDialog)
  41. constructor Init;
  42. procedure HandleEvent(var Event: TEvent); virtual;
  43. destructor Done; virtual;
  44. private
  45. LB: PHelpFileListBox;
  46. C : PUnsortedStringCollection;
  47. end;
  48. function THelpFileListBox.GetText(Item: sw_Integer; MaxLen: sw_Integer): String;
  49. var S: string;
  50. P: integer;
  51. begin
  52. S:=inherited GetText(Item,MaxLen);
  53. P:=Pos('|',S);
  54. if P>0 then S:=copy(S,P+1,255)+' - '+copy(S,1,P-1);
  55. GetText:=copy(S,1,MaxLen);
  56. end;
  57. constructor THelpFilesDialog.Init;
  58. var R,R2: TRect;
  59. SB: PScrollBar;
  60. I: integer;
  61. begin
  62. R.Assign(0,0,round(ScreenWidth*5/8),ScreenHeight-10);
  63. inherited Init(R, dialog_helpfiles);
  64. New(C, Init(20,10));
  65. GetExtent(R); R.Grow(-2,-2); Inc(R.A.Y); R.B.X:=R.B.X-13;
  66. R2.Copy(R); R2.Move(1,0); R2.A.X:=R2.B.X-1;
  67. New(SB, Init(R2)); Insert(SB);
  68. New(LB, Init(R, 1, SB));
  69. for I:=0 to HelpFiles^.Count-1 do
  70. begin
  71. C^.Insert(NewStr(HelpFiles^.At(I)^));
  72. end;
  73. LB^.NewList(C);
  74. Insert(LB);
  75. R2.Copy(R); Dec(R2.A.Y); R2.B.Y:=R2.A.Y+1;
  76. Insert(New(PLabel, Init(R2, label_helpfiles_helpfiles, LB)));
  77. GetExtent(R); R.Grow(-2,-2); Inc(R.A.Y); R.A.X:=R.B.X-13+1; R.B.Y:=R.A.Y+2;
  78. Insert(New(PButton, Init(R, button_OK, cmOK, bfDefault)));
  79. R.Move(0,2);
  80. Insert(New(PButton, Init(R, button_New, cmAddItem, bfNormal)));
  81. R.Move(0,2);
  82. Insert(New(PButton, Init(R, button_Delete, cmDeleteItem, bfNormal)));
  83. R.Move(0,2);
  84. Insert(New(PButton, Init(R, button_Cancel, cmCancel, bfNormal)));
  85. LB^.Select;
  86. end;
  87. procedure THelpFilesDialog.HandleEvent(var Event: TEvent);
  88. var I: integer;
  89. D: PFileDialog;
  90. FileName: string;
  91. Re: word;
  92. S: string;
  93. LS: PFPHTMLFileLinkScanner;
  94. BS: PBufStream;
  95. begin
  96. case Event.What of
  97. evKeyDown :
  98. case Event.KeyCode of
  99. kbIns :
  100. begin
  101. Message(@Self,evCommand,cmAddItem,nil);
  102. ClearEvent(Event);
  103. end;
  104. kbDel :
  105. begin
  106. Message(@Self,evCommand,cmDeleteItem,nil);
  107. ClearEvent(Event);
  108. end;
  109. end;
  110. evCommand :
  111. case Event.Command of
  112. cmAddItem :
  113. begin
  114. S:='';
  115. New(D, Init(HelpFileExts,
  116. dialog_installhelpfile,
  117. label_installhelpfile_filename,
  118. fdOpenButton,hidOpenHelpFile));
  119. Re:=Desktop^.ExecView(D);
  120. if Re<>cmCancel then
  121. begin
  122. D^.GetFileName(FileName);
  123. if UpcaseStr(ExtOf(FileName))=UpcaseStr(HTMLIndexExt) then
  124. begin
  125. S:='HTML Index';
  126. end
  127. else
  128. if UpcaseStr(copy(ExtOf(FileName),1,length(HTMLExt)))=UpcaseStr(HTMLExt) then
  129. begin
  130. Re:=ConfirmBox(msg_createkeywordindexforhelpfile,nil,true);
  131. if Re<>cmCancel then
  132. if Re=cmNo then
  133. Re:=InputBox(dialog_topictitle,label_topictitle_title,S,40)
  134. else
  135. begin
  136. ShowMessage(msg_pleasewaitwhilecreatingindex);
  137. S:='HTML Index';
  138. PushStatus(FormatStrStr(msg_buildingindexfile,FileName));
  139. New(LS, Init(DirOf(FileName)));
  140. LS^.ProcessDocument(FileName,[soSubDocsOnly]);
  141. if LS^.GetDocumentCount=0 then
  142. begin
  143. ErrorBox(FormatStrStr(msg_filedoesnotcontainanylinks,FileName),nil);
  144. Re:=cmCancel;
  145. end
  146. else
  147. begin
  148. FileName:=DirAndNameOf(FileName)+HTMLIndexExt;
  149. if ExistsFile(FileName) then
  150. if ConfirmBox(FormatStrStr(msg_filealreadyexistsoverwrite,FileName),nil,true)<>cmYes then
  151. Re:=cmCancel;
  152. if Re<>cmCancel then
  153. begin
  154. PushStatus(FormatStrStr(msg_storinghtmlindexinfile,FileName));
  155. New(BS, Init(FileName, stCreate, 4096));
  156. if Assigned(BS)=false then
  157. begin
  158. ErrorBox(FormatStrStr(msg_cantcreatefile,FileName),nil);
  159. Re:=cmCancel;
  160. end
  161. else
  162. begin
  163. LS^.StoreDocuments(BS^);
  164. if BS^.Status<>stOK then
  165. begin
  166. ErrorBox(FormatStrInt(msg_errorstoringindexdata,BS^.Status),nil);
  167. Re:=cmCancel;
  168. end;
  169. Dispose(BS, Done);
  170. end;
  171. PopStatus;
  172. end;
  173. end;
  174. Dispose(LS, Done);
  175. PopStatus;
  176. HideMessage;
  177. end;
  178. end;
  179. end;
  180. if Re<>cmCancel then
  181. begin
  182. if S<>'' then FileName:=FileName+'|'+S;
  183. LB^.List^.Insert(NewStr(FileName));
  184. LB^.SetRange(LB^.List^.Count);
  185. ReDraw;
  186. end;
  187. Dispose(D, Done);
  188. ClearEvent(Event);
  189. end;
  190. cmDeleteItem :
  191. if LB^.Range>0 then
  192. begin
  193. LB^.List^.AtFree(LB^.Focused);
  194. LB^.SetRange(LB^.List^.Count);
  195. ReDraw;
  196. ClearEvent(Event);
  197. end;
  198. cmOK :
  199. begin
  200. HelpFiles^.FreeAll;
  201. for I:=0 to LB^.List^.Count-1 do
  202. HelpFiles^.Insert(NewStr(C^.At(I)^));
  203. end;
  204. end;
  205. end;
  206. inherited HandleEvent(Event);
  207. end;
  208. destructor THelpFilesDialog.Done;
  209. begin
  210. if C<>nil then begin C^.DeleteAll; Dispose(C, Done); end;
  211. inherited Done;
  212. end;
  213. procedure TIDEApp.HelpFiles;
  214. begin
  215. if Desktop^.ExecView(New(PHelpFilesDialog, Init))=cmOK then
  216. begin
  217. DoneHelpSystem;
  218. Message(Application,evBroadcast,cmHelpFilesChanged,nil);
  219. InitHelpSystem;
  220. end;
  221. end;
  222. procedure TIDEApp.About;
  223. begin
  224. ExecuteDialog(New(PFPAboutDialog, Init), nil);
  225. end;
  226. {
  227. $Log$
  228. Revision 1.2 2000-10-31 22:35:54 pierre
  229. * New big merge from fixes branch
  230. Revision 1.1.2.1 2000/10/18 21:53:27 pierre
  231. * several Gabor fixes
  232. Revision 1.1 2000/07/13 09:48:35 michael
  233. + Initial import
  234. Revision 1.11 2000/05/29 10:44:57 pierre
  235. + New bunch of Gabor's changes: see fixes.txt
  236. Revision 1.10 2000/05/02 08:42:28 pierre
  237. * new set of Gabor changes: see fixes.txt
  238. Revision 1.9 2000/04/25 08:42:33 pierre
  239. * New Gabor changes : see fixes.txt
  240. Revision 1.8 2000/02/07 08:29:13 michael
  241. [*] the fake (!) TOKENS.PAS still contained the typo bug
  242. FSplit(,n,d,e) (correctly FSplit(,d,n,e))
  243. [*] CodeComplete had a very ugly bug - coordinates were document-relative
  244. (instead of being screen-relative)
  245. [*] TResourceStream didn't count the size of the resource names when
  246. determining the file size and this could lead to the last resources not
  247. loaded correctly
  248. [+] Ctrl-Enter in editor now tries to open the file at cursor
  249. [+] CodeComplete option added to Options|Environment|Editor
  250. [+] user interface for managing CodeComplete implemented
  251. [+] user interface for CodeTemplates implemented
  252. [+] CodeComplete wordlist and CodeTemplates stored in desktop file
  253. [+] help topic size no longer limited to 64KB when compiled with FPC
  254. Revision 1.7 1999/05/22 13:44:31 peter
  255. * fixed couple of bugs
  256. Revision 1.6 1999/03/01 15:41:56 peter
  257. + Added dummy entries for functions not yet implemented
  258. * MenuBar didn't update itself automatically on command-set changes
  259. * Fixed Debugging/Profiling options dialog
  260. * TCodeEditor converts spaces to tabs at save only if efUseTabChars is
  261. set
  262. * efBackSpaceUnindents works correctly
  263. + 'Messages' window implemented
  264. + Added '$CAP MSG()' and '$CAP EDIT' to available tool-macros
  265. + Added TP message-filter support (for ex. you can call GREP thru
  266. GREP2MSG and view the result in the messages window - just like in TP)
  267. * A 'var' was missing from the param-list of THelpFacility.TopicSearch,
  268. so topic search didn't work...
  269. * In FPHELP.PAS there were still context-variables defined as word instead
  270. of THelpCtx
  271. * StdStatusKeys() was missing from the statusdef for help windows
  272. + Topic-title for index-table can be specified when adding a HTML-files
  273. Revision 1.5 1999/02/22 02:15:16 peter
  274. + default extension for save in the editor
  275. + Separate Text to Find for the grep dialog
  276. * fixed redir crash with tp7
  277. Revision 1.4 1999/01/21 11:54:18 peter
  278. + tools menu
  279. + speedsearch in symbolbrowser
  280. * working run command
  281. Revision 1.3 1999/01/12 14:29:34 peter
  282. + Implemented still missing 'switch' entries in Options menu
  283. + Pressing Ctrl-B sets ASCII mode in editor, after which keypresses (even
  284. ones with ASCII < 32 ; entered with Alt+<###>) are interpreted always as
  285. ASCII chars and inserted directly in the text.
  286. + Added symbol browser
  287. * splitted fp.pas to fpide.pas
  288. Revision 1.2 1998/12/28 15:47:48 peter
  289. + Added user screen support, display & window
  290. + Implemented Editor,Mouse Options dialog
  291. + Added location of .INI and .CFG file
  292. + Option (INI) file managment implemented (see bottom of Options Menu)
  293. + Switches updated
  294. + Run program
  295. Revision 1.2 1998/12/22 10:39:47 peter
  296. + options are now written/read
  297. + find and replace routines
  298. }