mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-11 09:36:10 +02:00
IDE: fpdoceditor: update topic on idle
git-svn-id: trunk@34253 -
This commit is contained in:
parent
c99b5e17ac
commit
9305126522
@ -7,25 +7,29 @@ unit allsynedit;
|
|||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
SynBeautifier, SynCompletion, SynDesignStringConstants, SynEdit, SynEditAutoComplete,
|
SynBeautifier, SynCompletion, SynDesignStringConstants, SynEdit,
|
||||||
SynEditExport, SynEditFoldedView, SynEditHighlighter, SynEditHighlighterFoldBase,
|
SynEditAutoComplete, SynEditExport, SynEditFoldedView, SynEditHighlighter,
|
||||||
SynEditHighlighterXMLBase, SynEditKeyCmds, SynEditLazDsgn, SynEditLines, SynEditMarks,
|
SynEditHighlighterFoldBase, SynEditHighlighterXMLBase, SynEditKeyCmds,
|
||||||
SynEditMarkup, SynEditMarkupBracket, SynEditMarkupCtrlMouseLink, SynEditMarkupHighAll,
|
SynEditLazDsgn, SynEditLines, SynEditMarks, SynEditMarkup,
|
||||||
|
SynEditMarkupBracket, SynEditMarkupCtrlMouseLink, SynEditMarkupHighAll,
|
||||||
SynEditMarkupSelection, SynEditMarkupSpecialLine, SynEditMarkupWordGroup,
|
SynEditMarkupSelection, SynEditMarkupSpecialLine, SynEditMarkupWordGroup,
|
||||||
SynEditMiscClasses, SynEditMiscProcs, SynEditMouseCmds, SynEditPlugins,
|
SynEditMiscClasses, SynEditMiscProcs, SynEditMouseCmds, SynEditPlugins,
|
||||||
SynEditPointClasses, SynEditRegexSearch, SynEditSearch, SynEditStrConst, SynEditTextBase,
|
SynEditPointClasses, SynEditRegexSearch, SynEditSearch, SynEditStrConst,
|
||||||
SynEditTextBuffer, SynEditTextDoubleWidthChars, SynEditTextTabExpander, SynEditTextTrimmer,
|
SynEditTextBase, SynEditTextBuffer, SynEditTextDoubleWidthChars,
|
||||||
SynEditTypes, SynExportHTML, SynGutter, SynGutterBase, SynGutterChanges,
|
SynEditTextTabExpander, SynEditTextTrimmer, SynEditTypes, SynExportHTML,
|
||||||
SynGutterCodeFolding, SynGutterLineNumber, SynGutterLineOverview, SynGutterMarks,
|
SynGutter, SynGutterBase, SynGutterChanges, SynGutterCodeFolding,
|
||||||
|
SynGutterLineNumber, SynGutterLineOverview, SynGutterMarks,
|
||||||
SynHighlighterAny, SynHighlighterCpp, SynHighlighterCss, SynHighlighterDiff,
|
SynHighlighterAny, SynHighlighterCpp, SynHighlighterCss, SynHighlighterDiff,
|
||||||
SynHighlighterHashEntries, SynHighlighterHTML, SynHighlighterJava, SynHighlighterJScript,
|
SynHighlighterHashEntries, SynHighlighterHTML, SynHighlighterJava,
|
||||||
SynHighlighterLFM, SynHighlighterMulti, SynHighlighterPas, SynHighlighterPerl,
|
SynHighlighterJScript, SynHighlighterLFM, SynHighlighterMulti,
|
||||||
SynHighlighterPHP, SynHighlighterPosition, SynHighlighterPython, SynHighlighterSQL,
|
SynHighlighterPas, SynHighlighterPerl, SynHighlighterPHP,
|
||||||
SynHighlighterTeX, synhighlighterunixshellscript, SynHighlighterVB, SynHighlighterXML,
|
SynHighlighterPosition, SynHighlighterPython, SynHighlighterSQL,
|
||||||
SynMacroRecorder, SynMemo, SynPluginSyncroEdit, SynPluginSyncronizedEditBase,
|
SynHighlighterTeX, synhighlighterunixshellscript, SynHighlighterVB,
|
||||||
SynPluginTemplateEdit, SynPropertyEditObjectList, SynRegExpr, SynTextDrawer,
|
SynHighlighterXML, SynMacroRecorder, SynMemo, SynPluginSyncroEdit,
|
||||||
SynEditMarkupGutterMark, SynHighlighterBat, SynHighlighterIni, SynEditMarkupSpecialChar,
|
SynPluginSyncronizedEditBase, SynPluginTemplateEdit,
|
||||||
LazSynEditText, LazSynTextArea, LazarusPackageIntf;
|
SynPropertyEditObjectList, SynRegExpr, SynTextDrawer,
|
||||||
|
SynEditMarkupGutterMark, SynHighlighterBat, SynHighlighterIni,
|
||||||
|
SynEditMarkupSpecialChar, LazarusPackageIntf;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
|
@ -60,7 +60,9 @@ type
|
|||||||
fpdefChainNeedsUpdate,
|
fpdefChainNeedsUpdate,
|
||||||
fpdefCaptionNeedsUpdate,
|
fpdefCaptionNeedsUpdate,
|
||||||
fpdefValueControlsNeedsUpdate,
|
fpdefValueControlsNeedsUpdate,
|
||||||
fpdefInheritedControlsNeedsUpdate
|
fpdefInheritedControlsNeedsUpdate,
|
||||||
|
fpdefTopicSettingUp,
|
||||||
|
fpdefTopicNeedsUpdate
|
||||||
);
|
);
|
||||||
TFPDocEditorFlags = set of TFPDocEditorFlag;
|
TFPDocEditorFlags = set of TFPDocEditorFlag;
|
||||||
|
|
||||||
@ -185,10 +187,10 @@ type
|
|||||||
procedure DoEditorUpdate(Sender: TObject);
|
procedure DoEditorUpdate(Sender: TObject);
|
||||||
private
|
private
|
||||||
FLastTopicControl: TControl;
|
FLastTopicControl: TControl;
|
||||||
FInTopicSetup: Boolean;
|
|
||||||
FCurrentTopic: String;
|
FCurrentTopic: String;
|
||||||
procedure FillTopicCombo;
|
procedure UpdateTopicCombo;
|
||||||
function TopicDocFile(CreateIfNoExists: Boolean = False): TLazFPDocFile;
|
procedure ClearTopicControls;
|
||||||
|
function TopicDocFile(CreateIfNotExists: Boolean = False): TLazFPDocFile;
|
||||||
public
|
public
|
||||||
procedure Reset;
|
procedure Reset;
|
||||||
procedure InvalidateChain;
|
procedure InvalidateChain;
|
||||||
@ -291,8 +293,6 @@ begin
|
|||||||
InsertURLTagSpeedButton.LoadGlyphFromLazarusResource('formatunderline');
|
InsertURLTagSpeedButton.LoadGlyphFromLazarusResource('formatunderline');
|
||||||
SaveButton.LoadGlyphFromLazarusResource('laz_save');
|
SaveButton.LoadGlyphFromLazarusResource('laz_save');
|
||||||
|
|
||||||
FInTopicSetup := false;
|
|
||||||
|
|
||||||
SourceEditorManagerIntf.RegisterChangeEvent(semEditorActivate, @DoEditorUpdate);
|
SourceEditorManagerIntf.RegisterChangeEvent(semEditorActivate, @DoEditorUpdate);
|
||||||
SourceEditorManagerIntf.RegisterChangeEvent(semEditorStatus, @DoEditorUpdate);
|
SourceEditorManagerIntf.RegisterChangeEvent(semEditorStatus, @DoEditorUpdate);
|
||||||
end;
|
end;
|
||||||
@ -443,6 +443,8 @@ begin
|
|||||||
UpdateValueControls
|
UpdateValueControls
|
||||||
else if fpdefInheritedControlsNeedsUpdate in FFlags then
|
else if fpdefInheritedControlsNeedsUpdate in FFlags then
|
||||||
UpdateInheritedControls
|
UpdateInheritedControls
|
||||||
|
else if fpdefTopicNeedsUpdate in FFlags then
|
||||||
|
UpdateTopicCombo
|
||||||
else
|
else
|
||||||
Done:=true;
|
Done:=true;
|
||||||
end;
|
end;
|
||||||
@ -522,7 +524,7 @@ begin
|
|||||||
DFile.CreateModuleTopic(NewTopicNameEdit.Text);
|
DFile.CreateModuleTopic(NewTopicNameEdit.Text);
|
||||||
CodeHelpBoss.SaveFPDocFile(DFile);
|
CodeHelpBoss.SaveFPDocFile(DFile);
|
||||||
end;
|
end;
|
||||||
FillTopicCombo;
|
UpdateTopicCombo;
|
||||||
TopicListBox.ItemIndex := TopicListBox.Items.IndexOf(NewTopicNameEdit.Text);
|
TopicListBox.ItemIndex := TopicListBox.Items.IndexOf(NewTopicNameEdit.Text);
|
||||||
TopicListBoxClick(Sender);
|
TopicListBoxClick(Sender);
|
||||||
end;
|
end;
|
||||||
@ -598,7 +600,7 @@ end;
|
|||||||
procedure TFPDocEditor.TopicDescrChange(Sender: TObject);
|
procedure TFPDocEditor.TopicDescrChange(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
if fpdefReading in FFlags then exit;
|
if fpdefReading in FFlags then exit;
|
||||||
if FInTopicSetup then exit;
|
if fpdefTopicSettingUp in FFlags then exit;
|
||||||
Modified := True;
|
Modified := True;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -611,12 +613,7 @@ begin
|
|||||||
if (FCurrentTopic <> '') and Modified then
|
if (FCurrentTopic <> '') and Modified then
|
||||||
Save;
|
Save;
|
||||||
|
|
||||||
FInTopicSetup := True;
|
ClearTopicControls;
|
||||||
TopicShort.Clear;
|
|
||||||
TopicDescr.Clear;
|
|
||||||
TopicShort.Enabled := False;
|
|
||||||
TopicDescr.Enabled := False;
|
|
||||||
FInTopicSetup := false;
|
|
||||||
|
|
||||||
FCurrentTopic := '';
|
FCurrentTopic := '';
|
||||||
if TopicListBox.ItemIndex < 0 then exit;
|
if TopicListBox.ItemIndex < 0 then exit;
|
||||||
@ -627,7 +624,8 @@ begin
|
|||||||
if Node = nil then exit;
|
if Node = nil then exit;
|
||||||
FCurrentTopic := TopicListBox.Items[TopicListBox.ItemIndex];
|
FCurrentTopic := TopicListBox.Items[TopicListBox.ItemIndex];
|
||||||
|
|
||||||
FInTopicSetup := True;
|
Include(FFlags,fpdefTopicSettingUp);
|
||||||
|
try
|
||||||
Child := Node.FindNode('short');
|
Child := Node.FindNode('short');
|
||||||
if Child <> nil then
|
if Child <> nil then
|
||||||
TopicShort.Text := DFile.GetChildValuesAsString(Child);
|
TopicShort.Text := DFile.GetChildValuesAsString(Child);
|
||||||
@ -637,7 +635,9 @@ begin
|
|||||||
TopicShort.Enabled := True;
|
TopicShort.Enabled := True;
|
||||||
TopicDescr.Enabled := True;
|
TopicDescr.Enabled := True;
|
||||||
TopicShort.SetFocus;
|
TopicShort.SetFocus;
|
||||||
FInTopicSetup := false;
|
finally
|
||||||
|
Exclude(FFlags,fpdefTopicSettingUp);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TFPDocEditor.GetContextTitle(Element: TCodeHelpElement): string;
|
function TFPDocEditor.GetContextTitle(Element: TCodeHelpElement): string;
|
||||||
@ -656,6 +656,19 @@ begin
|
|||||||
Result:=nil;
|
Result:=nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TFPDocEditor.ClearTopicControls;
|
||||||
|
begin
|
||||||
|
Include(FFlags, fpdefTopicSettingUp);
|
||||||
|
try
|
||||||
|
TopicShort.Clear;
|
||||||
|
TopicDescr.Clear;
|
||||||
|
TopicShort.Enabled := False;
|
||||||
|
TopicDescr.Enabled := False;
|
||||||
|
finally
|
||||||
|
Exclude(FFlags, fpdefTopicSettingUp);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
function TFPDocEditor.GetDocFile: TLazFPDocFile;
|
function TFPDocEditor.GetDocFile: TLazFPDocFile;
|
||||||
begin
|
begin
|
||||||
Result:=nil;
|
Result:=nil;
|
||||||
@ -1043,39 +1056,42 @@ begin
|
|||||||
UpdateFPDocEditor(SrcEdit.FileName, CaretPos);
|
UpdateFPDocEditor(SrcEdit.FileName, CaretPos);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TFPDocEditor.FillTopicCombo;
|
procedure TFPDocEditor.UpdateTopicCombo;
|
||||||
var
|
var
|
||||||
c, i: LongInt;
|
c, i: LongInt;
|
||||||
DFile: TLazFPDocFile;
|
DFile: TLazFPDocFile;
|
||||||
|
Topics: TStringList;
|
||||||
begin
|
begin
|
||||||
|
Exclude(FFlags,fpdefTopicNeedsUpdate);
|
||||||
|
Topics:=TStringList.Create;
|
||||||
|
try
|
||||||
FCurrentTopic := '';
|
FCurrentTopic := '';
|
||||||
FInTopicSetup := True;
|
ClearTopicControls;
|
||||||
TopicListBox.Clear;
|
|
||||||
TopicShort.Clear;
|
|
||||||
TopicDescr.Clear;
|
|
||||||
TopicShort.Enabled := False;
|
|
||||||
TopicDescr.Enabled := False;
|
|
||||||
FInTopicSetup := false;
|
|
||||||
Dfile := TopicDocFile;
|
Dfile := TopicDocFile;
|
||||||
if not assigned(DFile) then exit;
|
if not assigned(DFile) then exit;
|
||||||
c := DFile.GetModuleTopicCount;
|
c := DFile.GetModuleTopicCount;
|
||||||
for i := 0 to c - 1 do begin
|
for i := 0 to c - 1 do
|
||||||
TopicListBox.Items.Add(DFile.GetModuleTopicName(i));
|
Topics.Add(DFile.GetModuleTopicName(i));
|
||||||
|
finally
|
||||||
|
TopicListBox.Items.Assign(Topics);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TFPDocEditor.TopicDocFile(CreateIfNoExists: Boolean): TLazFPDocFile;
|
function TFPDocEditor.TopicDocFile(CreateIfNotExists: Boolean): TLazFPDocFile;
|
||||||
var
|
var
|
||||||
CacheWasUsed : Boolean;
|
CacheWasUsed : Boolean;
|
||||||
AnOwner: TObject;
|
AnOwner: TObject;
|
||||||
DFileName: String;
|
DFileName: String;
|
||||||
begin
|
begin
|
||||||
|
Result := nil;
|
||||||
if assigned(DocFile) then
|
if assigned(DocFile) then
|
||||||
Result := DocFile
|
Result := DocFile
|
||||||
else begin
|
else begin
|
||||||
DFileName := CodeHelpBoss.GetFPDocFilenameForSource(SourceFilename, true, CacheWasUsed, AnOwner, CreateIfNoExists);
|
DFileName := CodeHelpBoss.GetFPDocFilenameForSource(SourceFilename, true,
|
||||||
if (DFileName = '') or
|
CacheWasUsed, AnOwner, CreateIfNotExists);
|
||||||
(CodeHelpBoss.LoadFPDocFile(DFileName, [chofUpdateFromDisk], Result, CacheWasUsed) <> chprSuccess)
|
if (DFileName = '')
|
||||||
|
or (CodeHelpBoss.LoadFPDocFile(DFileName, [chofUpdateFromDisk], Result,
|
||||||
|
CacheWasUsed) <> chprSuccess)
|
||||||
then
|
then
|
||||||
Result := nil;
|
Result := nil;
|
||||||
end;
|
end;
|
||||||
@ -1097,6 +1113,7 @@ begin
|
|||||||
SeeAlsoMemo.Clear;
|
SeeAlsoMemo.Clear;
|
||||||
ErrorsMemo.Clear;
|
ErrorsMemo.Clear;
|
||||||
ExampleEdit.Clear;
|
ExampleEdit.Clear;
|
||||||
|
ClearTopicControls;
|
||||||
for i:=Low(TFPDocItem) to high(TFPDocItem) do
|
for i:=Low(TFPDocItem) to high(TFPDocItem) do
|
||||||
FOldVisualValues[i]:='';
|
FOldVisualValues[i]:='';
|
||||||
|
|
||||||
@ -1136,7 +1153,7 @@ begin
|
|||||||
fSourceFilename:=NewSrcFilename;
|
fSourceFilename:=NewSrcFilename;
|
||||||
|
|
||||||
Reset;
|
Reset;
|
||||||
FillTopicCombo;
|
Include(FFlags,fpdefTopicNeedsUpdate);
|
||||||
InvalidateChain;
|
InvalidateChain;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user