View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0002358 | Double Commander | Graphical user interface | public | 2019-09-18 13:27 | 2021-10-29 23:21 |
Reporter | liquidvacuum | Assigned To | Alexx2000 | ||
Priority | normal | Severity | feature | Reproducibility | N/A |
Status | closed | Resolution | fixed | ||
Projection | none | ETA | none | ||
Target Version | 1.0.0 | Fixed in Version | 1.0.0 | ||
Summary | 0002358: Add copy to clipboard is Syncronize directories dialog | ||||
Description | Необходимо добавить копирование выделенных строк в буфер обмена по сочетаниям клавиш Ctrl+Ins и Ctrl+C в диалоге "Синхронизировать каталоги". Патч приложен. There is need to add copying of the selected lines to the clipboard by keyboard shortcuts Ctrl+Ins and Ctrl+C in the "Synchronize directories" dialog. Patch attached. | ||||
Tags | No tags attached. | ||||
Attached Files | 02-sync-clipboard.diff (3,915 bytes)
diff --git a/doublecmd-0.9.6.orig/src/fsyncdirsdlg.pas b/doublecmd-0.9.6/src/fsyncdirsdlg.pas index 346b2f5..a86dda8 100644 --- a/doublecmd-0.9.6.orig/src/fsyncdirsdlg.pas +++ b/doublecmd-0.9.6/src/fsyncdirsdlg.pas @@ -175,6 +175,8 @@ type constructor Create(AOwner: TComponent; FileView1, FileView2: TFileView); reintroduce; destructor Destroy; override; + public + procedure CopyToClipboard; published procedure cm_SelectClear(const {%H-}Params:array of string); procedure cm_SelectDeleteLeft(const {%H-}Params:array of string); @@ -203,7 +205,7 @@ uses fMain, uDebug, fDiffer, fSyncDirsPerformDlg, uGlobs, LCLType, LazUTF8, LazFileUtils, DCClassesUtf8, uFileSystemFileSource, uFileSourceOperationOptions, DCDateTimeUtils, uDCUtils, uFileSourceUtil, uFileSourceOperationTypes, uShowForm, - uFileSourceDeleteOperation, uOSUtils, uLng, uMasks; + uFileSourceDeleteOperation, uOSUtils, uLng, uMasks, uClipboard, IntegerList; {$R *.lfm} @@ -877,6 +879,16 @@ begin MainDrawGrid.Selection:= ASelection; end; end; + VK_C: + if (Shift = [ssModifier]) then + begin + CopyToClipboard; + end; + VK_INSERT: + if (Shift = [ssModifier]) then + begin + CopyToClipboard; + end; end; end; @@ -1649,6 +1661,109 @@ begin inherited Destroy; end; +procedure TfrmSyncDirsDlg.CopyToClipboard; +var + sl: TStringList; + RowList: TIntegerList; + I: Integer; + + procedure FillRowList(RowList: TIntegerList); + var + R, Y: Integer; + Selection: TGridRect; + begin + Selection := MainDrawGrid.Selection; + if (MainDrawGrid.HasMultiSelection) or (Selection.Bottom <> Selection.Top) then + begin + for Y:= 0 to MainDrawGrid.SelectedRangeCount - 1 do + begin + Selection:= MainDrawGrid.SelectedRange[Y]; + for R := Selection.Top to Selection.Bottom do + begin + if RowList.IndexOf(R) = -1 then + begin + RowList.Add(R); + end; + end; + end; + end + else + begin + R := MainDrawGrid.Row; + if RowList.IndexOf(R) = -1 then + begin + RowList.Add(R); + end; + end; + RowList.Sort; + end; + + procedure PrintRow(R: Integer); + var + s: string; + SyncRec: TFileSyncRec; + begin + s := ''; + SyncRec := TFileSyncRec(FVisibleItems.Objects[R]); + if not Assigned(SyncRec) then + begin + s := s + FVisibleItems[R]; + end + else + begin + if Assigned(SyncRec.FFileL) then + begin + s := s + FVisibleItems[R]; + s := s + #9; + s := s + IntToStr(SyncRec.FFileL.Size); + s := s + #9; + s := s + DateTimeToStr(SyncRec.FFileL.ModificationTime); + end; + if Length(s) <> 0 then + s := s + #9; + case SyncRec.FState of + srsUnknown: + s := s + '?'; + srsEqual: + s := s + '='; + srsNotEq: + s := s + '!='; + srsCopyLeft: + s := s + '<-'; + srsCopyRight: + s := s + '->'; + end; + if Length(s) <> 0 then + s := s + #9; + if Assigned(SyncRec.FFileR) then + begin + s := s + DateTimeToStr(SyncRec.FFileR.ModificationTime); + s := s + #9; + s := s + IntToStr(SyncRec.FFileR.Size); + s := s + #9; + s := s + FVisibleItems[R]; + end; + end; + sl.Add(s); + end; +begin + sl := TStringList.Create; + RowList := TIntegerList.Create; + try + FillRowList(RowList); + for I := 0 to RowList.Count - 1 do + begin + PrintRow(RowList[I]); + end; + ClipboardSetText(sl.Text); + finally + if Assigned(sl) then + FreeAndNil(sl); + if Assigned(RowList) then + FreeAndNil(RowList); + end; +end; + procedure TfrmSyncDirsDlg.cm_SelectClear(const Params: array of string); begin SetSyncRecState(srsDoNothing); | ||||
Fixed in Revision | 9055 | ||||
Operating system | |||||
Widgetset | |||||
Architecture | |||||
Date Modified | Username | Field | Change |
---|---|---|---|
2019-09-18 13:27 | liquidvacuum | New Issue | |
2019-09-18 13:27 | liquidvacuum | File Added: 02-sync-clipboard.diff | |
2019-09-18 20:03 | Alexx2000 | Fixed in Revision | => 9055 |
2019-09-18 20:03 | Alexx2000 | Assigned To | => Alexx2000 |
2019-09-18 20:03 | Alexx2000 | Status | new => resolved |
2019-09-18 20:03 | Alexx2000 | Resolution | open => fixed |
2019-09-18 20:03 | Alexx2000 | Fixed in Version | => 1.0.0 |
2019-09-18 20:03 | Alexx2000 | Target Version | => 1.0.0 |
2021-10-29 23:21 | Alexx2000 | Status | resolved => closed |