IDE: edit menus are now disabled if no selection available

git-svn-id: trunk@9533 -
This commit is contained in:
mattias 2006-07-01 10:24:17 +00:00
parent 051d30d599
commit 4052ced3e3
5 changed files with 135 additions and 53 deletions

View File

@ -1,19 +1,18 @@
object EncloseSelectionDialog: TEncloseSelectionDialog object EncloseSelectionDialog: TEncloseSelectionDialog
Caption = 'Enclose Selection'
ClientHeight = 244
ClientWidth = 427
OnCreate = EncloseSelectionDialogCREATE
OnResize = EncloseSelectionDialogResize
PixelsPerInch = 112
Position = poScreenCenter
HorzScrollBar.Page = 426
VertScrollBar.Page = 243
Left = 319 Left = 319
Height = 244 Height = 244
Top = 231 Top = 231
Width = 427 Width = 427
HorzScrollBar.Page = 426
VertScrollBar.Page = 243
Caption = 'Enclose Selection'
OnCreate = EncloseSelectionDialogCREATE
OnResize = EncloseSelectionDialogResize
Position = poScreenCenter
object TypeRadiogroup: TRadioGroup object TypeRadiogroup: TRadioGroup
Left = 8
Height = 189
Top = 8
Width = 409
Anchors = [akTop, akLeft, akRight, akBottom] Anchors = [akTop, akLeft, akRight, akBottom]
AutoFill = True AutoFill = True
Caption = 'Type' Caption = 'Type'
@ -26,29 +25,31 @@ object EncloseSelectionDialog: TEncloseSelectionDialog
ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1 ChildSizing.ControlsPerLine = 1
TabOrder = 0 TabOrder = 0
Left = 8
Height = 189
Top = 8
Width = 409
end end
object btnOk: TButton object btnOk: TButton
Anchors = [akLeft, akBottom]
Caption = 'Ok'
Default = True
OnClick = btnOkClick
TabOrder = 1
Left = 88 Left = 88
Height = 25 Height = 25
Top = 208 Top = 208
Width = 107 Width = 107
Anchors = [akLeft, akBottom]
BorderSpacing.InnerBorder = 2
Caption = 'Ok'
Default = True
ModalResult = 1
TabOrder = 1
end end
object btnCancel: TButton object btnCancel: TButton
Left = 224
Height = 25
Top = 208
Width = 104
Anchors = [akLeft, akBottom] Anchors = [akLeft, akBottom]
BorderSpacing.InnerBorder = 2
Cancel = True Cancel = True
Caption = 'Cancel' Caption = 'Cancel'
ModalResult = 2 ModalResult = 2
TabOrder = 2 TabOrder = 2
Left = 224
Height = 25
Top = 208
Width = 104
end end
end end

View File

