added a tiny editor menu

because using shortcuts is encouraged.
This commit is contained in:
Basile Burg 2015-05-22 16:24:27 +02:00
parent fa06a116ab
commit fef9cf673f
2 changed files with 122 additions and 0 deletions

View File

@ -60,4 +60,40 @@ inherited CEEditorWidget: TCEEditorWidget
left = 80
top = 16
end
object mnuEditor: TPopupMenu[3]
OnPopup = mnuEditorPopup
left = 152
top = 16
object mnuedCopy: TMenuItem
Caption = 'Copy'
OnClick = mnuedCopyClick
end
object mnuedCut: TMenuItem
Caption = 'Cut'
OnClick = mnuedCutClick
end
object mnuedPaste: TMenuItem
Caption = 'Paste'
OnClick = mnuedPasteClick
end
object MenuItem4: TMenuItem
Caption = '-'
end
object mnuedUndo: TMenuItem
Caption = 'Undo'
OnClick = mnuedUndoClick
end
object mnuedRedo: TMenuItem
Caption = 'Redo'
OnClick = mnuedRedoClick
end
object MenuItem7: TMenuItem
Caption = '-'
end
object mnuedJum2Decl: TMenuItem
Caption = 'Jump to declaration'
ShortCut = 24614
OnClick = mnuedJum2DeclClick
end
end
end

View File

@ -22,9 +22,25 @@ type
{ TCEEditorWidget }
TCEEditorWidget = class(TCEWidget, ICEMultiDocObserver, ICEMultiDocHandler)
mnuedCopy: TMenuItem;
mnuedCut: TMenuItem;
mnuedPaste: TMenuItem;
MenuItem4: TMenuItem;
mnuedUndo: TMenuItem;
mnuedRedo: TMenuItem;
MenuItem7: TMenuItem;
mnuedJum2Decl: TMenuItem;
PageControl: TExtendedNotebook;
macRecorder: TSynMacroRecorder;
editorStatus: TStatusBar;
mnuEditor: TPopupMenu;
procedure mnuedCopyClick(Sender: TObject);
procedure mnuedCutClick(Sender: TObject);
procedure mnuEditorPopup(Sender: TObject);
procedure mnuedPasteClick(Sender: TObject);
procedure mnuedUndoClick(Sender: TObject);
procedure mnuedRedoClick(Sender: TObject);
procedure mnuedJum2DeclClick(Sender: TObject);
procedure PageControlChange(Sender: TObject);
protected
procedure updateDelayed; override;
@ -77,6 +93,8 @@ end;
{$REGION Standard Comp/Obj------------------------------------------------------}
constructor TCEEditorWidget.create(aOwner: TComponent);
var
png: TPortableNetworkGraphic;
begin
inherited;
//
@ -86,6 +104,24 @@ begin
PageControl.OnCloseTabClicked := @pageCloseBtnClick;
{$ENDIF}
//
png := TPortableNetworkGraphic.Create;
try
png.LoadFromLazarusResource('copy');
mnuedCopy.Bitmap.Assign(png);
png.LoadFromLazarusResource('cut');
mnuedCut.Bitmap.Assign(png);
png.LoadFromLazarusResource('paste');
mnuedPaste.Bitmap.Assign(png);
png.LoadFromLazarusResource('arrow_undo');
mnuedUndo.Bitmap.Assign(png);
png.LoadFromLazarusResource('arrow_redo');
mnuedRedo.Bitmap.Assign(png);
png.LoadFromLazarusResource('arrow_shoe');
mnuedJum2Decl.Bitmap.Assign(png);
finally
png.Free;
end;
//
EntitiesConnector.addObserver(self);
EntitiesConnector.addSingleService(self);
end;
@ -230,6 +266,7 @@ begin
if fDoc = nil then exit;
//
macRecorder.Editor:= fDoc;
fDoc.PopupMenu := mnuEditor;
if (pageControl.ActivePage.Caption = '') then
begin
fKeyChanged := true;
@ -365,4 +402,53 @@ begin
end;
{$ENDREGION}
{$REGION Editor context menu ---------------------------------------------------}
procedure TCEEditorWidget.mnuedCopyClick(Sender: TObject);
begin
if fDoc = nil then exit;
fDoc.ExecuteCommand(ecCopy, '', nil);
end;
procedure TCEEditorWidget.mnuedCutClick(Sender: TObject);
begin
if fDoc = nil then exit;
fDoc.ExecuteCommand(ecCut, '', nil);
end;
procedure TCEEditorWidget.mnuedPasteClick(Sender: TObject);
begin
if fDoc = nil then exit;
fDoc.ExecuteCommand(ecPaste, '', nil);
end;
procedure TCEEditorWidget.mnuedUndoClick(Sender: TObject);
begin
if fDoc = nil then exit;
fDoc.ExecuteCommand(ecUndo, '', nil);
end;
procedure TCEEditorWidget.mnuedRedoClick(Sender: TObject);
begin
if fDoc = nil then exit;
fDoc.ExecuteCommand(ecRedo, '', nil);
end;
procedure TCEEditorWidget.mnuedJum2DeclClick(Sender: TObject);
begin
if fDoc = nil then exit;
getSymbolLoc;
end;
procedure TCEEditorWidget.mnuEditorPopup(Sender: TObject);
begin
if fDoc = nil then exit;
//
mnuedCut.Enabled:=fDOc.SelAvail;
mnuedPaste.Enabled:=fDoc.CanPaste;
mnuedCopy.Enabled:=fDoc.SelAvail;
mnuedUndo.Enabled:=fDoc.CanUndo;
mnuedRedo.Enabled:=fDoc.CanRedo;
mnuedJum2Decl.Enabled:=fDoc.isDSource;
end;
{$ENDREGION}
end.