started enclose selection

git-svn-id: trunk@4488 -
This commit is contained in:
mattias 2003-08-16 09:45:44 +00:00
parent e00dd881f3
commit de0fa7faca
10 changed files with 289 additions and 9 deletions

3
.gitattributes vendored
View File

@ -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

View 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

View 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
View 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.

View File

@ -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',

View File

@ -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,[]);

View File

@ -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';

View File

@ -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

View File

@ -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);

View File

@ -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;