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 -