@ -1,23 +1,23 @@
{ This is an automatically generated lazarus resource file } { This is an automatically generated lazarus resource file }
LazarusResources.Add('TEncloseSelectionDialog','FORMDATA',[ LazarusResources.Add('TEncloseSelectionDialog','FORMDATA',[
'TPF0'#23'TEncloseSelectionDialog'#22'EncloseSelectionDialog'#4'Left'#3'?'#1#6 'TPF0'#23'TEncloseSelectionDialog'#22'EncloseSelectionDialog'#7'Caption'#6#17
+'Height'#3#244#0#3'Top'#3#231#0#5'Width'#3#171#1#18'HorzScrollBar.Page'#3#170 +'Enclose Selection'#12'ClientHeight'#3#244#0#11'ClientWidth'#3#171#1#8'OnCre'
+#1#18'VertScrollBar.Page'#3#243#0#7'Caption'#6#17'Enclose Selection'#8'OnCre'
+'ate'#7#28'EncloseSelectionDialogCREATE'#8'OnResize'#7#28'EncloseSelectionDi' +'ate'#7#28'EncloseSelectionDialogCREATE'#8'OnResize'#7#28'EncloseSelectionDi'
+'alogResize'#8'Position'#7#14'poScreenCenter'#0#11'TRadioGroup'#14'TypeRadio' +'alogResize'#13'PixelsPerInch'#2'p'#8'Position'#7#14'poScreenCenter'#18'Horz'
+'group'#4'Left'#2#8#6'Height'#3#189#0#3'Top'#2#8#5'Width'#3#153#1#7'Anchors' +'ScrollBar.Page'#3#170#1#18'VertScrollBar.Page'#3#243#0#4'Left'#3'?'#1#6'Hei'
+#11#5'akTop'#6'akLeft'#7'akRight'#8'akBottom'#0#8'AutoFill'#9#7'Caption'#6#4 +'ght'#3#244#0#3'Top'#3#231#0#5'Width'#3#171#1#0#11'TRadioGroup'#14'TypeRadio'
+'Type'#28'ChildSizing.LeftRightSpacing'#2#6#28'ChildSizing.TopBottomSpacing' +'group'#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#8'akBottom'#0#8'AutoFill'
+#2#6#29'ChildSizing.EnlargeHorizontal'#7#24'crsHomogenousChildResize'#27'Chi' +#9#7'Caption'#6#4'Type'#28'ChildSizing.LeftRightSpacing'#2#6#28'ChildSizing.'
+'ldSizing.EnlargeVertical'#7#24'crsHomogenousChildResize'#28'ChildSizing.Shr' +'TopBottomSpacing'#2#6#29'ChildSizing.EnlargeHorizontal'#7#24'crsHomogenousC'
+'inkHorizontal'#7#14'crsScaleChilds'#26'ChildSizing.ShrinkVertical'#7#14'crs' +'hildResize'#27'ChildSizing.EnlargeVertical'#7#24'crsHomogenousChildResize'
+'ScaleChilds'#18'ChildSizing.Layout'#7#29'cclLeftToRightThenTopToBottom'#27 +#28'ChildSizing.ShrinkHorizontal'#7#14'crsScaleChilds'#26'ChildSizing.Shrink'
+'ChildSizing.ControlsPerLine'#2#1#8'TabOrder'#2#0#0#0#7'TButton'#5'btnOk'#4 +'Vertical'#7#14'crsScaleChilds'#18'ChildSizing.Layout'#7#29'cclLeftToRightTh'
+'Left'#2'X'#6'Height'#2#25#3'Top'#3#208#0#5'Width'#2'k'#7'Anchors'#11#6'akLe' +'enTopToBottom'#27'ChildSizing.ControlsPerLine'#2#1#8'TabOrder'#2#0#4'Left'#2
+'ft'#8'akBottom'#0#25'BorderSpacing.InnerBorder'#2#2#7'Caption'#6#2'Ok'#7'De' +#8#6'Height'#3#189#0#3'Top'#2#8#5'Width'#3#153#1#0#0#7'TButton'#5'btnOk'#7'A'
+'fault'#9#11'ModalResult'#2#1#8'TabOrder'#2#1#0#0#7'TButton'#9'btnCancel'#4 +'nchors'#11#6'akLeft'#8'akBottom'#0#7'Caption'#6#2'Ok'#7'Default'#9#7'OnClic'
+'Left'#3#224#0#6'Height'#2#25#3'Top'#3#208#0#5'Width'#2'h'#7'Anchors'#11#6'a' +'k'#7#10'btnOkClick'#8'TabOrder'#2#1#4'Left'#2'X'#6'Height'#2#25#3'Top'#3#208
+'kLeft'#8'akBottom'#0#25'BorderSpacing.InnerBorder'#2#2#6'Cancel'#9#7'Captio' +#0#5'Width'#2'k'#0#0#7'TButton'#9'btnCancel'#7'Anchors'#11#6'akLeft'#8'akBot'
+'n'#6#6'Cancel'#11'ModalResult'#2#2#8'TabOrder'#2#2#0#0#0 +'tom'#0#6'Cancel'#9#7'Caption'#6#6'Cancel'#11'ModalResult'#2#2#8'TabOrder'#2
+#2#4'Left'#3#224#0#6'Height'#2#25#3'Top'#3#208#0#5'Width'#2'h'#0#0#0
]); ]);

View File

