fpmhelp.inc 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350
  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
  211. begin
  212. C^.FreeAll;
  213. Dispose(C, Done);
  214. end;
  215. inherited Done;
  216. end;
  217. procedure TIDEApp.HelpFiles;
  218. var
  219. PHFD : PHelpFilesDialog;
  220. begin
  221. New(PHFD, Init);
  222. if Desktop^.ExecView(PHFD)=cmOK then
  223. begin
  224. DoneHelpSystem;
  225. Message(Application,evBroadcast,cmHelpFilesChanged,nil);
  226. InitHelpSystem;
  227. end;
  228. if assigned(PHFD) then
  229. Dispose(PHFD, Done);
  230. end;
  231. procedure TIDEApp.About;
  232. begin
  233. ExecuteDialog(New(PFPAboutDialog, Init), nil);
  234. end;
  235. {
  236. $Log$
  237. Revision 1.1 2001-08-04 11:30:23 peter
  238. * ide works now with both compiler versions
  239. Revision 1.1.2.2 2001/03/20 00:20:42 pierre
  240. * fix some memory leaks + several small enhancements
  241. Revision 1.1.2.1 2000/10/18 21:53:27 pierre
  242. * several Gabor fixes
  243. Revision 1.1 2000/07/13 09:48:35 michael
  244. + Initial import
  245. Revision 1.11 2000/05/29 10:44:57 pierre
  246. + New bunch of Gabor's changes: see fixes.txt
  247. Revision 1.10 2000/05/02 08:42:28 pierre
  248. * new set of Gabor changes: see fixes.txt
  249. Revision 1.9 2000/04/25 08:42:33 pierre
  250. * New Gabor changes : see fixes.txt
  251. Revision 1.8 2000/02/07 08:29:13 michael
  252. [*] the fake (!) TOKENS.PAS still contained the typo bug
  253. FSplit(,n,d,e) (correctly FSplit(,d,n,e))
  254. [*] CodeComplete had a very ugly bug - coordinates were document-relative
  255. (instead of being screen-relative)
  256. [*] TResourceStream didn't count the size of the resource names when
  257. determining the file size and this could lead to the last resources not
  258. loaded correctly
  259. [+] Ctrl-Enter in editor now tries to open the file at cursor
  260. [+] CodeComplete option added to Options|Environment|Editor
  261. [+] user interface for managing CodeComplete implemented
  262. [+] user interface for CodeTemplates implemented
  263. [+] CodeComplete wordlist and CodeTemplates stored in desktop file
  264. [+] help topic size no longer limited to 64KB when compiled with FPC
  265. Revision 1.7 1999/05/22 13:44:31 peter
  266. * fixed couple of bugs
  267. Revision 1.6 1999/03/01 15:41:56 peter
  268. + Added dummy entries for functions not yet implemented
  269. * MenuBar didn't update itself automatically on command-set changes
  270. * Fixed Debugging/Profiling options dialog
  271. * TCodeEditor converts spaces to tabs at save only if efUseTabChars is
  272. set
  273. * efBackSpaceUnindents works correctly
  274. + 'Messages' window implemented
  275. + Added '$CAP MSG()' and '$CAP EDIT' to available tool-macros
  276. + Added TP message-filter support (for ex. you can call GREP thru
  277. GREP2MSG and view the result in the messages window - just like in TP)
  278. * A 'var' was missing from the param-list of THelpFacility.TopicSearch,
  279. so topic search didn't work...
  280. * In FPHELP.PAS there were still context-variables defined as word instead
  281. of THelpCtx
  282. * StdStatusKeys() was missing from the statusdef for help windows
  283. + Topic-title for index-table can be specified when adding a HTML-files
  284. Revision 1.5 1999/02/22 02:15:16 peter
  285. + default extension for save in the editor
  286. + Separate Text to Find for the grep dialog
  287. * fixed redir crash with tp7
  288. Revision 1.4 1999/01/21 11:54:18 peter
  289. + tools menu
  290. + speedsearch in symbolbrowser
  291. * working run command
  292. Revision 1.3 1999/01/12 14:29:34 peter
  293. + Implemented still missing 'switch' entries in Options menu
  294. + Pressing Ctrl-B sets ASCII mode in editor, after which keypresses (even
  295. ones with ASCII < 32 ; entered with Alt+<###>) are interpreted always as
  296. ASCII chars and inserted directly in the text.
  297. + Added symbol browser
  298. * splitted fp.pas to fpide.pas
  299. Revision 1.2 1998/12/28 15:47:48 peter
  300. + Added user screen support, display & window
  301. + Implemented Editor,Mouse Options dialog
  302. + Added location of .INI and .CFG file
  303. + Option (INI) file managment implemented (see bottom of Options Menu)
  304. + Switches updated
  305. + Run program
  306. Revision 1.2 1998/12/22 10:39:47 peter
  307. + options are now written/read
  308. + find and replace routines
  309. }