fphelp.pas 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746
  1. {
  2. $Id$
  3. This file is part of the Free Pascal Integrated Development Environment
  4. Copyright (c) 1998 by Berczi Gabor
  5. Help routines for the IDE
  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. unit FPHelp;
  13. interface
  14. uses
  15. Drivers,
  16. {$ifdef FVISION}
  17. FVConsts,
  18. {$else}
  19. Commands,HelpCtx,
  20. {$endif}
  21. WHelp,WHlpView,WHTML,
  22. WEditor,WCEdit,
  23. WViews,WHTMLScn,
  24. FPViews;
  25. type
  26. PIDEStatusLine = ^TIDEStatusLine;
  27. TIDEStatusLine = object(TAdvancedStatusLine)
  28. function Hint(AHelpCtx: Word): String; virtual;
  29. procedure HandleEvent(var Event: TEvent); virtual;
  30. end;
  31. PFPHTMLFileLinkScanner = ^TFPHTMLFileLinkScanner;
  32. TFPHTMLFileLinkScanner = object(THTMLFileLinkScanner)
  33. function CheckURL(const URL: string): boolean; virtual;
  34. function CheckText(const Text: string): boolean; virtual;
  35. procedure ProcessDoc(Doc: PHTMLLinkScanFile); virtual;
  36. end;
  37. procedure Help(FileID, Context: THelpCtx; Modal: boolean);
  38. procedure HelpIndex(Keyword: string);
  39. procedure HelpTopicSearch(Editor: PEditor);
  40. procedure HelpTopic(const S: string);
  41. procedure CloseHelpWindows;
  42. procedure InitHelpSystem;
  43. procedure DoneHelpSystem;
  44. procedure InitHelpFiles;
  45. procedure DoneHelpFiles;
  46. procedure CheckHelpSystem;
  47. procedure PushStatus(S: string);
  48. procedure SetStatus(S: string);
  49. procedure ClearStatus;
  50. procedure PopStatus;
  51. const
  52. HelpWindow : PFPHelpWindow = nil;
  53. HelpInited : boolean = false;
  54. implementation
  55. uses Objects,Views,App,MsgBox,
  56. WUtils,WOAHelp,WHTMLHlp,WNGHelp,WOS2Help,WVPHelp,WWinHelp,
  57. FPString,FPConst,FPVars,FPUtils;
  58. const
  59. MaxStatusLevel = {$ifdef FPC}10{$else}1{$endif};
  60. var StatusStack : array[0..MaxStatusLevel] of string[MaxViewWidth];
  61. const
  62. StatusStackPtr : integer = 0;
  63. procedure TIDEStatusLine.HandleEvent(var Event: TEvent);
  64. begin
  65. case Event.What of
  66. evBroadcast :
  67. case Event.Command of
  68. cmUpdate : Update;
  69. end;
  70. end;
  71. inherited HandleEvent(Event);
  72. end;
  73. function TIDEStatusLine.Hint(AHelpCtx: Word): String;
  74. var S: string;
  75. begin
  76. case AHelpCtx of
  77. hcNoContext : S:='';
  78. hcDragging : S:='';
  79. hcSourceWindow : S:='';
  80. hcHelpWindow : S:='';
  81. hcCalcWindow : S:='';
  82. hcInfoWindow : S:='';
  83. hcClipboardWindow:S:='';
  84. hcBrowserWindow : S:='';
  85. hcMessagesWindow: S:='';
  86. hcCompilerMessagesWindow: S:='';
  87. hcASCIITableWindow: S:='';
  88. hcGDBWindow : S:=hint_rawgdbwindow;
  89. hcDisassemblyWindow : S:=hint_disassemblywindow;
  90. hcBreakpointListWindow : S:=hint_allbreakpoints;
  91. hcSystemMenu : S:=hint_systemmenu;
  92. hcUpdate : S:=hint_update;
  93. hcAbout : S:=hint_about;
  94. hcFileMenu : S:=hint_filemenu;
  95. hcNew : S:=hint_filenew;
  96. hcNewFromTemplate:S:=hint_filenewfromtemplate;
  97. hcOpen : S:=hint_fileopen;
  98. hcSave : S:=hint_filesave;
  99. hcSaveAs : S:=hint_filesaveas;
  100. hcSaveAll : S:=hint_filesaveall;
  101. hcChangeDir : S:=hint_changedir;
  102. hcDOSShell : S:=hint_dosshell;
  103. hcQuit : S:=hint_exit;
  104. hcRecentFileBase..hcRecentFileBase+10
  105. : S:=hint_openrecentfile;
  106. hcEditMenu : S:=hint_editmenu;
  107. hcUndo : S:=hint_editundo;
  108. hcRedo : S:=hint_editredo;
  109. hcCut : S:=hint_editcut;
  110. hcCopy : S:=hint_editcopy;
  111. hcPaste : S:=hint_editpaste;
  112. hcCopyWin : S:=hint_editcopywin;
  113. hcPasteWin : S:=hint_editpastewin;
  114. hcClear : S:=hint_editclear;
  115. hcShowClipboard : S:=hint_showclipboard;
  116. hcSearchMenu : S:=hint_searchmenu;
  117. hcFind : S:=hint_searchfind;
  118. hcReplace : S:=hint_searchreplace;
  119. hcSearchAgain : S:=hint_searchagain;
  120. hcGotoLine : S:=hint_gotoline;
  121. hcObjects : S:=hint_objects;
  122. hcModules : S:=hint_modules;
  123. hcGlobals : S:=hint_globals;
  124. hcSymbol : S:=hint_symbol;
  125. hcRunMenu : S:=hint_runmenu;
  126. hcRun : S:=hint_run;
  127. hcParameters : S:=hint_runparameters;
  128. hcResetDebugger : S:=hint_resetprogram;
  129. hcContToCursor : S:=hint_rununtilcursor;
  130. hcUntilReturn : S:=hint_rununtilreturn;
  131. hcUserScreen : S:=hint_userscreen;
  132. hcCompileMenu : S:=hint_compilemenu;
  133. hcCompile : S:=hint_compile;
  134. hcMake : S:=hint_make;
  135. hcBuild : S:=hint_build;
  136. hcTarget : S:=hint_target;
  137. hcPrimaryFile : S:=hint_primaryfile;
  138. hcClearPrimary : S:=hint_clearprimaryfile;
  139. hcInformation : S:=hint_information;
  140. hcCompilerMessages:S:=hint_showmessages;
  141. hcDebugMenu : S:=hint_debugmenu;
  142. hcToggleBreakpoint : S:=hint_togglebreakpoint;
  143. hcNewBreakpoint : S:=hint_createnewbreakpoint;
  144. hcEditBreakpoint : S:=hint_editbreakpoint;
  145. hcDeleteBreakpoint : S:=hint_deletebreakpoint;
  146. hcOpenGDBWindow : S:=hint_opengdbwindow;
  147. hcAddWatch : S:=hint_addwatch;
  148. hcWatchesWindow : S:=hint_watches;
  149. hcStackWindow : S:=hint_callstack;
  150. hcBreakpointList : S:=hint_editbreakpoints;
  151. hcToolsMenu : S:=hint_toolsmenu;
  152. hcCalculator : S:=hint_calculator;
  153. hcGrep : S:=hint_grep;
  154. hcMsgGotoSource : S:=hint_gotosource;
  155. hcRegistersWindow : S:=hint_registers;
  156. hcToolsMessages : S:=hint_messageswindow;
  157. hcToolsBase..
  158. hcToolsBase+MaxToolCount
  159. : S:=hint_usertool;
  160. hcASCIITable : S:=hint_asciitable;
  161. hcOptionsMenu : S:=hint_optionsmenu;
  162. hcSwitchesMode : S:=hint_switchesmode;
  163. hcCompiler,
  164. hcCompilerNoAltX : S:=hint_compiler;
  165. hcMemorySizes : S:=hint_memorysizes;
  166. hcLinker : S:=hint_linkeroptions;
  167. hcDebugger : S:=hint_debugoptions;
  168. hcDirectories : S:=hint_directories;
  169. hcBrowser,
  170. hcBrowserOptions: S:=hint_browser;
  171. hcTools : S:=hint_tools;
  172. hcEnvironmentMenu:S:=hint_environmentmenu;
  173. hcPreferences : S:=hint_preferences;
  174. hcEditor : S:=hint_editoroptions;
  175. hcCodeCompleteOptions:S:=hint_codecomplete;
  176. hcCodeTemplateOptions:S:=hint_codetemplates;
  177. hcMouse : S:=hint_mouseoptions;
  178. hcDesktopOptions: S:=hint_desktopoptions;
  179. hcStartup : S:=hint_startup;
  180. hcColors : S:=hint_colors;
  181. hcOpenINI : S:=hint_openini;
  182. hcSaveINI : S:=hint_saveini;
  183. hcSaveAsINI : S:=hint_saveasini;
  184. hcWindowMenu : S:=hint_windowmenu;
  185. hcTile : S:=hint_tile;
  186. hcCascade : S:=hint_cascade;
  187. hcCloseAll : S:=hint_closeall;
  188. hcResize : S:=hint_resize;
  189. hcZoom : S:=hint_zoom;
  190. hcNext : S:=hint_next;
  191. hcPrev : S:=hint_prev;
  192. hcClose : S:=hint_closewindow;
  193. hcWindowList : S:=hint_windowlist;
  194. hcUserScreenWindow:S:=hint_userscreenwindow;
  195. hcHelpMenu : S:=hint_helpmenu;
  196. hcHelpContents : S:=hint_helpcontents;
  197. hcHelpIndex : S:=hint_helpindex;
  198. hcHelpTopicSearch:S:=hint_helptopicsearch;
  199. hcHelpPrevTopic : S:=hint_helpprevtopic;
  200. hcHelpUsingHelp : S:=hint_helphowtouse;
  201. hcHelpFiles : S:=hint_helpfiles;
  202. hcOpenAtCursor : S:=hint_openatcursor;
  203. hcBrowseAtCursor: S:=hint_browseatcursor;
  204. hcEditorOptions : S:=hint_editoroptionscur;
  205. else S:='???';
  206. end;
  207. Hint:=S;
  208. end;
  209. procedure TFPHTMLFileLinkScanner.ProcessDoc(Doc: PHTMLLinkScanFile);
  210. begin
  211. PushStatus(FormatStrStr(msg_indexingfile,Doc^.GetDocumentURL));
  212. inherited ProcessDoc(Doc);
  213. PopStatus;
  214. end;
  215. function TFPHTMLFileLinkScanner.CheckURL(const URL: string): boolean;
  216. var OK: boolean;
  217. const HTTPPrefix = 'http:';
  218. FTPPrefix = 'ftp:';
  219. begin
  220. OK:=inherited CheckURL(URL);
  221. if OK then OK:=DirAndNameOf(URL)<>'';
  222. if OK then OK:=CompareText(copy(ExtOf(URL),1,4),'.HTM')=0;
  223. if OK then OK:=CompareText(copy(URL,1,length(HTTPPrefix)),HTTPPrefix)<>0;
  224. if OK then OK:=CompareText(copy(URL,1,length(FTPPrefix)),FTPPrefix)<>0;
  225. CheckURL:=OK;
  226. end;
  227. function TFPHTMLFileLinkScanner.CheckText(const Text: string): boolean;
  228. var OK: boolean;
  229. S: string;
  230. begin
  231. S:=Trim(Text);
  232. OK:=(S<>'') and (copy(S,1,1)<>'[');
  233. CheckText:=OK;
  234. end;
  235. procedure InitHelpSystem;
  236. procedure AddHelpFile(HelpFile,Param: string);
  237. begin
  238. {$IFDEF DEBUG}SetStatus(msg_LoadingHelpFile+' ('+SmartPath(HelpFile)+')');{$ENDIF}
  239. if HelpFacility^.AddFile(HelpFile,Param)=nil then
  240. ErrorBox(FormatStrStr(msg_failedtoloadhelpfile,HelpFile),nil);
  241. {$IFDEF DEBUG}SetStatus(msg_LoadingHelpFile);{$ENDIF}
  242. end;
  243. var I,P: sw_integer;
  244. S: string;
  245. Param: string;
  246. begin
  247. New(HelpFacility, Init);
  248. WOAHelp.RegisterHelpType;
  249. WNGHelp.RegisterHelpType;
  250. WOS2Help.RegisterHelpType;
  251. WWinHelp.RegisterHelpType;
  252. WVPHelp.RegisterHelpType;
  253. WHTMLHlp.RegisterHelpType;
  254. PushStatus(msg_LoadingHelpFiles);
  255. for I:=0 to HelpFiles^.Count-1 do
  256. begin
  257. S:=HelpFiles^.At(I)^; Param:='';
  258. P:=Pos('|',S);
  259. if P>0 then
  260. begin Param:=copy(S,P+1,High(S)); S:=copy(S,1,P-1); end;
  261. AddHelpFile(S,Param);
  262. end;
  263. PopStatus;
  264. end;
  265. procedure CheckHelpSystem;
  266. begin
  267. if HelpInited then Exit;
  268. InitHelpSystem;
  269. HelpInited:=true;
  270. end;
  271. procedure DoneHelpSystem;
  272. begin
  273. if assigned(HelpFacility) then
  274. begin
  275. Dispose(HelpFacility, Done);
  276. HelpFacility:=nil;
  277. end;
  278. HelpInited:=false;
  279. end;
  280. procedure HelpCreateWindow;
  281. var R: TRect;
  282. begin
  283. CheckHelpSystem;
  284. if HelpWindow=nil then
  285. begin
  286. Desktop^.GetExtent(R); R.Grow(-15,-3); Dec(R.A.Y);
  287. New(HelpWindow, Init(R, dialog_help, 0, 0, SearchFreeWindowNo));
  288. if HelpWindow<>nil then
  289. begin
  290. HelpWindow^.Hide;
  291. Desktop^.Insert(HelpWindow);
  292. end;
  293. end;
  294. end;
  295. procedure Help(FileID, Context: THelpCtx; Modal: boolean);
  296. begin
  297. if Modal then
  298. begin MessageBox(msg_modalhelpnotimplemented,nil,mfInformation+mfInsertInApp+mfOKButton); Exit; end;
  299. HelpCreateWindow;
  300. with HelpWindow^ do
  301. begin
  302. HelpWindow^.ShowTopic(FileID,Context);
  303. if GetState(sfVisible)=false then Show;
  304. MakeFirst;
  305. end;
  306. Message(Application,evCommand,cmUpdate,nil);
  307. end;
  308. procedure HelpTopicSearch(Editor: PEditor);
  309. var S: string;
  310. begin
  311. if Editor=nil then S:='' else
  312. S:=GetEditorCurWord(Editor,[]);
  313. HelpTopic(S);
  314. end;
  315. procedure HelpTopic(const S: string);
  316. var FileID: word;
  317. Ctx : THelpCtx;
  318. var Found: boolean;
  319. begin
  320. CheckHelpSystem;
  321. PushStatus(msg_LocatingTopic);
  322. Found:=HelpFacility^.TopicSearch(S,FileID,Ctx);
  323. PopStatus;
  324. if Found then
  325. Help(FileID,Ctx,false)
  326. else
  327. HelpIndex(S);
  328. end;
  329. procedure HelpIndex(Keyword: string);
  330. begin
  331. HelpCreateWindow;
  332. with HelpWindow^ do
  333. begin
  334. PushStatus(msg_BuildingHelpIndex);
  335. HelpWindow^.ShowIndex;
  336. if Keyword<>'' then
  337. HelpWindow^.HelpView^.Lookup(Keyword);
  338. PopStatus;
  339. if GetState(sfVisible)=false then Show;
  340. MakeFirst;
  341. end;
  342. Message(Application,evCommand,cmUpdate,nil);
  343. end;
  344. procedure PushStatus(S: string);
  345. begin
  346. if StatusLine=nil then
  347. Exit;
  348. If StatusStackPtr<=MaxStatusLevel then
  349. StatusStack[StatusStackPtr]:=PAdvancedStatusLine(StatusLine)^.GetStatusText
  350. else
  351. StatusStack[MaxStatusLevel]:=PAdvancedStatusLine(StatusLine)^.GetStatusText;
  352. SetStatus(S);
  353. Inc(StatusStackPtr);
  354. end;
  355. procedure PopStatus;
  356. begin
  357. if StatusLine=nil then
  358. Exit;
  359. Dec(StatusStackPtr);
  360. If StatusStackPtr<=MaxStatusLevel then
  361. SetStatus(StatusStack[StatusStackPtr])
  362. else
  363. SetStatus(StatusStack[MaxStatusLevel]);
  364. end;
  365. procedure SetStatus(S: string);
  366. begin
  367. if StatusLine=nil then
  368. Exit;
  369. PAdvancedStatusLine(StatusLine)^.SetStatusText(S);
  370. end;
  371. procedure ClearStatus;
  372. begin
  373. PAdvancedStatusLine(StatusLine)^.ClearStatusText;
  374. end;
  375. function FPHTMLGetSectionColor(Section: THTMLSection; var Color: byte): boolean;
  376. var OK: boolean;
  377. S: string;
  378. begin
  379. Color:=0;
  380. OK:=(ord(Section) in [1..length(CHTMLSectionAttrs)]);
  381. if OK then
  382. begin
  383. S:=#0;
  384. S:=copy(CHTMLSectionAttrs,ord(Section),1);
  385. if Assigned(Application)=false then Color:=0 else
  386. Color:=Application^.GetColor(ord(S[1]));
  387. if (Color and $0f) = ((Color and $f0) shr 4) then { same color ? }
  388. OK:=false;
  389. end;
  390. FPHTMLGetSectionColor:=OK;
  391. end;
  392. function FPNGGetAttrColor(Attr: char; var Color: byte): boolean;
  393. var OK: boolean;
  394. begin
  395. OK:=false;
  396. case Attr of
  397. 'A' : OK:=FPHTMLGetSectionColor(hsHeading1,Color);
  398. 'B' : OK:=FPHTMLGetSectionColor(hsHeading2,Color);
  399. 'b' : OK:=FPHTMLGetSectionColor(hsHeading5,Color);
  400. 'U' : OK:=FPHTMLGetSectionColor(hsHeading3,Color);
  401. 'N' : OK:=FPHTMLGetSectionColor(hsHeading4,Color);
  402. {$ifdef DEBUGMSG}
  403. else ErrorBox('Unknown attr encountered : "'+Attr+'"',nil);
  404. {$endif}
  405. end;
  406. FPNGGetAttrColor:=OK;
  407. end;
  408. function FPINFGetAttrColor(TextStyle, TextColor: byte; var Color: byte): boolean;
  409. var OK: boolean;
  410. begin
  411. OK:=false;
  412. case TextColor of
  413. 1 : OK:=FPHTMLGetSectionColor(hsHeading1,Color);
  414. 2 : OK:=FPHTMLGetSectionColor(hsHeading2,Color);
  415. 3 : OK:=FPHTMLGetSectionColor(hsHeading3,Color);
  416. end;
  417. FPINFGetAttrColor:=OK;
  418. end;
  419. procedure InitHelpFiles;
  420. begin
  421. HTMLGetSectionColor:={$ifdef FPC}@{$endif}FPHTMLGetSectionColor;
  422. NGGetAttrColor:={$ifdef FPC}@{$endif}FPNGGetAttrColor;
  423. INFGetAttrColor:={$ifdef FPC}@{$endif}FPINFGetAttrColor;
  424. New(HelpFiles, Init(10,10));
  425. end;
  426. procedure DoneHelpFiles;
  427. begin
  428. if assigned(HelpFiles) then
  429. Dispose(HelpFiles, Done);
  430. end;
  431. procedure CloseHelpWindows;
  432. procedure CloseIfHelpWindow(P: PView); {$ifndef FPC}far;{$endif}
  433. begin
  434. if P^.HelpCtx=hcHelpWindow then
  435. begin
  436. Message(P,evCommand,cmClose,nil);
  437. {Dispose(P, Done); help windows are only hidden on close so we've
  438. to destroy them manually
  439. but this was wrong as it was not correctly
  440. resetting the corresponding pointer in whelp unit PM }
  441. end;
  442. end;
  443. begin
  444. Desktop^.ForEach(@CloseIfHelpWindow);
  445. end;
  446. END.
  447. {
  448. $Log$
  449. Revision 1.5 2002-01-24 09:21:41 pierre
  450. * only disable Alt-X in Options|Compiler dialog
  451. Revision 1.4 2001/10/01 00:24:09 pierre
  452. * fix several help problems
  453. Revision 1.3 2001/09/10 10:52:59 pierre
  454. * fix web bug 1368
  455. Revision 1.2 2001/08/05 02:01:47 peter
  456. * FVISION define to compile with fvision units
  457. Revision 1.1 2001/08/04 11:30:23 peter
  458. * ide works now with both compiler versions
  459. Revision 1.1.2.7 2001/03/12 17:34:55 pierre
  460. + Disassembly window started
  461. Revision 1.1.2.6 2000/11/29 11:25:59 pierre
  462. + TFPDlgWindow that handles cmSearchWindow
  463. Revision 1.1.2.5 2000/11/29 00:54:44 pierre
  464. + preserve window number and save special windows
  465. Revision 1.1.2.4 2000/11/27 12:06:48 pierre
  466. New bunch of Gabor fixes
  467. Revision 1.1.2.3 2000/11/23 16:33:30 pierre
  468. * fix Alt-X problem and set HelpCtx for most dialogs
  469. Revision 1.1.2.2 2000/09/18 13:20:54 pierre
  470. New bunch of Gabor changes
  471. Revision 1.1.2.1 2000/08/15 03:40:53 peter
  472. [*] no more fatal exits when the IDE can't find the error file (containing
  473. the redirected assembler/linker output) after compilation
  474. [*] hidden windows are now added always at the end of the Window List
  475. [*] TINIFile parsed entries encapsulated in string delimiters incorrectly
  476. [*] selection was incorrectly adjusted when typing in overwrite mode
  477. [*] the line wasn't expanded when it's end was reached in overw. mode
  478. [*] the IDE now tries to locate source files also in the user specified
  479. unit dirs (for ex. as a response to 'Open at cursor' (Ctrl+Enter) )
  480. [*] 'Open at cursor' is now aware of the extension (if specified)
  481. Revision 1.1 2000/07/13 09:48:34 michael
  482. + Initial import
  483. Revision 1.35 2000/06/26 07:29:23 pierre
  484. * new bunch of Gabor's changes
  485. Revision 1.34 2000/06/22 09:07:12 pierre
  486. * Gabor changes: see fixes.txt
  487. Revision 1.33 2000/06/16 08:50:40 pierre
  488. + new bunch of Gabor's changes
  489. Revision 1.32 2000/05/30 07:18:33 pierre
  490. + colors for HTML help by Gabor
  491. Revision 1.31 2000/05/29 10:44:56 pierre
  492. + New bunch of Gabor's changes: see fixes.txt
  493. Revision 1.30 2000/05/02 08:42:27 pierre
  494. * new set of Gabor changes: see fixes.txt
  495. Revision 1.29 2000/04/25 08:42:33 pierre
  496. * New Gabor changes : see fixes.txt
  497. Revision 1.28 2000/03/21 23:31:14 pierre
  498. adapted to wcedit addition by Gabor
  499. Revision 1.27 2000/02/07 11:58:01 pierre
  500. Gabor's code inserted
  501. Revision 1.26 2000/01/08 18:26:20 florian
  502. + added a register window, doesn't work yet
  503. Revision 1.25 2000/01/05 17:25:26 pierre
  504. * typo error corrected
  505. Revision 1.24 2000/01/03 11:38:33 michael
  506. Changes from Gabor
  507. Revision 1.23 1999/09/09 16:31:45 pierre
  508. * some breakpoint related fixes and Help contexts
  509. Revision 1.22 1999/09/09 14:15:27 pierre
  510. + cmCopyWin,cmPasteWin
  511. Revision 1.21 1999/08/16 18:25:17 peter
  512. * Adjusting the selection when the editor didn't contain any line.
  513. * Reserved word recognition redesigned, but this didn't affect the overall
  514. syntax highlight speed remarkably (at least not on my Amd-K6/350).
  515. The syntax scanner loop is a bit slow but the main problem is the
  516. recognition of special symbols. Switching off symbol processing boosts
  517. the performance up to ca. 200%...
  518. * The editor didn't allow copying (for ex to clipboard) of a single character
  519. * 'File|Save as' caused permanently run-time error 3. Not any more now...
  520. * Compiler Messages window (actually the whole desktop) did not act on any
  521. keypress when compilation failed and thus the window remained visible
  522. + Message windows are now closed upon pressing Esc
  523. + At 'Run' the IDE checks whether any sources are modified, and recompiles
  524. only when neccessary
  525. + BlockRead and BlockWrite (Ctrl+K+R/W) implemented in TCodeEditor
  526. + LineSelect (Ctrl+K+L) implemented
  527. * The IDE had problems closing help windows before saving the desktop
  528. Revision 1.20 1999/08/03 20:22:31 peter
  529. + TTab acts now on Ctrl+Tab and Ctrl+Shift+Tab...
  530. + Desktop saving should work now
  531. - History saved
  532. - Clipboard content saved
  533. - Desktop saved
  534. - Symbol info saved
  535. * syntax-highlight bug fixed, which compared special keywords case sensitive
  536. (for ex. 'asm' caused asm-highlighting, while 'ASM' didn't)
  537. * with 'whole words only' set, the editor didn't found occourences of the
  538. searched text, if the text appeared previously in the same line, but didn't
  539. satisfied the 'whole-word' condition
  540. * ^QB jumped to (SelStart.X,SelEnd.X) instead of (SelStart.X,SelStart.Y)
  541. (ie. the beginning of the selection)
  542. * when started typing in a new line, but not at the start (X=0) of it,
  543. the editor inserted the text one character more to left as it should...
  544. * TCodeEditor.HideSelection (Ctrl-K+H) didn't update the screen
  545. * Shift shouldn't cause so much trouble in TCodeEditor now...
  546. * Syntax highlight had problems recognizing a special symbol if it was
  547. prefixed by another symbol character in the source text
  548. * Auto-save also occours at Dos shell, Tool execution, etc. now...
  549. Revision 1.19 1999/07/12 13:14:17 pierre
  550. * LineEnd bug corrected, now goes end of text even if selected
  551. + Until Return for debugger
  552. + Code for Quit inside GDB Window
  553. Revision 1.18 1999/07/10 01:24:16 pierre
  554. + First implementation of watches window
  555. Revision 1.17 1999/06/30 23:58:14 pierre
  556. + BreakpointsList Window implemented
  557. with Edit/New/Delete functions
  558. + Individual breakpoint dialog with support for all types
  559. ignorecount and conditions
  560. (commands are not yet implemented, don't know if this wolud be useful)
  561. awatch and rwatch have problems because GDB does not annotate them
  562. I fixed v4.16 for this
  563. Revision 1.16 1999/06/28 19:32:19 peter
  564. * fixes from gabor
  565. Revision 1.15 1999/06/25 00:39:58 pierre
  566. help for cmSymbol,cmAddWatch,cmStack and cmBreakpoint list
  567. Revision 1.14 1999/04/07 21:55:46 peter
  568. + object support for browser
  569. * html help fixes
  570. * more desktop saving things
  571. * NODEBUG directive to exclude debugger
  572. Revision 1.13 1999/03/23 15:11:28 peter
  573. * desktop saving things
  574. * vesa mode
  575. * preferences dialog
  576. Revision 1.12 1999/03/16 12:38:09 peter
  577. * tools macro fixes
  578. + tph writer
  579. + first things for resource files
  580. Revision 1.11 1999/03/01 15:41:53 peter
  581. + Added dummy entries for functions not yet implemented
  582. * MenuBar didn't update itself automatically on command-set changes
  583. * Fixed Debugging/Profiling options dialog
  584. * TCodeEditor converts spaces to tabs at save only if efUseTabChars is set
  585. * efBackSpaceUnindents works correctly
  586. + 'Messages' window implemented
  587. + Added '$CAP MSG()' and '$CAP EDIT' to available tool-macros
  588. + Added TP message-filter support (for ex. you can call GREP thru
  589. GREP2MSG and view the result in the messages window - just like in TP)
  590. * A 'var' was missing from the param-list of THelpFacility.TopicSearch,
  591. so topic search didn't work...
  592. * In FPHELP.PAS there were still context-variables defined as word instead
  593. of THelpCtx
  594. * StdStatusKeys() was missing from the statusdef for help windows
  595. + Topic-title for index-table can be specified when adding a HTML-files
  596. Revision 1.10 1999/02/22 11:51:35 peter
  597. * browser updates from gabor
  598. Revision 1.9 1999/02/19 18:43:45 peter
  599. + open dialog supports mask list
  600. Revision 1.8 1999/02/11 19:07:21 pierre
  601. * GDBWindow redesigned :
  602. normal editor apart from
  603. that any kbEnter will send the line (for begin to cursor)
  604. to GDB command !
  605. GDBWindow opened in Debugger Menu
  606. still buggy :
  607. -echo should not be present if at end of text
  608. -GDBWindow becomes First after each step (I don't know why !)
  609. Revision 1.7 1999/02/08 17:40:01 pierre
  610. + cmContToCursor added
  611. Revision 1.6 1999/02/08 10:37:43 peter
  612. + html helpviewer
  613. Revision 1.5 1999/02/04 12:23:44 pierre
  614. + cmResetDebugger and cmGrep
  615. * Avoid StatusStack overflow
  616. Revision 1.4 1999/01/21 11:54:13 peter
  617. + tools menu
  618. + speedsearch in symbolbrowser
  619. * working run command
  620. Revision 1.3 1999/01/04 11:49:44 peter
  621. * 'Use tab characters' now works correctly
  622. + Syntax highlight now acts on File|Save As...
  623. + Added a new class to syntax highlight: 'hex numbers'.
  624. * There was something very wrong with the palette managment. Now fixed.
  625. + Added output directory (-FE<xxx>) support to 'Directories' dialog...
  626. * Fixed some possible bugs in Running/Compiling, and the compilation/run
  627. process revised
  628. Revision 1.2 1998/12/28 15:47:44 peter
  629. + Added user screen support, display & window
  630. + Implemented Editor,Mouse Options dialog
  631. + Added location of .INI and .CFG file
  632. + Option (INI) file managment implemented (see bottom of Options Menu)
  633. + Switches updated
  634. + Run program
  635. Revision 1.3 1998/12/22 10:39:42 peter
  636. + options are now written/read
  637. + find and replace routines
  638. }