From fef9cf673fa7c9002720433af53b6f6478e43171 Mon Sep 17 00:00:00 2001 From: Basile Burg Date: Fri, 22 May 2015 16:24:27 +0200 Subject: [PATCH] added a tiny editor menu because using shortcuts is encouraged. --- src/ce_editor.lfm | 36 ++++++++++++++++++++ src/ce_editor.pas | 86 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 122 insertions(+) diff --git a/src/ce_editor.lfm b/src/ce_editor.lfm index 1a53a947..313e05e3 100644 --- a/src/ce_editor.lfm +++ b/src/ce_editor.lfm @@ -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 diff --git a/src/ce_editor.pas b/src/ce_editor.pas index 5e283d1b..9088da8a 100644 --- a/src/ce_editor.pas +++ b/src/ce_editor.pas @@ -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.