@ -59,27 +59,26 @@ type
TypeRadiogroup: TRADIOGROUP; TypeRadiogroup: TRADIOGROUP;
procedure EncloseSelectionDialogCREATE(Sender: TObject); procedure EncloseSelectionDialogCREATE(Sender: TObject);
procedure EncloseSelectionDialogResize(Sender: TObject); procedure EncloseSelectionDialogResize(Sender: TObject);
procedure btnOkClick(Sender: TObject);
private private
public public
function GetEncloseType: TEncloseSelectionType; function GetEncloseType: TEncloseSelectionType;
end; end;
var
EncloseSelectionDialog: TEncloseSelectionDialog;
function EncloseSelectionTypeDescription(TheType: TEncloseSelectionType
): string;
function ShowEncloseSelectionDialog(var TheType: TEncloseSelectionType function ShowEncloseSelectionDialog(var TheType: TEncloseSelectionType
): TModalResult; ): TModalResult;
function EncloseSelectionTypeDescription(TheType: TEncloseSelectionType
): string;
procedure GetEncloseSelectionParams(TheType: TEncloseSelectionType; procedure GetEncloseSelectionParams(TheType: TEncloseSelectionType;
var Template: string); var Template: string);
procedure EncloseTextSelection(const Template: string; Source: TStrings; procedure EncloseTextSelection(const Template: string; Source: TStrings;
SelectionStart, SelectionEnd: TPoint; SelectionStart, SelectionEnd: TPoint;
Indent: integer; Indent: integer;
var NewSelection: string; var NewCursor: TPoint); var NewSelection: string; var NewCursor: TPoint);
implementation implementation
function EncloseSelectionTypeDescription(TheType: TEncloseSelectionType function EncloseSelectionTypeDescription(TheType: TEncloseSelectionType
): string; ): string;
begin begin
@ -428,6 +427,12 @@ begin
btnCancel.Width:=btnOk.Width; btnCancel.Width:=btnOk.Width;
end; end;
procedure TEncloseSelectionDialog.btnOkClick(Sender: TObject);
begin
if TypeRadiogroup.ItemIndex>=0 then
ModalResult:=mrOk;
end;
function TEncloseSelectionDialog.GetEncloseType: TEncloseSelectionType; function TEncloseSelectionDialog.GetEncloseType: TEncloseSelectionType;
var var
i: Integer; i: Integer;

View File

