diff --git a/mRemoteV1/App/App.Runtime.vb b/mRemoteV1/App/App.Runtime.vb
index 31b137b60..73b488346 100644
--- a/mRemoteV1/App/App.Runtime.vb
+++ b/mRemoteV1/App/App.Runtime.vb
@@ -234,7 +234,7 @@ Namespace App
Public Shared adimportPanel As New DockContent
Public Shared helpForm As UI.Window.Help
Public Shared helpPanel As New DockContent
- Public Shared externalappsForm As UI.Window.ExternalApps
+ Public Shared externalappsForm As UI.Window.ExternalTools
Public Shared externalappsPanel As New DockContent
Public Shared portscanForm As UI.Window.PortScan
Public Shared portscanPanel As New DockContent
@@ -294,7 +294,7 @@ Namespace App
helpForm.Show(frmMain.pnlDock)
Case UI.Window.Type.ExternalApps
If externalappsForm Is Nothing OrElse externalappsForm.IsDisposed Then
- externalappsForm = New UI.Window.ExternalApps(externalappsPanel)
+ externalappsForm = New UI.Window.ExternalTools(externalappsPanel)
externalappsPanel = externalappsForm
End If
@@ -1904,21 +1904,6 @@ Namespace App
#End Region
#Region "External Apps"
- Public Shared Sub GetExtApps()
- Array.Clear(Tools.ExternalToolsTypeConverter.ExternalTools, 0, Tools.ExternalToolsTypeConverter.ExternalTools.Length)
- Array.Resize(Tools.ExternalToolsTypeConverter.ExternalTools, ExternalTools.Count + 1)
-
- Dim i As Integer = 0
-
- For Each extA As Tools.ExternalTool In ExternalTools
- Tools.ExternalToolsTypeConverter.ExternalTools(i) = extA.DisplayName
-
- i += 1
- Next
-
- Tools.ExternalToolsTypeConverter.ExternalTools(i) = ""
- End Sub
-
Public Shared Function GetExtAppByName(ByVal Name As String) As Tools.ExternalTool
For Each extA As Tools.ExternalTool In ExternalTools
If extA.DisplayName = Name Then
diff --git a/mRemoteV1/Forms/frmMain.Designer.vb b/mRemoteV1/Forms/frmMain.Designer.vb
index 180395144..49bbed854 100644
--- a/mRemoteV1/Forms/frmMain.Designer.vb
+++ b/mRemoteV1/Forms/frmMain.Designer.vb
@@ -484,7 +484,7 @@ Partial Class frmMain
'
'mMenViewExtAppsToolbar
'
- Me.mMenViewExtAppsToolbar.Image = Global.mRemoteNG.My.Resources.Resources.application_link
+ Me.mMenViewExtAppsToolbar.Image = Global.mRemoteNG.My.Resources.Resources.ExtApp
Me.mMenViewExtAppsToolbar.Name = "mMenViewExtAppsToolbar"
Me.mMenViewExtAppsToolbar.Size = New System.Drawing.Size(228, 22)
Me.mMenViewExtAppsToolbar.Text = "External Applications Toolbar"
@@ -526,7 +526,7 @@ Partial Class frmMain
'
'mMenToolsExternalApps
'
- Me.mMenToolsExternalApps.Image = Global.mRemoteNG.My.Resources.Resources.application_link
+ Me.mMenToolsExternalApps.Image = Global.mRemoteNG.My.Resources.Resources.ExtApp
Me.mMenToolsExternalApps.Name = "mMenToolsExternalApps"
Me.mMenToolsExternalApps.Size = New System.Drawing.Size(184, 22)
Me.mMenToolsExternalApps.Text = "External Applications"
diff --git a/mRemoteV1/Forms/frmMain.vb b/mRemoteV1/Forms/frmMain.vb
index 723350d04..119033f0f 100644
--- a/mRemoteV1/Forms/frmMain.vb
+++ b/mRemoteV1/Forms/frmMain.vb
@@ -64,7 +64,6 @@ Public Class frmMain
Tools.IeBrowserEmulation.Register()
Startup.GetConnectionIcons()
- GetExtApps()
Windows.treePanel.Focus()
Tree.Node.TreeView = Windows.treeForm.tvConnections
diff --git a/mRemoteV1/Language/Language.Designer.vb b/mRemoteV1/Language/Language.Designer.vb
index 9ff4dacfd..bb5fb4f9f 100644
--- a/mRemoteV1/Language/Language.Designer.vb
+++ b/mRemoteV1/Language/Language.Designer.vb
@@ -361,6 +361,15 @@ Namespace My
End Get
End Property
+ '''
+ ''' Looks up a localized string similar to &Launch.
+ '''
+ Friend Shared ReadOnly Property strButtonLaunch() As String
+ Get
+ Return ResourceManager.GetString("strButtonLaunch", resourceCulture)
+ End Get
+ End Property
+
'''
''' Looks up a localized string similar to Launch PuTTY.
'''
@@ -1689,6 +1698,15 @@ Namespace My
End Get
End Property
+ '''
+ ''' Looks up a localized string similar to New External Tool.
+ '''
+ Friend Shared ReadOnly Property strExternalToolDefaultName() As String
+ Get
+ Return ResourceManager.GetString("strExternalToolDefaultName", resourceCulture)
+ End Get
+ End Property
+
'''
''' Looks up a localized string similar to Includes icons by [FAMFAMFAM].
'''
diff --git a/mRemoteV1/Language/Language.resx b/mRemoteV1/Language/Language.resx
index 2b63de599..86282cae0 100644
--- a/mRemoteV1/Language/Language.resx
+++ b/mRemoteV1/Language/Language.resx
@@ -216,6 +216,9 @@
Inheritance
+
+ &Launch
+
Launch PuTTY
@@ -675,6 +678,9 @@ See the Microsoft Support article at http://support.microsoft.com/kb/811833 for
Ext. App
+
+ New External Tool
+
Includes icons by [FAMFAMFAM]
diff --git a/mRemoteV1/My Project/Resources.Designer.vb b/mRemoteV1/My Project/Resources.Designer.vb
index 707e4c42d..fa2d77d9a 100644
--- a/mRemoteV1/My Project/Resources.Designer.vb
+++ b/mRemoteV1/My Project/Resources.Designer.vb
@@ -88,13 +88,6 @@ Namespace My.Resources
End Get
End Property
- Friend ReadOnly Property application_link() As System.Drawing.Bitmap
- Get
- Dim obj As Object = ResourceManager.GetObject("application_link", resourceCulture)
- Return CType(obj,System.Drawing.Bitmap)
- End Get
- End Property
-
Friend ReadOnly Property application_side_tree() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("application_side_tree", resourceCulture)
diff --git a/mRemoteV1/My Project/Resources.resx b/mRemoteV1/My Project/Resources.resx
index 10b5a14cc..d5e0b4854 100644
--- a/mRemoteV1/My Project/Resources.resx
+++ b/mRemoteV1/My Project/Resources.resx
@@ -451,9 +451,6 @@
..\Resources\Images_FamFamFam\key_delete.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
- ..\Resources\Images_FamFamFam\application_link.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
..\Resources\Images_FamFamFam\application_side_tree.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
@@ -478,7 +475,6 @@
..\resources\images_famfamfam\page_copy.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
..\resources\icons\rdcman_icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
diff --git a/mRemoteV1/Resources/Images_FamFamFam/application_link.png b/mRemoteV1/Resources/Images_FamFamFam/application_link.png
deleted file mode 100644
index f8fbb3ed9..000000000
Binary files a/mRemoteV1/Resources/Images_FamFamFam/application_link.png and /dev/null differ
diff --git a/mRemoteV1/Tools/ExternalTool.vb b/mRemoteV1/Tools/ExternalTool.vb
index ec0b5bf82..da859af13 100644
--- a/mRemoteV1/Tools/ExternalTool.vb
+++ b/mRemoteV1/Tools/ExternalTool.vb
@@ -280,7 +280,20 @@ Namespace Tools
Public Class ExternalToolsTypeConverter
Inherits StringConverter
- Public Shared ExternalTools As String() = New String() {}
+ Public Shared ReadOnly Property ExternalTools As String()
+ Get
+ Dim externalToolList As New List(Of String)
+
+ ' Add a blank entry to signify that no external tool is selected
+ externalToolList.Add(String.Empty)
+
+ For Each externalTool As ExternalTool In App.Runtime.ExternalTools
+ externalToolList.Add(externalTool.DisplayName)
+ Next
+
+ Return externalToolList.ToArray()
+ End Get
+ End Property
Public Overloads Overrides Function GetStandardValues(ByVal context As System.ComponentModel.ITypeDescriptorContext) As System.ComponentModel.TypeConverter.StandardValuesCollection
Return New StandardValuesCollection(ExternalTools)
diff --git a/mRemoteV1/UI/UI.Window.Connection.vb b/mRemoteV1/UI/UI.Window.Connection.vb
index 4c05e5a8c..374e06b9f 100644
--- a/mRemoteV1/UI/UI.Window.Connection.vb
+++ b/mRemoteV1/UI/UI.Window.Connection.vb
@@ -735,7 +735,7 @@ Namespace UI
cmenTabExternalApps.DropDownItems.Clear()
'add ext apps
- For Each extA As Tools.ExternalTool In ExternalTools
+ For Each extA As Tools.ExternalTool In Runtime.ExternalTools
Dim nItem As New ToolStripMenuItem
nItem.Text = extA.DisplayName
nItem.Tag = extA
diff --git a/mRemoteV1/UI/UI.Window.ExternalApps.vb b/mRemoteV1/UI/UI.Window.ExternalApps.vb
deleted file mode 100644
index 2d849c1b5..000000000
--- a/mRemoteV1/UI/UI.Window.ExternalApps.vb
+++ /dev/null
@@ -1,503 +0,0 @@
-Imports WeifenLuo.WinFormsUI.Docking
-Imports mRemoteNG.App.Runtime
-
-Namespace UI
- Namespace Window
- Public Class ExternalApps
- Inherits UI.Window.Base
-
-#Region "Form Init"
- Friend WithEvents clmFilename As System.Windows.Forms.ColumnHeader
- Friend WithEvents clmArguments As System.Windows.Forms.ColumnHeader
- Friend WithEvents grpEditor As System.Windows.Forms.GroupBox
- Friend WithEvents txtDisplayName As System.Windows.Forms.TextBox
- Friend WithEvents Label1 As System.Windows.Forms.Label
- Friend WithEvents txtArguments As System.Windows.Forms.TextBox
- Friend WithEvents txtFilename As System.Windows.Forms.TextBox
- Friend WithEvents Label3 As System.Windows.Forms.Label
- Friend WithEvents Label2 As System.Windows.Forms.Label
- Friend WithEvents btnBrowse As System.Windows.Forms.Button
- Friend WithEvents clmDisplayName As System.Windows.Forms.ColumnHeader
- Friend WithEvents cMenApps As System.Windows.Forms.ContextMenuStrip
- Private components As System.ComponentModel.IContainer
- Friend WithEvents cMenAppsAdd As System.Windows.Forms.ToolStripMenuItem
- Friend WithEvents dlgOpenFile As System.Windows.Forms.OpenFileDialog
- Friend WithEvents cMenAppsRemove As System.Windows.Forms.ToolStripMenuItem
- Friend WithEvents cMenAppsSep1 As System.Windows.Forms.ToolStripSeparator
- Friend WithEvents cMenAppsStart As System.Windows.Forms.ToolStripMenuItem
- Friend WithEvents clmWaitForExit As System.Windows.Forms.ColumnHeader
- Friend WithEvents chkWaitForExit As System.Windows.Forms.CheckBox
- Friend WithEvents Label4 As System.Windows.Forms.Label
- Friend WithEvents chkTryIntegrate As System.Windows.Forms.CheckBox
- Friend WithEvents clmTryIntegrate As System.Windows.Forms.ColumnHeader
- Friend WithEvents lvApps As System.Windows.Forms.ListView
-
- Private Sub InitializeComponent()
- Me.components = New System.ComponentModel.Container
- Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(ExternalApps))
- Me.lvApps = New System.Windows.Forms.ListView
- Me.clmDisplayName = New System.Windows.Forms.ColumnHeader
- Me.clmFilename = New System.Windows.Forms.ColumnHeader
- Me.clmArguments = New System.Windows.Forms.ColumnHeader
- Me.clmWaitForExit = New System.Windows.Forms.ColumnHeader
- Me.clmTryIntegrate = New System.Windows.Forms.ColumnHeader
- Me.cMenApps = New System.Windows.Forms.ContextMenuStrip(Me.components)
- Me.cMenAppsAdd = New System.Windows.Forms.ToolStripMenuItem
- Me.cMenAppsRemove = New System.Windows.Forms.ToolStripMenuItem
- Me.cMenAppsSep1 = New System.Windows.Forms.ToolStripSeparator
- Me.cMenAppsStart = New System.Windows.Forms.ToolStripMenuItem
- Me.grpEditor = New System.Windows.Forms.GroupBox
- Me.chkTryIntegrate = New System.Windows.Forms.CheckBox
- Me.Label4 = New System.Windows.Forms.Label
- Me.chkWaitForExit = New System.Windows.Forms.CheckBox
- Me.btnBrowse = New System.Windows.Forms.Button
- Me.txtArguments = New System.Windows.Forms.TextBox
- Me.txtFilename = New System.Windows.Forms.TextBox
- Me.txtDisplayName = New System.Windows.Forms.TextBox
- Me.Label3 = New System.Windows.Forms.Label
- Me.Label2 = New System.Windows.Forms.Label
- Me.Label1 = New System.Windows.Forms.Label
- Me.dlgOpenFile = New System.Windows.Forms.OpenFileDialog
- Me.cMenApps.SuspendLayout()
- Me.grpEditor.SuspendLayout()
- Me.SuspendLayout()
- '
- 'lvApps
- '
- Me.lvApps.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
- Or System.Windows.Forms.AnchorStyles.Left) _
- Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
- Me.lvApps.BorderStyle = System.Windows.Forms.BorderStyle.None
- Me.lvApps.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.clmDisplayName, Me.clmFilename, Me.clmArguments, Me.clmWaitForExit, Me.clmTryIntegrate})
- Me.lvApps.ContextMenuStrip = Me.cMenApps
- Me.lvApps.FullRowSelect = True
- Me.lvApps.GridLines = True
- Me.lvApps.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable
- Me.lvApps.HideSelection = False
- Me.lvApps.Location = New System.Drawing.Point(0, 1)
- Me.lvApps.Name = "lvApps"
- Me.lvApps.Size = New System.Drawing.Size(684, 193)
- Me.lvApps.Sorting = System.Windows.Forms.SortOrder.Ascending
- Me.lvApps.TabIndex = 0
- Me.lvApps.UseCompatibleStateImageBehavior = False
- Me.lvApps.View = System.Windows.Forms.View.Details
- '
- 'clmDisplayName
- '
- Me.clmDisplayName.Text = "Display Name"
- Me.clmDisplayName.Width = 130
- '
- 'clmFilename
- '
- Me.clmFilename.Text = "Filename"
- Me.clmFilename.Width = 200
- '
- 'clmArguments
- '
- Me.clmArguments.Text = "Arguments"
- Me.clmArguments.Width = 160
- '
- 'clmWaitForExit
- '
- Me.clmWaitForExit.Text = "Wait for exit"
- Me.clmWaitForExit.Width = 75
- '
- 'clmTryIntegrate
- '
- Me.clmTryIntegrate.Text = "Try To Integrate"
- Me.clmTryIntegrate.Width = 95
- '
- 'cMenApps
- '
- Me.cMenApps.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.cMenAppsAdd, Me.cMenAppsRemove, Me.cMenAppsSep1, Me.cMenAppsStart})
- Me.cMenApps.Name = "cMenApps"
- Me.cMenApps.Size = New System.Drawing.Size(148, 76)
- '
- 'cMenAppsAdd
- '
- Me.cMenAppsAdd.Image = Global.mRemoteNG.My.Resources.Resources.ExtApp_Add
- Me.cMenAppsAdd.Name = "cMenAppsAdd"
- Me.cMenAppsAdd.ShortcutKeys = CType((System.Windows.Forms.Keys.Shift Or System.Windows.Forms.Keys.F4), System.Windows.Forms.Keys)
- Me.cMenAppsAdd.Size = New System.Drawing.Size(147, 22)
- Me.cMenAppsAdd.Text = "Add"
- '
- 'cMenAppsRemove
- '
- Me.cMenAppsRemove.Image = Global.mRemoteNG.My.Resources.Resources.ExtApp_Delete
- Me.cMenAppsRemove.Name = "cMenAppsRemove"
- Me.cMenAppsRemove.ShortcutKeys = System.Windows.Forms.Keys.Delete
- Me.cMenAppsRemove.Size = New System.Drawing.Size(147, 22)
- Me.cMenAppsRemove.Text = "Remove"
- '
- 'cMenAppsSep1
- '
- Me.cMenAppsSep1.Name = "cMenAppsSep1"
- Me.cMenAppsSep1.Size = New System.Drawing.Size(144, 6)
- '
- 'cMenAppsStart
- '
- Me.cMenAppsStart.Image = Global.mRemoteNG.My.Resources.Resources.ExtApp_Start
- Me.cMenAppsStart.Name = "cMenAppsStart"
- Me.cMenAppsStart.Size = New System.Drawing.Size(147, 22)
- Me.cMenAppsStart.Text = "Start"
- '
- 'grpEditor
- '
- Me.grpEditor.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _
- Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
- Me.grpEditor.Controls.Add(Me.chkTryIntegrate)
- Me.grpEditor.Controls.Add(Me.Label4)
- Me.grpEditor.Controls.Add(Me.chkWaitForExit)
- Me.grpEditor.Controls.Add(Me.btnBrowse)
- Me.grpEditor.Controls.Add(Me.txtArguments)
- Me.grpEditor.Controls.Add(Me.txtFilename)
- Me.grpEditor.Controls.Add(Me.txtDisplayName)
- Me.grpEditor.Controls.Add(Me.Label3)
- Me.grpEditor.Controls.Add(Me.Label2)
- Me.grpEditor.Controls.Add(Me.Label1)
- Me.grpEditor.Enabled = False
- Me.grpEditor.FlatStyle = System.Windows.Forms.FlatStyle.Flat
- Me.grpEditor.Location = New System.Drawing.Point(1, 200)
- Me.grpEditor.Name = "grpEditor"
- Me.grpEditor.Size = New System.Drawing.Size(683, 123)
- Me.grpEditor.TabIndex = 10
- Me.grpEditor.TabStop = False
- Me.grpEditor.Text = "Application Editor"
- '
- 'chkTryIntegrate
- '
- Me.chkTryIntegrate.AutoSize = True
- Me.chkTryIntegrate.FlatStyle = System.Windows.Forms.FlatStyle.Flat
- Me.chkTryIntegrate.Location = New System.Drawing.Point(243, 97)
- Me.chkTryIntegrate.Name = "chkTryIntegrate"
- Me.chkTryIntegrate.Size = New System.Drawing.Size(94, 17)
- Me.chkTryIntegrate.TabIndex = 71
- Me.chkTryIntegrate.Text = "Try to integrate"
- Me.chkTryIntegrate.UseVisualStyleBackColor = True
- '
- 'Label4
- '
- Me.Label4.AutoSize = True
- Me.Label4.Location = New System.Drawing.Point(15, 98)
- Me.Label4.Name = "Label4"
- Me.Label4.Size = New System.Drawing.Size(46, 13)
- Me.Label4.TabIndex = 62
- Me.Label4.Text = "Options:"
- '
- 'chkWaitForExit
- '
- Me.chkWaitForExit.AutoSize = True
- Me.chkWaitForExit.FlatStyle = System.Windows.Forms.FlatStyle.Flat
- Me.chkWaitForExit.Location = New System.Drawing.Point(104, 96)
- Me.chkWaitForExit.Name = "chkWaitForExit"
- Me.chkWaitForExit.Size = New System.Drawing.Size(79, 17)
- Me.chkWaitForExit.TabIndex = 70
- Me.chkWaitForExit.Text = "Wait for exit"
- Me.chkWaitForExit.UseVisualStyleBackColor = True
- '
- 'btnBrowse
- '
- Me.btnBrowse.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
- Me.btnBrowse.FlatStyle = System.Windows.Forms.FlatStyle.Flat
- Me.btnBrowse.Location = New System.Drawing.Point(576, 40)
- Me.btnBrowse.Name = "btnBrowse"
- Me.btnBrowse.Size = New System.Drawing.Size(95, 23)
- Me.btnBrowse.TabIndex = 40
- Me.btnBrowse.Text = "Browse..."
- Me.btnBrowse.UseVisualStyleBackColor = True
- '
- 'txtArguments
- '
- Me.txtArguments.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
- Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
- Me.txtArguments.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
- Me.txtArguments.Location = New System.Drawing.Point(104, 68)
- Me.txtArguments.Name = "txtArguments"
- Me.txtArguments.Size = New System.Drawing.Size(567, 20)
- Me.txtArguments.TabIndex = 60
- '
- 'txtFilename
- '
- Me.txtFilename.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
- Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
- Me.txtFilename.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
- Me.txtFilename.Location = New System.Drawing.Point(104, 42)
- Me.txtFilename.Name = "txtFilename"
- Me.txtFilename.Size = New System.Drawing.Size(464, 20)
- Me.txtFilename.TabIndex = 30
- '
- 'txtDisplayName
- '
- Me.txtDisplayName.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
- Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
- Me.txtDisplayName.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
- Me.txtDisplayName.Location = New System.Drawing.Point(104, 16)
- Me.txtDisplayName.Name = "txtDisplayName"
- Me.txtDisplayName.Size = New System.Drawing.Size(567, 20)
- Me.txtDisplayName.TabIndex = 10
- '
- 'Label3
- '
- Me.Label3.AutoSize = True
- Me.Label3.Location = New System.Drawing.Point(15, 70)
- Me.Label3.Name = "Label3"
- Me.Label3.Size = New System.Drawing.Size(60, 13)
- Me.Label3.TabIndex = 50
- Me.Label3.Text = "Arguments:"
- '
- 'Label2
- '
- Me.Label2.AutoSize = True
- Me.Label2.Location = New System.Drawing.Point(15, 44)
- Me.Label2.Name = "Label2"
- Me.Label2.Size = New System.Drawing.Size(52, 13)
- Me.Label2.TabIndex = 20
- Me.Label2.Text = "Filename:"
- '
- 'Label1
- '
- Me.Label1.AutoSize = True
- Me.Label1.Location = New System.Drawing.Point(15, 19)
- Me.Label1.Name = "Label1"
- Me.Label1.Size = New System.Drawing.Size(75, 13)
- Me.Label1.TabIndex = 0
- Me.Label1.Text = "Display Name:"
- '
- 'dlgOpenFile
- '
- Me.dlgOpenFile.Filter = "All Files (*.*)|*.*"
- '
- 'ExternalApps
- '
- Me.ClientSize = New System.Drawing.Size(684, 323)
- Me.Controls.Add(Me.grpEditor)
- Me.Controls.Add(Me.lvApps)
- Me.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
- Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
- Me.Name = "ExternalApps"
- Me.TabText = "External Applications"
- Me.Text = "External Applications"
- Me.cMenApps.ResumeLayout(False)
- Me.grpEditor.ResumeLayout(False)
- Me.grpEditor.PerformLayout()
- Me.ResumeLayout(False)
-
- End Sub
-#End Region
-
-#Region "Public Methods"
- Public Sub New(ByVal Panel As DockContent)
- Me.WindowType = Type.ExternalApps
- Me.DockPnl = Panel
- Me.InitializeComponent()
- End Sub
-#End Region
-
-#Region "Private Properties"
- Private _SelApp As Tools.ExternalTool
-#End Region
-
-#Region "Private Methods"
- Private Sub LoadApps()
- Try
- lvApps.Items.Clear()
-
- For Each extA As Tools.ExternalTool In ExternalTools
- Dim lvItem As New ListViewItem
- lvItem.Text = extA.DisplayName
- lvItem.SubItems.Add(extA.FileName)
- lvItem.SubItems.Add(extA.Arguments)
- lvItem.SubItems.Add(extA.WaitForExit)
- lvItem.SubItems.Add(extA.TryIntegrate)
- lvItem.Tag = extA
-
- lvApps.Items.Add(lvItem)
-
- If _SelApp IsNot Nothing Then
- If extA Is _SelApp Then
- lvItem.Selected = True
- End If
- End If
- Next
-
- RefreshToolbar()
- Catch ex As Exception
- MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "LoadApps failed (UI.Window.ExternalApps)" & vbNewLine & ex.Message, True)
- End Try
- End Sub
-
- Private Sub GetAppProperties(ByVal SelApp As Tools.ExternalTool)
- Try
- If SelApp IsNot Nothing Then
- txtDisplayName.Text = SelApp.DisplayName
- txtFilename.Text = SelApp.FileName
- txtArguments.Text = SelApp.Arguments
- chkWaitForExit.Checked = SelApp.WaitForExit
- chkTryIntegrate.Checked = SelApp.TryIntegrate
- _SelApp = SelApp
- End If
- Catch ex As Exception
- MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "GetAppProperties failed (UI.Window.ExternalApps)" & vbNewLine & ex.Message, True)
- End Try
- End Sub
-
- Private Sub SetAppProperties(ByVal SelApp As Tools.ExternalTool)
- Try
- If SelApp IsNot Nothing Then
- SelApp.DisplayName = txtDisplayName.Text
- SelApp.FileName = txtFilename.Text
- SelApp.Arguments = txtArguments.Text
- SelApp.WaitForExit = chkWaitForExit.Checked
- SelApp.TryIntegrate = chkTryIntegrate.Checked
-
- LoadApps()
- End If
- Catch ex As Exception
- MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "SetAppProperties failed (UI.Window.ExternalApps)" & vbNewLine & ex.Message, True)
- End Try
- End Sub
-
- Private Sub AddNewApp()
- Try
- Dim nExtA As New Tools.ExternalTool("New Application")
- ExternalTools.Add(nExtA)
- LoadApps()
- lvApps.SelectedItems.Clear()
-
- For Each lvItem As ListViewItem In lvApps.Items
- If lvItem.Tag Is nExtA Then
- lvItem.Selected = True
- txtDisplayName.Focus()
- Exit For
- End If
- Next
- Catch ex As Exception
- MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "AddNewApp failed (UI.Window.ExternalApps)" & vbNewLine & ex.Message, True)
- End Try
- End Sub
-
- Private Sub RemoveApps()
- Try
- Dim Prompt As String = ""
- Select Case lvApps.SelectedItems.Count
- Case Is < 1
- Exit Sub
- Case Is = 1
- Prompt = String.Format(My.Language.strConfirmDeleteExternalTool, lvApps.SelectedItems(0).Text)
- Case Is > 1
- Prompt = String.Format(My.Language.strConfirmDeleteExternalToolMultiple, lvApps.SelectedItems.Count)
- End Select
-
- If MsgBox(Prompt, MsgBoxStyle.Question Or MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
- For Each lvItem As ListViewItem In lvApps.SelectedItems
- ExternalTools.Remove(lvItem.Tag)
- lvItem.Tag = Nothing
- lvItem.Remove()
- Next
-
- RefreshToolbar()
- End If
- Catch ex As Exception
- MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "RemoveApps failed (UI.Window.ExternalApps)" & vbNewLine & ex.Message, True)
- End Try
- End Sub
-
- Private Sub StartApp()
- Try
- For Each lvItem As ListViewItem In lvApps.SelectedItems
- TryCast(lvItem.Tag, mRemoteNG.Tools.ExternalTool).Start()
- Next
- Catch ex As Exception
- MessageCollector.AddMessage(Messages.MessageClass.WarningMsg, "StartApp failed (UI.Window.ExternalApps" & vbNewLine & ex.Message, True)
- End Try
- End Sub
-
- Private Sub RefreshToolbar()
- frmMain.AddExternalToolsToToolBar()
- App.Runtime.GetExtApps()
- End Sub
-#End Region
-
-#Region "Form Stuff"
- Private Sub ExternalApps_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
- ApplyLanguage()
- LoadApps()
- End Sub
-
- Private Shared Sub ExternalApps_FormClosed(sender As System.Object, e As FormClosedEventArgs) Handles MyBase.FormClosed
- mRemoteNG.Config.Settings.Save.SaveExternalAppsToXML()
- End Sub
-
- Private Sub ApplyLanguage()
- clmDisplayName.Text = My.Language.strColumnDisplayName
- clmFilename.Text = My.Language.strColumnFilename
- clmArguments.Text = My.Language.strColumnArguments
- clmWaitForExit.Text = My.Language.strColumnWaitForExit
- cMenAppsAdd.Text = My.Language.strMenuNewExternalTool
- cMenAppsRemove.Text = My.Language.strMenuDeleteExternalTool
- cMenAppsStart.Text = My.Language.strMenuLaunchExternalTool
- grpEditor.Text = My.Language.strGroupboxExternalToolProperties
- Label4.Text = My.Language.strLabelOptions
- chkWaitForExit.Text = My.Language.strCheckboxWaitForExit
- chkTryIntegrate.Text = My.Language.strTryIntegrate
- btnBrowse.Text = My.Language.strButtonBrowse
- Label3.Text = My.Language.strLabelArguments
- Label2.Text = My.Language.strLabelFilename
- Label1.Text = My.Language.strLabelDisplayName
- dlgOpenFile.Filter = My.Language.strFilterApplication & "|*.exe|" & My.Language.strFilterAll & "|*.*"
- TabText = My.Language.strMenuExternalTools
- Text = My.Language.strMenuExternalTools
- End Sub
-
- Private Sub lvApps_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles lvApps.DoubleClick
- If lvApps.SelectedItems.Count > 0 Then
- StartApp()
- End If
- End Sub
-
- Private Sub lvApps_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lvApps.SelectedIndexChanged
- If lvApps.SelectedItems.Count = 1 Then
- Me.grpEditor.Enabled = True
- GetAppProperties(lvApps.SelectedItems(0).Tag)
- Else
- Me.grpEditor.Enabled = False
- End If
- End Sub
-
- Private Sub btnBrowse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBrowse.Click
- If dlgOpenFile.ShowDialog = System.Windows.Forms.DialogResult.OK Then
- txtFilename.Text = dlgOpenFile.FileName
- End If
- End Sub
-
- Private Sub ApplicationEditorField_ChangedOrLostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtDisplayName.LostFocus, txtArguments.LostFocus, txtFilename.LostFocus, btnBrowse.LostFocus, chkWaitForExit.LostFocus, chkWaitForExit.Click, chkTryIntegrate.Click
- SetAppProperties(_SelApp)
- End Sub
-
- Private Sub chkTryIntegrate_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkTryIntegrate.CheckedChanged
- If chkTryIntegrate.Checked Then
- chkWaitForExit.Checked = False
- chkWaitForExit.Enabled = False
- Else
- chkWaitForExit.Enabled = True
- End If
- End Sub
-#End Region
-
-#Region "Menu"
- Private Sub cMenAppsAddApp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cMenAppsAdd.Click
- AddNewApp()
- End Sub
-
- Private Sub cMenAppsRemove_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cMenAppsRemove.Click
- RemoveApps()
- End Sub
-
- Private Sub cMenAppsStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cMenAppsStart.Click
- StartApp()
- End Sub
-#End Region
-
- End Class
- End Namespace
-End Namespace
\ No newline at end of file
diff --git a/mRemoteV1/UI/UI.Window.ExternalTools.Designer.vb b/mRemoteV1/UI/UI.Window.ExternalTools.Designer.vb
new file mode 100644
index 000000000..8aed4c864
--- /dev/null
+++ b/mRemoteV1/UI/UI.Window.ExternalTools.Designer.vb
@@ -0,0 +1,356 @@
+Namespace UI
+ Namespace Window
+ Partial Public Class ExternalTools
+ Inherits Base
+#Region " Windows Form Designer generated code "
+ Friend WithEvents FilenameColumnHeader As System.Windows.Forms.ColumnHeader
+ Friend WithEvents ArgumentsColumnHeader As System.Windows.Forms.ColumnHeader
+ Friend WithEvents PropertiesGroupBox As System.Windows.Forms.GroupBox
+ Friend WithEvents DisplayNameTextBox As System.Windows.Forms.TextBox
+ Friend WithEvents DisplayNameLabel As System.Windows.Forms.Label
+ Friend WithEvents ArgumentsCheckBox As System.Windows.Forms.TextBox
+ Friend WithEvents FilenameTextBox As System.Windows.Forms.TextBox
+ Friend WithEvents ArgumentsLabel As System.Windows.Forms.Label
+ Friend WithEvents FilenameLabel As System.Windows.Forms.Label
+ Friend WithEvents BrowseButton As System.Windows.Forms.Button
+ Friend WithEvents DisplayNameColumnHeader As System.Windows.Forms.ColumnHeader
+ Friend WithEvents ToolsContextMenuStrip As System.Windows.Forms.ContextMenuStrip
+ Private components As System.ComponentModel.IContainer
+ Friend WithEvents NewToolMenuItem As System.Windows.Forms.ToolStripMenuItem
+ Friend WithEvents DeleteToolMenuItem As System.Windows.Forms.ToolStripMenuItem
+ Friend WithEvents ToolStripSeparator1 As System.Windows.Forms.ToolStripSeparator
+ Friend WithEvents LaunchToolMenuItem As System.Windows.Forms.ToolStripMenuItem
+ Friend WithEvents WaitForExitColumnHeader As System.Windows.Forms.ColumnHeader
+ Friend WithEvents WaitForExitCheckBox As System.Windows.Forms.CheckBox
+ Friend WithEvents OptionsLabel As System.Windows.Forms.Label
+ Friend WithEvents TryToIntegrateCheckBox As System.Windows.Forms.CheckBox
+ Friend WithEvents TryToIntegrateColumnHeader As System.Windows.Forms.ColumnHeader
+ Friend WithEvents ToolsListView As System.Windows.Forms.ListView
+
+ Private Sub InitializeComponent()
+ Me.components = New System.ComponentModel.Container()
+ Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(ExternalTools))
+ Me.ToolsListView = New System.Windows.Forms.ListView()
+ Me.DisplayNameColumnHeader = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
+ Me.FilenameColumnHeader = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
+ Me.ArgumentsColumnHeader = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
+ Me.WaitForExitColumnHeader = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
+ Me.TryToIntegrateColumnHeader = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
+ Me.ToolsContextMenuStrip = New System.Windows.Forms.ContextMenuStrip(Me.components)
+ Me.NewToolMenuItem = New System.Windows.Forms.ToolStripMenuItem()
+ Me.DeleteToolMenuItem = New System.Windows.Forms.ToolStripMenuItem()
+ Me.ToolStripSeparator1 = New System.Windows.Forms.ToolStripSeparator()
+ Me.LaunchToolMenuItem = New System.Windows.Forms.ToolStripMenuItem()
+ Me.PropertiesGroupBox = New System.Windows.Forms.GroupBox()
+ Me.TryToIntegrateCheckBox = New System.Windows.Forms.CheckBox()
+ Me.OptionsLabel = New System.Windows.Forms.Label()
+ Me.WaitForExitCheckBox = New System.Windows.Forms.CheckBox()
+ Me.BrowseButton = New System.Windows.Forms.Button()
+ Me.ArgumentsCheckBox = New System.Windows.Forms.TextBox()
+ Me.FilenameTextBox = New System.Windows.Forms.TextBox()
+ Me.DisplayNameTextBox = New System.Windows.Forms.TextBox()
+ Me.ArgumentsLabel = New System.Windows.Forms.Label()
+ Me.FilenameLabel = New System.Windows.Forms.Label()
+ Me.DisplayNameLabel = New System.Windows.Forms.Label()
+ Me.ToolStripContainer = New System.Windows.Forms.ToolStripContainer()
+ Me.ToolStrip = New System.Windows.Forms.ToolStrip()
+ Me.NewToolToolstripButton = New System.Windows.Forms.ToolStripButton()
+ Me.DeleteToolToolstripButton = New System.Windows.Forms.ToolStripButton()
+ Me.ToolStripSeparator2 = New System.Windows.Forms.ToolStripSeparator()
+ Me.LaunchToolToolstripButton = New System.Windows.Forms.ToolStripButton()
+ Me.ToolsContextMenuStrip.SuspendLayout()
+ Me.PropertiesGroupBox.SuspendLayout()
+ Me.ToolStripContainer.ContentPanel.SuspendLayout()
+ Me.ToolStripContainer.TopToolStripPanel.SuspendLayout()
+ Me.ToolStripContainer.SuspendLayout()
+ Me.ToolStrip.SuspendLayout()
+ Me.SuspendLayout()
+ '
+ 'ToolsListView
+ '
+ Me.ToolsListView.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
+ Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.ToolsListView.BorderStyle = System.Windows.Forms.BorderStyle.None
+ Me.ToolsListView.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.DisplayNameColumnHeader, Me.FilenameColumnHeader, Me.ArgumentsColumnHeader, Me.WaitForExitColumnHeader, Me.TryToIntegrateColumnHeader})
+ Me.ToolsListView.ContextMenuStrip = Me.ToolsContextMenuStrip
+ Me.ToolsListView.FullRowSelect = True
+ Me.ToolsListView.GridLines = True
+ Me.ToolsListView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable
+ Me.ToolsListView.HideSelection = False
+ Me.ToolsListView.Location = New System.Drawing.Point(0, 0)
+ Me.ToolsListView.Name = "ToolsListView"
+ Me.ToolsListView.Size = New System.Drawing.Size(684, 157)
+ Me.ToolsListView.Sorting = System.Windows.Forms.SortOrder.Ascending
+ Me.ToolsListView.TabIndex = 0
+ Me.ToolsListView.UseCompatibleStateImageBehavior = False
+ Me.ToolsListView.View = System.Windows.Forms.View.Details
+ '
+ 'DisplayNameColumnHeader
+ '
+ Me.DisplayNameColumnHeader.Text = "Display Name"
+ Me.DisplayNameColumnHeader.Width = 130
+ '
+ 'FilenameColumnHeader
+ '
+ Me.FilenameColumnHeader.Text = "Filename"
+ Me.FilenameColumnHeader.Width = 200
+ '
+ 'ArgumentsColumnHeader
+ '
+ Me.ArgumentsColumnHeader.Text = "Arguments"
+ Me.ArgumentsColumnHeader.Width = 160
+ '
+ 'WaitForExitColumnHeader
+ '
+ Me.WaitForExitColumnHeader.Text = "Wait for exit"
+ Me.WaitForExitColumnHeader.Width = 75
+ '
+ 'TryToIntegrateColumnHeader
+ '
+ Me.TryToIntegrateColumnHeader.Text = "Try To Integrate"
+ Me.TryToIntegrateColumnHeader.Width = 95
+ '
+ 'ToolsContextMenuStrip
+ '
+ Me.ToolsContextMenuStrip.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.NewToolMenuItem, Me.DeleteToolMenuItem, Me.ToolStripSeparator1, Me.LaunchToolMenuItem})
+ Me.ToolsContextMenuStrip.Name = "cMenApps"
+ Me.ToolsContextMenuStrip.Size = New System.Drawing.Size(221, 76)
+ '
+ 'NewToolMenuItem
+ '
+ Me.NewToolMenuItem.Image = Global.mRemoteNG.My.Resources.Resources.ExtApp_Add
+ Me.NewToolMenuItem.Name = "NewToolMenuItem"
+ Me.NewToolMenuItem.ShortcutKeys = CType((System.Windows.Forms.Keys.Shift Or System.Windows.Forms.Keys.F4), System.Windows.Forms.Keys)
+ Me.NewToolMenuItem.Size = New System.Drawing.Size(220, 22)
+ Me.NewToolMenuItem.Text = "New External Tool"
+ '
+ 'DeleteToolMenuItem
+ '
+ Me.DeleteToolMenuItem.Image = Global.mRemoteNG.My.Resources.Resources.ExtApp_Delete
+ Me.DeleteToolMenuItem.Name = "DeleteToolMenuItem"
+ Me.DeleteToolMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Delete
+ Me.DeleteToolMenuItem.Size = New System.Drawing.Size(220, 22)
+ Me.DeleteToolMenuItem.Text = "Delete External Tool..."
+ '
+ 'ToolStripSeparator1
+ '
+ Me.ToolStripSeparator1.Name = "ToolStripSeparator1"
+ Me.ToolStripSeparator1.Size = New System.Drawing.Size(217, 6)
+ '
+ 'LaunchToolMenuItem
+ '
+ Me.LaunchToolMenuItem.Image = Global.mRemoteNG.My.Resources.Resources.ExtApp_Start
+ Me.LaunchToolMenuItem.Name = "LaunchToolMenuItem"
+ Me.LaunchToolMenuItem.Size = New System.Drawing.Size(220, 22)
+ Me.LaunchToolMenuItem.Text = "Launch External Tool"
+ '
+ 'PropertiesGroupBox
+ '
+ Me.PropertiesGroupBox.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.PropertiesGroupBox.Controls.Add(Me.TryToIntegrateCheckBox)
+ Me.PropertiesGroupBox.Controls.Add(Me.OptionsLabel)
+ Me.PropertiesGroupBox.Controls.Add(Me.WaitForExitCheckBox)
+ Me.PropertiesGroupBox.Controls.Add(Me.BrowseButton)
+ Me.PropertiesGroupBox.Controls.Add(Me.ArgumentsCheckBox)
+ Me.PropertiesGroupBox.Controls.Add(Me.FilenameTextBox)
+ Me.PropertiesGroupBox.Controls.Add(Me.DisplayNameTextBox)
+ Me.PropertiesGroupBox.Controls.Add(Me.ArgumentsLabel)
+ Me.PropertiesGroupBox.Controls.Add(Me.FilenameLabel)
+ Me.PropertiesGroupBox.Controls.Add(Me.DisplayNameLabel)
+ Me.PropertiesGroupBox.Enabled = False
+ Me.PropertiesGroupBox.Location = New System.Drawing.Point(3, 163)
+ Me.PropertiesGroupBox.Name = "PropertiesGroupBox"
+ Me.PropertiesGroupBox.Size = New System.Drawing.Size(678, 132)
+ Me.PropertiesGroupBox.TabIndex = 1
+ Me.PropertiesGroupBox.TabStop = False
+ Me.PropertiesGroupBox.Text = "External Tool Properties"
+ '
+ 'TryToIntegrateCheckBox
+ '
+ Me.TryToIntegrateCheckBox.AutoSize = True
+ Me.TryToIntegrateCheckBox.Location = New System.Drawing.Point(280, 106)
+ Me.TryToIntegrateCheckBox.Name = "TryToIntegrateCheckBox"
+ Me.TryToIntegrateCheckBox.Size = New System.Drawing.Size(97, 17)
+ Me.TryToIntegrateCheckBox.TabIndex = 9
+ Me.TryToIntegrateCheckBox.Text = "Try to integrate"
+ Me.TryToIntegrateCheckBox.UseVisualStyleBackColor = True
+ '
+ 'OptionsLabel
+ '
+ Me.OptionsLabel.AutoSize = True
+ Me.OptionsLabel.Location = New System.Drawing.Point(58, 107)
+ Me.OptionsLabel.Name = "OptionsLabel"
+ Me.OptionsLabel.Size = New System.Drawing.Size(46, 13)
+ Me.OptionsLabel.TabIndex = 7
+ Me.OptionsLabel.Text = "Options:"
+ Me.OptionsLabel.TextAlign = System.Drawing.ContentAlignment.TopRight
+ '
+ 'WaitForExitCheckBox
+ '
+ Me.WaitForExitCheckBox.AutoSize = True
+ Me.WaitForExitCheckBox.Location = New System.Drawing.Point(110, 106)
+ Me.WaitForExitCheckBox.Name = "WaitForExitCheckBox"
+ Me.WaitForExitCheckBox.Size = New System.Drawing.Size(82, 17)
+ Me.WaitForExitCheckBox.TabIndex = 8
+ Me.WaitForExitCheckBox.Text = "Wait for exit"
+ Me.WaitForExitCheckBox.UseVisualStyleBackColor = True
+ '
+ 'BrowseButton
+ '
+ Me.BrowseButton.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.BrowseButton.Location = New System.Drawing.Point(574, 45)
+ Me.BrowseButton.Name = "BrowseButton"
+ Me.BrowseButton.Size = New System.Drawing.Size(95, 23)
+ Me.BrowseButton.TabIndex = 4
+ Me.BrowseButton.Text = "Browse..."
+ Me.BrowseButton.UseVisualStyleBackColor = True
+ '
+ 'ArgumentsCheckBox
+ '
+ Me.ArgumentsCheckBox.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.ArgumentsCheckBox.Location = New System.Drawing.Point(110, 76)
+ Me.ArgumentsCheckBox.Name = "ArgumentsCheckBox"
+ Me.ArgumentsCheckBox.Size = New System.Drawing.Size(559, 20)
+ Me.ArgumentsCheckBox.TabIndex = 6
+ '
+ 'FilenameTextBox
+ '
+ Me.FilenameTextBox.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.FilenameTextBox.Location = New System.Drawing.Point(110, 47)
+ Me.FilenameTextBox.Name = "FilenameTextBox"
+ Me.FilenameTextBox.Size = New System.Drawing.Size(458, 20)
+ Me.FilenameTextBox.TabIndex = 3
+ '
+ 'DisplayNameTextBox
+ '
+ Me.DisplayNameTextBox.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.DisplayNameTextBox.Location = New System.Drawing.Point(110, 19)
+ Me.DisplayNameTextBox.Name = "DisplayNameTextBox"
+ Me.DisplayNameTextBox.Size = New System.Drawing.Size(559, 20)
+ Me.DisplayNameTextBox.TabIndex = 1
+ '
+ 'ArgumentsLabel
+ '
+ Me.ArgumentsLabel.AutoSize = True
+ Me.ArgumentsLabel.Location = New System.Drawing.Point(44, 79)
+ Me.ArgumentsLabel.Name = "ArgumentsLabel"
+ Me.ArgumentsLabel.Size = New System.Drawing.Size(60, 13)
+ Me.ArgumentsLabel.TabIndex = 5
+ Me.ArgumentsLabel.Text = "Arguments:"
+ Me.ArgumentsLabel.TextAlign = System.Drawing.ContentAlignment.TopRight
+ '
+ 'FilenameLabel
+ '
+ Me.FilenameLabel.AutoSize = True
+ Me.FilenameLabel.Location = New System.Drawing.Point(52, 50)
+ Me.FilenameLabel.Name = "FilenameLabel"
+ Me.FilenameLabel.Size = New System.Drawing.Size(52, 13)
+ Me.FilenameLabel.TabIndex = 2
+ Me.FilenameLabel.Text = "Filename:"
+ Me.FilenameLabel.TextAlign = System.Drawing.ContentAlignment.TopRight
+ '
+ 'DisplayNameLabel
+ '
+ Me.DisplayNameLabel.AutoSize = True
+ Me.DisplayNameLabel.Location = New System.Drawing.Point(29, 22)
+ Me.DisplayNameLabel.Name = "DisplayNameLabel"
+ Me.DisplayNameLabel.Size = New System.Drawing.Size(75, 13)
+ Me.DisplayNameLabel.TabIndex = 0
+ Me.DisplayNameLabel.Text = "Display Name:"
+ Me.DisplayNameLabel.TextAlign = System.Drawing.ContentAlignment.TopRight
+ '
+ 'ToolStripContainer
+ '
+ '
+ 'ToolStripContainer.ContentPanel
+ '
+ Me.ToolStripContainer.ContentPanel.Controls.Add(Me.PropertiesGroupBox)
+ Me.ToolStripContainer.ContentPanel.Controls.Add(Me.ToolsListView)
+ Me.ToolStripContainer.ContentPanel.Size = New System.Drawing.Size(684, 298)
+ Me.ToolStripContainer.Dock = System.Windows.Forms.DockStyle.Fill
+ Me.ToolStripContainer.Location = New System.Drawing.Point(0, 0)
+ Me.ToolStripContainer.Name = "ToolStripContainer"
+ Me.ToolStripContainer.Size = New System.Drawing.Size(684, 323)
+ Me.ToolStripContainer.TabIndex = 0
+ Me.ToolStripContainer.Text = "ToolStripContainer"
+ '
+ 'ToolStripContainer.TopToolStripPanel
+ '
+ Me.ToolStripContainer.TopToolStripPanel.Controls.Add(Me.ToolStrip)
+ '
+ 'ToolStrip
+ '
+ Me.ToolStrip.Dock = System.Windows.Forms.DockStyle.None
+ Me.ToolStrip.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden
+ Me.ToolStrip.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.NewToolToolstripButton, Me.DeleteToolToolstripButton, Me.ToolStripSeparator2, Me.LaunchToolToolstripButton})
+ Me.ToolStrip.Location = New System.Drawing.Point(3, 0)
+ Me.ToolStrip.Name = "ToolStrip"
+ Me.ToolStrip.Size = New System.Drawing.Size(186, 25)
+ Me.ToolStrip.TabIndex = 0
+ '
+ 'NewToolToolstripButton
+ '
+ Me.NewToolToolstripButton.Image = Global.mRemoteNG.My.Resources.Resources.ExtApp_Add
+ Me.NewToolToolstripButton.ImageTransparentColor = System.Drawing.Color.Magenta
+ Me.NewToolToolstripButton.Name = "NewToolToolstripButton"
+ Me.NewToolToolstripButton.Size = New System.Drawing.Size(51, 22)
+ Me.NewToolToolstripButton.Text = "New"
+ '
+ 'DeleteToolToolstripButton
+ '
+ Me.DeleteToolToolstripButton.Image = Global.mRemoteNG.My.Resources.Resources.ExtApp_Delete
+ Me.DeleteToolToolstripButton.ImageTransparentColor = System.Drawing.Color.Magenta
+ Me.DeleteToolToolstripButton.Name = "DeleteToolToolstripButton"
+ Me.DeleteToolToolstripButton.Size = New System.Drawing.Size(60, 22)
+ Me.DeleteToolToolstripButton.Text = "Delete"
+ '
+ 'ToolStripSeparator2
+ '
+ Me.ToolStripSeparator2.Name = "ToolStripSeparator2"
+ Me.ToolStripSeparator2.Size = New System.Drawing.Size(6, 25)
+ '
+ 'LaunchToolToolstripButton
+ '
+ Me.LaunchToolToolstripButton.Image = Global.mRemoteNG.My.Resources.Resources.ExtApp_Start
+ Me.LaunchToolToolstripButton.ImageTransparentColor = System.Drawing.Color.Magenta
+ Me.LaunchToolToolstripButton.Name = "LaunchToolToolstripButton"
+ Me.LaunchToolToolstripButton.Size = New System.Drawing.Size(66, 22)
+ Me.LaunchToolToolstripButton.Text = "Launch"
+ '
+ 'ExternalTools
+ '
+ Me.ClientSize = New System.Drawing.Size(684, 323)
+ Me.Controls.Add(Me.ToolStripContainer)
+ Me.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
+ Me.Name = "ExternalTools"
+ Me.TabText = "External Applications"
+ Me.Text = "External Tools"
+ Me.ToolsContextMenuStrip.ResumeLayout(False)
+ Me.PropertiesGroupBox.ResumeLayout(False)
+ Me.PropertiesGroupBox.PerformLayout()
+ Me.ToolStripContainer.ContentPanel.ResumeLayout(False)
+ Me.ToolStripContainer.TopToolStripPanel.ResumeLayout(False)
+ Me.ToolStripContainer.TopToolStripPanel.PerformLayout()
+ Me.ToolStripContainer.ResumeLayout(False)
+ Me.ToolStripContainer.PerformLayout()
+ Me.ToolStrip.ResumeLayout(False)
+ Me.ToolStrip.PerformLayout()
+ Me.ResumeLayout(False)
+
+ End Sub
+ Friend WithEvents ToolStripContainer As System.Windows.Forms.ToolStripContainer
+ Friend WithEvents ToolStrip As System.Windows.Forms.ToolStrip
+ Friend WithEvents NewToolToolstripButton As System.Windows.Forms.ToolStripButton
+ Friend WithEvents DeleteToolToolstripButton As System.Windows.Forms.ToolStripButton
+ Friend WithEvents ToolStripSeparator2 As System.Windows.Forms.ToolStripSeparator
+ Friend WithEvents LaunchToolToolstripButton As System.Windows.Forms.ToolStripButton
+#End Region
+ End Class
+ End Namespace
+End Namespace
diff --git a/mRemoteV1/UI/UI.Window.ExternalApps.resx b/mRemoteV1/UI/UI.Window.ExternalTools.resx
similarity index 95%
rename from mRemoteV1/UI/UI.Window.ExternalApps.resx
rename to mRemoteV1/UI/UI.Window.ExternalTools.resx
index af8ff0fea..f2d94fc4b 100644
--- a/mRemoteV1/UI/UI.Window.ExternalApps.resx
+++ b/mRemoteV1/UI/UI.Window.ExternalTools.resx
@@ -117,11 +117,11 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
+
17, 17
-
- 119, 17
+
+ 197, 17
54
diff --git a/mRemoteV1/UI/UI.Window.ExternalTools.vb b/mRemoteV1/UI/UI.Window.ExternalTools.vb
new file mode 100644
index 000000000..61e3945ca
--- /dev/null
+++ b/mRemoteV1/UI/UI.Window.ExternalTools.vb
@@ -0,0 +1,224 @@
+Imports mRemoteNG.App
+Imports WeifenLuo.WinFormsUI.Docking
+Imports mRemoteNG.App.Runtime
+Imports mRemoteNG.My
+
+Namespace UI
+ Namespace Window
+ Public Class ExternalTools
+ Inherits Base
+#Region "Constructors"
+ Public Sub New(ByVal panel As DockContent)
+ InitializeComponent()
+
+ WindowType = Type.ExternalApps
+ DockPnl = panel
+ End Sub
+#End Region
+
+#Region "Private Fields"
+ Private _selectedTool As Tools.ExternalTool = Nothing
+#End Region
+
+#Region "Private Methods"
+#Region "Event Handlers"
+ Private Sub ExternalTools_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
+ ApplyLanguage()
+ UpdateToolsListView()
+ End Sub
+
+ Private Shared Sub ExternalTools_FormClosed(sender As System.Object, e As FormClosedEventArgs) Handles MyBase.FormClosed
+ mRemoteNG.Config.Settings.Save.SaveExternalAppsToXML()
+ End Sub
+
+ Private Sub NewTool_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles NewToolMenuItem.Click, NewToolToolstripButton.Click
+ Try
+ Dim externalTool As New Tools.ExternalTool(Language.strExternalToolDefaultName)
+ Runtime.ExternalTools.Add(externalTool)
+ UpdateToolsListView(externalTool)
+ DisplayNameTextBox.Focus()
+ Catch ex As Exception
+ MessageCollector.AddExceptionMessage("UI.Window.ExternalTools.NewTool_Click() failed.", ex, , True)
+ End Try
+ End Sub
+
+ Private Sub DeleteTool_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles DeleteToolMenuItem.Click, DeleteToolToolstripButton.Click
+ Try
+ Dim message As String
+ Select Case ToolsListView.SelectedItems.Count
+ Case Is = 1
+ message = String.Format(Language.strConfirmDeleteExternalTool, ToolsListView.SelectedItems(0).Text)
+ Case Is > 1
+ message = String.Format(Language.strConfirmDeleteExternalToolMultiple, ToolsListView.SelectedItems.Count)
+ Case Else
+ Return
+ End Select
+
+ If Not MsgBox(message, MsgBoxStyle.Question Or MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then Return
+
+ For Each listViewItem As ListViewItem In ToolsListView.SelectedItems
+ Dim externalTool As Tools.ExternalTool = TryCast(listViewItem.Tag, Tools.ExternalTool)
+ If externalTool Is Nothing Then Continue For
+
+ Runtime.ExternalTools.Remove(listViewItem.Tag)
+ listViewItem.Remove()
+ Next
+ Catch ex As Exception
+ MessageCollector.AddExceptionMessage("UI.Window.ExternalTools.DeleteTool_Click() failed.", ex, , True)
+ End Try
+ End Sub
+
+ Private Sub LaunchTool_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles LaunchToolMenuItem.Click, LaunchToolToolstripButton.Click
+ LaunchTool()
+ End Sub
+
+ Private Sub ToolsListView_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As EventArgs) Handles ToolsListView.SelectedIndexChanged
+ Try
+ If ToolsListView.SelectedItems.Count = 1 Then
+ PropertiesGroupBox.Enabled = True
+ _selectedTool = TryCast(ToolsListView.SelectedItems(0).Tag, Tools.ExternalTool)
+ If _selectedTool Is Nothing Then Return
+
+ With _selectedTool
+ DisplayNameTextBox.Text = .DisplayName
+ FilenameTextBox.Text = .FileName
+ ArgumentsCheckBox.Text = .Arguments
+ WaitForExitCheckBox.Checked = .WaitForExit
+ TryToIntegrateCheckBox.Checked = .TryIntegrate
+ End With
+ Else
+ PropertiesGroupBox.Enabled = False
+ End If
+ Catch ex As Exception
+ MessageCollector.AddExceptionMessage("UI.Window.ExternalTools.ToolsListView_SelectedIndexChanged() failed.", ex, , True)
+ End Try
+ End Sub
+
+ Private Sub ToolsListView_DoubleClick(ByVal sender As Object, ByVal e As EventArgs) Handles ToolsListView.DoubleClick
+ If ToolsListView.SelectedItems.Count > 0 Then LaunchTool()
+ End Sub
+
+ Private Sub PropertyControl_ChangedOrLostFocus(ByVal sender As Object, ByVal e As EventArgs) Handles DisplayNameTextBox.LostFocus, ArgumentsCheckBox.LostFocus, FilenameTextBox.LostFocus, BrowseButton.LostFocus, WaitForExitCheckBox.LostFocus, WaitForExitCheckBox.Click, TryToIntegrateCheckBox.Click
+ If _selectedTool Is Nothing Then Return
+
+ Try
+ With _selectedTool
+ .DisplayName = DisplayNameTextBox.Text
+ .FileName = FilenameTextBox.Text
+ .Arguments = ArgumentsCheckBox.Text
+ .WaitForExit = WaitForExitCheckBox.Checked
+ .TryIntegrate = TryToIntegrateCheckBox.Checked
+ End With
+
+ UpdateToolsListView()
+ Catch ex As Exception
+ MessageCollector.AddExceptionMessage("UI.Window.ExternalTools.PropertyControl_ChangedOrLostFocus() failed.", ex, , True)
+ End Try
+ End Sub
+
+ Private Sub BrowseButton_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles BrowseButton.Click
+ Try
+ Using browseDialog As New OpenFileDialog()
+ With browseDialog
+ .Filter = String.Join("|", New String() {Language.strFilterApplication, "*.exe", Language.strFilterAll, "*.*"})
+ If .ShowDialog = DialogResult.OK Then FilenameTextBox.Text = .FileName
+ End With
+ End Using
+ Catch ex As Exception
+ MessageCollector.AddExceptionMessage("UI.Window.ExternalTools.BrowseButton_Click() failed.", ex, , True)
+ End Try
+ End Sub
+
+ Private Sub TryToIntegrateCheckBox_CheckedChanged(ByVal sender As System.Object, ByVal e As EventArgs) Handles TryToIntegrateCheckBox.CheckedChanged
+ If TryToIntegrateCheckBox.Checked Then
+ WaitForExitCheckBox.Enabled = False
+ WaitForExitCheckBox.Checked = False
+ Else
+ WaitForExitCheckBox.Enabled = True
+ End If
+ End Sub
+#End Region
+
+ Private Sub ApplyLanguage()
+ Text = Language.strMenuExternalTools
+ TabText = Language.strMenuExternalTools
+
+ NewToolToolstripButton.Text = Language.strButtonNew
+ DeleteToolToolstripButton.Text = Language.strOptionsKeyboardButtonDelete
+ LaunchToolToolstripButton.Text = Language.strButtonLaunch
+
+ DisplayNameColumnHeader.Text = Language.strColumnDisplayName
+ FilenameColumnHeader.Text = Language.strColumnFilename
+ ArgumentsColumnHeader.Text = Language.strColumnArguments
+ WaitForExitColumnHeader.Text = Language.strColumnWaitForExit
+ TryToIntegrateCheckBox.Text = Language.strTryIntegrate
+
+ PropertiesGroupBox.Text = Language.strGroupboxExternalToolProperties
+
+ DisplayNameLabel.Text = Language.strLabelDisplayName
+ FilenameLabel.Text = Language.strLabelFilename
+ ArgumentsLabel.Text = Language.strLabelArguments
+ OptionsLabel.Text = Language.strLabelOptions
+ WaitForExitCheckBox.Text = Language.strCheckboxWaitForExit
+ BrowseButton.Text = Language.strButtonBrowse
+
+ NewToolMenuItem.Text = Language.strMenuNewExternalTool
+ DeleteToolMenuItem.Text = Language.strMenuDeleteExternalTool
+ LaunchToolMenuItem.Text = Language.strMenuLaunchExternalTool
+ End Sub
+
+ Private Sub UpdateToolsListView(Optional ByVal selectTool As Tools.ExternalTool = Nothing)
+ Try
+ Dim selectedTools As New List(Of Tools.ExternalTool)
+ If selectTool Is Nothing Then
+ For Each listViewItem As ListViewItem In ToolsListView.SelectedItems
+ Dim externalTool As Tools.ExternalTool = TryCast(listViewItem.Tag, Tools.ExternalTool)
+ If externalTool IsNot Nothing Then selectedTools.Add(externalTool)
+ Next
+ Else
+ selectedTools.Add(selectTool)
+ End If
+
+ ToolsListView.BeginUpdate()
+ ToolsListView.Items.Clear()
+
+ For Each externalTool As Tools.ExternalTool In Runtime.ExternalTools
+ Dim listViewItem As New ListViewItem
+ With listViewItem
+ .Text = externalTool.DisplayName
+ .SubItems.Add(externalTool.FileName)
+ .SubItems.Add(externalTool.Arguments)
+ .SubItems.Add(externalTool.WaitForExit)
+ .SubItems.Add(externalTool.TryIntegrate)
+ .Tag = externalTool
+ End With
+
+ ToolsListView.Items.Add(listViewItem)
+
+ If selectedTools.Contains(externalTool) Then listViewItem.Selected = True
+ Next
+
+ ToolsListView.EndUpdate()
+
+ frmMain.AddExternalToolsToToolBar()
+ Catch ex As Exception
+ MessageCollector.AddExceptionMessage("UI.Window.ExternalTools.PopulateToolsListView()", ex, , True)
+ End Try
+ End Sub
+
+ Private Sub LaunchTool()
+ Try
+ For Each listViewItem As ListViewItem In ToolsListView.SelectedItems
+ Dim externalTool As Tools.ExternalTool = TryCast(listViewItem.Tag, Tools.ExternalTool)
+ If externalTool Is Nothing Then Continue For
+
+ externalTool.Start()
+ Next
+ Catch ex As Exception
+ MessageCollector.AddExceptionMessage("UI.Window.ExternalTools.LaunchTool() failed.", ex, , True)
+ End Try
+ End Sub
+#End Region
+ End Class
+ End Namespace
+End Namespace
\ No newline at end of file
diff --git a/mRemoteV1/UI/UI.Window.Tree.Designer.vb b/mRemoteV1/UI/UI.Window.Tree.Designer.vb
index 887807918..e512fa181 100644
--- a/mRemoteV1/UI/UI.Window.Tree.Designer.vb
+++ b/mRemoteV1/UI/UI.Window.Tree.Designer.vb
@@ -300,7 +300,7 @@
'
'cMenTreeToolsExternalApps
'
- Me.cMenTreeToolsExternalApps.Image = Global.mRemoteNG.My.Resources.Resources.application_link
+ Me.cMenTreeToolsExternalApps.Image = Global.mRemoteNG.My.Resources.Resources.ExtApp
Me.cMenTreeToolsExternalApps.Name = "cMenTreeToolsExternalApps"
Me.cMenTreeToolsExternalApps.Size = New System.Drawing.Size(186, 22)
Me.cMenTreeToolsExternalApps.Text = "External Applications"
diff --git a/mRemoteV1/UI/UI.Window.Tree.vb b/mRemoteV1/UI/UI.Window.Tree.vb
index db95ec550..0d8bebd28 100644
--- a/mRemoteV1/UI/UI.Window.Tree.vb
+++ b/mRemoteV1/UI/UI.Window.Tree.vb
@@ -1,3 +1,4 @@
+Imports mRemoteNG.App
Imports mRemoteNG.My
Imports WeifenLuo.WinFormsUI.Docking
Imports mRemoteNG.App.Runtime
@@ -758,7 +759,7 @@ Namespace UI
cMenTreeToolsExternalApps.DropDownItems.Clear()
'add ext apps
- For Each extA As Tools.ExternalTool In ExternalTools
+ For Each extA As Tools.ExternalTool In Runtime.ExternalTools
Dim nItem As New ToolStripMenuItem
nItem.Text = extA.DisplayName
nItem.Tag = extA
diff --git a/mRemoteV1/mRemoteV1.vbproj b/mRemoteV1/mRemoteV1.vbproj
index d9333f4be..dd6da23d0 100644
--- a/mRemoteV1/mRemoteV1.vbproj
+++ b/mRemoteV1/mRemoteV1.vbproj
@@ -403,7 +403,10 @@
UI.Window.Export.vb
-
+
+ UI.Window.ExternalTools.vb
+
+
Form
@@ -575,8 +578,8 @@
UI.Window.ErrorsAndInfos.vb
Designer
-
- UI.Window.ExternalApps.vb
+
+ UI.Window.ExternalTools.vb
Designer
@@ -1001,7 +1004,6 @@
PreserveNewest
-