diff --git a/Changelog.md b/Changelog.md
new file mode 100644
index 0000000..0ccebeb
--- /dev/null
+++ b/Changelog.md
@@ -0,0 +1,8 @@
+
+### v3.9
+
+- GUI redesign
+- Relative paths
+- Regex filters
+- Fix 'Show only when Ctrl key is pressed'
+- Tab order fix
diff --git a/License.txt b/License.txt
index f880d8c..f70a598 100644
--- a/License.txt
+++ b/License.txt
@@ -1,7 +1,7 @@
MIT License
-Copyright (C) 2008-2020 Frank Skare (stax76)
+Copyright (C) 2008-2021 Frank Skare (stax76)
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and ssociated documentation
diff --git a/OpenWithPPGUI/MainForm.resx b/OpenWithPPGUI/MainForm.resx
index 23e9c0a..aeeb72b 100644
--- a/OpenWithPPGUI/MainForm.resx
+++ b/OpenWithPPGUI/MainForm.resx
@@ -117,25 +117,6 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- 81, 40
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAALEoAACxKAXd6dE0AAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
- YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
- 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
- bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
- VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
- c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
- Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
- mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
- kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
- TgDQASA1MVpwzwAAAABJRU5ErkJggg==
-
-
142
diff --git a/OpenWithPPGUI/MainForm.vb b/OpenWithPPGUI/MainForm.vb
index 1faf742..9ac2cc3 100644
--- a/OpenWithPPGUI/MainForm.vb
+++ b/OpenWithPPGUI/MainForm.vb
@@ -42,9 +42,6 @@ Public Class MainForm
Friend WithEvents lv As System.Windows.Forms.ListView
Friend WithEvents tbSearch As System.Windows.Forms.TextBox
Friend WithEvents ToolStrip1 As System.Windows.Forms.ToolStrip
- Friend WithEvents tsbAdd As System.Windows.Forms.ToolStripButton
- Friend WithEvents tsbRemove As System.Windows.Forms.ToolStripButton
- Friend WithEvents tsbClone As System.Windows.Forms.ToolStripButton
Friend WithEvents laName As System.Windows.Forms.Label
Friend WithEvents laPath As System.Windows.Forms.Label
Friend WithEvents laArgs As System.Windows.Forms.Label
@@ -54,13 +51,8 @@ Public Class MainForm
Friend WithEvents tlpMain As TableLayoutPanel
Friend WithEvents FlowLayoutPanel1 As FlowLayoutPanel
Friend WithEvents tlpSearch As TableLayoutPanel
- Friend WithEvents ddbHelp As ToolStripDropDownButton
- Friend WithEvents miOpenWebsite As ToolStripMenuItem
- Friend WithEvents miAbout As ToolStripMenuItem
Friend WithEvents bnFileTypes As Button
Friend WithEvents cbHideWindow As CheckBox
- Friend WithEvents tsbInstallUninstall As ToolStripButton
- Friend WithEvents tsbOptions As ToolStripButton
Friend WithEvents tbWorkingDirectory As TextBox
Friend WithEvents bnWorkingDirectory As Button
Friend WithEvents laWorkingDirectory As Label
@@ -68,9 +60,17 @@ Public Class MainForm
Friend WithEvents tbIcon As TextBox
Friend WithEvents laIcon As Label
Friend WithEvents cbHidden As CheckBox
- Friend WithEvents tsMain As System.Windows.Forms.ToolStrip
+ Friend WithEvents tlpListView As TableLayoutPanel
+ Friend WithEvents bnClone As Button
+ Friend WithEvents bnRemove As Button
+ Friend WithEvents llInstallUninstall As LinkLabel
+ Friend WithEvents llOptions As LinkLabel
+ Friend WithEvents llWebsite As LinkLabel
+ Friend WithEvents llAbout As LinkLabel
+ Friend WithEvents laFilter As Label
+ Friend WithEvents tbFilter As TextBox
+ Friend WithEvents bnAdd As Button
Private Sub InitializeComponent()
- Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(MainForm))
Me.tbName = New System.Windows.Forms.TextBox()
Me.bnCancel = New System.Windows.Forms.Button()
Me.bnOK = New System.Windows.Forms.Button()
@@ -83,15 +83,6 @@ Public Class MainForm
Me.cbRunAsAdmin = New System.Windows.Forms.CheckBox()
Me.lv = New System.Windows.Forms.ListView()
Me.tbSearch = New System.Windows.Forms.TextBox()
- Me.tsMain = New System.Windows.Forms.ToolStrip()
- Me.tsbAdd = New System.Windows.Forms.ToolStripButton()
- Me.tsbRemove = New System.Windows.Forms.ToolStripButton()
- Me.tsbClone = New System.Windows.Forms.ToolStripButton()
- Me.tsbInstallUninstall = New System.Windows.Forms.ToolStripButton()
- Me.tsbOptions = New System.Windows.Forms.ToolStripButton()
- Me.ddbHelp = New System.Windows.Forms.ToolStripDropDownButton()
- Me.miOpenWebsite = New System.Windows.Forms.ToolStripMenuItem()
- Me.miAbout = New System.Windows.Forms.ToolStripMenuItem()
Me.laPath = New System.Windows.Forms.Label()
Me.laName = New System.Windows.Forms.Label()
Me.laArgs = New System.Windows.Forms.Label()
@@ -101,73 +92,89 @@ Public Class MainForm
Me.cbHidden = New System.Windows.Forms.CheckBox()
Me.cbHideWindow = New System.Windows.Forms.CheckBox()
Me.tlpMain = New System.Windows.Forms.TableLayoutPanel()
+ Me.laFilter = New System.Windows.Forms.Label()
+ Me.tbFilter = New System.Windows.Forms.TextBox()
Me.FlowLayoutPanel1 = New System.Windows.Forms.FlowLayoutPanel()
+ Me.llInstallUninstall = New System.Windows.Forms.LinkLabel()
+ Me.llOptions = New System.Windows.Forms.LinkLabel()
+ Me.llWebsite = New System.Windows.Forms.LinkLabel()
+ Me.llAbout = New System.Windows.Forms.LinkLabel()
Me.tlpSearch = New System.Windows.Forms.TableLayoutPanel()
Me.bnFileTypes = New System.Windows.Forms.Button()
Me.bnWorkingDirectory = New System.Windows.Forms.Button()
- Me.bnIcon = New System.Windows.Forms.Button()
Me.tbWorkingDirectory = New System.Windows.Forms.TextBox()
- Me.tbIcon = New System.Windows.Forms.TextBox()
Me.laWorkingDirectory = New System.Windows.Forms.Label()
+ Me.tlpListView = New System.Windows.Forms.TableLayoutPanel()
+ Me.bnClone = New System.Windows.Forms.Button()
+ Me.bnRemove = New System.Windows.Forms.Button()
+ Me.bnAdd = New System.Windows.Forms.Button()
+ Me.bnIcon = New System.Windows.Forms.Button()
+ Me.tbIcon = New System.Windows.Forms.TextBox()
Me.laIcon = New System.Windows.Forms.Label()
- Me.tsMain.SuspendLayout()
Me.PropsFlowLayoutPanel.SuspendLayout()
Me.tlpMain.SuspendLayout()
Me.FlowLayoutPanel1.SuspendLayout()
Me.tlpSearch.SuspendLayout()
+ Me.tlpListView.SuspendLayout()
Me.SuspendLayout()
'
'tbName
'
Me.tbName.Anchor = CType((System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
- Me.tbName.Location = New System.Drawing.Point(754, 106)
+ Me.tbName.BackColor = System.Drawing.Color.WhiteSmoke
+ Me.tbName.Location = New System.Drawing.Point(820, 16)
Me.tbName.Margin = New System.Windows.Forms.Padding(3, 10, 0, 10)
Me.tbName.Name = "tbName"
- Me.tbName.Size = New System.Drawing.Size(1119, 55)
- Me.tbName.TabIndex = 0
+ Me.tbName.Size = New System.Drawing.Size(1083, 55)
+ Me.tbName.TabIndex = 1
'
'bnCancel
'
Me.bnCancel.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.bnCancel.BackColor = System.Drawing.Color.WhiteSmoke
Me.bnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel
- Me.bnCancel.FlatStyle = System.Windows.Forms.FlatStyle.System
- Me.bnCancel.Location = New System.Drawing.Point(248, 18)
+ Me.bnCancel.Location = New System.Drawing.Point(1132, 18)
Me.bnCancel.Margin = New System.Windows.Forms.Padding(18)
Me.bnCancel.Name = "bnCancel"
- Me.bnCancel.Size = New System.Drawing.Size(230, 75)
- Me.bnCancel.TabIndex = 11
- Me.bnCancel.Text = "Cancel"
+ Me.bnCancel.Size = New System.Drawing.Size(200, 75)
+ Me.bnCancel.TabIndex = 5
+ Me.bnCancel.Text = "&Cancel"
+ Me.bnCancel.UseVisualStyleBackColor = False
'
'bnOK
'
Me.bnOK.Anchor = System.Windows.Forms.AnchorStyles.None
+ Me.bnOK.BackColor = System.Drawing.Color.WhiteSmoke
Me.bnOK.DialogResult = System.Windows.Forms.DialogResult.OK
- Me.bnOK.FlatStyle = System.Windows.Forms.FlatStyle.System
- Me.bnOK.Location = New System.Drawing.Point(0, 18)
- Me.bnOK.Margin = New System.Windows.Forms.Padding(0)
+ Me.bnOK.Location = New System.Drawing.Point(914, 18)
+ Me.bnOK.Margin = New System.Windows.Forms.Padding(160, 0, 0, 0)
Me.bnOK.Name = "bnOK"
- Me.bnOK.Size = New System.Drawing.Size(230, 75)
- Me.bnOK.TabIndex = 10
- Me.bnOK.Text = "OK"
+ Me.bnOK.Size = New System.Drawing.Size(200, 75)
+ Me.bnOK.TabIndex = 4
+ Me.bnOK.Text = "&OK"
+ Me.bnOK.UseVisualStyleBackColor = False
'
'tbPath
'
Me.tbPath.Anchor = CType((System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
- Me.tbPath.Location = New System.Drawing.Point(754, 290)
+ Me.tbPath.BackColor = System.Drawing.Color.WhiteSmoke
+ Me.tbPath.Location = New System.Drawing.Point(820, 200)
Me.tbPath.Margin = New System.Windows.Forms.Padding(3, 10, 0, 10)
Me.tbPath.Name = "tbPath"
- Me.tbPath.Size = New System.Drawing.Size(1119, 55)
- Me.tbPath.TabIndex = 0
+ Me.tbPath.Size = New System.Drawing.Size(1083, 55)
+ Me.tbPath.TabIndex = 4
'
'tbArguments
'
Me.tbArguments.Anchor = CType((System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.tbArguments.BackColor = System.Drawing.Color.WhiteSmoke
Me.tbArguments.HideSelection = False
- Me.tbArguments.Location = New System.Drawing.Point(754, 383)
+ Me.tbArguments.Location = New System.Drawing.Point(820, 284)
Me.tbArguments.Margin = New System.Windows.Forms.Padding(3, 10, 0, 10)
+ Me.tbArguments.Multiline = True
Me.tbArguments.Name = "tbArguments"
- Me.tbArguments.Size = New System.Drawing.Size(1119, 55)
- Me.tbArguments.TabIndex = 0
+ Me.tbArguments.Size = New System.Drawing.Size(1083, 120)
+ Me.tbArguments.TabIndex = 6
'
'cbDirectories
'
@@ -175,7 +182,7 @@ Public Class MainForm
Me.cbDirectories.Margin = New System.Windows.Forms.Padding(25, 3, 3, 3)
Me.cbDirectories.Name = "cbDirectories"
Me.cbDirectories.Size = New System.Drawing.Size(600, 60)
- Me.cbDirectories.TabIndex = 0
+ Me.cbDirectories.TabIndex = 1
Me.cbDirectories.Text = "Show for directories"
'
'cbSubmenu
@@ -190,17 +197,18 @@ Public Class MainForm
'tbFileTypes
'
Me.tbFileTypes.Anchor = CType((System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
- Me.tbFileTypes.Location = New System.Drawing.Point(754, 197)
+ Me.tbFileTypes.BackColor = System.Drawing.Color.WhiteSmoke
+ Me.tbFileTypes.Location = New System.Drawing.Point(820, 107)
Me.tbFileTypes.Margin = New System.Windows.Forms.Padding(3, 10, 0, 10)
Me.tbFileTypes.Name = "tbFileTypes"
- Me.tbFileTypes.Size = New System.Drawing.Size(1119, 55)
+ Me.tbFileTypes.Size = New System.Drawing.Size(1083, 55)
Me.tbFileTypes.TabIndex = 2
'
'laExt
'
Me.laExt.Anchor = System.Windows.Forms.AnchorStyles.Left
Me.laExt.AutoSize = True
- Me.laExt.Location = New System.Drawing.Point(519, 200)
+ Me.laExt.Location = New System.Drawing.Point(602, 110)
Me.laExt.Margin = New System.Windows.Forms.Padding(18, 0, 0, 0)
Me.laExt.Name = "laExt"
Me.laExt.Size = New System.Drawing.Size(182, 48)
@@ -213,7 +221,7 @@ Public Class MainForm
Me.cbRunAsAdmin.Margin = New System.Windows.Forms.Padding(25, 3, 3, 3)
Me.cbRunAsAdmin.Name = "cbRunAsAdmin"
Me.cbRunAsAdmin.Size = New System.Drawing.Size(600, 60)
- Me.cbRunAsAdmin.TabIndex = 1
+ Me.cbRunAsAdmin.TabIndex = 3
Me.cbRunAsAdmin.Text = "Run as admin"
Me.cbRunAsAdmin.UseVisualStyleBackColor = True
'
@@ -222,119 +230,31 @@ Public Class MainForm
Me.lv.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.lv.BackColor = System.Drawing.Color.WhiteSmoke
Me.lv.HideSelection = False
- Me.lv.Location = New System.Drawing.Point(18, 178)
+ Me.lv.Location = New System.Drawing.Point(18, 88)
Me.lv.Margin = New System.Windows.Forms.Padding(18, 0, 0, 0)
Me.lv.Name = "lv"
- Me.tlpMain.SetRowSpan(Me.lv, 6)
- Me.lv.Size = New System.Drawing.Size(483, 836)
- Me.lv.TabIndex = 1
+ Me.tlpMain.SetRowSpan(Me.lv, 7)
+ Me.lv.Size = New System.Drawing.Size(566, 926)
+ Me.lv.TabIndex = 0
Me.lv.UseCompatibleStateImageBehavior = False
'
'tbSearch
'
Me.tbSearch.Anchor = CType((System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.tbSearch.BackColor = System.Drawing.Color.WhiteSmoke
Me.tbSearch.Location = New System.Drawing.Point(0, 16)
Me.tbSearch.Margin = New System.Windows.Forms.Padding(0)
Me.tbSearch.Name = "tbSearch"
- Me.tbSearch.Size = New System.Drawing.Size(483, 55)
+ Me.tbSearch.Size = New System.Drawing.Size(566, 55)
Me.tbSearch.TabIndex = 0
'
- 'tsMain
- '
- Me.tsMain.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
- Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
- Me.tsMain.AutoSize = False
- Me.tlpMain.SetColumnSpan(Me.tsMain, 4)
- Me.tsMain.Dock = System.Windows.Forms.DockStyle.None
- Me.tsMain.Font = New System.Drawing.Font("Segoe UI", 9.0!)
- Me.tsMain.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden
- Me.tsMain.ImageScalingSize = New System.Drawing.Size(48, 48)
- Me.tsMain.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.tsbAdd, Me.tsbRemove, Me.tsbClone, Me.tsbInstallUninstall, Me.tsbOptions, Me.ddbHelp})
- Me.tsMain.Location = New System.Drawing.Point(0, 0)
- Me.tsMain.Name = "tsMain"
- Me.tsMain.Size = New System.Drawing.Size(2140, 90)
- Me.tsMain.TabIndex = 14
- '
- 'tsbAdd
- '
- Me.tsbAdd.AutoToolTip = False
- Me.tsbAdd.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text
- Me.tsbAdd.ImageTransparentColor = System.Drawing.Color.Magenta
- Me.tsbAdd.Margin = New System.Windows.Forms.Padding(0, 3, 0, 3)
- Me.tsbAdd.Name = "tsbAdd"
- Me.tsbAdd.Padding = New System.Windows.Forms.Padding(0, 3, 0, 3)
- Me.tsbAdd.Size = New System.Drawing.Size(209, 84)
- Me.tsbAdd.Text = " Add "
- '
- 'tsbRemove
- '
- Me.tsbRemove.AutoToolTip = False
- Me.tsbRemove.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text
- Me.tsbRemove.ImageTransparentColor = System.Drawing.Color.Magenta
- Me.tsbRemove.Margin = New System.Windows.Forms.Padding(0, 3, 0, 3)
- Me.tsbRemove.Name = "tsbRemove"
- Me.tsbRemove.Size = New System.Drawing.Size(212, 84)
- Me.tsbRemove.Text = " Remove "
- '
- 'tsbClone
- '
- Me.tsbClone.AutoToolTip = False
- Me.tsbClone.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text
- Me.tsbClone.ImageTransparentColor = System.Drawing.Color.Magenta
- Me.tsbClone.Margin = New System.Windows.Forms.Padding(0, 3, 0, 3)
- Me.tsbClone.Name = "tsbClone"
- Me.tsbClone.Size = New System.Drawing.Size(215, 84)
- Me.tsbClone.Text = " Clone "
- '
- 'tsbInstallUninstall
- '
- Me.tsbInstallUninstall.AutoToolTip = False
- Me.tsbInstallUninstall.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text
- Me.tsbInstallUninstall.ImageTransparentColor = System.Drawing.Color.Magenta
- Me.tsbInstallUninstall.Margin = New System.Windows.Forms.Padding(0, 3, 0, 3)
- Me.tsbInstallUninstall.Name = "tsbInstallUninstall"
- Me.tsbInstallUninstall.Size = New System.Drawing.Size(268, 84)
- Me.tsbInstallUninstall.Text = "Install/Uninstall"
- '
- 'tsbOptions
- '
- Me.tsbOptions.AutoToolTip = False
- Me.tsbOptions.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text
- Me.tsbOptions.ImageTransparentColor = System.Drawing.Color.Magenta
- Me.tsbOptions.Margin = New System.Windows.Forms.Padding(0, 3, 0, 3)
- Me.tsbOptions.Name = "tsbOptions"
- Me.tsbOptions.Size = New System.Drawing.Size(209, 84)
- Me.tsbOptions.Text = " Options "
- '
- 'ddbHelp
- '
- Me.ddbHelp.AutoToolTip = False
- Me.ddbHelp.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text
- Me.ddbHelp.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.miOpenWebsite, Me.miAbout})
- Me.ddbHelp.Image = CType(resources.GetObject("ddbHelp.Image"), System.Drawing.Image)
- Me.ddbHelp.ImageTransparentColor = System.Drawing.Color.Magenta
- Me.ddbHelp.Name = "ddbHelp"
- Me.ddbHelp.Size = New System.Drawing.Size(206, 81)
- Me.ddbHelp.Text = " Help "
- '
- 'miOpenWebsite
- '
- Me.miOpenWebsite.Name = "miOpenWebsite"
- Me.miOpenWebsite.Size = New System.Drawing.Size(346, 66)
- Me.miOpenWebsite.Text = "Website"
- '
- 'miAbout
- '
- Me.miAbout.Name = "miAbout"
- Me.miAbout.Size = New System.Drawing.Size(346, 66)
- Me.miAbout.Text = "About"
- '
'laPath
'
Me.laPath.Anchor = System.Windows.Forms.AnchorStyles.Left
Me.laPath.AutoSize = True
- Me.laPath.Location = New System.Drawing.Point(519, 293)
+ Me.laPath.Location = New System.Drawing.Point(602, 203)
Me.laPath.Margin = New System.Windows.Forms.Padding(18, 0, 0, 0)
Me.laPath.Name = "laPath"
Me.laPath.Size = New System.Drawing.Size(97, 48)
@@ -345,7 +265,7 @@ Public Class MainForm
'
Me.laName.Anchor = System.Windows.Forms.AnchorStyles.Left
Me.laName.AutoSize = True
- Me.laName.Location = New System.Drawing.Point(519, 110)
+ Me.laName.Location = New System.Drawing.Point(602, 20)
Me.laName.Margin = New System.Windows.Forms.Padding(18, 20, 0, 20)
Me.laName.Name = "laName"
Me.laName.Size = New System.Drawing.Size(123, 48)
@@ -356,7 +276,7 @@ Public Class MainForm
'
Me.laArgs.Anchor = System.Windows.Forms.AnchorStyles.Left
Me.laArgs.AutoSize = True
- Me.laArgs.Location = New System.Drawing.Point(519, 386)
+ Me.laArgs.Location = New System.Drawing.Point(602, 320)
Me.laArgs.Margin = New System.Windows.Forms.Padding(18, 0, 0, 0)
Me.laArgs.Name = "laArgs"
Me.laArgs.Size = New System.Drawing.Size(202, 48)
@@ -366,23 +286,26 @@ Public Class MainForm
'bnPath
'
Me.bnPath.Anchor = System.Windows.Forms.AnchorStyles.None
- Me.bnPath.Location = New System.Drawing.Point(1891, 280)
+ Me.bnPath.BackColor = System.Drawing.Color.WhiteSmoke
+ Me.bnPath.Location = New System.Drawing.Point(1921, 190)
Me.bnPath.Margin = New System.Windows.Forms.Padding(18, 9, 18, 9)
Me.bnPath.Name = "bnPath"
- Me.bnPath.Size = New System.Drawing.Size(230, 75)
- Me.bnPath.TabIndex = 7
+ Me.bnPath.Size = New System.Drawing.Size(200, 75)
+ Me.bnPath.TabIndex = 5
Me.bnPath.Text = "Browse..."
+ Me.bnPath.UseVisualStyleBackColor = False
'
'bnArguments
'
Me.bnArguments.Anchor = System.Windows.Forms.AnchorStyles.None
- Me.bnArguments.Location = New System.Drawing.Point(1891, 373)
+ Me.bnArguments.BackColor = System.Drawing.Color.WhiteSmoke
+ Me.bnArguments.Location = New System.Drawing.Point(1921, 306)
Me.bnArguments.Margin = New System.Windows.Forms.Padding(18, 9, 18, 9)
Me.bnArguments.Name = "bnArguments"
- Me.bnArguments.Size = New System.Drawing.Size(230, 75)
- Me.bnArguments.TabIndex = 8
+ Me.bnArguments.Size = New System.Drawing.Size(200, 75)
+ Me.bnArguments.TabIndex = 7
Me.bnArguments.Text = "%paths%"
- Me.bnArguments.UseVisualStyleBackColor = True
+ Me.bnArguments.UseVisualStyleBackColor = False
'
'PropsFlowLayoutPanel
'
@@ -396,10 +319,10 @@ Public Class MainForm
Me.PropsFlowLayoutPanel.Controls.Add(Me.cbRunAsAdmin)
Me.PropsFlowLayoutPanel.Controls.Add(Me.cbHideWindow)
Me.PropsFlowLayoutPanel.FlowDirection = System.Windows.Forms.FlowDirection.TopDown
- Me.PropsFlowLayoutPanel.Location = New System.Drawing.Point(501, 643)
+ Me.PropsFlowLayoutPanel.Location = New System.Drawing.Point(584, 691)
Me.PropsFlowLayoutPanel.Margin = New System.Windows.Forms.Padding(0)
Me.PropsFlowLayoutPanel.Name = "PropsFlowLayoutPanel"
- Me.PropsFlowLayoutPanel.Size = New System.Drawing.Size(1639, 371)
+ Me.PropsFlowLayoutPanel.Size = New System.Drawing.Size(1556, 323)
Me.PropsFlowLayoutPanel.TabIndex = 16
'
'cbHidden
@@ -408,33 +331,35 @@ Public Class MainForm
Me.cbHidden.Margin = New System.Windows.Forms.Padding(25, 3, 3, 3)
Me.cbHidden.Name = "cbHidden"
Me.cbHidden.Size = New System.Drawing.Size(600, 60)
- Me.cbHidden.TabIndex = 3
+ Me.cbHidden.TabIndex = 2
Me.cbHidden.Text = "Show only if Ctrl key is pressed"
Me.cbHidden.UseVisualStyleBackColor = True
'
'cbHideWindow
'
- Me.cbHideWindow.Location = New System.Drawing.Point(25, 284)
+ Me.cbHideWindow.Location = New System.Drawing.Point(653, 3)
Me.cbHideWindow.Margin = New System.Windows.Forms.Padding(25, 3, 3, 3)
Me.cbHideWindow.Name = "cbHideWindow"
Me.cbHideWindow.Size = New System.Drawing.Size(600, 60)
- Me.cbHideWindow.TabIndex = 2
+ Me.cbHideWindow.TabIndex = 4
Me.cbHideWindow.Text = "Run hidden"
Me.cbHideWindow.UseVisualStyleBackColor = True
'
'tlpMain
'
+ Me.tlpMain.BackColor = System.Drawing.Color.Gainsboro
Me.tlpMain.ColumnCount = 4
- Me.tlpMain.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30.85802!))
+ Me.tlpMain.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 35.0!))
Me.tlpMain.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle())
- Me.tlpMain.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 69.14198!))
+ Me.tlpMain.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 65.0!))
Me.tlpMain.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle())
- Me.tlpMain.Controls.Add(Me.FlowLayoutPanel1, 2, 8)
- Me.tlpMain.Controls.Add(Me.PropsFlowLayoutPanel, 1, 7)
+ Me.tlpMain.Controls.Add(Me.laFilter, 0, 7)
+ Me.tlpMain.Controls.Add(Me.tbFilter, 2, 7)
+ Me.tlpMain.Controls.Add(Me.FlowLayoutPanel1, 1, 9)
+ Me.tlpMain.Controls.Add(Me.PropsFlowLayoutPanel, 1, 8)
Me.tlpMain.Controls.Add(Me.lv, 0, 2)
Me.tlpMain.Controls.Add(Me.laPath, 1, 3)
Me.tlpMain.Controls.Add(Me.tbPath, 2, 3)
- Me.tlpMain.Controls.Add(Me.tsMain, 0, 0)
Me.tlpMain.Controls.Add(Me.laName, 1, 1)
Me.tlpMain.Controls.Add(Me.tbFileTypes, 2, 2)
Me.tlpMain.Controls.Add(Me.tbName, 2, 1)
@@ -446,15 +371,17 @@ Public Class MainForm
Me.tlpMain.Controls.Add(Me.tbArguments, 2, 4)
Me.tlpMain.Controls.Add(Me.laArgs, 1, 4)
Me.tlpMain.Controls.Add(Me.bnWorkingDirectory, 3, 5)
- Me.tlpMain.Controls.Add(Me.bnIcon, 3, 6)
Me.tlpMain.Controls.Add(Me.tbWorkingDirectory, 2, 5)
- Me.tlpMain.Controls.Add(Me.tbIcon, 2, 6)
Me.tlpMain.Controls.Add(Me.laWorkingDirectory, 1, 5)
+ Me.tlpMain.Controls.Add(Me.tlpListView, 0, 9)
+ Me.tlpMain.Controls.Add(Me.bnIcon, 3, 6)
+ Me.tlpMain.Controls.Add(Me.tbIcon, 2, 6)
Me.tlpMain.Controls.Add(Me.laIcon, 1, 6)
Me.tlpMain.Dock = System.Windows.Forms.DockStyle.Fill
Me.tlpMain.Location = New System.Drawing.Point(0, 0)
Me.tlpMain.Name = "tlpMain"
- Me.tlpMain.RowCount = 9
+ Me.tlpMain.RowCount = 10
+ Me.tlpMain.RowStyles.Add(New System.Windows.Forms.RowStyle())
Me.tlpMain.RowStyles.Add(New System.Windows.Forms.RowStyle())
Me.tlpMain.RowStyles.Add(New System.Windows.Forms.RowStyle())
Me.tlpMain.RowStyles.Add(New System.Windows.Forms.RowStyle())
@@ -464,23 +391,101 @@ Public Class MainForm
Me.tlpMain.RowStyles.Add(New System.Windows.Forms.RowStyle())
Me.tlpMain.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
Me.tlpMain.RowStyles.Add(New System.Windows.Forms.RowStyle())
+ Me.tlpMain.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!))
Me.tlpMain.Size = New System.Drawing.Size(2140, 1125)
Me.tlpMain.TabIndex = 17
'
+ 'laFilter
+ '
+ Me.laFilter.Anchor = System.Windows.Forms.AnchorStyles.Left
+ Me.laFilter.AutoSize = True
+ Me.laFilter.Location = New System.Drawing.Point(602, 623)
+ Me.laFilter.Margin = New System.Windows.Forms.Padding(18, 20, 0, 20)
+ Me.laFilter.Name = "laFilter"
+ Me.laFilter.Size = New System.Drawing.Size(215, 48)
+ Me.laFilter.TabIndex = 29
+ Me.laFilter.Text = "Regex Filter:"
+ '
+ 'tbFilter
+ '
+ Me.tbFilter.Anchor = CType((System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.tbFilter.BackColor = System.Drawing.Color.WhiteSmoke
+ Me.tbFilter.Location = New System.Drawing.Point(820, 619)
+ Me.tbFilter.Margin = New System.Windows.Forms.Padding(3, 10, 0, 10)
+ Me.tbFilter.Name = "tbFilter"
+ Me.tbFilter.Size = New System.Drawing.Size(1083, 55)
+ Me.tbFilter.TabIndex = 12
+ '
'FlowLayoutPanel1
'
Me.FlowLayoutPanel1.Anchor = System.Windows.Forms.AnchorStyles.Right
Me.FlowLayoutPanel1.AutoSize = True
Me.FlowLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink
- Me.tlpMain.SetColumnSpan(Me.FlowLayoutPanel1, 2)
+ Me.tlpMain.SetColumnSpan(Me.FlowLayoutPanel1, 3)
+ Me.FlowLayoutPanel1.Controls.Add(Me.llInstallUninstall)
+ Me.FlowLayoutPanel1.Controls.Add(Me.llOptions)
+ Me.FlowLayoutPanel1.Controls.Add(Me.llWebsite)
+ Me.FlowLayoutPanel1.Controls.Add(Me.llAbout)
Me.FlowLayoutPanel1.Controls.Add(Me.bnOK)
Me.FlowLayoutPanel1.Controls.Add(Me.bnCancel)
- Me.FlowLayoutPanel1.Location = New System.Drawing.Point(1644, 1014)
+ Me.FlowLayoutPanel1.Location = New System.Drawing.Point(790, 1014)
Me.FlowLayoutPanel1.Margin = New System.Windows.Forms.Padding(0)
Me.FlowLayoutPanel1.Name = "FlowLayoutPanel1"
- Me.FlowLayoutPanel1.Size = New System.Drawing.Size(496, 111)
+ Me.FlowLayoutPanel1.Size = New System.Drawing.Size(1350, 111)
Me.FlowLayoutPanel1.TabIndex = 18
'
+ 'llInstallUninstall
+ '
+ Me.llInstallUninstall.Anchor = System.Windows.Forms.AnchorStyles.None
+ Me.llInstallUninstall.AutoSize = True
+ Me.llInstallUninstall.LinkColor = System.Drawing.Color.DimGray
+ Me.llInstallUninstall.Location = New System.Drawing.Point(10, 31)
+ Me.llInstallUninstall.Margin = New System.Windows.Forms.Padding(10)
+ Me.llInstallUninstall.Name = "llInstallUninstall"
+ Me.llInstallUninstall.Size = New System.Drawing.Size(264, 48)
+ Me.llInstallUninstall.TabIndex = 0
+ Me.llInstallUninstall.TabStop = True
+ Me.llInstallUninstall.Text = "Install/Uninstall"
+ '
+ 'llOptions
+ '
+ Me.llOptions.Anchor = System.Windows.Forms.AnchorStyles.None
+ Me.llOptions.AutoSize = True
+ Me.llOptions.LinkColor = System.Drawing.Color.DimGray
+ Me.llOptions.Location = New System.Drawing.Point(294, 31)
+ Me.llOptions.Margin = New System.Windows.Forms.Padding(10)
+ Me.llOptions.Name = "llOptions"
+ Me.llOptions.Size = New System.Drawing.Size(145, 48)
+ Me.llOptions.TabIndex = 1
+ Me.llOptions.TabStop = True
+ Me.llOptions.Text = "Options"
+ '
+ 'llWebsite
+ '
+ Me.llWebsite.Anchor = System.Windows.Forms.AnchorStyles.None
+ Me.llWebsite.AutoSize = True
+ Me.llWebsite.LinkColor = System.Drawing.Color.DimGray
+ Me.llWebsite.Location = New System.Drawing.Point(459, 31)
+ Me.llWebsite.Margin = New System.Windows.Forms.Padding(10)
+ Me.llWebsite.Name = "llWebsite"
+ Me.llWebsite.Size = New System.Drawing.Size(148, 48)
+ Me.llWebsite.TabIndex = 2
+ Me.llWebsite.TabStop = True
+ Me.llWebsite.Text = "Website"
+ '
+ 'llAbout
+ '
+ Me.llAbout.Anchor = System.Windows.Forms.AnchorStyles.None
+ Me.llAbout.AutoSize = True
+ Me.llAbout.LinkColor = System.Drawing.Color.DimGray
+ Me.llAbout.Location = New System.Drawing.Point(627, 31)
+ Me.llAbout.Margin = New System.Windows.Forms.Padding(10)
+ Me.llAbout.Name = "llAbout"
+ Me.llAbout.Size = New System.Drawing.Size(117, 48)
+ Me.llAbout.TabIndex = 3
+ Me.llAbout.TabStop = True
+ Me.llAbout.Text = "About"
+ '
'tlpSearch
'
Me.tlpSearch.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
@@ -489,82 +494,144 @@ Public Class MainForm
Me.tlpSearch.ColumnCount = 1
Me.tlpSearch.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
Me.tlpSearch.Controls.Add(Me.tbSearch, 0, 0)
- Me.tlpSearch.Location = New System.Drawing.Point(18, 90)
+ Me.tlpSearch.Location = New System.Drawing.Point(18, 0)
Me.tlpSearch.Margin = New System.Windows.Forms.Padding(18, 0, 0, 0)
Me.tlpSearch.Name = "tlpSearch"
Me.tlpSearch.RowCount = 1
Me.tlpSearch.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
- Me.tlpSearch.Size = New System.Drawing.Size(483, 88)
+ Me.tlpSearch.Size = New System.Drawing.Size(566, 88)
Me.tlpSearch.TabIndex = 19
'
'bnFileTypes
'
Me.bnFileTypes.Anchor = System.Windows.Forms.AnchorStyles.None
- Me.bnFileTypes.Location = New System.Drawing.Point(1891, 187)
+ Me.bnFileTypes.BackColor = System.Drawing.Color.WhiteSmoke
+ Me.bnFileTypes.Location = New System.Drawing.Point(1921, 97)
Me.bnFileTypes.Margin = New System.Windows.Forms.Padding(18, 9, 18, 9)
Me.bnFileTypes.Name = "bnFileTypes"
- Me.bnFileTypes.Size = New System.Drawing.Size(230, 75)
- Me.bnFileTypes.TabIndex = 20
+ Me.bnFileTypes.Size = New System.Drawing.Size(200, 75)
+ Me.bnFileTypes.TabIndex = 3
Me.bnFileTypes.Text = "All Files"
+ Me.bnFileTypes.UseVisualStyleBackColor = False
'
'bnWorkingDirectory
'
Me.bnWorkingDirectory.Anchor = System.Windows.Forms.AnchorStyles.None
- Me.bnWorkingDirectory.Location = New System.Drawing.Point(1891, 466)
+ Me.bnWorkingDirectory.BackColor = System.Drawing.Color.WhiteSmoke
+ Me.bnWorkingDirectory.Location = New System.Drawing.Point(1921, 424)
Me.bnWorkingDirectory.Margin = New System.Windows.Forms.Padding(18, 9, 18, 9)
Me.bnWorkingDirectory.Name = "bnWorkingDirectory"
- Me.bnWorkingDirectory.Size = New System.Drawing.Size(230, 75)
- Me.bnWorkingDirectory.TabIndex = 22
+ Me.bnWorkingDirectory.Size = New System.Drawing.Size(200, 75)
+ Me.bnWorkingDirectory.TabIndex = 9
Me.bnWorkingDirectory.Text = "Browse..."
- Me.bnWorkingDirectory.UseVisualStyleBackColor = True
- '
- 'bnIcon
- '
- Me.bnIcon.Anchor = System.Windows.Forms.AnchorStyles.None
- Me.bnIcon.Location = New System.Drawing.Point(1891, 559)
- Me.bnIcon.Margin = New System.Windows.Forms.Padding(18, 9, 18, 9)
- Me.bnIcon.Name = "bnIcon"
- Me.bnIcon.Size = New System.Drawing.Size(230, 75)
- Me.bnIcon.TabIndex = 24
- Me.bnIcon.Text = "Browse..."
- Me.bnIcon.UseVisualStyleBackColor = True
+ Me.bnWorkingDirectory.UseVisualStyleBackColor = False
'
'tbWorkingDirectory
'
Me.tbWorkingDirectory.Anchor = CType((System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.tbWorkingDirectory.BackColor = System.Drawing.Color.WhiteSmoke
Me.tbWorkingDirectory.HideSelection = False
- Me.tbWorkingDirectory.Location = New System.Drawing.Point(754, 476)
+ Me.tbWorkingDirectory.Location = New System.Drawing.Point(820, 434)
Me.tbWorkingDirectory.Margin = New System.Windows.Forms.Padding(3, 10, 0, 10)
Me.tbWorkingDirectory.Name = "tbWorkingDirectory"
- Me.tbWorkingDirectory.Size = New System.Drawing.Size(1119, 55)
- Me.tbWorkingDirectory.TabIndex = 21
- '
- 'tbIcon
- '
- Me.tbIcon.Anchor = CType((System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
- Me.tbIcon.HideSelection = False
- Me.tbIcon.Location = New System.Drawing.Point(754, 569)
- Me.tbIcon.Margin = New System.Windows.Forms.Padding(3, 10, 0, 10)
- Me.tbIcon.Name = "tbIcon"
- Me.tbIcon.Size = New System.Drawing.Size(1119, 55)
- Me.tbIcon.TabIndex = 25
+ Me.tbWorkingDirectory.Size = New System.Drawing.Size(1083, 55)
+ Me.tbWorkingDirectory.TabIndex = 8
'
'laWorkingDirectory
'
Me.laWorkingDirectory.Anchor = System.Windows.Forms.AnchorStyles.Left
Me.laWorkingDirectory.AutoSize = True
- Me.laWorkingDirectory.Location = New System.Drawing.Point(519, 479)
+ Me.laWorkingDirectory.Location = New System.Drawing.Point(602, 414)
Me.laWorkingDirectory.Margin = New System.Windows.Forms.Padding(18, 0, 12, 0)
Me.laWorkingDirectory.Name = "laWorkingDirectory"
- Me.laWorkingDirectory.Size = New System.Drawing.Size(220, 48)
+ Me.laWorkingDirectory.Size = New System.Drawing.Size(174, 96)
Me.laWorkingDirectory.TabIndex = 23
- Me.laWorkingDirectory.Text = "Working Dir:"
+ Me.laWorkingDirectory.Text = "Working" & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "Directory:"
+ '
+ 'tlpListView
+ '
+ Me.tlpListView.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.tlpListView.ColumnCount = 3
+ Me.tlpListView.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 32.0!))
+ Me.tlpListView.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 36.0!))
+ Me.tlpListView.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 32.0!))
+ Me.tlpListView.Controls.Add(Me.bnClone, 2, 0)
+ Me.tlpListView.Controls.Add(Me.bnRemove, 1, 0)
+ Me.tlpListView.Controls.Add(Me.bnAdd, 0, 0)
+ Me.tlpListView.Location = New System.Drawing.Point(18, 1014)
+ Me.tlpListView.Margin = New System.Windows.Forms.Padding(18, 0, 0, 0)
+ Me.tlpListView.Name = "tlpListView"
+ Me.tlpListView.RowCount = 1
+ Me.tlpListView.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
+ Me.tlpListView.Size = New System.Drawing.Size(566, 111)
+ Me.tlpListView.TabIndex = 27
+ '
+ 'bnClone
+ '
+ Me.bnClone.Anchor = CType((System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.bnClone.BackColor = System.Drawing.Color.WhiteSmoke
+ Me.bnClone.Location = New System.Drawing.Point(402, 18)
+ Me.bnClone.Margin = New System.Windows.Forms.Padding(18, 0, 0, 0)
+ Me.bnClone.Name = "bnClone"
+ Me.bnClone.Size = New System.Drawing.Size(164, 75)
+ Me.bnClone.TabIndex = 2
+ Me.bnClone.Text = "Cl&one"
+ Me.bnClone.UseVisualStyleBackColor = False
+ '
+ 'bnRemove
+ '
+ Me.bnRemove.Anchor = CType((System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.bnRemove.BackColor = System.Drawing.Color.WhiteSmoke
+ Me.bnRemove.Location = New System.Drawing.Point(181, 18)
+ Me.bnRemove.Margin = New System.Windows.Forms.Padding(0)
+ Me.bnRemove.Name = "bnRemove"
+ Me.bnRemove.Size = New System.Drawing.Size(203, 75)
+ Me.bnRemove.TabIndex = 1
+ Me.bnRemove.Text = "&Remove"
+ Me.bnRemove.UseVisualStyleBackColor = False
+ '
+ 'bnAdd
+ '
+ Me.bnAdd.Anchor = CType((System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.bnAdd.BackColor = System.Drawing.Color.WhiteSmoke
+ Me.bnAdd.Location = New System.Drawing.Point(0, 18)
+ Me.bnAdd.Margin = New System.Windows.Forms.Padding(0, 0, 18, 0)
+ Me.bnAdd.Name = "bnAdd"
+ Me.bnAdd.Size = New System.Drawing.Size(163, 75)
+ Me.bnAdd.TabIndex = 0
+ Me.bnAdd.Text = "&Add"
+ Me.bnAdd.UseVisualStyleBackColor = False
+ '
+ 'bnIcon
+ '
+ Me.bnIcon.Anchor = System.Windows.Forms.AnchorStyles.None
+ Me.bnIcon.BackColor = System.Drawing.Color.WhiteSmoke
+ Me.bnIcon.Location = New System.Drawing.Point(1921, 519)
+ Me.bnIcon.Margin = New System.Windows.Forms.Padding(18, 9, 18, 9)
+ Me.bnIcon.Name = "bnIcon"
+ Me.bnIcon.Size = New System.Drawing.Size(200, 75)
+ Me.bnIcon.TabIndex = 11
+ Me.bnIcon.Text = "Browse..."
+ Me.bnIcon.UseVisualStyleBackColor = False
+ '
+ 'tbIcon
+ '
+ Me.tbIcon.Anchor = CType((System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.tbIcon.BackColor = System.Drawing.Color.WhiteSmoke
+ Me.tbIcon.HideSelection = False
+ Me.tbIcon.Location = New System.Drawing.Point(820, 529)
+ Me.tbIcon.Margin = New System.Windows.Forms.Padding(3, 10, 0, 10)
+ Me.tbIcon.Name = "tbIcon"
+ Me.tbIcon.Size = New System.Drawing.Size(1083, 55)
+ Me.tbIcon.TabIndex = 10
'
'laIcon
'
Me.laIcon.Anchor = System.Windows.Forms.AnchorStyles.Left
Me.laIcon.AutoSize = True
- Me.laIcon.Location = New System.Drawing.Point(519, 572)
+ Me.laIcon.Location = New System.Drawing.Point(602, 532)
Me.laIcon.Margin = New System.Windows.Forms.Padding(18, 0, 0, 0)
Me.laIcon.Name = "laIcon"
Me.laIcon.Size = New System.Drawing.Size(96, 48)
@@ -583,14 +650,14 @@ Public Class MainForm
Me.Name = "MainForm"
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
Me.Text = "Open with++"
- Me.tsMain.ResumeLayout(False)
- Me.tsMain.PerformLayout()
Me.PropsFlowLayoutPanel.ResumeLayout(False)
Me.tlpMain.ResumeLayout(False)
Me.tlpMain.PerformLayout()
Me.FlowLayoutPanel1.ResumeLayout(False)
+ Me.FlowLayoutPanel1.PerformLayout()
Me.tlpSearch.ResumeLayout(False)
Me.tlpSearch.PerformLayout()
+ Me.tlpListView.ResumeLayout(False)
Me.ResumeLayout(False)
End Sub
@@ -607,7 +674,6 @@ Public Class MainForm
InitializeComponent()
AddHandler Application.ThreadException, AddressOf ApplicationThreadException
- Text += " " + Application.ProductVersion.ToString
lv.View = View.Details
lv.Columns.Add("")
@@ -623,10 +689,6 @@ Public Class MainForm
Width = FontHeight * 50
Height = FontHeight * 27
- Dim margin = tsbAdd.Margin
- margin.Left = CInt(FontHeight * 0.33)
- tsbAdd.Margin = margin
-
g.LoadSettings()
If g.Settings.Items.Count > 0 Then
@@ -765,8 +827,8 @@ Public Class MainForm
End Sub
Sub lv_KeyUp(sender As Object, e As KeyEventArgs) Handles lv.KeyUp
- If e.KeyData = Keys.Delete AndAlso tsbRemove.Enabled Then
- tsbRemove.PerformClick()
+ If e.KeyData = Keys.Delete AndAlso bnRemove.Enabled Then
+ bnRemove.PerformClick()
End If
UpdateControls()
@@ -812,6 +874,7 @@ Public Class MainForm
tbPath.Text = SelectedItem.Path
tbArguments.Text = SelectedItem.Arguments
tbWorkingDirectory.Text = SelectedItem.WorkingDirectory
+ tbFilter.Text = SelectedItem.Filter
tbIcon.Text = SelectedItem.IconFile
cbSubmenu.Checked = SelectedItem.SubMenu
@@ -867,8 +930,8 @@ Public Class MainForm
tbIcon.Text = ""
End If
- tsbRemove.Enabled = Not SelectedItem Is Nothing
- tsbClone.Enabled = Not SelectedItem Is Nothing
+ bnRemove.Enabled = Not SelectedItem Is Nothing
+ bnClone.Enabled = Not SelectedItem Is Nothing
BlockEvents = False
End Sub
@@ -910,6 +973,7 @@ Public Class MainForm
i.Name.ToLower.Contains(query) OrElse
i.Path.ToLower.Contains(query) OrElse
i.WorkingDirectory.ToLower.Contains(query) OrElse
+ i.Filter.ToLower.Contains(query) OrElse
i.FileTypesDisplay.ToLower.Contains(query) OrElse
i.Arguments.ToLower.Contains(query) Then
@@ -946,32 +1010,6 @@ Public Class MainForm
Close()
End Sub
- Sub tsbAdd_Click(sender As Object, e As EventArgs) Handles tsbAdd.Click
- AddItem(New Item With {.Arguments = "%paths%"})
- tbSearch.Text = ""
- tbName.Focus()
- End Sub
-
- Sub tsbRemove_Click(sender As Object, e As EventArgs) Handles tsbRemove.Click
- Dim index = lv.SelectedIndices(0)
- TempItems.Remove(SelectedItem)
- lv.SelectedItems(0).Remove()
-
- If index > lv.Items.Count - 1 Then
- index = index - 1
- End If
-
- If index >= 0 Then
- lv.Items(index).Selected = True
- End If
-
- UpdateControls()
- End Sub
-
- Sub tsbClone_Click(sender As Object, e As EventArgs) Handles tsbClone.Click
- AddItem(CloneObject(Of Item)(SelectedItem))
- End Sub
-
Sub bnArguments_Click(sender As Object, e As EventArgs) Handles bnArguments.Click
tbArguments.Focus()
tbArguments.Text = (tbArguments.Text.Trim + " %paths%").Trim
@@ -986,12 +1024,12 @@ Public Class MainForm
tbArguments.HideSelection = True
End Sub
- Sub miOpenWebsite_Click(sender As Object, e As EventArgs) Handles miOpenWebsite.Click
+ Sub llWebsite_Click(sender As Object, e As EventArgs) Handles llWebsite.Click
Process.Start("https://github.com/stax76/OpenWithPlusPlus")
End Sub
- Sub miAbout_Click(sender As Object, e As EventArgs) Handles miAbout.Click
- MsgInfo(Application.ProductName + " " + Application.ProductVersion.ToString + BR2 + "Copyright (C) 2008-2020 Frank Skare (stax76)" + BR2 + "MIT License")
+ Sub llAbout_Click(sender As Object, e As EventArgs) Handles llAbout.Click
+ MsgInfo(Application.ProductName + " " + Application.ProductVersion.ToString + BR2 + "Copyright (C) 2008-2021 Frank Skare (stax76)" + BR2 + "MIT License")
End Sub
Sub bnFileTypes_Click(sender As Object, e As EventArgs) Handles bnFileTypes.Click
@@ -1016,7 +1054,7 @@ Public Class MainForm
Native.SendMessage(tb.Handle, EM_SETCUEBANNER, If(hideWhenFocused, 0, 1), value)
End Sub
- Sub tsbOptions_Click(sender As Object, e As EventArgs) Handles tsbOptions.Click
+ Sub llOptions_Click(sender As Object, e As EventArgs) Handles llOptions.Click
Using form As New OptionsForm
If form.ShowDialog = DialogResult.OK Then
g.Settings.Macros.Clear()
@@ -1043,8 +1081,8 @@ Public Class MainForm
End Using
End Sub
- Sub tsbInstallUninstall_Click(sender As Object, e As EventArgs) Handles tsbInstallUninstall.Click
- If tsbInstallUninstall.Text = " Install " Then
+ Sub llInstallUninstall_Click(sender As Object, e As EventArgs) Handles llInstallUninstall.Click
+ If llInstallUninstall.Text = "Install" Then
If Msg("Confirm to install the Shell Extension." + BR2 +
"After the installation the Open with++ location cannot be moved.", "Install Shell Extension",
MessageBoxIcon.None, MessageBoxButtons.OKCancel) = DialogResult.OK Then
@@ -1074,9 +1112,9 @@ Public Class MainForm
Sub MainForm_Activated(sender As Object, e As EventArgs) Handles Me.Activated
Using key = Registry.ClassesRoot.OpenSubKey("CLSID\{E7B8ACF5-FC18-4f0d-BC50-D0184481A5DC}")
If key Is Nothing Then
- tsbInstallUninstall.Text = " Install "
+ llInstallUninstall.Text = "Install"
Else
- tsbInstallUninstall.Text = " Uninstall "
+ llInstallUninstall.Text = "Uninstall"
End If
End Using
End Sub
@@ -1132,4 +1170,36 @@ Public Class MainForm
End If
End If
End Sub
+
+ Sub bnAdd_Click(sender As Object, e As EventArgs) Handles bnAdd.Click
+ AddItem(New Item With {.Arguments = "%paths%"})
+ tbSearch.Text = ""
+ tbName.Focus()
+ End Sub
+
+ Sub bnRemove_Click(sender As Object, e As EventArgs) Handles bnRemove.Click
+ Dim index = lv.SelectedIndices(0)
+ TempItems.Remove(SelectedItem)
+ lv.SelectedItems(0).Remove()
+
+ If index > lv.Items.Count - 1 Then
+ index = index - 1
+ End If
+
+ If index >= 0 Then
+ lv.Items(index).Selected = True
+ End If
+
+ UpdateControls()
+ End Sub
+
+ Sub bnClone_Click(sender As Object, e As EventArgs) Handles bnClone.Click
+ AddItem(CloneObject(Of Item)(SelectedItem))
+ End Sub
+
+ Sub tbFilter_TextChanged(sender As Object, e As EventArgs) Handles tbFilter.TextChanged
+ If Not BlockEvents AndAlso Not SelectedItem Is Nothing Then
+ SelectedItem.Filter = tbFilter.Text
+ End If
+ End Sub
End Class
diff --git a/OpenWithPPGUI/Misc.vb b/OpenWithPPGUI/Misc.vb
index d664b5f..262fbd8 100644
--- a/OpenWithPPGUI/Misc.vb
+++ b/OpenWithPPGUI/Misc.vb
@@ -108,8 +108,9 @@ Public Class Item
Public Directories As Boolean
Public FileTypes As String = ""
Public FileTypesDisplay As String = ""
- Public HideWindow As Boolean
+ Public Filter As String = ""
Public Hidden As Boolean
+ Public HideWindow As Boolean
Public IconFile As String = ""
Public IconIndex As Integer
Public Name As String = ""
@@ -118,7 +119,7 @@ Public Class Item
Public SubMenu As Boolean = True
Public WorkingDirectory As String = ""
- Public Function CompareTo(obj As Object) As Integer Implements System.IComparable.CompareTo
+ Function CompareTo(obj As Object) As Integer Implements System.IComparable.CompareTo
Return Name.CompareTo(DirectCast(obj, Item).Name)
End Function
End Class
diff --git a/OpenWithPPGUI/My Project/AssemblyInfo.vb b/OpenWithPPGUI/My Project/AssemblyInfo.vb
index 3b1c32a..dbcc188 100644
--- a/OpenWithPPGUI/My Project/AssemblyInfo.vb
+++ b/OpenWithPPGUI/My Project/AssemblyInfo.vb
@@ -8,10 +8,10 @@ Imports System.Runtime.InteropServices
' Review the values of the assembly attributes
-
+
-
+
@@ -29,5 +29,5 @@ Imports System.Runtime.InteropServices
' You can specify all the values or you can default the Build and Revision Numbers
' by using the '*' as shown below:
-
-
+
+
diff --git a/OpenWithPPGUI/OpenWithPPGUI.vbproj b/OpenWithPPGUI/OpenWithPPGUI.vbproj
index 98cb065..96cc660 100644
--- a/OpenWithPPGUI/OpenWithPPGUI.vbproj
+++ b/OpenWithPPGUI/OpenWithPPGUI.vbproj
@@ -162,6 +162,12 @@
+
+ Changelog.md
+
+
+ README.md
+
Designer
diff --git a/OpenWithPPGUI/OptionsForm.Designer.vb b/OpenWithPPGUI/OptionsForm.Designer.vb
index f4b342b..9e75d3e 100644
--- a/OpenWithPPGUI/OptionsForm.Designer.vb
+++ b/OpenWithPPGUI/OptionsForm.Designer.vb
@@ -41,6 +41,7 @@ Partial Class OptionsForm
'bnOK
'
Me.bnOK.Anchor = System.Windows.Forms.AnchorStyles.Right
+ Me.bnOK.BackColor = System.Drawing.Color.WhiteSmoke
Me.bnOK.DialogResult = System.Windows.Forms.DialogResult.OK
Me.bnOK.Location = New System.Drawing.Point(0, 0)
Me.bnOK.Margin = New System.Windows.Forms.Padding(0, 0, 9, 0)
@@ -48,11 +49,12 @@ Partial Class OptionsForm
Me.bnOK.Size = New System.Drawing.Size(250, 75)
Me.bnOK.TabIndex = 0
Me.bnOK.Text = "OK"
- Me.bnOK.UseVisualStyleBackColor = True
+ Me.bnOK.UseVisualStyleBackColor = False
'
'bnCancel
'
Me.bnCancel.Anchor = System.Windows.Forms.AnchorStyles.None
+ Me.bnCancel.BackColor = System.Drawing.Color.WhiteSmoke
Me.bnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel
Me.bnCancel.Location = New System.Drawing.Point(268, 0)
Me.bnCancel.Margin = New System.Windows.Forms.Padding(9, 0, 0, 0)
@@ -60,7 +62,7 @@ Partial Class OptionsForm
Me.bnCancel.Size = New System.Drawing.Size(250, 75)
Me.bnCancel.TabIndex = 1
Me.bnCancel.Text = "Cancel"
- Me.bnCancel.UseVisualStyleBackColor = True
+ Me.bnCancel.UseVisualStyleBackColor = False
'
'laMacros
'
@@ -79,6 +81,7 @@ Partial Class OptionsForm
Me.tbMacros.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.tbMacros.BackColor = System.Drawing.Color.WhiteSmoke
Me.tbMacros.Location = New System.Drawing.Point(0, 0)
Me.tbMacros.Margin = New System.Windows.Forms.Padding(0)
Me.tbMacros.Multiline = True
@@ -90,6 +93,7 @@ Partial Class OptionsForm
'
'tlpMain
'
+ Me.tlpMain.BackColor = System.Drawing.Color.Gainsboro
Me.tlpMain.ColumnCount = 2
Me.tlpMain.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle())
Me.tlpMain.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
@@ -158,6 +162,7 @@ Partial Class OptionsForm
'tbSettingDirectory
'
Me.tbSettingDirectory.Anchor = CType((System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.tbSettingDirectory.BackColor = System.Drawing.Color.WhiteSmoke
Me.tbSettingDirectory.Location = New System.Drawing.Point(0, 0)
Me.tbSettingDirectory.Margin = New System.Windows.Forms.Padding(0)
Me.tbSettingDirectory.Name = "tbSettingDirectory"
diff --git a/OpenWithPPShellExtension/Main.cpp b/OpenWithPPShellExtension/Main.cpp
index b9ff03c..4a057f7 100644
--- a/OpenWithPPShellExtension/Main.cpp
+++ b/OpenWithPPShellExtension/Main.cpp
@@ -2,6 +2,8 @@
#include "stdafx.h"
#include "Main.h"
+#include
+#include
Item::~Item()
{
@@ -13,6 +15,40 @@ Item::~Item()
}
+std::wstring JoinList(std::list* list, const std::wstring& sep)
+{
+ std::wstring ret;
+
+ if ((*list).size() > 0)
+ ret = *(*list).begin();
+
+ if ((*list).size() > 1)
+ {
+ std::list::iterator it = (*list).begin();
+ it++;
+
+ for (it; it != (*list).end(); it++)
+ ret += sep + (*it);
+ }
+
+ return ret;
+}
+
+
+std::wstring ToLower(std::wstring val)
+{
+ std::transform(val.begin(), val.end(), val.begin(), tolower);
+ return val;
+}
+
+
+std::wstring GetExtNoDot(std::wstring pathName)
+{
+ size_t period = pathName.find_last_of(L".");
+ return ToLower(pathName.substr(period + 1));
+}
+
+
BOOL FileExists(std::wstring file)
{
if (file.length() == 0)
@@ -23,6 +59,13 @@ BOOL FileExists(std::wstring file)
}
+BOOL DirectoryExist(std::wstring path)
+{
+ DWORD dwAttrib = GetFileAttributes(path.c_str());
+ return (dwAttrib != INVALID_FILE_ATTRIBUTES && (dwAttrib & FILE_ATTRIBUTE_DIRECTORY));
+}
+
+
HBITMAP Create32BitHBITMAP(UINT cx, UINT cy, PBYTE* ppbBits)
{
BITMAPINFO bmi;
@@ -97,6 +140,15 @@ HRESULT SetIcon(HMENU menu, UINT position, UINT flags, Item* item)
path = szPath;
}
+ // starts with
+ if (path.rfind(L"..\\", 0) == 0)
+ {
+ WCHAR szExeDir[500];
+ SHRegGetPath(HKEY_CURRENT_USER, L"Software\\" PRODUCT_NAME, L"ExeDir", szExeDir, NULL);
+ std::wstring exeDir(szExeDir);
+ path = exeDir + path;
+ }
+
if (!FileExists(path))
return S_OK;
@@ -128,47 +180,6 @@ HRESULT SetIcon(HMENU menu, UINT position, UINT flags, Item* item)
}
-std::wstring JoinList(std::list* list, const std::wstring& sep)
-{
- std::wstring ret;
-
- if ((*list).size() > 0)
- ret = *(*list).begin();
-
- if ((*list).size() > 1)
- {
- std::list::iterator it = (*list).begin();
- it++;
-
- for (it; it != (*list).end(); it++)
- ret += sep + (*it);
- }
-
- return ret;
-}
-
-
-std::wstring ToLower(std::wstring val)
-{
- std::transform(val.begin(), val.end(), val.begin(), tolower);
- return val;
-}
-
-
-std::wstring GetExtNoDot(std::wstring pathName)
-{
- size_t period = pathName.find_last_of(L".");
- return ToLower(pathName.substr(period + 1));
-}
-
-
-BOOL DirectoryExist(std::wstring path)
-{
- DWORD dwAttrib = GetFileAttributes(path.c_str());
- return (dwAttrib != INVALID_FILE_ATTRIBUTES && (dwAttrib & FILE_ATTRIBUTE_DIRECTORY));
-}
-
-
HRESULT CMain::LoadXML()
{
for (Item* item : g_Items)
@@ -246,6 +257,8 @@ HRESULT CMain::LoadXML()
item->IconIndex = std::stoi(std::wstring(cNodeText));
else if (cNodeName == L"FileTypes")
item->FileTypes = cNodeText;
+ else if (cNodeName == L"Filter")
+ item->Filter = cNodeText;
else if (cNodeName == L"SubMenu")
item->SubMenu = (cNodeText == L"true") ? true : false;
else if (cNodeName == L"Directories")
@@ -348,6 +361,9 @@ STDMETHODIMP CMain::QueryContextMenu(
bool isFile = FileExists(*g_ShellItems.begin());
bool isDirectory = !isFile && DirectoryExist(*g_ShellItems.begin());
+ std::wstring ext = GetExtNoDot(*g_ShellItems.begin());
+ std::wstring path = *g_ShellItems.begin();
+
g_EditCommandIndex = -1;
int res = InsertMenu(hmenu, uMenuIndex, MF_BYPOSITION | MF_POPUP, (UINT_PTR)subMenu, L"Open with++");
@@ -364,10 +380,10 @@ STDMETHODIMP CMain::QueryContextMenu(
for (UINT i = 0; i < g_Items.size(); i++)
{
g_Items[i]->CommandIndex = -1;
- std::wstring ext = GetExtNoDot(*g_ShellItems.begin());
if (isFile && g_Items[i]->FileTypes != L"" && ext != L""
&& (L" " + g_Items[i]->FileTypes + L" ").find(L" " + ext + L" ") != std::wstring::npos
+ && (g_Items[i]->Filter == L"" || std::regex_search(path, std::wregex(g_Items[i]->Filter)))
&& (!g_Items[i]->Hidden || (g_Items[i]->Hidden && isCtrlPressed)))
{
g_Items[i]->CommandIndex = command - uidFirstCmd;
@@ -411,7 +427,8 @@ STDMETHODIMP CMain::QueryContextMenu(
for (UINT i = 0; i < g_Items.size(); i++)
{
- if ((g_Items[i]->FileTypes == L"*.*" && isFile) || (g_Items[i]->Directories && isDirectory)
+ if ((g_Items[i]->FileTypes == L"*.*" && isFile || g_Items[i]->Directories && isDirectory)
+ && (g_Items[i]->Filter == L"" || std::regex_search(path, std::wregex(g_Items[i]->Filter)))
&& (!g_Items[i]->Hidden || (g_Items[i]->Hidden && isCtrlPressed)))
{
g_Items[i]->CommandIndex = command - uidFirstCmd;
@@ -503,6 +520,15 @@ STDMETHODIMP CMain::InvokeCommand(LPCMINVOKECOMMANDINFO pCmdInfo)
args = value.GetBuffer();
}
+ if (args.find(L"%filename-no-ext%") != std::wstring::npos)
+ {
+ std::wstring firstFile = g_ShellItems.front();
+ std::filesystem::path fp(firstFile);
+ ATL::CString value = args.c_str();
+ value.Replace(L"%filename-no-ext%", fp.stem().c_str());
+ args = value.GetBuffer();
+ }
+
std::wstring verb;
if (g_Items[i]->RunAsAdmin || GetKeyState(VK_SHIFT) < 0)
@@ -520,6 +546,14 @@ STDMETHODIMP CMain::InvokeCommand(LPCMINVOKECOMMANDINFO pCmdInfo)
path = szPath;
}
+ WCHAR szExeDir[500];
+ SHRegGetPath(HKEY_CURRENT_USER, L"Software\\" PRODUCT_NAME, L"ExeDir", szExeDir, NULL);
+ std::wstring exeDir(szExeDir);
+
+ // starts with
+ if (path.rfind(L"..\\", 0) == 0)
+ path = exeDir + path;
+
if (args.find(var) != std::string::npos)
{
WCHAR szArgs[900];
@@ -532,12 +566,7 @@ STDMETHODIMP CMain::InvokeCommand(LPCMINVOKECOMMANDINFO pCmdInfo)
std::wstring guiExe(L"OpenWithPPGUI.exe");
if (guiExe == path)
- {
- WCHAR szExeDir[500];
- SHRegGetPath(HKEY_CURRENT_USER, L"Software\\" PRODUCT_NAME, L"ExeDir", szExeDir, NULL);
- std::wstring exeDir(szExeDir);
path = exeDir + guiExe;
- }
SHELLEXECUTEINFO info;
diff --git a/OpenWithPPShellExtension/Main.h b/OpenWithPPShellExtension/Main.h
index 7b645eb..e0b3faf 100644
--- a/OpenWithPPShellExtension/Main.h
+++ b/OpenWithPPShellExtension/Main.h
@@ -4,7 +4,6 @@
#include "Util.h"
#include "Common.h"
-
EXTERN_C const CLSID CLSID_Main;
// {E7B8ACF5-FC18-4f0d-BC50-D0184481A5DC}
@@ -15,12 +14,13 @@ class Item
public:
HBITMAP Icon = NULL;
+ std::wstring Arguments;
+ std::wstring FileTypes;
+ std::wstring Filter;
+ std::wstring IconFile;
std::wstring Name;
std::wstring Path;
- std::wstring Arguments;
std::wstring WorkingDirectory;
- std::wstring IconFile;
- std::wstring FileTypes;
bool SubMenu;
bool Directories;
diff --git a/README.md b/README.md
index 4c0146b..697765d 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,8 @@
# Open with++
-Open with++ is a shell extension that allows to add command line driven custom menu items to the Windows File Explorer context menu.
+Open with++ is a shell extension that allows to add command line driven
+custom menu items to the Windows File Explorer context menu.
## Screenshots
@@ -15,7 +16,7 @@ Open with++ is a shell extension that allows to add command line driven custom m
The requirements are Windows 7 x64 or higher, [.NET Framework 4.8 x64](https://dotnet.microsoft.com/download/dotnet-framework/net48) and [Visual C++ 2019 Redistributable x64](https://support.microsoft.com/en-gb/help/2977003/the-latest-supported-visual-c-downloads).
-Start the application and click on the Install button in the toolbar.
+Start the application and click on the Install button. Don't move the folder after installation.
## GUI Elements
@@ -43,7 +44,10 @@ Allows to define a custom settings folder and macros that are usable in the File
### Install/Uninstall
-Installs/Uninstalls the shell extension. Uninstall requires a reboot, logout or restarting the relevant processes manually, Windows File Explorer can be restarted with the task manager. Common processes which load context menu shell extensions are Windows File Explorer and [Everything](https://www.voidtools.com/).
+Installs/Uninstalls the shell extension. Uninstall requires a reboot,
+logout or restarting the relevant processes manually, Windows File Explorer can be
+restarted with the task manager. Common processes which load context menu shell extensions
+are Windows File Explorer and [Everything](https://www.voidtools.com/).
### Name
@@ -76,29 +80,43 @@ Macros are only supported in the File Types property.
Specifies the program to be used for opening the selected files or folders.
-Environment variables get expanded.
+Environment variables and relative paths are supported.
### Arguments
-Specifies the arguments that are passed to the program when the command is executed. You can use the predefined variable %paths% which expands to the paths of the selected files or folders. Do not enclose the %paths% macro in quotes as Open with++ adds them automatically when the macro is expanded, each path is enclosed in double quotation marks and separated by a space.
+Specifies the arguments that are passed to the program when the command is executed.
+You can use the predefined variable %paths% which expands to the paths of the selected
+files or folders. Do not enclose the %paths% macro in quotes because Open with++ adds them
+automatically when the macro is expanded, each path is enclosed in double quotation marks
+and separated by a space.
+
+To get the filename without extension for a single file there is a %filename-no-ext% variable.
Environment variables get expanded.
### Working Directory
-The working directory the process will use, if not specified the working directory will be set to the directory of the selected files or folders.
+The working directory the process will use, if not specified the working directory
+will be set to the directory of the selected files or folders.
Environment variables get expanded.
### Icon
-Supported file types are ICO, EXE and DLL. EXE and DLL files can contain different icons, Open with++ will show a dialog that allows to choose which icon in the EXE or DLL file to use.
+Supported file types are ICO, EXE and DLL. EXE and DLL files can contain different icons,
+Open with++ will show a dialog that allows to choose which icon in the EXE or DLL file to use.
-Environment variables get expanded.
+Environment variables and relative paths are supported.
[IrfanView](https://www.irfanview.com/) can be used to create icons.
-[Here is an article](https://www.digitalcitizen.life/where-find-most-windows-10s-native-icons) that shows which Windows DLLs contain icon resources.
+[Here is an article](https://www.digitalcitizen.life/where-find-most-windows-10s-native-icons) that
+shows which Windows DLLs contain icon resources.
+
+
+### Regex Filter
+
+Show the menu only when selected files and folders match to a regex expression.
### Show in sub menu
@@ -118,7 +136,9 @@ The menu item is only visible if the Control key is pressed.
### Run as admin
-Specifies that the command executes with elevated privilegs. When disabled commands can still be executed with elevated privilegs by holding down Shift key while selecting the menu command.
+Specifies that the command executes with elevated privilegs.
+When disabled commands can still be executed with elevated privilegs
+by holding down Shift key while selecting the menu command.
### Run hidden
@@ -128,12 +148,17 @@ Runs the process with hidden window. Useful to hide terminal tools like PowerShe
## Tips & Tricks
-Holding down the Shift key while selecting a command from the Open with++ menu will execute the command with elevated privileges.
+Holding down the Shift key while selecting a command from the Open with++ menu
+will execute the command with elevated privileges.
Path, Arguments, Working Directory and Icon support the usage of environment variables.
The location of Open with++ is available as environment variable %OpenWithPPDir%.
+The easiest way to change the path of many items is editing
+the settings xml file directly with a text editor.
+
+
## Configuration Suggestions
diff --git a/Release.ps1 b/Release.ps1
index 3ea2ce7..e74a0ea 100644
--- a/Release.ps1
+++ b/Release.ps1
@@ -1,8 +1,8 @@
$ExePath = $PSScriptRoot + '\OpenWithPPGUI\bin\OpenWithPPGUI.exe'
$Version = [Diagnostics.FileVersionInfo]::GetVersionInfo($ExePath).FileVersion
-$DesktopDir = [Environment]::GetFolderPath('Desktop')
-$TargetDir = $DesktopDir + '\OpenWithPP-' + $Version
+$workDir = 'D:\Work'
+$TargetDir = $workDir + '\OpenWithPP-' + $Version
Copy-Item $PSScriptRoot\OpenWithPPGUI\bin $TargetDir -Recurse
@@ -12,3 +12,4 @@ Remove-Item $TargetDir\OpenWithPPShellExtension.exp -ErrorAction Ignore
Remove-Item $TargetDir\OpenWithPPShellExtension.ilk -ErrorAction Ignore
& 'C:\Program Files\7-Zip\7z.exe' a -t7z -mx9 "$TargetDir.7z" -r "$TargetDir\*"
+Start-Process $workDir