Two new toolbar commands for bookmarks. Issue #0033947 Patch by FTurtle
git-svn-id: trunk@58500 -
6
.gitattributes
vendored
@ -7875,6 +7875,9 @@ images/menu/menu_goto_bookmark8_200.png -text
|
||||
images/menu/menu_goto_bookmark9.png -text
|
||||
images/menu/menu_goto_bookmark9_150.png -text
|
||||
images/menu/menu_goto_bookmark9_200.png -text
|
||||
images/menu/menu_goto_bookmarks.png -text
|
||||
images/menu/menu_goto_bookmarks_150.png -text
|
||||
images/menu/menu_goto_bookmarks_200.png -text
|
||||
images/menu/menu_goto_line.png -text svneol=unset#image/png
|
||||
images/menu/menu_goto_line_150.png -text
|
||||
images/menu/menu_goto_line_200.png -text
|
||||
@ -8066,6 +8069,9 @@ images/menu/menu_toggle_bookmark8_200.png -text
|
||||
images/menu/menu_toggle_bookmark9.png -text
|
||||
images/menu/menu_toggle_bookmark9_150.png -text
|
||||
images/menu/menu_toggle_bookmark9_200.png -text
|
||||
images/menu/menu_toggle_bookmarks.png -text
|
||||
images/menu/menu_toggle_bookmarks_150.png -text
|
||||
images/menu/menu_toggle_bookmarks_200.png -text
|
||||
images/menu/menu_tool_check_lfm.png -text svneol=unset#image/png
|
||||
images/menu/menu_tool_check_lfm_150.png -text
|
||||
images/menu/menu_tool_check_lfm_200.png -text
|
||||
|
||||
@ -253,6 +253,8 @@ const
|
||||
ecClearBookmarkForFile = ecFirstLazarus + 384;
|
||||
ecClearAllBookmark = ecFirstLazarus + 385;
|
||||
|
||||
ecGotoBookmarks = ecFirstLazarus + 386;
|
||||
ecToggleBookmarks = ecFirstLazarus + 387;
|
||||
|
||||
// Macro
|
||||
ecSynMacroRecord = ecFirstLazarus + 390;
|
||||
@ -1922,7 +1924,7 @@ begin
|
||||
end;
|
||||
|
||||
const
|
||||
IDEEditorCommandStrs: array[0..317] of TIdentMapEntry = (
|
||||
IDEEditorCommandStrs: array[0..319] of TIdentMapEntry = (
|
||||
// search
|
||||
(Value: ecFind; Name: 'ecFind'),
|
||||
(Value: ecFindAgain; Name: 'ecFindAgain'),
|
||||
@ -2118,6 +2120,8 @@ const
|
||||
(Value: ecNextBookmark; Name: 'ecNextBookmark'),
|
||||
(Value: ecClearBookmarkForFile; Name: 'ecClearBookmarkForFile'),
|
||||
(Value: ecClearAllBookmark; Name: 'ecClearAllBookmark'),
|
||||
(Value: ecGotoBookmarks; Name: 'ecGotoBookmarks'),
|
||||
(Value: ecToggleBookmarks; Name: 'ecToggleBookmarks'),
|
||||
|
||||
// Macro
|
||||
(Value: ecSynMacroRecord; Name: 'ecSynMacroRecord'),
|
||||
|
||||
@ -589,6 +589,8 @@ type
|
||||
SearchFor, ReplaceText: string; Flags: TSrcEditSearchOptions;
|
||||
var Prompt: boolean; Progress: TIDESearchInTextProgress = nil): TModalResult;
|
||||
|
||||
TBookmarkNumRange = 0..9;
|
||||
|
||||
var
|
||||
IDESearchInText: TIDESearchInTextFunction = nil;// set by the IDE
|
||||
|
||||
|
||||
@ -16,7 +16,8 @@ unit ToolBarIntf;
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, Controls, ComCtrls, IDECommands, MenuIntf;
|
||||
Classes, SysUtils, Controls, ComCtrls, IDECommands, MenuIntf, IDEImagesIntf,
|
||||
SrcEditorIntf, Menus, Forms;
|
||||
|
||||
type
|
||||
TIDEToolButton = class;
|
||||
@ -60,6 +61,36 @@ type
|
||||
property Item: TIDEButtonCommand read FItem write FItem;
|
||||
end;
|
||||
|
||||
{ TIDEToolButtonWithArrow }
|
||||
|
||||
TIDEToolButtonWithArrow = class(TIDEToolButton)
|
||||
protected
|
||||
procedure AddMenuItem(ACommand: TIDEMenuCommand); virtual;
|
||||
procedure AddMenuItems(ACommands: array of TIDEMenuCommand);
|
||||
procedure DoOnMenuItemClick(Sender: TObject);
|
||||
procedure DoOnMenuPopup(Sender: TObject);
|
||||
procedure RefreshMenu; virtual;
|
||||
public
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
end;
|
||||
|
||||
{ TIDEToolButton_ButtonDrop }
|
||||
|
||||
TIDEToolButton_ButtonDrop = class(TIDEToolButtonWithArrow)
|
||||
protected
|
||||
procedure PopUpAloneMenu;
|
||||
public
|
||||
procedure DoOnAdded; override;
|
||||
end;
|
||||
|
||||
{ TIDEToolButton_DropDown }
|
||||
|
||||
TIDEToolButton_DropDown = class(TIDEToolButtonWithArrow)
|
||||
public
|
||||
procedure DoOnAdded; override;
|
||||
end;
|
||||
|
||||
|
||||
TIDEToolButtonCategory = class
|
||||
private
|
||||
FButtons: TFPList;
|
||||
@ -155,6 +186,93 @@ begin
|
||||
Result := IDEToolButtonCategories.AddButton(aCommand);
|
||||
end;
|
||||
|
||||
{ TIDEToolButtonWithArrow }
|
||||
|
||||
constructor TIDEToolButtonWithArrow.Create(AOwner: TComponent);
|
||||
begin
|
||||
inherited Create(AOwner);
|
||||
DropdownMenu := TPopupMenu.Create(Self);
|
||||
DropdownMenu.Images := IDEImages.Images_16;
|
||||
DropdownMenu.OnPopup := @DoOnMenuPopup;
|
||||
end;
|
||||
|
||||
procedure TIDEToolButtonWithArrow.AddMenuItem(ACommand: TIDEMenuCommand);
|
||||
var
|
||||
Itm: TMenuItem;
|
||||
begin
|
||||
Itm := TMenuItem.Create(DropdownMenu);
|
||||
Itm.Caption := ACommand.Caption;
|
||||
Itm.ShortCut := ACommand.Command.AsShortCut;
|
||||
Itm.ImageIndex := ACommand.ImageIndex;
|
||||
Itm.Enabled := ACommand.Enabled;
|
||||
Itm.OnClick := @DoOnMenuItemClick;
|
||||
Itm.Tag := PtrInt(ACommand);
|
||||
DropdownMenu.Items.Add(Itm);
|
||||
end;
|
||||
|
||||
procedure TIDEToolButtonWithArrow.AddMenuItems(ACommands: array of TIDEMenuCommand);
|
||||
var
|
||||
Cmd: TIDEMenuCommand;
|
||||
begin
|
||||
for Cmd in ACommands do
|
||||
AddMenuItem(Cmd);
|
||||
end;
|
||||
|
||||
procedure TIDEToolButtonWithArrow.DoOnMenuPopup(Sender: TObject);
|
||||
begin
|
||||
DropdownMenu.Items.Clear;
|
||||
RefreshMenu;
|
||||
end;
|
||||
|
||||
procedure TIDEToolButtonWithArrow.RefreshMenu;
|
||||
begin
|
||||
{ Override this method in descendants.
|
||||
DropdownMenu fully regenerates for every showing on OnPopup event.
|
||||
So, RefreshMenu calling happens:
|
||||
- On click to arrow (Style=tbsDropDown)
|
||||
- On click to button (Style=tbsButtonDrop)
|
||||
- On popup alone menu in static methods (on shortcuts)
|
||||
of TIDEToolButton_ButtonDrop descendants (Style is not matter)
|
||||
At calling time:
|
||||
- Instance of DropdownMenu exists
|
||||
- DropdownMenu is empty }
|
||||
end;
|
||||
|
||||
procedure TIDEToolButtonWithArrow.DoOnMenuItemClick(Sender: TObject);
|
||||
var
|
||||
Cmd: TIDEMenuCommand;
|
||||
begin
|
||||
Cmd:=TIDEMenuCommand((Sender as TMenuItem).Tag);
|
||||
Cmd.DoOnClick; // Sender in handler should be a command but not a menu item
|
||||
end;
|
||||
|
||||
{ TIDEToolButton_ButtonDrop }
|
||||
|
||||
procedure TIDEToolButton_ButtonDrop.DoOnAdded;
|
||||
begin
|
||||
Style := tbsButtonDrop; // not in constructor
|
||||
end;
|
||||
|
||||
procedure TIDEToolButton_ButtonDrop.PopUpAloneMenu;
|
||||
var
|
||||
ActiveEditor: TSourceEditorInterface;
|
||||
ScreenXY: TPoint;
|
||||
begin
|
||||
ActiveEditor := SourceEditorManagerIntf.ActiveEditor;
|
||||
if ActiveEditor=nil then
|
||||
Exit;
|
||||
ScreenXY := ActiveEditor.EditorControl.ClientToScreen(Point(0, 0));
|
||||
|
||||
DropdownMenu.PopUp(ScreenXY.X, ScreenXY.Y);
|
||||
end;
|
||||
|
||||
{ TIDEToolButton_DropDown }
|
||||
|
||||
procedure TIDEToolButton_DropDown.DoOnAdded;
|
||||
begin
|
||||
Style := tbsDropDown; // not in constructor
|
||||
end;
|
||||
|
||||
{ TIDEToolButtonsEnumerator }
|
||||
|
||||
constructor TIDEToolButtonsEnumerator.Create(AButtons: TIDEToolButtons);
|
||||
|
||||
@ -36,7 +36,7 @@ uses
|
||||
// SynEdit
|
||||
SynEdit, SynHighlighterPas, SynPluginMultiCaret,
|
||||
// IdeIntf
|
||||
IDEOptionsIntf, IDEOptEditorIntf, IDEUtils,
|
||||
IDEOptionsIntf, IDEOptEditorIntf, IDEUtils, SrcEditorIntf,
|
||||
// IDE
|
||||
EditorOptions, LazarusIDEStrConsts, IDEProcs;
|
||||
|
||||
@ -408,7 +408,7 @@ begin
|
||||
FDefaultBookmarkImages := TImageList.Create(Self);
|
||||
FDefaultBookmarkImages.Width := 11;
|
||||
FDefaultBookmarkImages.Height := 11;
|
||||
for i := 0 to 9 do
|
||||
for i in TBookmarkNumRange do
|
||||
FDefaultBookmarkImages.AddResourceName(HInstance, 'bookmark' + IntToStr(i));
|
||||
end;
|
||||
Result := FDefaultBookmarkImages;
|
||||
|
||||
@ -33,7 +33,7 @@ uses
|
||||
// SynEdit
|
||||
SynEdit, SynBeautifier, SynHighlighterPas, SynEditKeyCmds,
|
||||
// IdeIntf
|
||||
IDEOptionsIntf, IDEOptEditorIntf, IDEUtils,
|
||||
IDEOptionsIntf, IDEOptEditorIntf, IDEUtils, SrcEditorIntf,
|
||||
// IDE
|
||||
EditorOptions, LazarusIDEStrConsts, IDEProcs, KeyMapping,
|
||||
editor_keymapping_options, editor_general_options;
|
||||
@ -662,7 +662,7 @@ begin
|
||||
FDefaultBookmarkImages := TImageList.Create(Self);
|
||||
FDefaultBookmarkImages.Width := 11;
|
||||
FDefaultBookmarkImages.Height := 11;
|
||||
for i := 0 to 9 do
|
||||
for i in TBookmarkNumRange do
|
||||
FDefaultBookmarkImages.AddResourceName(HInstance, 'bookmark' + IntToStr(i));
|
||||
end;
|
||||
Result := FDefaultBookmarkImages;
|
||||
|
||||
@ -442,7 +442,8 @@ begin
|
||||
ecSetMarker9 : Result:= Format(srkmecSetMarker,[cmd-ecSetMarker0]);
|
||||
ecToggleMarker0 ..
|
||||
ecToggleMarker9 : Result:= Format(srkmecToggleMarker,[cmd-ecToggleMarker0]);
|
||||
|
||||
ecGotoBookmarks : Result:= uemGotoBookmarks;
|
||||
ecToggleBookmarks : Result:= uemToggleBookmarks;
|
||||
ecBlockSetBegin : Result := srkmecBlockSetBegin;
|
||||
ecBlockSetEnd : Result := srkmecBlockSetEnd;
|
||||
ecBlockToggleHide : Result := srkmecBlockToggleHide;
|
||||
@ -1159,6 +1160,8 @@ begin
|
||||
ecSetMarker7: SetSingle(VK_UNKNOWN,[]);
|
||||
ecSetMarker8: SetSingle(VK_UNKNOWN,[]);
|
||||
ecSetMarker9: SetSingle(VK_UNKNOWN,[]);
|
||||
ecGotoBookmarks: SetSingle(VK_B,[ssCtrl]);
|
||||
ecToggleBookmarks: SetSingle(VK_B,[ssCtrl,ssShift]);
|
||||
|
||||
// codetools
|
||||
ecAutoCompletion: SetSingle(VK_J,[XCtrl]);
|
||||
@ -1685,6 +1688,8 @@ begin
|
||||
EcFoldCurrent: SetSingle(VK_OEM_PLUS,[ssAlt,ssShift]);
|
||||
EcUnFoldCurrent: SetSingle(VK_OEM_MINUS,[ssAlt,ssShift]);
|
||||
EcToggleMarkupWord: SetSingle(VK_M,[ssAlt]);
|
||||
ecGotoBookmarks: SetSingle(VK_B,[ssCtrl]);
|
||||
ecToggleBookmarks: SetSingle(VK_B,[ssCtrl,ssShift]);
|
||||
|
||||
// file menu
|
||||
ecNew: SetSingle(VK_UNKNOWN,[]);
|
||||
@ -2311,6 +2316,9 @@ begin
|
||||
EcToggleMarkupWord: SetSingle(VK_M,[ssMeta]);
|
||||
*)
|
||||
|
||||
ecGotoBookmarks: SetSingle(VK_UNKNOWN,[]);
|
||||
ecToggleBookmarks: SetSingle(VK_UNKNOWN,[]);
|
||||
|
||||
// file menu
|
||||
ecNew: SetSingle(VK_N,[ssMeta]);
|
||||
ecNewUnit: SetSingle(VK_UNKNOWN,[]);
|
||||
@ -2814,6 +2822,7 @@ begin
|
||||
AddDefault(C, 'Clear all Bookmarks', srkmecClearAllBookmark, ecClearAllBookmark);
|
||||
AddDefault(C, 'Previous Bookmark', srkmecPrevBookmark, ecPrevBookmark);
|
||||
AddDefault(C, 'Next Bookmark', srkmecNextBookmark, ecNextBookmark);
|
||||
AddDefault(C, 'Go to Bookmark...', uemGotoBookmarks, ecGotoBookmarks);
|
||||
AddDefault(C, 'Go to marker 0', lisKMGoToMarker0, ecGotoMarker0);
|
||||
AddDefault(C, 'Go to marker 1', lisKMGoToMarker1, ecGotoMarker1);
|
||||
AddDefault(C, 'Go to marker 2', lisKMGoToMarker2, ecGotoMarker2);
|
||||
@ -2834,6 +2843,7 @@ begin
|
||||
AddDefault(C, 'Set marker 7', lisKMSetMarker7, ecSetMarker7);
|
||||
AddDefault(C, 'Set marker 8', lisKMSetMarker8, ecSetMarker8);
|
||||
AddDefault(C, 'Set marker 9', lisKMSetMarker9, ecSetMarker9);
|
||||
AddDefault(C, 'Toggle Bookmark...', uemToggleBookmarks, ecToggleBookmarks);
|
||||
AddDefault(C, 'Toggle marker 0', lisKMToggleMarker0, ecToggleMarker0);
|
||||
AddDefault(C, 'Toggle marker 1', lisKMToggleMarker1, ecToggleMarker1);
|
||||
AddDefault(C, 'Toggle marker 2', lisKMToggleMarker2, ecToggleMarker2);
|
||||
|
||||
@ -2834,6 +2834,7 @@ resourcestring
|
||||
uemCopyFilename = 'Copy Filename';
|
||||
lisCopyFilename = 'Copy Filename %s';
|
||||
uemGotoBookmark = '&Goto Bookmark';
|
||||
uemGotoBookmarks = 'Goto Bookmark...';
|
||||
uemSetFreeBookmark = 'Set a Free Bookmark';
|
||||
uemNextBookmark = 'Goto Next Bookmark';
|
||||
uemPrevBookmark = 'Goto Previous Bookmark';
|
||||
@ -2848,6 +2849,7 @@ resourcestring
|
||||
lisOpenLfm = 'Open %s';
|
||||
lisUtf8WithBOM = 'UTF-8 with BOM';
|
||||
uemToggleBookmark = '&Toggle Bookmark';
|
||||
uemToggleBookmarks = 'Toggle Bookmark...';
|
||||
uemReadOnly = 'Read Only';
|
||||
uemShowLineNumbers = 'Show Line Numbers';
|
||||
lisDisableI18NForLFM = 'Disable I18N for LFM';
|
||||
|
||||
@ -8521,7 +8521,7 @@ begin
|
||||
if not UpdateBookmarkCommandsStamp.Changed(BookmarksStamp) then
|
||||
Exit;
|
||||
|
||||
for BookMarkID:=0 to 9 do begin
|
||||
for BookMarkID in TBookmarkNumRange do begin
|
||||
MarkDesc:=' '+IntToStr(BookMarkID);
|
||||
BookmarkAvail:=False;
|
||||
i := 0;
|
||||
@ -10705,7 +10705,7 @@ var
|
||||
UInfo: TUnitInfo;
|
||||
begin
|
||||
if ID = -1 then begin
|
||||
for i := 0 to 9 do begin
|
||||
for i in TBookmarkNumRange do begin
|
||||
//b := Project1.Bookmarks[i];
|
||||
UInfo := TUnitInfo(Project1.Bookmarks.UnitInfoForBookmarkWithIndex(i));
|
||||
if UInfo <> nil then begin
|
||||
|
||||
@ -55,6 +55,7 @@ uses
|
||||
{$IFDEF IDE_MEM_CHECK}
|
||||
MemCheck,
|
||||
{$ENDIF}
|
||||
// RTL + FCL
|
||||
Classes, SysUtils, Types, Math,
|
||||
// LCL
|
||||
LCLProc, Buttons, Menus, ComCtrls, Controls, Graphics, Dialogs, Forms, ImgList,
|
||||
@ -204,12 +205,9 @@ type
|
||||
|
||||
{ TJumpToSectionToolButton }
|
||||
|
||||
TJumpToSectionToolButton = class(TIDEToolButton)
|
||||
private
|
||||
procedure AddMenuItem(aCmd: TIDEMenuCommand);
|
||||
public
|
||||
procedure DoOnAdded; override;
|
||||
procedure RefreshMenu;
|
||||
TJumpToSectionToolButton = class(TIDEToolButton_DropDown)
|
||||
protected
|
||||
procedure RefreshMenu; override;
|
||||
end;
|
||||
|
||||
{ TSetBuildModeToolButton }
|
||||
@ -599,37 +597,14 @@ end;
|
||||
|
||||
{ TJumpToSectionToolButton }
|
||||
|
||||
procedure TJumpToSectionToolButton.DoOnAdded;
|
||||
begin
|
||||
inherited DoOnAdded;
|
||||
RefreshMenu;
|
||||
end;
|
||||
|
||||
procedure TJumpToSectionToolButton.AddMenuItem(aCmd: TIDEMenuCommand);
|
||||
var
|
||||
xItem: TMenuItem;
|
||||
begin
|
||||
xItem := TMenuItem.Create(DropdownMenu);
|
||||
DropdownMenu.Items.Add(xItem);
|
||||
xItem.Caption := aCmd.Caption;
|
||||
xItem.OnClick := aCmd.OnClick;
|
||||
xItem.ImageIndex := aCmd.ImageIndex;
|
||||
end;
|
||||
|
||||
procedure TJumpToSectionToolButton.RefreshMenu;
|
||||
begin
|
||||
if DropdownMenu = nil then
|
||||
begin
|
||||
DropdownMenu := TPopupMenu.Create(Self);
|
||||
if Assigned(FToolBar) then
|
||||
DropdownMenu.Images := FToolBar.Images;
|
||||
Style := tbsDropDown;
|
||||
end;
|
||||
DropdownMenu.Items.Clear;
|
||||
AddMenuItem(MainIDEBar.itmJumpToInterface);
|
||||
AddMenuItem(MainIDEBar.itmJumpToInterfaceUses);
|
||||
DropdownMenu.Items.AddSeparator;
|
||||
AddMenuItem(MainIDEBar.itmJumpToImplementation);
|
||||
AddMenuItem(MainIDEBar.itmJumpToImplementationUses);
|
||||
DropdownMenu.Items.AddSeparator;
|
||||
AddMenuItem(MainIDEBar.itmJumpToInitialization);
|
||||
end;
|
||||
|
||||
|
||||
@ -1358,6 +1358,10 @@ var
|
||||
SrcEditMenuSetFreeBookmark: TIDEMenuCommand;
|
||||
SrcEditMenuClearFileBookmark: TIDEMenuCommand;
|
||||
SrcEditMenuClearAllBookmark: TIDEMenuCommand;
|
||||
SrcEditMenuGotoBookmark: array [TBookmarkNumRange] of TIDEMenuCommand;
|
||||
SrcEditMenuGotoBookmarks: TIDEMenuCommand;
|
||||
SrcEditMenuToggleBookmark: array [TBookmarkNumRange] of TIDEMenuCommand;
|
||||
SrcEditMenuToggleBookmarks: TIDEMenuCommand;
|
||||
// debugging
|
||||
SrcEditMenuToggleBreakpoint: TIDEMenuCommand;
|
||||
SrcEditMenuRunToCursor: TIDEMenuCommand;
|
||||
@ -1422,6 +1426,27 @@ var
|
||||
EnglishModifiedLGPLNotice: string;
|
||||
EnglishMITNotice: string;
|
||||
|
||||
type
|
||||
|
||||
{ TToolButton_GotoBookmarks }
|
||||
|
||||
TToolButton_GotoBookmarks = class(TIDEToolButton_ButtonDrop)
|
||||
protected
|
||||
procedure RefreshMenu; override;
|
||||
public
|
||||
class procedure ShowAloneMenu(Sender: TObject); static;
|
||||
end;
|
||||
|
||||
{ TToolButton_ToggleBookmarks }
|
||||
|
||||
TToolButton_ToggleBookmarks = class(TIDEToolButton_ButtonDrop)
|
||||
protected
|
||||
procedure RefreshMenu; override;
|
||||
public
|
||||
class procedure ShowAloneMenu(Sender: TObject); static;
|
||||
end;
|
||||
|
||||
|
||||
implementation
|
||||
|
||||
{$R *.lfm}
|
||||
@ -1657,32 +1682,56 @@ begin
|
||||
SrcEditMenuSectionMarks:=RegisterIDEMenuSection(SourceEditorMenuRoot, 'Marks section');
|
||||
// register the Goto Bookmarks Submenu
|
||||
SrcEditSubMenuGotoBookmarks:=RegisterIDESubMenu(SrcEditMenuSectionMarks,
|
||||
'Goto bookmarks',uemGotoBookmark);
|
||||
'Goto bookmarks submenu', uemGotoBookmark, nil, nil, 'menu_goto_bookmarks');
|
||||
AParent:=SrcEditSubMenuGotoBookmarks;
|
||||
for I := 0 to 9 do
|
||||
RegisterIDEMenuCommand(AParent,'GotoBookmark'+IntToStr(I),
|
||||
uemBookmarkN+IntToStr(I), nil, @ExecuteIdeMenuClick, nil, 'menu_goto_bookmark'+IntToStr(I));
|
||||
for I in TBookmarkNumRange do
|
||||
SrcEditMenuGotoBookmark[I]:=RegisterIDEMenuCommand(AParent,
|
||||
'GotoBookmark'+IntToStr(I), uemBookmarkN+IntToStr(I),
|
||||
nil, @ExecuteIdeMenuClick, nil,
|
||||
'menu_goto_bookmark'+IntToStr(I));
|
||||
|
||||
AParent:=RegisterIDEMenuSection(AParent, 'Next/Prev Bookmark section');
|
||||
SrcEditMenuNextBookmark:=RegisterIDEMenuCommand(AParent,
|
||||
'Goto next Bookmark',uemNextBookmark, nil,
|
||||
@ExecuteIdeMenuClick, nil, 'menu_search_next_bookmark');
|
||||
SrcEditMenuPrevBookmark:=RegisterIDEMenuCommand(AParent,
|
||||
'Goto previous Bookmark',uemPrevBookmark, nil,
|
||||
@ExecuteIdeMenuClick, nil, 'menu_search_previous_bookmark');
|
||||
|
||||
{For toolbar only. Hidden in menu.}
|
||||
SrcEditMenuGotoBookmarks:=RegisterIDEMenuCommand(AParent,
|
||||
'Goto bookmarks', uemGotoBookmarks,
|
||||
nil, TNotifyProcedure(@TToolButton_GotoBookmarks.ShowAloneMenu), nil,
|
||||
'menu_goto_bookmarks');
|
||||
SrcEditMenuGotoBookmarks.Visible:=False;
|
||||
{%endregion}
|
||||
|
||||
{%region *** Toggle Bookmarks Submenu ***}
|
||||
SrcEditSubMenuToggleBookmarks:=RegisterIDESubMenu(SrcEditMenuSectionMarks,
|
||||
'Toggle bookmarks',uemToggleBookmark);
|
||||
'Toggle bookmarks submenu', uemToggleBookmark, nil, nil, 'menu_toggle_bookmarks');
|
||||
AParent:=SrcEditSubMenuToggleBookmarks;
|
||||
for I := 0 to 9 do
|
||||
RegisterIDEMenuCommand(AParent, 'ToggleBookmark'+IntToStr(I),
|
||||
uemBookmarkN+IntToStr(I), nil, @ExecuteIdeMenuClick, nil, 'menu_toggle_bookmark'+IntToStr(I));
|
||||
for I in TBookmarkNumRange do
|
||||
SrcEditMenuToggleBookmark[I]:=RegisterIDEMenuCommand(AParent,
|
||||
'ToggleBookmark'+IntToStr(I), uemBookmarkN+IntToStr(I),
|
||||
nil, @ExecuteIdeMenuClick, nil,
|
||||
'menu_toggle_bookmark'+IntToStr(I));
|
||||
|
||||
AParent:=RegisterIDEMenuSection(AParent, 'Set Free Bookmark section');
|
||||
SrcEditMenuSetFreeBookmark:=RegisterIDEMenuCommand(AParent,
|
||||
'Set a free Bookmark',uemSetFreeBookmark, nil, @ExecuteIdeMenuClick, nil, 'menu_set_free_bookmark');
|
||||
|
||||
AParent:=RegisterIDEMenuSection(AParent, 'Clear Bookmarks section');
|
||||
SrcEditMenuClearFileBookmark:=RegisterIDEMenuCommand(AParent,
|
||||
'Clear Bookmark for current file',srkmecClearBookmarkForFile, nil, @ExecuteIdeMenuClick, nil, 'menu_clear_file_bookmarks');
|
||||
SrcEditMenuClearAllBookmark:=RegisterIDEMenuCommand(AParent,
|
||||
'Clear all Bookmark',srkmecClearAllBookmark, nil, @ExecuteIdeMenuClick, nil, 'menu_clear_all_bookmarks');
|
||||
|
||||
{For toolbar only. Hidden in menu.}
|
||||
SrcEditMenuToggleBookmarks:=RegisterIDEMenuCommand(AParent,
|
||||
'Toggle bookmarks', uemToggleBookmarks,
|
||||
nil, TNotifyProcedure(@TToolButton_ToggleBookmarks.ShowAloneMenu), nil,
|
||||
'menu_toggle_bookmarks');
|
||||
SrcEditMenuToggleBookmarks.Visible:=False;
|
||||
{%endregion}
|
||||
|
||||
{%region *** Debug Section ***}
|
||||
@ -1791,6 +1840,51 @@ begin
|
||||
Result:=CompareFilenames(AnsiString(FileNameStr),SE1.FileName);
|
||||
end;
|
||||
|
||||
{ TToolButton_GotoBookmarks }
|
||||
|
||||
procedure TToolButton_GotoBookmarks.RefreshMenu;
|
||||
begin
|
||||
AddMenuItems(SrcEditMenuGotoBookmark);
|
||||
DropdownMenu.Items.AddSeparator;
|
||||
AddMenuItems([
|
||||
SrcEditMenuPrevBookmark,
|
||||
SrcEditMenuNextBookmark]);
|
||||
end;
|
||||
|
||||
class procedure TToolButton_GotoBookmarks.ShowAloneMenu(Sender: TObject); // on shortcuts only
|
||||
const
|
||||
Btn: TToolButton_GotoBookmarks=nil; // static var
|
||||
begin
|
||||
if Btn = nil then
|
||||
Btn := TToolButton_GotoBookmarks.Create(Application);
|
||||
Btn.PopUpAloneMenu;
|
||||
// Btn should not be destroyed immediately after PopUp
|
||||
end;
|
||||
|
||||
|
||||
{ TToolButton_ToggleBookmarks }
|
||||
|
||||
procedure TToolButton_ToggleBookmarks.RefreshMenu;
|
||||
begin
|
||||
AddMenuItems(SrcEditMenuToggleBookmark);
|
||||
DropdownMenu.Items.AddSeparator;
|
||||
AddMenuItem(SrcEditMenuSetFreeBookmark);
|
||||
DropdownMenu.Items.AddSeparator;
|
||||
AddMenuItems([
|
||||
SrcEditMenuClearFileBookmark,
|
||||
SrcEditMenuClearAllBookmark]);
|
||||
end;
|
||||
|
||||
class procedure TToolButton_ToggleBookmarks.ShowAloneMenu(Sender: TObject); // on shortcuts only
|
||||
const
|
||||
Btn: TToolButton_ToggleBookmarks=nil; // static var
|
||||
begin
|
||||
if Btn = nil then
|
||||
Btn := TToolButton_ToggleBookmarks.Create(Application);
|
||||
Btn.PopUpAloneMenu;
|
||||
// Btn should not be destroyed immediately after PopUp
|
||||
end;
|
||||
|
||||
{ TSourceEditorWordCompletion }
|
||||
|
||||
constructor TSourceEditorWordCompletion.Create;
|
||||
@ -4060,7 +4154,7 @@ Begin
|
||||
end;
|
||||
ecClearBookmarkForFile: begin
|
||||
if Assigned(Manager) and Assigned(Manager.OnClearBookmarkId) then
|
||||
for i := 0 to 9 do
|
||||
for i in TBookmarkNumRange do
|
||||
if EditorComponent.GetBookMark(i,x{%H-},y{%H-}) then
|
||||
Manager.OnClearBookmarkId(Self, i);
|
||||
end;
|
||||
@ -10539,9 +10633,17 @@ procedure TSourceEditorManager.SetupShortCuts;
|
||||
Result:=GetCmdAndBtn(ACommand, ToolButton);
|
||||
end;
|
||||
|
||||
function GetCommand(ACommand: word; ToolButtonClass: TIDEToolButtonClass): TIDECommand;
|
||||
var
|
||||
ToolButton: TIDEButtonCommand;
|
||||
begin
|
||||
Result:=GetCmdAndBtn(ACommand, ToolButton);
|
||||
if ToolButton<>nil then
|
||||
ToolButton.ToolButtonClass := ToolButtonClass;
|
||||
end;
|
||||
|
||||
var
|
||||
i: Integer;
|
||||
IDEmi: TIDEMenuItem;
|
||||
begin
|
||||
{%region *** first static section *** }
|
||||
SrcEditMenuFindDeclaration.Command := GetCommand(ecFindDeclaration);
|
||||
@ -10604,12 +10706,14 @@ begin
|
||||
SrcEditMenuClearFileBookmark.Command:=GetCommand(ecClearBookmarkForFile);
|
||||
SrcEditMenuClearAllBookmark.Command:=GetCommand(ecClearAllBookmark);
|
||||
|
||||
for i:=0 to 9 do begin
|
||||
IDEmi:=SrcEditSubMenuGotoBookmarks.FindByName('GotoBookmark'+IntToStr(i));
|
||||
IDEmi.Command := GetCommand(ecGotoMarker0 + i);
|
||||
IDEmi:=SrcEditSubMenuToggleBookmarks.FindByName('ToggleBookmark'+IntToStr(i));
|
||||
IDEmi.Command := GetCommand(ecToggleMarker0 + i);
|
||||
end;
|
||||
SrcEditMenuGotoBookmarks.Command:=GetCommand(ecGotoBookmarks, TToolButton_GotoBookmarks);
|
||||
SrcEditMenuToggleBookmarks.Command:=GetCommand(ecToggleBookmarks, TToolButton_ToggleBookmarks);
|
||||
|
||||
for i in TBookmarkNumRange do
|
||||
SrcEditMenuGotoBookmark[i].Command := GetCommand(ecGotoMarker0 + i);
|
||||
|
||||
for i in TBookmarkNumRange do
|
||||
SrcEditMenuToggleBookmark[i].Command := GetCommand(ecToggleMarker0 + i);
|
||||
|
||||
{%region *** Source Section ***}
|
||||
SrcEditMenuEncloseSelection.Command:=GetCommand(ecSelectionEnclose);
|
||||
|
||||
@ -557,7 +557,7 @@ begin
|
||||
FImgList.RegisterResolutions([11, 16, 22, 33], [100, 150, 200, 300]);
|
||||
|
||||
// synedit expects the first 10 icons for the bookmarks
|
||||
for i := 0 to 9 do
|
||||
for i in TBookmarkNumRange do
|
||||
AddImage('bookmark'+IntToStr(i));
|
||||
|
||||
// load active breakpoint image
|
||||
|
||||
@ -163,6 +163,9 @@ menu_goto_bookmark8_200.png
|
||||
menu_goto_bookmark9.png
|
||||
menu_goto_bookmark9_150.png
|
||||
menu_goto_bookmark9_200.png
|
||||
menu_goto_bookmarks.png
|
||||
menu_goto_bookmarks_150.png
|
||||
menu_goto_bookmarks_200.png
|
||||
menu_goto_line.png
|
||||
menu_goto_line_150.png
|
||||
menu_goto_line_200.png
|
||||
@ -338,6 +341,9 @@ menu_toggle_bookmark8_200.png
|
||||
menu_toggle_bookmark9.png
|
||||
menu_toggle_bookmark9_150.png
|
||||
menu_toggle_bookmark9_200.png
|
||||
menu_toggle_bookmarks.png
|
||||
menu_toggle_bookmarks_150.png
|
||||
menu_toggle_bookmarks_200.png
|
||||
menu_tool_check_lfm.png
|
||||
menu_tool_check_lfm_150.png
|
||||
menu_tool_check_lfm_200.png
|
||||
|
||||
@ -362,6 +362,9 @@ menu/menu_goto_bookmark8_200.png
|
||||
menu/menu_goto_bookmark9.png
|
||||
menu/menu_goto_bookmark9_150.png
|
||||
menu/menu_goto_bookmark9_200.png
|
||||
menu/menu_goto_bookmarks.png
|
||||
menu/menu_goto_bookmarks_150.png
|
||||
menu/menu_goto_bookmarks_200.png
|
||||
menu/menu_goto_line.png
|
||||
menu/menu_goto_line_150.png
|
||||
menu/menu_goto_line_200.png
|
||||
@ -553,6 +556,9 @@ menu/menu_toggle_bookmark8_200.png
|
||||
menu/menu_toggle_bookmark9.png
|
||||
menu/menu_toggle_bookmark9_150.png
|
||||
menu/menu_toggle_bookmark9_200.png
|
||||
menu/menu_toggle_bookmarks.png
|
||||
menu/menu_toggle_bookmarks_150.png
|
||||
menu/menu_toggle_bookmarks_200.png
|
||||
menu/menu_tool_check_lfm.png
|
||||
menu/menu_tool_check_lfm_150.png
|
||||
menu/menu_tool_check_lfm_200.png
|
||||
|
||||
BIN
images/menu/menu_goto_bookmarks.png
Normal file
|
After Width: | Height: | Size: 399 B |
BIN
images/menu/menu_goto_bookmarks_150.png
Normal file
|
After Width: | Height: | Size: 584 B |
BIN
images/menu/menu_goto_bookmarks_200.png
Normal file
|
After Width: | Height: | Size: 810 B |
|
Before Width: | Height: | Size: 505 B After Width: | Height: | Size: 505 B |
|
Before Width: | Height: | Size: 789 B After Width: | Height: | Size: 794 B |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 462 B After Width: | Height: | Size: 459 B |
|
Before Width: | Height: | Size: 712 B After Width: | Height: | Size: 718 B |
|
Before Width: | Height: | Size: 901 B After Width: | Height: | Size: 899 B |
|
Before Width: | Height: | Size: 515 B After Width: | Height: | Size: 513 B |
|
Before Width: | Height: | Size: 816 B After Width: | Height: | Size: 826 B |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 511 B After Width: | Height: | Size: 510 B |
|
Before Width: | Height: | Size: 826 B After Width: | Height: | Size: 831 B |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 470 B After Width: | Height: | Size: 468 B |
|
Before Width: | Height: | Size: 761 B After Width: | Height: | Size: 767 B |
|
Before Width: | Height: | Size: 904 B After Width: | Height: | Size: 905 B |
|
Before Width: | Height: | Size: 479 B After Width: | Height: | Size: 477 B |
|
Before Width: | Height: | Size: 777 B After Width: | Height: | Size: 774 B |
|
Before Width: | Height: | Size: 937 B After Width: | Height: | Size: 945 B |
|
Before Width: | Height: | Size: 520 B After Width: | Height: | Size: 520 B |
|
Before Width: | Height: | Size: 822 B After Width: | Height: | Size: 824 B |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 479 B After Width: | Height: | Size: 478 B |
|
Before Width: | Height: | Size: 751 B After Width: | Height: | Size: 760 B |
|
Before Width: | Height: | Size: 902 B After Width: | Height: | Size: 899 B |
|
Before Width: | Height: | Size: 509 B After Width: | Height: | Size: 508 B |
|
Before Width: | Height: | Size: 840 B After Width: | Height: | Size: 848 B |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 518 B After Width: | Height: | Size: 517 B |
|
Before Width: | Height: | Size: 830 B After Width: | Height: | Size: 834 B |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
BIN
images/menu/menu_toggle_bookmarks.png
Normal file
|
After Width: | Height: | Size: 420 B |
BIN
images/menu/menu_toggle_bookmarks_150.png
Normal file
|
After Width: | Height: | Size: 609 B |
BIN
images/menu/menu_toggle_bookmarks_200.png
Normal file
|
After Width: | Height: | Size: 849 B |