fphelp.pas 23 KB

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