ADD: cm_CopyNetNamesToClip internal command (fixes #352)

This commit is contained in:
Alexander Koblov 2022-02-14 18:49:01 +03:00
commit 1319848425
5 changed files with 51 additions and 33 deletions

View file

@ -2010,6 +2010,12 @@ object frmMain: TfrmMain
Caption = 'Network &Disconnect'
OnExecute = actExecute
end
object actCopyNetNamesToClip: TAction
Tag = 6
Category = 'Network'
Caption = 'Copy names with UNC path'
OnExecute = actExecute
end
object actCopyPathOfFilesToClip: TAction
Tag = 12
Category = 'Clipboard'

View file

@ -158,6 +158,7 @@ type
actShellExecute: TAction;
actRenameTab: TAction;
actOperationsViewer: TAction;
actCopyNetNamesToClip: TAction;
actNetworkDisconnect: TAction;
actNetworkQuickConnect: TAction;
actNetworkConnect: TAction;

View file

@ -119,16 +119,17 @@ procedure ShowOpenWithDialog(TheOwner: TComponent; const FileList: TStringList);
function GetControlHandle(AWindow: TWinControl): HWND;
function GetWindowHandle(AWindow: TWinControl): HWND; overload;
function GetWindowHandle(AHandle: HWND): HWND; overload;
procedure CopyNetNamesToClip;
implementation
uses
ExtDlgs, LCLProc, Menus, Graphics, InterfaceBase, WSForms, LMessages, LCLIntf,
fMain, uConnectionManager
fMain, uConnectionManager, uLng
{$IF DEFINED(MSWINDOWS)}
, LCLStrConsts, ComObj, DCOSUtils, uOSUtils, uFileSystemFileSource
, uTotalCommander, FileUtil, Windows, ShlObj, uShlObjAdditional
, uWinNetFileSource, uVfsModule, uLng, uMyWindows, DCStrUtils
, uWinNetFileSource, uVfsModule, uMyWindows, DCStrUtils
, uDCReadSVG, uFileSourceUtil, uGdiPlusJPEG, uListGetPreviewBitmap
, Dialogs, Clipbrd, uShowMsg, uDebug, JwaDbt, uThumbnailProvider
, uRecycleBinFileSource, uDCReadHEIF
@ -142,7 +143,7 @@ uses
, uDCReadSVG, uMagickWand, uGio, uGioFileSource, uVfsModule, uVideoThumb
, uDCReadWebP, uFolderThumb, uAudioThumb, uDefaultTerminal, uDCReadHEIF
{$ELSE}
, MacOSAll, uQuickLook, uMyDarwin, uShowMsg, uLng
, MacOSAll, uQuickLook, uMyDarwin, uShowMsg
{$ENDIF}
{$IF NOT DEFINED(DARWIN)}
, fOpenWith
@ -464,32 +465,6 @@ begin
end;
end;
procedure CopyNetNamesToClip(Self, Sender: TObject);
var
I: Integer;
sl: TStringList = nil;
SelectedFiles: TFiles = nil;
begin
SelectedFiles := frmMain.ActiveFrame.CloneSelectedOrActiveFiles;
try
if SelectedFiles.Count > 0 then
begin
sl := TStringList.Create;
for I := 0 to SelectedFiles.Count - 1 do
begin
sl.Add(mbGetRemoteFileName(SelectedFiles[I].FullPath));
end;
Clipboard.Clear; // Prevent multiple formats in Clipboard (specially synedit)
Clipboard.AsText := TrimRightLineEnding(sl.Text, sl.TextLineBreakStyle);
end;
finally
FreeAndNil(sl);
FreeAndNil(SelectedFiles);
end;
end;
procedure CreateShortcut(Self, Sender: TObject);
var
ShortcutName: String;
@ -628,9 +603,7 @@ begin
mnuNetwork.Add(MenuItem);
MenuItem:= TMenuItem.Create(mnuMain);
MenuItem.Caption:= rsMnuCopyNetNamesToClip;
Handler.Code:= @CopyNetNamesToClip;
MenuItem.OnClick:= TNotifyEvent(Handler);
MenuItem.Action:= frmMain.actCopyNetNamesToClip;
mnuNetwork.Add(MenuItem);
MenuItem:= TMenuItem.Create(mnuMain);
@ -907,6 +880,38 @@ begin
end;
{$ENDIF}
procedure CopyNetNamesToClip;
{$IF DEFINED(MSWINDOWS)}
var
I: Integer;
sl: TStringList = nil;
SelectedFiles: TFiles = nil;
begin
SelectedFiles := frmMain.ActiveFrame.CloneSelectedOrActiveFiles;
try
if SelectedFiles.Count > 0 then
begin
sl := TStringList.Create;
for I := 0 to SelectedFiles.Count - 1 do
begin
sl.Add(mbGetRemoteFileName(SelectedFiles[I].FullPath));
end;
Clipboard.Clear; // Prevent multiple formats in Clipboard (specially synedit)
Clipboard.AsText := TrimRightLineEnding(sl.Text, sl.TextLineBreakStyle);
end;
finally
FreeAndNil(sl);
FreeAndNil(SelectedFiles);
end;
end;
{$ELSE}
begin
msgWarning(rsMsgErrNotSupported);
end;
{$ENDIF}
{$IF DEFINED(UNIX) AND NOT DEFINED(DARWIN)}
procedure ShowOpenWithDialog(TheOwner: TComponent; const FileList: TStringList);
begin

View file

@ -298,7 +298,7 @@ const
(TCCommand: 'cm_PasteFromClipboard'; TCIcon: -1; DCCommand: 'cm_PasteFromClipboard'; DCParameters: '' ), //Paste from clipboard to current dir
(TCCommand: 'cm_CopyNamesToClip'; TCIcon: 45; DCCommand: 'cm_CopyNamesToClip'; DCParameters: '' ), //Copy filenames to clipboard
(TCCommand: 'cm_CopyFullNamesToClip'; TCIcon: 45; DCCommand: 'cm_CopyFullNamesToClip'; DCParameters: '' ), //Copy names with full path
(TCCommand: 'cm_CopyNetNamesToClip'; TCIcon: 45; DCCommand: ''; DCParameters: '' ), //Copy names with UNC path
(TCCommand: 'cm_CopyNetNamesToClip'; TCIcon: 45; DCCommand: 'cm_CopyNetNamesToClip'; DCParameters: '' ), //Copy names with UNC path
(TCCommand: 'cm_CopySrcPathToClip'; TCIcon: 45; DCCommand: ''; DCParameters: '' ), //Copy source path to clipboard
(TCCommand: 'cm_CopyTrgPathToClip'; TCIcon: 45; DCCommand: ''; DCParameters: '' ), //Copy target path to clipboard
(TCCommand: 'cm_CopyFileDetailsToClip'; TCIcon: 59; DCCommand: 'cm_CopyFileDetailsToClip'; DCParameters: '' ), //Copy all shown columns

View file

@ -330,6 +330,7 @@ type
procedure cm_ClearLogFile(const Params: array of string);
procedure cm_NetworkConnect(const Params: array of string);
procedure cm_NetworkDisconnect(const Params: array of string);
procedure cm_CopyNetNamesToClip(const Params: array of string);
procedure cm_HorizontalFilePanels(const Params: array of string);
procedure cm_OperationsViewer(const Params: array of string);
procedure cm_CompareDirectories(const Params: array of string);
@ -4427,6 +4428,11 @@ begin
CloseNetworkConnection();
end;
procedure TMainCommands.cm_CopyNetNamesToClip(const Params: array of string);
begin
CopyNetNamesToClip;
end;
procedure TMainCommands.cm_HorizontalFilePanels(const Params: array of string);
var
sParamValue:string;