mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-17 04:29:25 +02:00
started enclose selection
git-svn-id: trunk@4488 -
This commit is contained in:
parent
e00dd881f3
commit
de0fa7faca
3
.gitattributes
vendored
3
.gitattributes
vendored
@ -333,6 +333,9 @@ ide/diskdiffsdialog.pas svneol=native#text/pascal
|
||||
ide/editdefinetree.pas svneol=native#text/pascal
|
||||
ide/editoroptions.lrs svneol=native#text/pascal
|
||||
ide/editoroptions.pp svneol=native#text/pascal
|
||||
ide/encloseselectiondlg.lfm svneol=native#text/plain
|
||||
ide/encloseselectiondlg.lrs svneol=native#text/pascal
|
||||
ide/encloseselectiondlg.pas svneol=native#text/pascal
|
||||
ide/environmentopts.pp svneol=native#text/pascal
|
||||
ide/exttooldialog.pas svneol=native#text/pascal
|
||||
ide/exttooleditdlg.pas svneol=native#text/pascal
|
||||
|
43
ide/encloseselectiondlg.lfm
Normal file
43
ide/encloseselectiondlg.lfm
Normal file
@ -0,0 +1,43 @@
|
||||
object EncloseSelectionDialog: TEncloseSelectionDialog
|
||||
CAPTION = 'Enclose Selection'
|
||||
CLIENTHEIGHT = 244
|
||||
CLIENTWIDTH = 341
|
||||
ONCREATE = EncloseSelectionDialogCREATE
|
||||
POSITION = poscreencenter
|
||||
HORZSCROLLBAR.PAGE = 342
|
||||
VERTSCROLLBAR.PAGE = 245
|
||||
LEFT = 406
|
||||
HEIGHT = 244
|
||||
TOP = 308
|
||||
WIDTH = 341
|
||||
object OkButton: TBUTTON
|
||||
ANCHORS = [akleft, akbottom]
|
||||
MODALRESULT = 1
|
||||
CAPTION = 'Ok'
|
||||
TABSTOP = True
|
||||
TABORDER = 0
|
||||
LEFT = 80
|
||||
HEIGHT = 25
|
||||
TOP = 208
|
||||
WIDTH = 75
|
||||
end
|
||||
object CancelButton: TBUTTON
|
||||
ANCHORS = [akleft, akbottom]
|
||||
MODALRESULT = 2
|
||||
CAPTION = 'Cancel'
|
||||
TABSTOP = True
|
||||
TABORDER = 1
|
||||
LEFT = 184
|
||||
HEIGHT = 25
|
||||
TOP = 208
|
||||
WIDTH = 75
|
||||
end
|
||||
object TypeRadiogroup: TRADIOGROUP
|
||||
ANCHORS = [aktop, akleft, akright, akbottom]
|
||||
CAPTION = 'Type'
|
||||
LEFT = 8
|
||||
HEIGHT = 189
|
||||
TOP = 8
|
||||
WIDTH = 323
|
||||
end
|
||||
end
|
17
ide/encloseselectiondlg.lrs
Normal file
17
ide/encloseselectiondlg.lrs
Normal file
@ -0,0 +1,17 @@
|
||||
{ This is an automatically generated lazarus resource file }
|
||||
|
||||
LazarusResources.Add('TEncloseSelectionDialog','FORMDATA',[
|
||||
'TPF0'#23'TEncloseSelectionDialog'#22'EncloseSelectionDialog'#7'CAPTION'#6#17
|
||||
+'Enclose Selection'#12'CLIENTHEIGHT'#3#244#0#11'CLIENTWIDTH'#3'U'#1#8'ONCREA'
|
||||
+'TE'#7#28'EncloseSelectionDialogCREATE'#8'POSITION'#7#14'poscreencenter'#18
|
||||
+'HORZSCROLLBAR.PAGE'#3'V'#1#18'VERTSCROLLBAR.PAGE'#3#245#0#4'LEFT'#3#150#1#6
|
||||
+'HEIGHT'#3#244#0#3'TOP'#3'4'#1#5'WIDTH'#3'U'#1#0#7'TBUTTON'#8'OkButton'#7'AN'
|
||||
+'CHORS'#11#6'akleft'#8'akbottom'#0#11'MODALRESULT'#2#1#7'CAPTION'#6#2'Ok'#7
|
||||
+'TABSTOP'#9#8'TABORDER'#2#0#4'LEFT'#2'P'#6'HEIGHT'#2#25#3'TOP'#3#208#0#5'WID'
|
||||
+'TH'#2'K'#0#0#7'TBUTTON'#12'CancelButton'#7'ANCHORS'#11#6'akleft'#8'akbottom'
|
||||
+#0#11'MODALRESULT'#2#2#7'CAPTION'#6#6'Cancel'#7'TABSTOP'#9#8'TABORDER'#2#1#4
|
||||
+'LEFT'#3#184#0#6'HEIGHT'#2#25#3'TOP'#3#208#0#5'WIDTH'#2'K'#0#0#11'TRADIOGROU'
|
||||
+'P'#14'TypeRadiogroup'#7'ANCHORS'#11#5'aktop'#6'akleft'#7'akright'#8'akbotto'
|
||||
+'m'#0#7'CAPTION'#6#4'Type'#4'LEFT'#2#8#6'HEIGHT'#3#189#0#3'TOP'#2#8#5'WIDTH'
|
||||
+#3'C'#1#0#0#0
|
||||
]);
|
182
ide/encloseselectiondlg.pas
Normal file
182
ide/encloseselectiondlg.pas
Normal file
@ -0,0 +1,182 @@
|
||||
{
|
||||
/***************************************************************************
|
||||
encloseselectiondlg.pas
|
||||
-----------------------
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
***************************************************************************
|
||||
* *
|
||||
* This source is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This code is distributed in the hope that it will be useful, but *
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
|
||||
* General Public License for more details. *
|
||||
* *
|
||||
* A copy of the GNU General Public License is available on the World *
|
||||
* Wide Web at <http://www.gnu.org/copyleft/gpl.html>. You can also *
|
||||
* obtain it by writing to the Free Software Foundation, *
|
||||
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||
* *
|
||||
***************************************************************************
|
||||
|
||||
Author: Mattias Gaertner
|
||||
|
||||
Abstract: Dialog to setup parameters of the enclose selection function
|
||||
}
|
||||
unit EncloseSelectionDlg;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, Buttons,
|
||||
ExtCtrls, LazarusIDEStrConsts, LazConf, IDEProcs;
|
||||
|
||||
type
|
||||
TEncloseSelectionType = (
|
||||
estTryFinally,
|
||||
estTryExcept,
|
||||
estBeginEnd,
|
||||
estForBeginEnd,
|
||||
estWhileDoBeginEnd,
|
||||
estRepeatUntil,
|
||||
estPascalComment
|
||||
);
|
||||
|
||||
TEncloseSelectionDialog = class(TForm)
|
||||
OkButton: TBUTTON;
|
||||
CancelButton: TBUTTON;
|
||||
TypeRadiogroup: TRADIOGROUP;
|
||||
procedure EncloseSelectionDialogCREATE(Sender: TObject);
|
||||
private
|
||||
public
|
||||
function GetEncloseType: TEncloseSelectionType;
|
||||
end;
|
||||
|
||||
var
|
||||
EncloseSelectionDialog: TEncloseSelectionDialog;
|
||||
|
||||
function EncloseSelectionTypeDescription(TheType: TEncloseSelectionType
|
||||
): string;
|
||||
function ShowEncloseSelectionDialog(var TheType: TEncloseSelectionType
|
||||
): TModalResult;
|
||||
procedure GetEncloseSelectionParams(TheType: TEncloseSelectionType;
|
||||
var Template: string);
|
||||
|
||||
implementation
|
||||
|
||||
function EncloseSelectionTypeDescription(TheType: TEncloseSelectionType
|
||||
): string;
|
||||
begin
|
||||
case TheType of
|
||||
estTryFinally: Result:='Try..Finally';
|
||||
estTryExcept: Result:='Try..Except';
|
||||
estBeginEnd: Result:='Begin..End';
|
||||
estForBeginEnd: Result:='For | do begin..end';
|
||||
estWhileDoBeginEnd: Result:='While | do begin..end';
|
||||
estRepeatUntil: Result:='Repeat..Until |';
|
||||
estPascalComment: Result:='{..}';
|
||||
else
|
||||
RaiseException('EncloseSelectionTypeDescription');
|
||||
end;
|
||||
end;
|
||||
|
||||
function ShowEncloseSelectionDialog(var TheType: TEncloseSelectionType
|
||||
): TModalResult;
|
||||
var
|
||||
TheDialog: TEncloseSelectionDialog;
|
||||
begin
|
||||
TheDialog:=TEncloseSelectionDialog.Create(Application);
|
||||
Result:=TheDialog.ShowModal;
|
||||
if Result=mrOk then
|
||||
TheType:=TheDialog.GetEncloseType;
|
||||
TheDialog.Free;
|
||||
end;
|
||||
|
||||
procedure GetEncloseSelectionParams(TheType: TEncloseSelectionType;
|
||||
var Template: string);
|
||||
begin
|
||||
case TheType of
|
||||
estTryFinally:
|
||||
Template:='try'+LineBreak
|
||||
+' <selection>'+LineBreak
|
||||
+'finally'+LineBreak
|
||||
+' |'+LineBreak
|
||||
+'end;'+LineBreak;
|
||||
|
||||
estTryExcept:
|
||||
Template:='try'+LineBreak
|
||||
+' <selection>'+LineBreak
|
||||
+'except'+LineBreak
|
||||
+' |'+LineBreak
|
||||
+'end;'+LineBreak;
|
||||
|
||||
estBeginEnd:
|
||||
Template:='begin'+LineBreak
|
||||
+' |<selection>'+LineBreak
|
||||
+'end;'+LineBreak;
|
||||
|
||||
estForBeginEnd:
|
||||
Template:='for | do begin'+LineBreak
|
||||
+' <selection>'+LineBreak
|
||||
+'end;'+LineBreak;
|
||||
|
||||
estWhileDoBeginEnd:
|
||||
Template:='while | do begin'+LineBreak
|
||||
+' <selection>'+LineBreak
|
||||
+'end;'+LineBreak;
|
||||
|
||||
estRepeatUntil:
|
||||
Template:='repeat'+LineBreak
|
||||
+' <selection>'+LineBreak
|
||||
+'until |;'+LineBreak;
|
||||
|
||||
estPascalComment:
|
||||
Template:='{'+LineBreak
|
||||
+' |<selection>'+LineBreak
|
||||
+'}'+LineBreak;
|
||||
|
||||
else
|
||||
RaiseException('GetEnclosedSelectionParams');
|
||||
end;
|
||||
end;
|
||||
|
||||
{ TEncloseSelectionDialog }
|
||||
|
||||
procedure TEncloseSelectionDialog.EncloseSelectionDialogCREATE(Sender: TObject);
|
||||
var
|
||||
t: TEncloseSelectionType;
|
||||
begin
|
||||
with TypeRadiogroup.Items do begin
|
||||
BeginUpdate;
|
||||
for t:=Low(TEncloseSelectionType) to High(TEncloseSelectionType) do
|
||||
Add(EncloseSelectionTypeDescription(t));
|
||||
EndUpdate;
|
||||
end;
|
||||
TypeRadiogroup.ItemIndex:=0;
|
||||
end;
|
||||
|
||||
function TEncloseSelectionDialog.GetEncloseType: TEncloseSelectionType;
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
i:=TypeRadiogroup.ItemIndex;
|
||||
for Result:=Low(TEncloseSelectionType) to High(TEncloseSelectionType) do
|
||||
if AnsiCompareText(TypeRadiogroup.Items[i],
|
||||
EncloseSelectionTypeDescription(Result))=0
|
||||
then
|
||||
exit;
|
||||
RaiseException('TEncloseSelectionDialog.GetEncloseType');
|
||||
end;
|
||||
|
||||
initialization
|
||||
{$I encloseselectiondlg.lrs}
|
||||
|
||||
end.
|
||||
|
@ -22,12 +22,13 @@
|
||||
}
|
||||
|
||||
const
|
||||
DefaultFPCSrcDirs: array[1..9] of string = (
|
||||
DefaultFPCSrcDirs: array[1..10] of string = (
|
||||
'/usr/share/fpcsrc',
|
||||
'/usr/fpcsrc',
|
||||
'/usr/share/fpc/src',
|
||||
'/usr/fpc/src',
|
||||
'/usr/local/fpc/src',
|
||||
'/usr/local/share/fpc/src',
|
||||
'/usr/lib/fpc/src',
|
||||
'/usr/local/lib/fpc/src',
|
||||
'/vol/fpc/src',
|
||||
|
@ -80,13 +80,14 @@ const
|
||||
ecSelectionUpperCase = ecUserFirst + 50;
|
||||
ecSelectionLowerCase = ecUserFirst + 51;
|
||||
ecSelectionTabs2Spaces = ecUserFirst + 52;
|
||||
ecSelectionComment = ecUserFirst + 53;
|
||||
ecSelectionUncomment = ecUserFirst + 54;
|
||||
ecSelectionSort = ecUserFirst + 55;
|
||||
ecSelectToBrace = ecUserFirst + 56;
|
||||
ecSelectCodeBlock = ecUserFirst + 57;
|
||||
ecSelectLine = ecUserFirst + 58;
|
||||
ecSelectParagraph = ecUserFirst + 59;
|
||||
ecSelectionEnclose = ecUserFirst + 53;
|
||||
ecSelectionComment = ecUserFirst + 54;
|
||||
ecSelectionUncomment = ecUserFirst + 55;
|
||||
ecSelectionSort = ecUserFirst + 56;
|
||||
ecSelectToBrace = ecUserFirst + 57;
|
||||
ecSelectCodeBlock = ecUserFirst + 58;
|
||||
ecSelectLine = ecUserFirst + 59;
|
||||
ecSelectParagraph = ecUserFirst + 60;
|
||||
|
||||
// insert text
|
||||
ecInsertGPLNotice = ecUserFirst + 80;
|
||||
@ -547,6 +548,7 @@ begin
|
||||
ecSelectionUpperCase : Result:= lismenuuppercaseselection;
|
||||
ecSelectionLowerCase : Result:= lismenulowercaseselection;
|
||||
ecSelectionTabs2Spaces : Result:= srkmecSelectionTabs2Spaces;
|
||||
ecSelectionEnclose : Result:= lismenucommentselection;
|
||||
ecSelectionComment : Result:= lismenucommentselection;
|
||||
ecSelectionUncomment : Result:= lismenuuncommentselection;
|
||||
ecSelectionSort : Result:= lismenusortselection;
|
||||
@ -1314,6 +1316,7 @@ begin
|
||||
Add(C,'Uppercase selection',ecSelectionUpperCase,VK_UNKNOWN, [],VK_UNKNOWN,[]);
|
||||
Add(C,'Lowercase selection',ecSelectionLowerCase,VK_UNKNOWN, [],VK_UNKNOWN,[]);
|
||||
Add(C,'Convert tabs to spaces in selection',ecSelectionTabs2Spaces,VK_UNKNOWN, [],VK_UNKNOWN,[]);
|
||||
Add(C,'Enclose selection',ecSelectionEnclose,VK_UNKNOWN, [],VK_UNKNOWN,[]);
|
||||
Add(C,'Comment selection',ecSelectionComment,VK_UNKNOWN, [],VK_UNKNOWN,[]);
|
||||
Add(C,'Uncomment selection',ecSelectionUncomment,VK_UNKNOWN, [],VK_UNKNOWN,[]);
|
||||
Add(C,'Sort selection',ecSelectionSort,VK_UNKNOWN, [],VK_UNKNOWN,[]);
|
||||
|
@ -127,6 +127,7 @@ resourcestring
|
||||
lisMenuUpperCaseSelection = 'Uppercase selection';
|
||||
lisMenuLowerCaseSelection = 'Lowercase selection';
|
||||
lisMenuTabsToSpacesSelection = 'Tabs to spaces in selection';
|
||||
lisMenuEncloseSelection = 'Enclose selection';
|
||||
lisMenuCommentSelection = 'Comment selection';
|
||||
lisMenuUncommentSelection = 'Uncomment selection';
|
||||
lisMenuSortSelection = 'Sort selection';
|
||||
|
10
ide/main.pp
10
ide/main.pp
@ -118,6 +118,7 @@ type
|
||||
procedure mnuEditPasteClicked(Sender: TObject);
|
||||
procedure mnuEditIndentBlockClicked(Sender: TObject);
|
||||
procedure mnuEditUnindentBlockClicked(Sender: TObject);
|
||||
procedure mnuEditEncloseBlockClicked(Sender: TObject);
|
||||
procedure mnuEditUpperCaseBlockClicked(Sender: TObject);
|
||||
procedure mnuEditLowerCaseBlockClicked(Sender: TObject);
|
||||
procedure mnuEditTabsToSpacesBlockClicked(Sender: TObject);
|
||||
@ -1430,6 +1431,7 @@ begin
|
||||
itmEditPaste.OnClick:=@mnuEditPasteClicked;
|
||||
itmEditIndentBlock.OnClick:=@mnuEditIndentBlockClicked;
|
||||
itmEditUnindentBlock.OnClick:=@mnuEditUnindentBlockClicked;
|
||||
itmEditEncloseBlock.OnClick:=@mnuEditEncloseBlockClicked;
|
||||
itmEditUpperCaseBlock.OnClick:=@mnuEditUpperCaseBlockClicked;
|
||||
itmEditLowerCaseBlock.OnClick:=@mnuEditLowerCaseBlockClicked;
|
||||
itmEditTabsToSpacesBlock.OnClick:=@mnuEditTabsToSpacesBlockClicked;
|
||||
@ -9185,6 +9187,11 @@ begin
|
||||
DoEditMenuCommand(ecBlockUnindent);
|
||||
end;
|
||||
|
||||
procedure TMainIDE.mnuEditEncloseBlockClicked(Sender: TObject);
|
||||
begin
|
||||
DoEditMenuCommand(ecSelectionEnclose);
|
||||
end;
|
||||
|
||||
procedure TMainIDE.mnuEditUpperCaseBlockClicked(Sender: TObject);
|
||||
begin
|
||||
DoEditMenuCommand(ecSelectionUpperCase);
|
||||
@ -9414,6 +9421,9 @@ end.
|
||||
|
||||
{ =============================================================================
|
||||
$Log$
|
||||
Revision 1.638 2003/08/16 09:45:44 mattias
|
||||
started enclose selection
|
||||
|
||||
Revision 1.637 2003/08/15 16:19:53 mattias
|
||||
implemented message blocks for package compilation
|
||||
|
||||
|
@ -212,6 +212,7 @@ type
|
||||
itmEditPaste: TMenuItem;
|
||||
itmEditIndentBlock: TMenuItem;
|
||||
itmEditUnindentBlock: TMenuItem;
|
||||
itmEditEncloseBlock: TMenuItem;
|
||||
itmEditUpperCaseBlock: TMenuItem;
|
||||
itmEditLowerCaseBlock: TMenuItem;
|
||||
itmEditTabsToSpacesBlock: TMenuItem;
|
||||
@ -672,6 +673,12 @@ begin
|
||||
itmEditUnindentBlock.Graphic:=LoadPixmap('menu_unindent');
|
||||
mnuEdit.Add(itmEditUnindentBlock);
|
||||
|
||||
itmEditEncloseBlock := TMenuItem.Create(Self);
|
||||
itmEditEncloseBlock.Name:='itmEditEncloseBlock';
|
||||
itmEditEncloseBlock.Caption := lisMenuEncloseSelection;
|
||||
itmEditEncloseBlock.Enabled:=false;
|
||||
mnuEdit.Add(itmEditEncloseBlock);
|
||||
|
||||
mnuEdit.Add(CreateMenuSeparator);
|
||||
|
||||
itmEditUpperCaseBlock := TMenuItem.Create(Self);
|
||||
@ -1360,6 +1367,7 @@ begin
|
||||
itmEditPaste.ShortCut:=CommandToShortCut(ecPaste);
|
||||
itmEditIndentBlock.ShortCut:=CommandToShortCut(ecBlockIndent);
|
||||
itmEditUnindentBlock.ShortCut:=CommandToShortCut(ecBlockUnindent);
|
||||
itmEditEncloseBlock.ShortCut:=CommandToShortCut(ecSelectionEnclose);
|
||||
itmEditUpperCaseBlock.ShortCut:=CommandToShortCut(ecSelectionUpperCase);
|
||||
itmEditLowerCaseBlock.ShortCut:=CommandToShortCut(ecSelectionLowerCase);
|
||||
itmEditTabsToSpacesBlock.ShortCut:=CommandToShortCut(ecSelectionTabs2Spaces);
|
||||
|
@ -54,7 +54,7 @@ uses
|
||||
FindReplaceDialog, WordCompletion, FindInFilesDlg, IDEProcs, IDEOptionDefs,
|
||||
MsgView, InputHistory, LazarusIDEStrConsts, BaseDebugManager, Debugger,
|
||||
TypInfo, LResources, LazConf, EnvironmentOpts, Compiler,
|
||||
SortSelectionDlg, ClipBoardHistory, DiffDialog,
|
||||
SortSelectionDlg, EncloseSelectionDlg, ClipBoardHistory, DiffDialog,
|
||||
SourceEditProcs, SourceMarks;
|
||||
|
||||
type
|
||||
@ -228,6 +228,7 @@ type
|
||||
function GetText(OnlySelection: boolean): string;
|
||||
Procedure SelectText(LineNum,CharStart,LineNum2,CharEnd : Integer);
|
||||
procedure ReplaceLines(StartLine, EndLine: integer; const NewText: string);
|
||||
procedure EncloseSelection;
|
||||
procedure UpperCaseSelection;
|
||||
procedure LowerCaseSelection;
|
||||
procedure TabsToSpacesInSelection;
|
||||
@ -1049,6 +1050,9 @@ Begin
|
||||
end;
|
||||
|
||||
ecSelectionUpperCase:
|
||||
EncloseSelection;
|
||||
|
||||
ecSelectionEnclose:
|
||||
UpperCaseSelection;
|
||||
|
||||
ecSelectionLowerCase:
|
||||
@ -1736,6 +1740,14 @@ begin
|
||||
FEditor.EndUndoBlock;
|
||||
end;
|
||||
|
||||
procedure TSourceEditor.EncloseSelection;
|
||||
var
|
||||
EncloseType: TEncloseSelectionType;
|
||||
begin
|
||||
if ShowEncloseSelectionDialog(EncloseType)<>mrOk then exit;
|
||||
|
||||
end;
|
||||
|
||||
Function TSourceEditor.GetModified : Boolean;
|
||||
Begin
|
||||
Result := FEditor.Modified or FModified;
|
||||
|
Loading…
Reference in New Issue
Block a user