@ -138,6 +138,7 @@ type
procedure OnScreenRemoveForm(Sender: TObject; AForm: TCustomForm); procedure OnScreenRemoveForm(Sender: TObject; AForm: TCustomForm);
// file menu // file menu
procedure mnuFileClicked(Sender: TObject);
procedure mnuNewUnitClicked(Sender: TObject); procedure mnuNewUnitClicked(Sender: TObject);
procedure mnuNewFormClicked(Sender: TObject); procedure mnuNewFormClicked(Sender: TObject);
procedure mnuNewOtherClicked(Sender: TObject); procedure mnuNewOtherClicked(Sender: TObject);
@ -154,6 +155,7 @@ type
procedure mnuQuitClicked(Sender: TObject); procedure mnuQuitClicked(Sender: TObject);
// edit menu // edit menu
procedure mnuEditClicked(Sender: TObject);
procedure mnuEditUndoClicked(Sender: TObject); procedure mnuEditUndoClicked(Sender: TObject);
procedure mnuEditRedoClicked(Sender: TObject); procedure mnuEditRedoClicked(Sender: TObject);
procedure mnuEditCutClicked(Sender: TObject); procedure mnuEditCutClicked(Sender: TObject);
@ -1899,6 +1901,7 @@ procedure TMainIDE.SetupFileMenu;
begin begin
inherited SetupFileMenu; inherited SetupFileMenu;
with MainIDEBar do begin with MainIDEBar do begin
mnuFile.OnClick:=@mnuFileClicked;
itmFileNewUnit.OnClick := @mnuNewUnitClicked; itmFileNewUnit.OnClick := @mnuNewUnitClicked;
itmFileNewForm.OnClick := @mnuNewFormClicked; itmFileNewForm.OnClick := @mnuNewFormClicked;
itmFileNewOther.OnClick := @mnuNewOtherClicked; itmFileNewOther.OnClick := @mnuNewOtherClicked;
@ -1922,6 +1925,7 @@ procedure TMainIDE.SetupEditMenu;
begin begin
inherited SetupEditMenu; inherited SetupEditMenu;
with MainIDEBar do begin with MainIDEBar do begin
mnuEdit.OnClick:=@mnuEditClicked;
itmEditUndo.OnClick:=@mnuEditUndoClicked; itmEditUndo.OnClick:=@mnuEditUndoClicked;
itmEditRedo.OnClick:=@mnuEditRedoClicked; itmEditRedo.OnClick:=@mnuEditRedoClicked;
itmEditCut.OnClick:=@mnuEditCutClicked; itmEditCut.OnClick:=@mnuEditCutClicked;
@ -2872,6 +2876,68 @@ begin
{$ENDIF} {$ENDIF}
end; end;
procedure TMainIDE.mnuEditClicked(Sender: TObject);
var
ASrcEdit: TSourceEditor;
AnUnitInfo: TUnitInfo;
Editable: Boolean;
SelAvail: Boolean;
SelEditable: Boolean;
begin
GetCurrentUnit(ASrcEdit,AnUnitInfo);
Editable:=(ASrcEdit<>nil) and (not ASrcEdit.ReadOnly);
SelAvail:=(ASrcEdit<>nil) and (ASrcEdit.SelectionAvailable);
SelEditable:=Editable and SelAvail;
with MainIDEBar do begin
itmEditUndo.Enabled:=Editable;
itmEditRedo.Enabled:=Editable;
//itmEditClipboard: TIDEMenuSection;
itmEditCut.Enabled:=SelEditable;
itmEditCopy.Enabled:=SelAvail;
itmEditPaste.Enabled:=Editable;
//itmEditBlockIndentation: TIDEMenuSection;
itmEditIndentBlock.Enabled:=SelEditable;
itmEditUnindentBlock.Enabled:=SelEditable;
itmEditEncloseBlock.Enabled:=SelEditable;
itmEditCommentBlock.Enabled:=SelEditable;
itmEditUncommentBlock.Enabled:=SelEditable;
itmEditConditionalBlock.Enabled:=SelEditable;
itmEditSortBlock.Enabled:=SelEditable;
//itmEditBlockCharConversion: TIDEMenuSection;
itmEditUpperCaseBlock.Enabled:=SelEditable;
itmEditLowerCaseBlock.Enabled:=SelEditable;
itmEditTabsToSpacesBlock.Enabled:=SelEditable;
itmEditSelectionBreakLines.Enabled:=SelEditable;
//itmEditSelect: TIDEMenuSection;
//itmEditSelectAll: TIDEMenuCommand;
//itmEditSelectToBrace: TIDEMenuCommand;
//itmEditSelectCodeBlock: TIDEMenuCommand;
//itmEditSelectLine: TIDEMenuCommand;
//itmEditSelectParagraph: TIDEMenuCommand;
//itmEditInsertions: TIDEMenuSection;
itmEditInsertCharacter.Enabled:=Editable;
//itmEditInsertText: TIDEMenuSection;
//itmEditInsertCVSKeyWord: TIDEMenuSection;
itmEditInsertCVSAuthor.Enabled:=Editable;
itmEditInsertCVSDate.Enabled:=Editable;
itmEditInsertCVSHeader.Enabled:=Editable;
itmEditInsertCVSID.Enabled:=Editable;
itmEditInsertCVSLog.Enabled:=Editable;
itmEditInsertCVSName.Enabled:=Editable;
itmEditInsertCVSRevision.Enabled:=Editable;
itmEditInsertCVSSource.Enabled:=Editable;
//itmEditInsertGeneral: TIDEMenuSection;
itmEditInsertGPLNotice.Enabled:=Editable;
itmEditInsertLGPLNotice.Enabled:=Editable;
itmEditInsertUsername.Enabled:=Editable;
itmEditInsertDateTime.Enabled:=Editable;
itmEditInsertChangeLogEntry.Enabled:=Editable;
//itmEditMenuCodeTools: TIDEMenuSection;
itmEditCompleteCode.Enabled:=Editable;
itmEditExtractProc.Enabled:=SelEditable;
end;
end;
{------------------------------------------------------------------------------} {------------------------------------------------------------------------------}
procedure TMainIDE.mnuViewInspectorClicked(Sender: TObject); procedure TMainIDE.mnuViewInspectorClicked(Sender: TObject);
begin begin
@ -12130,6 +12196,18 @@ begin
EnvironmentOptions.IDEWindowLayoutList.CloseForm(AForm); EnvironmentOptions.IDEWindowLayoutList.CloseForm(AForm);
end; end;
procedure TMainIDE.mnuFileClicked(Sender: TObject);
var
ASrcEdit: TSourceEditor;
AnUnitInfo: TUnitInfo;
begin
GetCurrentUnit(ASrcEdit,AnUnitInfo);
with MainIDEBar do begin
itmFileClose.Enabled := ASrcEdit<>nil;
itmFileCloseAll.Enabled := ASrcEdit<>nil;
end;
end;
function TMainIDE.ProjInspectorAddUnitToProject(Sender: TObject; function TMainIDE.ProjInspectorAddUnitToProject(Sender: TObject;
AnUnitInfo: TUnitInfo): TModalresult; AnUnitInfo: TUnitInfo): TModalresult;
var var

View File

@ -2232,10 +2232,8 @@ var
NewCaretXY: TPoint; NewCaretXY: TPoint;
begin begin
if ReadOnly then exit; if ReadOnly then exit;
if not FEditor.SelAvail then begin if not FEditor.SelAvail then
FEditor.BlockBegin:=FEditor.LogicalCaretXY; exit;
FEditor.BlockEnd:=FEditor.BlockBegin;
end;
if ShowEncloseSelectionDialog(EncloseType)<>mrOk then exit; if ShowEncloseSelectionDialog(EncloseType)<>mrOk then exit;
GetEncloseSelectionParams(EncloseType,EncloseTemplate); GetEncloseSelectionParams(EncloseType,EncloseTemplate);
EncloseTextSelection(EncloseTemplate,FEditor.Lines, EncloseTextSelection(EncloseTemplate,FEditor.Lines,