Browse Source

Bug 1477: Added "New > File" command to the toolbar

https://winscp.net/tracker/1477

Source commit: 6b54871cfbd6025a5b7080732f3319dd7bd0ba0b
Martin Prikryl 9 years ago
parent
commit
50f910bb64

+ 5 - 5
source/forms/CustomScpExplorer.cpp

@@ -2714,12 +2714,12 @@ void __fastcall TCustomScpExplorerForm::EditNew(TOperationSide Side)
 
   Side = GetSide(Side);
 
-  TCustomDirView * CurrentDirView = DirView(osCurrent);
-  TListItem * FocusedItem = CurrentDirView->ItemFocused;
+  TCustomDirView * DView = DirView(Side);
+  TListItem * FocusedItem = DView->ItemFocused;
   UnicodeString Name;
-  if ((FocusedItem != NULL) && !CurrentDirView->ItemIsParentDirectory(FocusedItem))
+  if ((FocusedItem != NULL) && !DView->ItemIsParentDirectory(FocusedItem))
   {
-    Name = CurrentDirView->ItemFileName(FocusedItem);
+    Name = DView->ItemFileName(FocusedItem);
   }
   else
   {
@@ -2775,7 +2775,7 @@ void __fastcall TCustomScpExplorerForm::EditNew(TOperationSide Side)
       {
         if (ExtractFilePath(Name).IsEmpty())
         {
-          LocalFileName = IncludeTrailingBackslash(DirView(Side)->PathName) + Name;
+          LocalFileName = IncludeTrailingBackslash(DView->PathName) + Name;
         }
         else
         {

+ 19 - 13
source/forms/NonVisual.cpp

@@ -205,10 +205,11 @@ void __fastcall TNonVisualDataModule::ExplorerActionsUpdate(
   UPD(LocalRenameAction, EnabledLocalSelectedOperation)
   UPD(LocalEditAction, EnabledLocalSelectedFileOperation && !WinConfiguration->DisableOpenEdit)
   UPD(LocalMoveAction, HasTerminal && EnabledLocalSelectedOperation)
-  UPD(LocalCreateDirAction, true)
+  UPD(LocalCreateDirAction2, true)
   UPD(LocalDeleteAction, EnabledLocalSelectedOperation)
   UPD(LocalPropertiesAction, EnabledLocalSelectedOperation)
-  UPD(LocalAddEditLinkAction, ScpExplorer->CanAddEditLink(osLocal))
+  UPD(LocalAddEditLinkAction2, ScpExplorer->CanAddEditLink(osLocal))
+  UPD(LocalNewFileAction, !WinConfiguration->DisableOpenEdit)
   // local focused operation
   UPD(LocalCopyFocusedAction, HasTerminal && EnabledLocalFocusedOperation)
   UPD(LocalCopyFocusedQueueAction, HasTerminal && EnabledLocalFocusedOperation)
@@ -222,10 +223,11 @@ void __fastcall TNonVisualDataModule::ExplorerActionsUpdate(
     ScpExplorer->Terminal->IsCapable[fcRename])
   UPD(RemoteEditAction, EnabledRemoteSelectedFileOperation && !WinConfiguration->DisableOpenEdit)
   UPD(RemoteMoveAction, EnabledRemoteSelectedOperation)
-  UPD(RemoteCreateDirAction, DirViewEnabled(osRemote))
+  UPD(RemoteCreateDirAction2, DirViewEnabled(osRemote))
+  UPD(RemoteNewFileAction, DirViewEnabled(osRemote) && !WinConfiguration->DisableOpenEdit)
   UPD(RemoteDeleteAction, EnabledRemoteSelectedOperation)
   UPD(RemotePropertiesAction, EnabledRemoteSelectedOperation)
-  UPD(RemoteAddEditLinkAction, ScpExplorer->CanAddEditLink(osRemote))
+  UPD(RemoteAddEditLinkAction2, ScpExplorer->CanAddEditLink(osRemote))
   // remote focused operation
   UPD(RemoteCopyFocusedAction, EnabledRemoteFocusedOperation)
   UPD(RemoteCopyFocusedQueueAction, EnabledRemoteFocusedOperation)
@@ -556,10 +558,11 @@ void __fastcall TNonVisualDataModule::ExplorerActionsExecute(
     EXE(LocalRenameAction, ScpExplorer->ExecuteFileOperationCommand(foRename, osLocal, false))
     EXE(LocalEditAction, ScpExplorer->ExecuteFile(osLocal, efDefaultEditor, NULL, true, false))
     EXE(LocalMoveAction, ScpExplorer->ExecuteFileOperationCommand(foMove, osLocal, false))
-    EXE(LocalCreateDirAction, ScpExplorer->CreateDirectory(osLocal))
+    EXE(LocalCreateDirAction2, ScpExplorer->CreateDirectory(osLocal))
     EXE(LocalDeleteAction, ScpExplorer->ExecuteFileOperationCommand(foDelete, osLocal, false))
     EXE(LocalPropertiesAction, ScpExplorer->ExecuteFileOperationCommand(foSetProperties, osLocal, false))
-    EXE(LocalAddEditLinkAction, ScpExplorer->AddEditLink(osLocal, false))
+    EXE(LocalAddEditLinkAction2, ScpExplorer->AddEditLink(osLocal, false))
+    EXE(LocalNewFileAction, ScpExplorer->EditNew(osLocal))
     // local focused operation
     EXE(LocalCopyFocusedAction, ScpExplorer->ExecuteCopyOperationCommand(osLocal, true, ShortCutFlag))
     EXE(LocalCopyFocusedQueueAction, ScpExplorer->ExecuteCopyOperationCommand(osLocal, true, cocQueue))
@@ -572,12 +575,13 @@ void __fastcall TNonVisualDataModule::ExplorerActionsExecute(
     EXE(RemoteRenameAction, ScpExplorer->ExecuteFileOperationCommand(foRename, osRemote, false))
     EXE(RemoteEditAction, ScpExplorer->ExecuteFile(osRemote, efDefaultEditor, NULL, true, false))
     EXE(RemoteMoveAction, ScpExplorer->ExecuteFileOperationCommand(foMove, osRemote, false))
-    EXE(RemoteCreateDirAction, ScpExplorer->CreateDirectory(osRemote))
+    EXE(RemoteCreateDirAction2, ScpExplorer->CreateDirectory(osRemote))
+    EXE(RemoteNewFileAction, ScpExplorer->EditNew(osRemote))
     EXE(RemoteDeleteAction, ScpExplorer->ExecuteFileOperationCommand(foDelete, osRemote, false))
     EXE(RemotePropertiesAction, ScpExplorer->ExecuteFileOperationCommand(foSetProperties, osRemote, false))
     EXE(RemoteMoveToAction, ScpExplorer->ExecuteFileOperationCommand(foRemoteMove, osCurrent, false))
     EXE(RemoteCopyToAction, ScpExplorer->ExecuteFileOperationCommand(foRemoteCopy, osCurrent, false))
-    EXE(RemoteAddEditLinkAction, ScpExplorer->AddEditLink(osRemote, false))
+    EXE(RemoteAddEditLinkAction2, ScpExplorer->AddEditLink(osRemote, false))
     // remote focused operation
     EXE(RemoteCopyFocusedAction, ScpExplorer->ExecuteCopyOperationCommand(osRemote, true, ShortCutFlag))
     EXE(RemoteCopyFocusedQueueAction, ScpExplorer->ExecuteCopyOperationCommand(osRemote, true, cocQueue))
@@ -948,12 +952,14 @@ void __fastcall TNonVisualDataModule::CommanderShortcuts()
 //---------------------------------------------------------------------------
 void __fastcall TNonVisualDataModule::CloneShortcuts()
 {
-  // Directory
+  // Commands
   NewDirAction->ShortCut = CurrentCreateDirAction->ShortCut;
   // File operation
   CurrentAddEditLinkContextAction->ShortCut = CurrentAddEditLinkAction->ShortCut;
-  LocalAddEditLinkAction->ShortCut = CurrentAddEditLinkAction->ShortCut;
-  RemoteAddEditLinkAction->ShortCut = CurrentAddEditLinkAction->ShortCut;
+  LocalAddEditLinkAction2->ShortCut = CurrentAddEditLinkAction->ShortCut;
+  RemoteAddEditLinkAction2->ShortCut = CurrentAddEditLinkAction->ShortCut;
+  RemoteNewFileAction->ShortCut = NewFileAction->ShortCut;
+  LocalNewFileAction->ShortCut = NewFileAction->ShortCut;
   // local directory
   LocalOpenDirAction->ShortCut = RemoteOpenDirAction->ShortCut;
   LocalRefreshAction->ShortCut = RemoteRefreshAction->ShortCut;
@@ -966,7 +972,7 @@ void __fastcall TNonVisualDataModule::CloneShortcuts()
   LocalRenameAction->ShortCut = CurrentRenameAction->ShortCut;
   LocalEditAction->ShortCut = CurrentEditAction->ShortCut;
   LocalMoveAction->ShortCut = RemoteMoveAction->ShortCut;
-  LocalCreateDirAction->ShortCut = CurrentCreateDirAction->ShortCut;
+  LocalCreateDirAction2->ShortCut = CurrentCreateDirAction->ShortCut;
   LocalDeleteAction->ShortCut = CurrentDeleteAction->ShortCut;
   LocalPropertiesAction->ShortCut = CurrentPropertiesAction->ShortCut;
   // local focused operation
@@ -975,7 +981,7 @@ void __fastcall TNonVisualDataModule::CloneShortcuts()
   // remote selected operation
   RemoteRenameAction->ShortCut = CurrentRenameAction->ShortCut;
   RemoteEditAction->ShortCut = CurrentEditAction->ShortCut;
-  RemoteCreateDirAction->ShortCut = CurrentCreateDirAction->ShortCut;
+  RemoteCreateDirAction2->ShortCut = CurrentCreateDirAction->ShortCut;
   RemoteDeleteAction->ShortCut = CurrentDeleteAction->ShortCut;
   RemotePropertiesAction->ShortCut = CurrentPropertiesAction->ShortCut;
   // remote focused operation

+ 24 - 8
source/forms/NonVisual.dfm

@@ -2063,10 +2063,10 @@ object NonVisualDataModule: TNonVisualDataModule
         'ory and delete original'
       ImageIndex = 98
     end
-    object LocalCreateDirAction: TAction
+    object LocalCreateDirAction2: TAction
       Tag = 12
       Category = 'Local Selected Operation'
-      Caption = '&Create Directory...'
+      Caption = '&Directory...'
       HelpKeyword = 'task_create_directory'
       Hint = 'Create directory|Create new local directory'
       ImageIndex = 5
@@ -2087,10 +2087,10 @@ object NonVisualDataModule: TNonVisualDataModule
       Hint = 'Properties|Display/change properties of selected local file(s)'
       ImageIndex = 4
     end
-    object LocalAddEditLinkAction: TAction
+    object LocalAddEditLinkAction2: TAction
       Tag = 12
       Category = 'Local Selected Operation'
-      Caption = 'Edit &Link...'
+      Caption = '&Shortcut...'
       HelpKeyword = 'task_link'
       Hint = 
         'Add/edit shortcut|Add new local shortcut or edit selected local ' +
@@ -2123,10 +2123,10 @@ object NonVisualDataModule: TNonVisualDataModule
         'rectory and delete original'
       ImageIndex = 97
     end
-    object RemoteCreateDirAction: TAction
+    object RemoteCreateDirAction2: TAction
       Tag = 12
       Category = 'Remote Selected Operation'
-      Caption = '&Create Directory...'
+      Caption = '&Directory...'
       HelpKeyword = 'task_create_directory'
       Hint = 'Create directory|Create new remote directory'
       ImageIndex = 5
@@ -2149,10 +2149,10 @@ object NonVisualDataModule: TNonVisualDataModule
         'ties of selected remote file(s) '
       ImageIndex = 4
     end
-    object RemoteAddEditLinkAction: TAction
+    object RemoteAddEditLinkAction2: TAction
       Tag = 12
       Category = 'Remote Selected Operation'
-      Caption = 'Edit &Link...'
+      Caption = '&Link...'
       HelpKeyword = 'task_link'
       Hint = 'Add/edit link|Add new remote link or edit selected remote link'
       ImageIndex = 60
@@ -2266,6 +2266,22 @@ object NonVisualDataModule: TNonVisualDataModule
       HelpKeyword = 'task_change_password'
       Hint = 'Change account password'
     end
+    object RemoteNewFileAction: TAction
+      Tag = 15
+      Category = 'Remote Selected Operation'
+      Caption = '&File...'
+      HelpKeyword = 'task_edit'
+      Hint = 'Create file|Create new file and open it in editor'
+      ImageIndex = 77
+    end
+    object LocalNewFileAction: TAction
+      Tag = 15
+      Category = 'Local Selected Operation'
+      Caption = '&File...'
+      HelpKeyword = 'task_edit'
+      Hint = 'Create file|Create new file and open it in editor'
+      ImageIndex = 77
+    end
   end
   object ExplorerBarPopup: TTBXPopupMenu
     Images = GlyphsModule.ExplorerImages

+ 6 - 4
source/forms/NonVisual.h

@@ -511,17 +511,17 @@ __published:    // IDE-managed Components
   TAction *LocalRenameAction;
   TAction *LocalEditAction;
   TAction *LocalMoveAction;
-  TAction *LocalCreateDirAction;
+  TAction *LocalCreateDirAction2;
   TAction *LocalDeleteAction;
   TAction *LocalPropertiesAction;
   TAction *RemoteRenameAction;
   TAction *RemoteEditAction;
   TAction *RemoteMoveAction;
-  TAction *RemoteCreateDirAction;
+  TAction *RemoteCreateDirAction2;
   TAction *RemoteDeleteAction;
   TAction *RemotePropertiesAction;
-  TAction *LocalAddEditLinkAction;
-  TAction *RemoteAddEditLinkAction;
+  TAction *LocalAddEditLinkAction2;
+  TAction *RemoteAddEditLinkAction2;
   TAction *CommanderLocalFileBandAction;
   TAction *CommanderRemoteFileBandAction;
   TTBXItem *TBXItem14;
@@ -618,6 +618,8 @@ __published:    // IDE-managed Components
   TTBXItem *TBXItem75;
   TTBXItem *TBXItem76;
   TAction *ChangePasswordAction;
+  TAction *RemoteNewFileAction;
+  TAction *LocalNewFileAction;
   void __fastcall LogActionsUpdate(TBasicAction *Action, bool &Handled);
   void __fastcall LogActionsExecute(TBasicAction *Action, bool &Handled);
   void __fastcall ExplorerActionsUpdate(TBasicAction *Action, bool &Handled);

+ 62 - 42
source/forms/ScpCommander.dfm

@@ -5,12 +5,12 @@ inherited ScpCommanderForm: TScpCommanderForm
   HelpKeyword = 'ui_commander'
   Caption = 'ScpCommanderForm'
   ClientHeight = 670
-  ClientWidth = 829
+  ClientWidth = 898
   OldCreateOrder = True
   PixelsPerInch = 96
   TextHeight = 13
   object Splitter: TSplitter [0]
-    Left = 395
+    Left = 435
     Top = 177
     Width = 5
     Height = 298
@@ -24,10 +24,10 @@ inherited ScpCommanderForm: TScpCommanderForm
   end
   inherited QueueSplitter: TSplitter
     Top = 529
-    Width = 829
+    Width = 898
   end
   inherited TopDock: TTBXDock
-    Width = 829
+    Width = 898
     Height = 156
     object MenuToolbar: TTBXToolbar
       Left = 0
@@ -1018,9 +1018,9 @@ inherited ScpCommanderForm: TScpCommanderForm
     end
   end
   inherited RemotePanel: TPanel
-    Left = 400
+    Left = 440
     Top = 177
-    Width = 429
+    Width = 458
     Height = 298
     Constraints.MinHeight = 220
     Constraints.MinWidth = 185
@@ -1028,7 +1028,7 @@ inherited ScpCommanderForm: TScpCommanderForm
     object RemotePathLabel: TPathLabel [0]
       Left = 0
       Top = 79
-      Width = 429
+      Width = 458
       Height = 19
       UnixPath = True
       IndentVertical = 3
@@ -1043,7 +1043,7 @@ inherited ScpCommanderForm: TScpCommanderForm
     inherited RemotePanelSplitter: TSplitter
       Left = 0
       Top = 143
-      Width = 429
+      Width = 458
       Height = 3
       Cursor = crSizeNS
       Hint = 
@@ -1053,7 +1053,7 @@ inherited ScpCommanderForm: TScpCommanderForm
     end
     inherited RemoteStatusBar: TTBXStatusBar
       Top = 279
-      Width = 429
+      Width = 458
       Panels = <
         item
           Framed = False
@@ -1087,7 +1087,7 @@ inherited ScpCommanderForm: TScpCommanderForm
     inherited RemoteDirView: TUnixDirView
       Left = 0
       Top = 146
-      Width = 429
+      Width = 458
       Height = 124
       Constraints.MinHeight = 70
       NortonLike = nlOn
@@ -1100,7 +1100,7 @@ inherited ScpCommanderForm: TScpCommanderForm
     end
     inherited RemoteDriveView: TUnixDriveView
       Top = 98
-      Width = 429
+      Width = 458
       Height = 45
       Align = alTop
       Constraints.MinHeight = 30
@@ -1109,7 +1109,7 @@ inherited ScpCommanderForm: TScpCommanderForm
     object RemoteTopDock: TTBXDock
       Left = 0
       Top = 0
-      Width = 429
+      Width = 458
       Height = 79
       Color = clBtnFace
       FixAlign = True
@@ -1203,7 +1203,7 @@ inherited ScpCommanderForm: TScpCommanderForm
         end
       end
       object RemoteFileToolbar: TTBXToolbar
-        Left = 0
+        Left = 1
         Top = 53
         Caption = 'Remote Files'
         DockPos = 1
@@ -1249,15 +1249,25 @@ inherited ScpCommanderForm: TScpCommanderForm
         end
         object TBXSeparatorItem56: TTBXSeparatorItem
         end
-        object TBXItem244: TTBXItem
-          Action = NonVisualDataModule.RemoteCreateDirAction
-        end
-        object TBXItem246: TTBXItem
-          Action = NonVisualDataModule.RemoteAddEditLinkAction
+        object RemoteNewSubmenuItem: TTBXSubmenuItem
+          Caption = '&New'
+          DisplayMode = nbdmImageAndText
+          Hint = 'Create object|Create new object'
+          ImageIndex = 5
+          Options = [tboDropdownArrow]
+          object TBXItem247: TTBXItem
+            Action = NonVisualDataModule.RemoteNewFileAction
+          end
+          object TBXItem244: TTBXItem
+            Action = NonVisualDataModule.RemoteCreateDirAction2
+          end
+          object TBXItem246: TTBXItem
+            Action = NonVisualDataModule.RemoteAddEditLinkAction2
+          end
         end
       end
       object RemoteSelectionToolbar: TTBXToolbar
-        Left = 350
+        Left = 370
         Top = 53
         Caption = 'Remote Selection'
         DockPos = 347
@@ -1281,7 +1291,7 @@ inherited ScpCommanderForm: TScpCommanderForm
     object RemoteBottomDock: TTBXDock
       Left = 0
       Top = 270
-      Width = 429
+      Width = 458
       Height = 9
       Color = clBtnFace
       FixAlign = True
@@ -1290,29 +1300,29 @@ inherited ScpCommanderForm: TScpCommanderForm
   end
   inherited QueuePanel: TPanel
     Top = 532
-    Width = 829
+    Width = 898
     Height = 116
     TabOrder = 2
     inherited QueueLabel: TPathLabel
-      Width = 829
+      Width = 898
     end
     inherited QueueView3: TListView
-      Width = 829
+      Width = 898
       Height = 71
       TabStop = False
     end
     inherited QueueDock: TTBXDock
-      Width = 829
+      Width = 898
     end
   end
   inherited SessionsPageControl: TThemePageControl
     Top = 156
-    Width = 829
+    Width = 898
   end
   object LocalPanel: TPanel [6]
     Left = 0
     Top = 177
-    Width = 395
+    Width = 435
     Height = 298
     Align = alLeft
     BevelOuter = bvNone
@@ -1324,7 +1334,7 @@ inherited ScpCommanderForm: TScpCommanderForm
     object LocalPathLabel: TPathLabel
       Left = 0
       Top = 79
-      Width = 395
+      Width = 435
       Height = 19
       IndentVertical = 3
       AutoSizeVertical = True
@@ -1339,7 +1349,7 @@ inherited ScpCommanderForm: TScpCommanderForm
     object LocalPanelSplitter: TSplitter
       Left = 0
       Top = 143
-      Width = 395
+      Width = 435
       Height = 3
       Cursor = crSizeNS
       Hint = 
@@ -1355,7 +1365,7 @@ inherited ScpCommanderForm: TScpCommanderForm
     object LocalStatusBar: TTBXStatusBar
       Left = 0
       Top = 279
-      Width = 395
+      Width = 435
       Height = 19
       Panels = <
         item
@@ -1394,7 +1404,7 @@ inherited ScpCommanderForm: TScpCommanderForm
     object LocalDirView: TDirView
       Left = 0
       Top = 146
-      Width = 395
+      Width = 435
       Height = 124
       Align = alClient
       Constraints.MinHeight = 70
@@ -1436,7 +1446,7 @@ inherited ScpCommanderForm: TScpCommanderForm
     object LocalTopDock: TTBXDock
       Left = 0
       Top = 0
-      Width = 395
+      Width = 435
       Height = 79
       Color = clBtnFace
       FixAlign = True
@@ -1568,15 +1578,25 @@ inherited ScpCommanderForm: TScpCommanderForm
         end
         object TBXSeparatorItem35: TTBXSeparatorItem
         end
-        object TBXItem237: TTBXItem
-          Action = NonVisualDataModule.LocalCreateDirAction
-        end
-        object TBXItem245: TTBXItem
-          Action = NonVisualDataModule.LocalAddEditLinkAction
+        object LocalNewSubmenuItem: TTBXSubmenuItem
+          Caption = '&New'
+          DisplayMode = nbdmImageAndText
+          Hint = 'Create object|Create new object'
+          ImageIndex = 5
+          Options = [tboDropdownArrow]
+          object TBXItem248: TTBXItem
+            Action = NonVisualDataModule.LocalNewFileAction
+          end
+          object TBXItem249: TTBXItem
+            Action = NonVisualDataModule.LocalCreateDirAction2
+          end
+          object TBXItem250: TTBXItem
+            Action = NonVisualDataModule.LocalAddEditLinkAction2
+          end
         end
       end
       object LocalSelectionToolbar: TTBXToolbar
-        Left = 329
+        Left = 353
         Top = 53
         Caption = 'Local Selection'
         DockPos = 329
@@ -1600,7 +1620,7 @@ inherited ScpCommanderForm: TScpCommanderForm
     object LocalDriveView: TDriveView
       Left = 0
       Top = 98
-      Width = 395
+      Width = 435
       Height = 45
       WatchDirectory = True
       DirView = LocalDirView
@@ -1624,7 +1644,7 @@ inherited ScpCommanderForm: TScpCommanderForm
     object LocalBottomDock: TTBXDock
       Left = 0
       Top = 270
-      Width = 395
+      Width = 435
       Height = 9
       Color = clBtnFace
       FixAlign = True
@@ -1634,7 +1654,7 @@ inherited ScpCommanderForm: TScpCommanderForm
   object BottomDock: TTBXDock [7]
     Left = 0
     Top = 475
-    Width = 829
+    Width = 898
     Height = 53
     FixAlign = True
     Position = dpBottom
@@ -1717,7 +1737,7 @@ inherited ScpCommanderForm: TScpCommanderForm
   object StatusBar: TTBXStatusBar [8]
     Left = 0
     Top = 648
-    Width = 829
+    Width = 898
     Images = GlyphsModule.SessionImages
     Panels = <
       item
@@ -1765,7 +1785,7 @@ inherited ScpCommanderForm: TScpCommanderForm
   object QueueSeparatorPanel: TPanel [9]
     Left = 0
     Top = 528
-    Width = 829
+    Width = 898
     Height = 1
     Align = alBottom
     BevelEdges = [beBottom]

+ 8 - 4
source/forms/ScpCommander.h

@@ -364,7 +364,6 @@ __published:
   TTBXSeparatorItem *TBXSeparatorItem35;
   TTBXItem *TBXItem236;
   TTBXSeparatorItem *TBXSeparatorItem54;
-  TTBXItem *TBXItem237;
   TTBXToolbar *RemoteFileToolbar;
   TTBXSubmenuItem *TBXItem238;
   TTBXItem *TBXItem239;
@@ -374,9 +373,6 @@ __published:
   TTBXSubmenuItem *TBXItem242;
   TTBXItem *TBXItem243;
   TTBXSeparatorItem *TBXSeparatorItem56;
-  TTBXItem *TBXItem244;
-  TTBXItem *TBXItem245;
-  TTBXItem *TBXItem246;
   TTBXItem *TBXItem59;
   TTBXItem *TBXItem136;
   TTBXLabelItem *TransferSettingsLabelItem;
@@ -421,6 +417,14 @@ __published:
   TTBXItem *TBXItem217;
   TTBXSubmenuItem *TBXSubmenuItem28;
   TTBXItem *TBXItem227;
+  TTBXSubmenuItem *RemoteNewSubmenuItem;
+  TTBXItem *TBXItem244;
+  TTBXItem *TBXItem246;
+  TTBXItem *TBXItem247;
+  TTBXSubmenuItem *LocalNewSubmenuItem;
+  TTBXItem *TBXItem248;
+  TTBXItem *TBXItem249;
+  TTBXItem *TBXItem250;
   void __fastcall SplitterMoved(TObject *Sender);
   void __fastcall SplitterCanResize(TObject *Sender, int &NewSize,
     bool &Accept);

+ 16 - 6
source/forms/ScpExplorer.dfm

@@ -57,7 +57,7 @@ inherited ScpExplorerForm: TScpExplorerForm
           OnPopup = EditMenuItemPopup
         end
         object TBXItem4: TTBXItem
-          Action = NonVisualDataModule.RemoteAddEditLinkAction
+          Action = NonVisualDataModule.RemoteAddEditLinkAction2
         end
         object TBXSeparatorItem7: TTBXSeparatorItem
         end
@@ -673,11 +673,21 @@ inherited ScpExplorerForm: TScpExplorerForm
       end
       object TBXSeparatorItem16: TTBXSeparatorItem
       end
-      object TBXItem61: TTBXItem
-        Action = NonVisualDataModule.RemoteCreateDirAction
-      end
-      object TBXItem62: TTBXItem
-        Action = NonVisualDataModule.RemoteAddEditLinkAction
+      object NewSubmenuItem: TTBXSubmenuItem
+        Caption = '&New'
+        DisplayMode = nbdmImageAndText
+        Hint = 'Create object|Create new object'
+        ImageIndex = 5
+        Options = [tboDropdownArrow]
+        object TBXItem247: TTBXItem
+          Action = NonVisualDataModule.RemoteNewFileAction
+        end
+        object TBXItem244: TTBXItem
+          Action = NonVisualDataModule.RemoteCreateDirAction2
+        end
+        object TBXItem246: TTBXItem
+          Action = NonVisualDataModule.RemoteAddEditLinkAction2
+        end
       end
       object TBXItem63: TTBXItem
         Action = NonVisualDataModule.ConsoleAction

+ 4 - 2
source/forms/ScpExplorer.h

@@ -179,9 +179,7 @@ __published:
   TTBXItem *TBXItem58;
   TTBXItem *TBXItem59;
   TTBXItem *TBXItem60;
-  TTBXItem *TBXItem61;
   TTBXSeparatorItem *TBXSeparatorItem16;
-  TTBXItem *TBXItem62;
   TTBXItem *TBXItem63;
   TTBXSeparatorItem *TBXSeparatorItem17;
   TTBXItem *TBXItem64;
@@ -313,6 +311,10 @@ __published:
   TTBXItem *TBXItem159;
   TTBXSubmenuItem *TBXSubmenuItem28;
   TTBXItem *TBXItem160;
+  TTBXSubmenuItem *NewSubmenuItem;
+  TTBXItem *TBXItem247;
+  TTBXItem *TBXItem244;
+  TTBXItem *TBXItem246;
   void __fastcall RemoteDirViewUpdateStatusBar(TObject *Sender,
           const TStatusFileInfo &FileInfo);
   void __fastcall UnixPathComboBoxBeginEdit(TTBEditItem *Sender,