IDE: src editor: fixed adding dynamic menu items

git-svn-id: trunk@12543 -
This commit is contained in:
mattias 2007-10-21 13:00:58 +00:00
parent adf0df7012
commit 9f455244c8
2 changed files with 117 additions and 105 deletions

View File

@ -3761,7 +3761,7 @@ var
MarkSrcEdit: TSourceEditor;
MarkDesc: String;
MarkEditorIndex: Integer;
MarkMenuItem: TMenuItem;
MarkMenuItem: TIDEMenuItem;
EditorComp: TSynEdit;
Marks: PSourceMark;
MarkCount: integer;
@ -3772,12 +3772,23 @@ var
SelAvailAndWritable: Boolean;
CurFilename: String;
begin
//SourceEditorMenuRoot.WriteDebugReport('TSourceNotebook.SrcPopUpMenuPopup START ',true);
//SourceEditorMenuRoot.ConsistencyCheck;
SourceEditorMenuRoot.BeginUpdate;
try
RemoveUserDefinedMenuItems;
RemoveContextMenuItems;
ASrcEdit:=
FindSourceEditorWithEditorComponent(TPopupMenu(Sender).PopupComponent);
if ASrcEdit=nil then exit;
if ASrcEdit=nil then begin
ASrcEdit:=GetActiveSE;
if ASrcEdit=nil then begin
DebugLn(['TSourceNotebook.SrcPopUpMenuPopup ASrcEdit=nil ',dbgsName(TPopupMenu(Sender).PopupComponent)]);
exit;
end;
end;
EditorComp:=ASrcEdit.EditorComponent;
// Readonly, ShowLineNumbers
@ -3797,12 +3808,14 @@ begin
+' ('+IntToStr(BookMarkY)+','+IntToStr(BookMarkX)+')';
end;
// goto book mark item
MarkMenuItem:=SrcEditSubMenuGotoBookmarks.MenuItem[BookMarkID];
MarkMenuItem.Checked:=(MarkSrcEdit<>nil);
MarkMenuItem:=SrcEditSubMenuGotoBookmarks[BookMarkID];
if MarkMenuItem is TIDEMenuCommand then
TIDEMenuCommand(MarkMenuItem).Checked:=(MarkSrcEdit<>nil);
MarkMenuItem.Caption:=uemBookmarkN+MarkDesc;
// set book mark item
MarkMenuItem:=SrcEditSubMenuSetBookmarks.MenuItem[BookMarkID];
MarkMenuItem.Checked:=(MarkSrcEdit<>nil);
MarkMenuItem:=SrcEditSubMenuSetBookmarks[BookMarkID];
if MarkMenuItem is TIDEMenuCommand then
TIDEMenuCommand(MarkMenuItem).Checked:=(MarkSrcEdit<>nil);
MarkMenuItem.Caption:=uemSetBookmark+MarkDesc;
end;
@ -3817,12 +3830,12 @@ begin
// user clicked on text
SelAvail:=ASrcEdit.EditorComponent.SelAvail;
SelAvailAndWritable:=SelAvail and (not ASrcEdit.ReadOnly);
SrcEditMenuEncloseSelection.MenuItem.Enabled := SelAvailAndWritable;
SrcEditMenuExtractProc.MenuItem.Enabled := SelAvailAndWritable;
SrcEditMenuInvertAssignment.MenuItem.Enabled := SelAvailAndWritable;
SrcEditMenuFindIdentifierReferences.MenuItem.Enabled:=
SrcEditMenuEncloseSelection.Enabled := SelAvailAndWritable;
SrcEditMenuExtractProc.Enabled := SelAvailAndWritable;
SrcEditMenuInvertAssignment.Enabled := SelAvailAndWritable;
SrcEditMenuFindIdentifierReferences.Enabled:=
IsValidIdent(ASrcEdit.GetWordAtCurrentCaret);
SrcEditMenuRenameIdentifier.MenuItem.Enabled:=
SrcEditMenuRenameIdentifier.Enabled:=
IsValidIdent(ASrcEdit.GetWordAtCurrentCaret)
and (not ASrcEdit.ReadOnly);
end else begin
@ -3875,7 +3888,11 @@ begin
if Assigned(OnPopupMenu) then OnPopupMenu(@AddContextPopupMenuItem);
SourceEditorMenuRoot.NotifySubSectionOnShow(Self);
//SourceEditorMenuRoot.WriteDebugReport(' ',true);
finally
SourceEditorMenuRoot.EndUpdate;
end;
//SourceEditorMenuRoot.WriteDebugReport('TSourceNotebook.SrcPopUpMenuPopup END ',true);
//SourceEditorMenuRoot.ConsistencyCheck;
end;
procedure TSourceNotebook.NotebookShowTabHint(Sender: TObject;
@ -4035,12 +4052,8 @@ end;
function TSourceNotebook.AddContextPopupMenuItem(const NewCaption: string;
const NewEnabled: boolean; const NewOnClick: TNotifyEvent): TIDEMenuItem;
begin
//DebugLn(['TSourceNotebook.AddContextPopupMenuItem ',NewCaption]);
Result:=RegisterIDEMenuCommand(SrcEditMenuSectionFileDynamic.GetPath,
'FileDynamic',NewCaption,NewOnClick);
//DebugLn(['TSourceNotebook.AddContextPopupMenuItem CHECKING CONSISTENCY']);
//SourceEditorMenuRoot.WriteDebugReport('',true);
//SourceEditorMenuRoot.ConsistencyCheck;
Result.Enabled:=NewEnabled;
end;

View File

@ -691,7 +691,6 @@ begin
//debugln('TIDEMenuItem.CreateMenuItem ',dbgsName(Self),' Name="',Name,'"');
{$ENDIF}
MenuItem:=MenuItemClass.Create(nil);
MenuItem.AddHandlerOnDestroy(@MenuItemDestroy);
AutoFreeMenuItem:=true;
end;