mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-20 11:59:26 +02:00
IDE: added multi paste dialog like Delphi, patch #30671, from Silvio Clécio
git-svn-id: trunk@53064 -
This commit is contained in:
parent
c303c71d2d
commit
641d73f10a
2
.gitattributes
vendored
2
.gitattributes
vendored
@ -6119,6 +6119,8 @@ ide/mouseactiondialog.lfm svneol=native#text/plain
|
||||
ide/mouseactiondialog.pas svneol=native#text/pascal
|
||||
ide/msgvieweditor.lfm svneol=native#text/plain
|
||||
ide/msgvieweditor.pas svneol=native#text/pascal
|
||||
ide/multipastedlg.lfm svneol=native#text/plain
|
||||
ide/multipastedlg.pas svneol=native#text/plain
|
||||
ide/multireplacedlg.lfm svneol=native#text/plain
|
||||
ide/multireplacedlg.pas svneol=native#text/pascal
|
||||
ide/newdialog.lfm svneol=native#text/plain
|
||||
|
657
ide/multipastedlg.lfm
Normal file
657
ide/multipastedlg.lfm
Normal file
@ -0,0 +1,657 @@
|
||||
object MultiPasteDialog: TMultiPasteDialog
|
||||
Left = 245
|
||||
Height = 500
|
||||
Top = 137
|
||||
Width = 460
|
||||
BorderStyle = bsDialog
|
||||
Caption = 'MultiPaste'
|
||||
ClientHeight = 500
|
||||
ClientWidth = 460
|
||||
Position = poScreenCenter
|
||||
LCLVersion = '1.7'
|
||||
object PasteOptsGroupBox: TGroupBox
|
||||
Left = 6
|
||||
Height = 216
|
||||
Top = 6
|
||||
Width = 448
|
||||
Align = alTop
|
||||
AutoSize = True
|
||||
BorderSpacing.Left = 6
|
||||
BorderSpacing.Top = 6
|
||||
BorderSpacing.Right = 6
|
||||
Caption = 'Paste &options'
|
||||
ClientHeight = 197
|
||||
ClientWidth = 444
|
||||
TabOrder = 0
|
||||
object TxtBeforeLinesLabel: TLabel
|
||||
Left = 6
|
||||
Height = 17
|
||||
Top = 6
|
||||
Width = 432
|
||||
Align = alTop
|
||||
BorderSpacing.Left = 6
|
||||
BorderSpacing.Top = 6
|
||||
BorderSpacing.Right = 6
|
||||
Caption = 'Text &before each line'
|
||||
FocusControl = TxtBeforeLinesEdit
|
||||
ParentColor = False
|
||||
end
|
||||
object TxtBeforeLinesEdit: TEdit
|
||||
Left = 6
|
||||
Height = 27
|
||||
Top = 26
|
||||
Width = 432
|
||||
Align = alTop
|
||||
BorderSpacing.Left = 6
|
||||
BorderSpacing.Top = 3
|
||||
BorderSpacing.Right = 6
|
||||
TabOrder = 0
|
||||
end
|
||||
object TxtAfterLinesLabel: TLabel
|
||||
Left = 6
|
||||
Height = 17
|
||||
Top = 59
|
||||
Width = 432
|
||||
Align = alTop
|
||||
BorderSpacing.Left = 6
|
||||
BorderSpacing.Top = 6
|
||||
BorderSpacing.Right = 6
|
||||
Caption = 'Text &after each line'
|
||||
FocusControl = TxtAfterLinesEdit
|
||||
ParentColor = False
|
||||
end
|
||||
object TxtAfterLinesEdit: TEdit
|
||||
Left = 6
|
||||
Height = 27
|
||||
Top = 79
|
||||
Width = 432
|
||||
Align = alTop
|
||||
BorderSpacing.Left = 6
|
||||
BorderSpacing.Top = 3
|
||||
BorderSpacing.Right = 6
|
||||
TabOrder = 1
|
||||
end
|
||||
object EscQuotesCheckBox: TCheckBox
|
||||
AnchorSideLeft.Control = TxtAfterLinesEdit
|
||||
AnchorSideTop.Control = TxtAfterLinesEdit
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 6
|
||||
Height = 21
|
||||
Top = 112
|
||||
Width = 104
|
||||
BorderSpacing.Top = 6
|
||||
BorderSpacing.Right = 6
|
||||
Caption = 'Escape "es'
|
||||
Checked = True
|
||||
State = cbChecked
|
||||
TabOrder = 2
|
||||
end
|
||||
object EscQuotesStyleComboBox: TComboBox
|
||||
AnchorSideLeft.Control = EscQuotesCheckBox
|
||||
AnchorSideTop.Control = EscQuotesCheckBox
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 26
|
||||
Height = 25
|
||||
Top = 139
|
||||
Width = 180
|
||||
BorderSpacing.Left = 20
|
||||
BorderSpacing.Top = 6
|
||||
ItemHeight = 0
|
||||
ItemIndex = 0
|
||||
Items.Strings = (
|
||||
'Pascal style: '' => '''''
|
||||
'C style: " => \"'
|
||||
)
|
||||
Style = csDropDownList
|
||||
TabOrder = 3
|
||||
Text = 'Pascal style: '' => '''''
|
||||
end
|
||||
object TrimClipbrdContentsCheckBox: TCheckBox
|
||||
AnchorSideLeft.Control = EscQuotesCheckBox
|
||||
AnchorSideTop.Control = EscQuotesStyleComboBox
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 6
|
||||
Height = 21
|
||||
Top = 170
|
||||
Width = 155
|
||||
BorderSpacing.Top = 6
|
||||
BorderSpacing.Bottom = 6
|
||||
Caption = '&Trim clipboard contents'
|
||||
Checked = True
|
||||
State = cbChecked
|
||||
TabOrder = 4
|
||||
end
|
||||
end
|
||||
object PreviewGroupBox: TGroupBox
|
||||
Left = 6
|
||||
Height = 225
|
||||
Top = 228
|
||||
Width = 448
|
||||
Align = alClient
|
||||
BorderSpacing.Around = 6
|
||||
Caption = '&Preview'
|
||||
ClientHeight = 206
|
||||
ClientWidth = 444
|
||||
TabOrder = 1
|
||||
inline PreviewSynEdit: TSynEdit
|
||||
Left = 6
|
||||
Height = 194
|
||||
Top = 6
|
||||
Width = 432
|
||||
Align = alClient
|
||||
BorderSpacing.Around = 6
|
||||
Font.Height = 13
|
||||
Font.Name = 'DejaVu Sans Mono'
|
||||
Font.Pitch = fpFixed
|
||||
Font.Quality = fqNonAntialiased
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
TabOrder = 0
|
||||
Gutter.Width = 57
|
||||
Gutter.MouseActions = <>
|
||||
RightGutter.Width = 0
|
||||
RightGutter.MouseActions = <>
|
||||
InsertMode = False
|
||||
Keystrokes = <
|
||||
item
|
||||
Command = ecUp
|
||||
ShortCut = 38
|
||||
end
|
||||
item
|
||||
Command = ecSelUp
|
||||
ShortCut = 8230
|
||||
end
|
||||
item
|
||||
Command = ecScrollUp
|
||||
ShortCut = 16422
|
||||
end
|
||||
item
|
||||
Command = ecDown
|
||||
ShortCut = 40
|
||||
end
|
||||
item
|
||||
Command = ecSelDown
|
||||
ShortCut = 8232
|
||||
end
|
||||
item
|
||||
Command = ecScrollDown
|
||||
ShortCut = 16424
|
||||
end
|
||||
item
|
||||
Command = ecLeft
|
||||
ShortCut = 37
|
||||
end
|
||||
item
|
||||
Command = ecSelLeft
|
||||
ShortCut = 8229
|
||||
end
|
||||
item
|
||||
Command = ecWordLeft
|
||||
ShortCut = 16421
|
||||
end
|
||||
item
|
||||
Command = ecSelWordLeft
|
||||
ShortCut = 24613
|
||||
end
|
||||
item
|
||||
Command = ecRight
|
||||
ShortCut = 39
|
||||
end
|
||||
item
|
||||
Command = ecSelRight
|
||||
ShortCut = 8231
|
||||
end
|
||||
item
|
||||
Command = ecWordRight
|
||||
ShortCut = 16423
|
||||
end
|
||||
item
|
||||
Command = ecSelWordRight
|
||||
ShortCut = 24615
|
||||
end
|
||||
item
|
||||
Command = ecPageDown
|
||||
ShortCut = 34
|
||||
end
|
||||
item
|
||||
Command = ecSelPageDown
|
||||
ShortCut = 8226
|
||||
end
|
||||
item
|
||||
Command = ecPageBottom
|
||||
ShortCut = 16418
|
||||
end
|
||||
item
|
||||
Command = ecSelPageBottom
|
||||
ShortCut = 24610
|
||||
end
|
||||
item
|
||||
Command = ecPageUp
|
||||
ShortCut = 33
|
||||
end
|
||||
item
|
||||
Command = ecSelPageUp
|
||||
ShortCut = 8225
|
||||
end
|
||||
item
|
||||
Command = ecPageTop
|
||||
ShortCut = 16417
|
||||
end
|
||||
item
|
||||
Command = ecSelPageTop
|
||||
ShortCut = 24609
|
||||
end
|
||||
item
|
||||
Command = ecLineStart
|
||||
ShortCut = 36
|
||||
end
|
||||
item
|
||||
Command = ecSelLineStart
|
||||
ShortCut = 8228
|
||||
end
|
||||
item
|
||||
Command = ecEditorTop
|
||||
ShortCut = 16420
|
||||
end
|
||||
item
|
||||
Command = ecSelEditorTop
|
||||
ShortCut = 24612
|
||||
end
|
||||
item
|
||||
Command = ecLineEnd
|
||||
ShortCut = 35
|
||||
end
|
||||
item
|
||||
Command = ecSelLineEnd
|
||||
ShortCut = 8227
|
||||
end
|
||||
item
|
||||
Command = ecEditorBottom
|
||||
ShortCut = 16419
|
||||
end
|
||||
item
|
||||
Command = ecSelEditorBottom
|
||||
ShortCut = 24611
|
||||
end
|
||||
item
|
||||
Command = ecToggleMode
|
||||
ShortCut = 45
|
||||
end
|
||||
item
|
||||
Command = ecCopy
|
||||
ShortCut = 16429
|
||||
end
|
||||
item
|
||||
Command = ecPaste
|
||||
ShortCut = 8237
|
||||
end
|
||||
item
|
||||
Command = ecDeleteChar
|
||||
ShortCut = 46
|
||||
end
|
||||
item
|
||||
Command = ecCut
|
||||
ShortCut = 8238
|
||||
end
|
||||
item
|
||||
Command = ecDeleteLastChar
|
||||
ShortCut = 8
|
||||
end
|
||||
item
|
||||
Command = ecDeleteLastChar
|
||||
ShortCut = 8200
|
||||
end
|
||||
item
|
||||
Command = ecDeleteLastWord
|
||||
ShortCut = 16392
|
||||
end
|
||||
item
|
||||
Command = ecUndo
|
||||
ShortCut = 32776
|
||||
end
|
||||
item
|
||||
Command = ecRedo
|
||||
ShortCut = 40968
|
||||
end
|
||||
item
|
||||
Command = ecLineBreak
|
||||
ShortCut = 13
|
||||
end
|
||||
item
|
||||
Command = ecSelectAll
|
||||
ShortCut = 16449
|
||||
end
|
||||
item
|
||||
Command = ecCopy
|
||||
ShortCut = 16451
|
||||
end
|
||||
item
|
||||
Command = ecBlockIndent
|
||||
ShortCut = 24649
|
||||
end
|
||||
item
|
||||
Command = ecLineBreak
|
||||
ShortCut = 16461
|
||||
end
|
||||
item
|
||||
Command = ecInsertLine
|
||||
ShortCut = 16462
|
||||
end
|
||||
item
|
||||
Command = ecDeleteWord
|
||||
ShortCut = 16468
|
||||
end
|
||||
item
|
||||
Command = ecBlockUnindent
|
||||
ShortCut = 24661
|
||||
end
|
||||
item
|
||||
Command = ecPaste
|
||||
ShortCut = 16470
|
||||
end
|
||||
item
|
||||
Command = ecCut
|
||||
ShortCut = 16472
|
||||
end
|
||||
item
|
||||
Command = ecDeleteLine
|
||||
ShortCut = 16473
|
||||
end
|
||||
item
|
||||
Command = ecDeleteEOL
|
||||
ShortCut = 24665
|
||||
end
|
||||
item
|
||||
Command = ecUndo
|
||||
ShortCut = 16474
|
||||
end
|
||||
item
|
||||
Command = ecRedo
|
||||
ShortCut = 24666
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker0
|
||||
ShortCut = 16432
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker1
|
||||
ShortCut = 16433
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker2
|
||||
ShortCut = 16434
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker3
|
||||
ShortCut = 16435
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker4
|
||||
ShortCut = 16436
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker5
|
||||
ShortCut = 16437
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker6
|
||||
ShortCut = 16438
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker7
|
||||
ShortCut = 16439
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker8
|
||||
ShortCut = 16440
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker9
|
||||
ShortCut = 16441
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker0
|
||||
ShortCut = 24624
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker1
|
||||
ShortCut = 24625
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker2
|
||||
ShortCut = 24626
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker3
|
||||
ShortCut = 24627
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker4
|
||||
ShortCut = 24628
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker5
|
||||
ShortCut = 24629
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker6
|
||||
ShortCut = 24630
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker7
|
||||
ShortCut = 24631
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker8
|
||||
ShortCut = 24632
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker9
|
||||
ShortCut = 24633
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel1
|
||||
ShortCut = 41009
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel2
|
||||
ShortCut = 41010
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel3
|
||||
ShortCut = 41011
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel4
|
||||
ShortCut = 41012
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel5
|
||||
ShortCut = 41013
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel6
|
||||
ShortCut = 41014
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel7
|
||||
ShortCut = 41015
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel8
|
||||
ShortCut = 41016
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel9
|
||||
ShortCut = 41017
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel0
|
||||
ShortCut = 41008
|
||||
end
|
||||
item
|
||||
Command = EcFoldCurrent
|
||||
ShortCut = 41005
|
||||
end
|
||||
item
|
||||
Command = EcUnFoldCurrent
|
||||
ShortCut = 41003
|
||||
end
|
||||
item
|
||||
Command = EcToggleMarkupWord
|
||||
ShortCut = 32845
|
||||
end
|
||||
item
|
||||
Command = ecNormalSelect
|
||||
ShortCut = 24654
|
||||
end
|
||||
item
|
||||
Command = ecColumnSelect
|
||||
ShortCut = 24643
|
||||
end
|
||||
item
|
||||
Command = ecLineSelect
|
||||
ShortCut = 24652
|
||||
end
|
||||
item
|
||||
Command = ecTab
|
||||
ShortCut = 9
|
||||
end
|
||||
item
|
||||
Command = ecShiftTab
|
||||
ShortCut = 8201
|
||||
end
|
||||
item
|
||||
Command = ecMatchBracket
|
||||
ShortCut = 24642
|
||||
end
|
||||
item
|
||||
Command = ecColSelUp
|
||||
ShortCut = 40998
|
||||
end
|
||||
item
|
||||
Command = ecColSelDown
|
||||
ShortCut = 41000
|
||||
end
|
||||
item
|
||||
Command = ecColSelLeft
|
||||
ShortCut = 40997
|
||||
end
|
||||
item
|
||||
Command = ecColSelRight
|
||||
ShortCut = 40999
|
||||
end
|
||||
item
|
||||
Command = ecColSelPageDown
|
||||
ShortCut = 40994
|
||||
end
|
||||
item
|
||||
Command = ecColSelPageBottom
|
||||
ShortCut = 57378
|
||||
end
|
||||
item
|
||||
Command = ecColSelPageUp
|
||||
ShortCut = 40993
|
||||
end
|
||||
item
|
||||
Command = ecColSelPageTop
|
||||
ShortCut = 57377
|
||||
end
|
||||
item
|
||||
Command = ecColSelLineStart
|
||||
ShortCut = 40996
|
||||
end
|
||||
item
|
||||
Command = ecColSelLineEnd
|
||||
ShortCut = 40995
|
||||
end
|
||||
item
|
||||
Command = ecColSelEditorTop
|
||||
ShortCut = 57380
|
||||
end
|
||||
item
|
||||
Command = ecColSelEditorBottom
|
||||
ShortCut = 57379
|
||||
end>
|
||||
MouseActions = <>
|
||||
MouseTextActions = <>
|
||||
MouseSelActions = <>
|
||||
Options = [eoAutoIndent, eoBracketHighlight, eoGroupUndo, eoNoCaret, eoScrollPastEol, eoSmartTabs, eoTabsToSpaces, eoTrimTrailingSpaces]
|
||||
VisibleSpecialChars = [vscSpace, vscTabAtLast]
|
||||
ReadOnly = True
|
||||
SelectedColor.BackPriority = 50
|
||||
SelectedColor.ForePriority = 50
|
||||
SelectedColor.FramePriority = 50
|
||||
SelectedColor.BoldPriority = 50
|
||||
SelectedColor.ItalicPriority = 50
|
||||
SelectedColor.UnderlinePriority = 50
|
||||
SelectedColor.StrikeOutPriority = 50
|
||||
BracketHighlightStyle = sbhsBoth
|
||||
BracketMatchColor.Background = clNone
|
||||
BracketMatchColor.Foreground = clNone
|
||||
BracketMatchColor.Style = [fsBold]
|
||||
FoldedCodeColor.Background = clNone
|
||||
FoldedCodeColor.Foreground = clGray
|
||||
FoldedCodeColor.FrameColor = clGray
|
||||
MouseLinkColor.Background = clNone
|
||||
MouseLinkColor.Foreground = clBlue
|
||||
LineHighlightColor.Background = clNone
|
||||
LineHighlightColor.Foreground = clNone
|
||||
inline SynLeftGutterPartList1: TSynGutterPartList
|
||||
object SynGutterMarks1: TSynGutterMarks
|
||||
Width = 24
|
||||
MouseActions = <>
|
||||
end
|
||||
object SynGutterLineNumber1: TSynGutterLineNumber
|
||||
Width = 17
|
||||
MouseActions = <>
|
||||
MarkupInfo.Background = clBtnFace
|
||||
MarkupInfo.Foreground = clNone
|
||||
DigitCount = 2
|
||||
ShowOnlyLineNumbersMultiplesOf = 1
|
||||
ZeroStart = False
|
||||
LeadingZeros = False
|
||||
end
|
||||
object SynGutterChanges1: TSynGutterChanges
|
||||
Width = 4
|
||||
MouseActions = <>
|
||||
ModifiedColor = 59900
|
||||
SavedColor = clGreen
|
||||
end
|
||||
object SynGutterSeparator1: TSynGutterSeparator
|
||||
Width = 2
|
||||
MouseActions = <>
|
||||
MarkupInfo.Background = clWhite
|
||||
MarkupInfo.Foreground = clGray
|
||||
end
|
||||
object SynGutterCodeFolding1: TSynGutterCodeFolding
|
||||
MouseActions = <>
|
||||
MarkupInfo.Background = clNone
|
||||
MarkupInfo.Foreground = clGray
|
||||
MouseActionsExpanded = <>
|
||||
MouseActionsCollapsed = <>
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
object BottomButtonPanel: TButtonPanel
|
||||
Left = 6
|
||||
Height = 35
|
||||
Top = 459
|
||||
Width = 448
|
||||
BorderSpacing.Left = 6
|
||||
BorderSpacing.Right = 6
|
||||
BorderSpacing.Bottom = 6
|
||||
BorderSpacing.Around = 0
|
||||
OKButton.Name = 'OKButton'
|
||||
OKButton.DefaultCaption = True
|
||||
HelpButton.Name = 'HelpButton'
|
||||
HelpButton.DefaultCaption = True
|
||||
CloseButton.Name = 'CloseButton'
|
||||
CloseButton.DefaultCaption = True
|
||||
CancelButton.Name = 'CancelButton'
|
||||
CancelButton.DefaultCaption = True
|
||||
TabOrder = 2
|
||||
ShowButtons = [pbOK, pbCancel, pbHelp]
|
||||
end
|
||||
end
|
142
ide/multipastedlg.pas
Normal file
142
ide/multipastedlg.pas
Normal file
@ -0,0 +1,142 @@
|
||||
{
|
||||
***************************************************************************
|
||||
* *
|
||||
* 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. *
|
||||
* *
|
||||
***************************************************************************
|
||||
|
||||
MultiPaste text - Lazarus addon
|
||||
|
||||
Author: Silvio Clecio (https://github.com/silvioprog)
|
||||
Inspired by: Delphi Multi Paste
|
||||
Last Modified: Fri Sep 30 15:22:18 EDT 2016
|
||||
|
||||
Abstract:
|
||||
|
||||
The MultiPaste dialog enables you to modify and paste into the
|
||||
Source Editor the text you copied to the clipboard. The MultiPaste feature
|
||||
helps you to work with SQL, HTML, JSON, formatted text, and any other text.
|
||||
|
||||
}
|
||||
|
||||
unit MultiPasteDlg;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
SysUtils, Classes, StdCtrls, ButtonPanel, Forms, Clipbrd, IDEHelpIntf, SynEdit;
|
||||
|
||||
type
|
||||
TMultiPasteDialog = class(TForm)
|
||||
BottomButtonPanel: TButtonPanel;
|
||||
PreviewSynEdit: TSynEdit;
|
||||
TrimClipbrdContentsCheckBox: TCheckBox;
|
||||
EscQuotesCheckBox: TCheckBox;
|
||||
EscQuotesStyleComboBox: TComboBox;
|
||||
TxtBeforeLinesEdit: TEdit;
|
||||
TxtAfterLinesEdit: TEdit;
|
||||
TxtBeforeLinesLabel: TLabel;
|
||||
TxtAfterLinesLabel: TLabel;
|
||||
PasteOptsGroupBox: TGroupBox;
|
||||
PreviewGroupBox: TGroupBox;
|
||||
private
|
||||
FContent: TStringList;
|
||||
protected
|
||||
procedure DoWatch(Sender: TObject); virtual;
|
||||
procedure DoUpdatePreview; virtual;
|
||||
function DoFormatContent(const AContent: string): string; virtual;
|
||||
procedure DoEscQuotesCheckBoxChange(Sender: TObject); virtual;
|
||||
procedure DoHelpButtonClick(Sender: TObject); virtual;
|
||||
public
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
destructor Destroy; override;
|
||||
property Content: TStringList read FContent;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
{$R *.lfm}
|
||||
|
||||
constructor TMultiPasteDialog.Create(AOwner: TComponent);
|
||||
begin
|
||||
inherited Create(AOwner);
|
||||
FContent := TStringList.Create;
|
||||
FContent.SkipLastLineBreak := True;
|
||||
OnShow := @DoWatch;
|
||||
OnActivate := @DoWatch;
|
||||
TxtBeforeLinesEdit.OnChange := @DoWatch;
|
||||
TxtAfterLinesEdit.OnChange := @DoWatch;
|
||||
EscQuotesCheckBox.OnChange := @DoEscQuotesCheckBoxChange;
|
||||
EscQuotesStyleComboBox.OnChange := @DoWatch;
|
||||
TrimClipbrdContentsCheckBox.OnChange := @DoWatch;
|
||||
BottomButtonPanel.HelpButton.OnClick := @DoHelpButtonClick;
|
||||
end;
|
||||
|
||||
destructor TMultiPasteDialog.Destroy;
|
||||
begin
|
||||
FContent.Free;
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
procedure TMultiPasteDialog.DoWatch(Sender: TObject);
|
||||
begin
|
||||
DoUpdatePreview;
|
||||
end;
|
||||
|
||||
procedure TMultiPasteDialog.DoUpdatePreview;
|
||||
begin
|
||||
if Clipboard.HasFormat(CF_TEXT) then
|
||||
PreviewSynEdit.Lines.Text := DoFormatContent(Clipboard.AsText)
|
||||
else
|
||||
PreviewSynEdit.Clear;
|
||||
end;
|
||||
|
||||
function TMultiPasteDialog.DoFormatContent(const AContent: string): string;
|
||||
var
|
||||
I: Integer;
|
||||
S: string;
|
||||
begin
|
||||
FContent.Text := AContent;
|
||||
for I := 0 to Pred(FContent.Count) do
|
||||
begin
|
||||
S := FContent[I];
|
||||
if TrimClipbrdContentsCheckBox.Checked then
|
||||
S := Trim(S);
|
||||
if EscQuotesCheckBox.Checked then
|
||||
case EscQuotesStyleComboBox.ItemIndex of
|
||||
0: S := StringReplace(S, '''', '''''', [rfReplaceAll]);
|
||||
1: S := StringReplace(S, '"', '\"', [rfReplaceAll]);
|
||||
end;
|
||||
FContent[I] := Concat(TxtBeforeLinesEdit.Text, S, TxtAfterLinesEdit.Text);
|
||||
end;
|
||||
Result := FContent.Text;
|
||||
end;
|
||||
|
||||
procedure TMultiPasteDialog.DoEscQuotesCheckBoxChange(Sender: TObject);
|
||||
begin
|
||||
DoWatch(Sender);
|
||||
EscQuotesStyleComboBox.Enabled := EscQuotesCheckBox.Checked;
|
||||
end;
|
||||
|
||||
procedure TMultiPasteDialog.DoHelpButtonClick(Sender: TObject);
|
||||
begin
|
||||
LazarusHelp.ShowHelpForIDEControl(Self);
|
||||
end;
|
||||
|
||||
end.
|
||||
|
Loading…
Reference in New Issue
Block a user