On 24/07/2010 20:52, Bernd Kreuss wrote:
TCodeHelpManager.GetHTMLHint(
   Code: TCodeBuffer;
   X, Y: integer;
   Options: TCodeHelpHintOptions;
   out BaseURL, HTMLHint: string;
   out CacheWasUsed: boolean): TCodeHelpParseResult;

seems to do the interesting things It will look up fpdoc and comments
and do everything to create a useful hint.

I assume this is the "correct" way of creating the contents of a hint
window. I was initially hoping there would just be some hint window
class that i can just instantiate anywhere and just have to give it the
source code position (or whatever type of data is usually used to denote
a piece of code) but it seems to work differently. It seems to first
create the hint contents and then later use them for a hint window to
fill it.

Would I have any chance to try and use the above method to create the
hint string in the code browser window? I remember having seen there a
node variable that has a TCodeBuffer somewhere in it and also X and Y
seem to be accessible. Would this be possible? From where do I get a
TCodeHelpManager object? Is there already one around somewhere that I
can simply access or do I have to instantiate my own?

Despite this not being code familiar to me, I had a quick look through the stuff you already found:
I am sure someone with more knowledge will comment on it, but until then:

From
ide/main.pp line 15060
procedure TMainIDE.OnSrcNotebookShowHintForSource(SrcEdit: TSourceEditor; ClientPos: TPoint; CaretPos: TPoint);


TIDEHelpManager(HelpBoss).GetHintForSourcePosition(ActiveUnitInfo.Filename,
                                          CaretPos,BaseURL,SmartHintStr);

HelpBoss is a gobal variable in the Unit HeplManager, it seems to be the best point to start getting contnet from.
- BaseURL,SmartHintStr are out param
- you don't need ActiveUnitInfo, only the filename.
you can get a unitinfo, if you have the editor: AnUnitInfo := Project1.UnitWithEditorComponent(AEditor);
  // project1, is a global var too in Unit Project
  // project1 is generally a good point to get the unitinfo from

So (full-)filename and caretpos, and you can get content

----

As for creating the hint window, not sure what the easiest, best way is, but there is an example here:
ide\sourceeditor.pp line 6200
procedure TSourceNotebook.ActivateHint(const ScreenPos: TPoint; const BaseURL, TheHint: string);

It's a few lines only.




--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to