Imports System.Reflection Namespace UI Public Class CustomMenuEditor Inherits DialogBase #Region " Designer " Private components As System.ComponentModel.IContainer Public WithEvents lParameters As LabelEx Public WithEvents pg As PropertyGridEx Public WithEvents laText As LabelEx Public WithEvents laHotkey As LabelEx Private WithEvents tbText As TextEdit Friend WithEvents TipProvider As StaxRip.UI.TipProvider Friend WithEvents tv As StaxRip.UI.TreeViewEx Friend WithEvents tbHotkey As TextEdit Friend WithEvents tbCommand As TextEdit Friend WithEvents bnCommand As ButtonEx Friend WithEvents cmsCommand As ContextMenuStripEx Friend WithEvents laCommand As LabelEx Friend WithEvents bnCancel As StaxRip.UI.ButtonEx Friend WithEvents ImageList1 As System.Windows.Forms.ImageList Friend WithEvents tlpMain As System.Windows.Forms.TableLayoutPanel Friend WithEvents tlpCommand As System.Windows.Forms.TableLayoutPanel Friend WithEvents flpBottom As System.Windows.Forms.FlowLayoutPanel Friend WithEvents laIcon As LabelEx Friend WithEvents tlpSymbol As TableLayoutPanel Friend WithEvents laSymbol As LabelEx Friend WithEvents pbSymbol As PictureBox Friend WithEvents bnSymbol As ButtonEx Friend WithEvents cmsSymbol As ContextMenuStripEx Friend WithEvents ToolStrip As ToolStripEx Friend WithEvents tsbNew As ToolStripButton Friend WithEvents ToolStripSeparator3 As ToolStripSeparator Friend WithEvents tsbCut As ToolStripButton Friend WithEvents tsbCopy As ToolStripButton Friend WithEvents tsbPaste As ToolStripButton Friend WithEvents ToolStripSeparator4 As ToolStripSeparator Friend WithEvents tsbMoveLeft As ToolStripButton Friend WithEvents tsbMoveRight As ToolStripButton Friend WithEvents tsbMoveUp As ToolStripButton Friend WithEvents tsbMoveDown As ToolStripButton Friend WithEvents ToolStripSeparator1 As ToolStripSeparator Friend WithEvents tsbRemove As ToolStripButton Friend WithEvents ToolsToolStripDropDownButton As ToolStripDropDownButton Friend WithEvents NewFromDefaultsToolStripMenuItem As MenuItemEx Friend WithEvents ResetToolStripMenuItem As MenuItemEx Friend WithEvents bnOK As StaxRip.UI.ButtonEx Private Sub InitializeComponent() Me.components = New System.ComponentModel.Container() Me.laHotkey = New LabelEx() Me.lParameters = New LabelEx() Me.pg = New StaxRip.UI.PropertyGridEx() Me.tbText = New TextEdit() Me.laText = New LabelEx() Me.tv = New StaxRip.UI.TreeViewEx() Me.TipProvider = New StaxRip.UI.TipProvider(Me.components) Me.tbHotkey = New TextEdit() Me.tbCommand = New TextEdit() Me.bnCommand = New StaxRip.UI.ButtonEx() Me.cmsCommand = New StaxRip.UI.ContextMenuStripEx(Me.components) Me.laCommand = New LabelEx() Me.bnCancel = New StaxRip.UI.ButtonEx() Me.bnOK = New StaxRip.UI.ButtonEx() Me.ImageList1 = New System.Windows.Forms.ImageList(Me.components) Me.tlpMain = New System.Windows.Forms.TableLayoutPanel() Me.flpBottom = New System.Windows.Forms.FlowLayoutPanel() Me.tlpCommand = New System.Windows.Forms.TableLayoutPanel() Me.ToolStrip = New ToolStripEx() Me.tsbNew = New System.Windows.Forms.ToolStripButton() Me.ToolStripSeparator3 = New System.Windows.Forms.ToolStripSeparator() Me.tsbCut = New System.Windows.Forms.ToolStripButton() Me.tsbCopy = New System.Windows.Forms.ToolStripButton() Me.tsbPaste = New System.Windows.Forms.ToolStripButton() Me.ToolStripSeparator4 = New System.Windows.Forms.ToolStripSeparator() Me.tsbMoveLeft = New System.Windows.Forms.ToolStripButton() Me.tsbMoveRight = New System.Windows.Forms.ToolStripButton() Me.tsbMoveUp = New System.Windows.Forms.ToolStripButton() Me.tsbMoveDown = New System.Windows.Forms.ToolStripButton() Me.ToolStripSeparator1 = New System.Windows.Forms.ToolStripSeparator() Me.tsbRemove = New System.Windows.Forms.ToolStripButton() Me.ToolsToolStripDropDownButton = New System.Windows.Forms.ToolStripDropDownButton() Me.NewFromDefaultsToolStripMenuItem = New StaxRip.UI.MenuItemEx() Me.ResetToolStripMenuItem = New StaxRip.UI.MenuItemEx() Me.laIcon = New LabelEx() Me.tlpSymbol = New System.Windows.Forms.TableLayoutPanel() Me.laSymbol = New LabelEx() Me.pbSymbol = New System.Windows.Forms.PictureBox() Me.bnSymbol = New StaxRip.UI.ButtonEx() Me.cmsSymbol = New StaxRip.UI.ContextMenuStripEx(Me.components) Me.tlpMain.SuspendLayout() Me.flpBottom.SuspendLayout() Me.tlpCommand.SuspendLayout() Me.ToolStrip.SuspendLayout() Me.tlpSymbol.SuspendLayout() CType(Me.pbSymbol, System.ComponentModel.ISupportInitialize).BeginInit() Me.SuspendLayout() ' 'laHotkey ' Me.laHotkey.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.laHotkey.AutoSize = True Me.laHotkey.Location = New System.Drawing.Point(686, 224) Me.laHotkey.Margin = New System.Windows.Forms.Padding(0, 20, 0, 0) Me.laHotkey.Name = "laHotkey" Me.laHotkey.Size = New System.Drawing.Size(671, 48) Me.laHotkey.TabIndex = 5 Me.laHotkey.Text = "Shortcut Key:" ' 'lParameters ' Me.lParameters.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.lParameters.AutoSize = True Me.lParameters.Location = New System.Drawing.Point(686, 647) Me.lParameters.Margin = New System.Windows.Forms.Padding(0, 20, 0, 0) Me.lParameters.Name = "lParameters" Me.lParameters.Size = New System.Drawing.Size(671, 48) Me.lParameters.TabIndex = 9 Me.lParameters.Text = "Command Parameters:" Me.lParameters.Visible = False ' 'pg ' Me.pg.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.pg.HelpVisible = False Me.pg.Location = New System.Drawing.Point(686, 695) Me.pg.Margin = New System.Windows.Forms.Padding(0) Me.pg.Name = "pg" Me.pg.PropertySort = System.Windows.Forms.PropertySort.NoSort Me.pg.Size = New System.Drawing.Size(671, 354) Me.pg.TabIndex = 10 Me.pg.ToolbarVisible = False Me.pg.Visible = False ' 'tbText ' Me.tbText.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.tbText.Location = New System.Drawing.Point(686, 149) Me.tbText.Margin = New System.Windows.Forms.Padding(0) Me.tbText.Name = "tbText" Me.tbText.Size = New System.Drawing.Size(671, 55) Me.tbText.TabIndex = 4 ' 'laText ' Me.laText.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.laText.AutoSize = True Me.laText.Location = New System.Drawing.Point(686, 101) Me.laText.Margin = New System.Windows.Forms.Padding(0) Me.laText.Name = "laText" Me.laText.Size = New System.Drawing.Size(671, 48) Me.laText.TabIndex = 3 Me.laText.Text = "Text:" ' 'tv ' Me.tv.AllowDrop = True Me.tv.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.tv.HideSelection = False Me.tv.SelectOnMouseDown = True Me.tv.Location = New System.Drawing.Point(15, 101) Me.tv.Margin = New System.Windows.Forms.Padding(0, 0, 15, 0) Me.tv.Name = "tv" Me.tlpMain.SetRowSpan(Me.tv, 10) Me.tv.Size = New System.Drawing.Size(656, 948) Me.tv.TabIndex = 2 ' 'tbHotkey ' Me.tbHotkey.TextBox.AcceptsReturn = True Me.tbHotkey.TextBox.AcceptsTab = True Me.tbHotkey.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.tbHotkey.Location = New System.Drawing.Point(686, 272) Me.tbHotkey.Margin = New System.Windows.Forms.Padding(0) Me.tbHotkey.Name = "tbHotkey" Me.tbHotkey.Size = New System.Drawing.Size(671, 55) Me.tbHotkey.TabIndex = 6 ' 'tbCommand ' Me.tbCommand.Anchor = CType((System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.tbCommand.Location = New System.Drawing.Point(0, 7) Me.tbCommand.Margin = New System.Windows.Forms.Padding(0) Me.tbCommand.Name = "tbCommand" Me.tbCommand.Size = New System.Drawing.Size(591, 55) Me.tbCommand.TabIndex = 8 ' 'bnCommand ' Me.bnCommand.Anchor = System.Windows.Forms.AnchorStyles.None Me.bnCommand.Location = New System.Drawing.Point(601, 0) Me.bnCommand.Margin = New System.Windows.Forms.Padding(10, 0, 0, 0) Me.bnCommand.ShowMenuSymbol = True Me.bnCommand.Size = New System.Drawing.Size(70, 70) ' 'cmsCommand ' Me.cmsCommand.Font = FontManager.GetDefaultFont() Me.cmsCommand.ImageScalingSize = New System.Drawing.Size(24, 24) Me.cmsCommand.Name = "cmsCommand" Me.cmsCommand.Size = New System.Drawing.Size(61, 4) ' 'laCommand ' Me.laCommand.AutoSize = True Me.laCommand.Location = New System.Drawing.Point(686, 509) Me.laCommand.Margin = New System.Windows.Forms.Padding(0, 20, 0, 0) Me.laCommand.Name = "laCommand" Me.laCommand.Size = New System.Drawing.Size(192, 48) Me.laCommand.TabIndex = 7 Me.laCommand.Text = "Command:" ' 'bnCancel ' Me.bnCancel.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.bnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel Me.bnCancel.Location = New System.Drawing.Point(265, 0) Me.bnCancel.Margin = New System.Windows.Forms.Padding(15, 0, 0, 0) Me.bnCancel.Size = New System.Drawing.Size(250, 70) Me.bnCancel.Text = "Cancel" ' 'bnOK ' Me.bnOK.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) 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) Me.bnOK.Size = New System.Drawing.Size(250, 70) Me.bnOK.Text = "OK" ' 'ImageList1 ' Me.ImageList1.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit Me.ImageList1.ImageSize = New System.Drawing.Size(16, 16) Me.ImageList1.TransparentColor = System.Drawing.Color.Transparent ' 'tlpMain ' Me.tlpMain.ColumnCount = 4 Me.tlpMain.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 15.0!)) Me.tlpMain.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) Me.tlpMain.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) Me.tlpMain.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 15.0!)) Me.tlpMain.Controls.Add(Me.flpBottom, 2, 11) Me.tlpMain.Controls.Add(Me.pg, 2, 10) Me.tlpMain.Controls.Add(Me.lParameters, 2, 9) Me.tlpMain.Controls.Add(Me.tlpCommand, 2, 8) Me.tlpMain.Controls.Add(Me.laCommand, 2, 7) Me.tlpMain.Controls.Add(Me.ToolStrip, 0, 0) Me.tlpMain.Controls.Add(Me.tbHotkey, 2, 4) Me.tlpMain.Controls.Add(Me.tv, 1, 1) Me.tlpMain.Controls.Add(Me.laHotkey, 2, 3) Me.tlpMain.Controls.Add(Me.tbText, 2, 2) Me.tlpMain.Controls.Add(Me.laText, 2, 1) Me.tlpMain.Controls.Add(Me.laIcon, 2, 5) Me.tlpMain.Controls.Add(Me.tlpSymbol, 2, 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 = 12 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()) 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()) 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(System.Windows.Forms.SizeType.Percent, 100.0!)) Me.tlpMain.RowStyles.Add(New System.Windows.Forms.RowStyle()) Me.tlpMain.Size = New System.Drawing.Size(1372, 1149) Me.tlpMain.TabIndex = 11 ' 'flpBottom ' Me.flpBottom.Anchor = System.Windows.Forms.AnchorStyles.Right Me.flpBottom.AutoSize = True Me.flpBottom.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink Me.flpBottom.Controls.Add(Me.bnOK) Me.flpBottom.Controls.Add(Me.bnCancel) Me.flpBottom.Location = New System.Drawing.Point(842, 1064) Me.flpBottom.Margin = New System.Windows.Forms.Padding(0, 15, 0, 15) Me.flpBottom.Name = "flpBottom" Me.flpBottom.Size = New System.Drawing.Size(515, 70) Me.flpBottom.TabIndex = 12 ' 'tlpCommand ' Me.tlpCommand.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.tlpCommand.AutoSize = True Me.tlpCommand.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink Me.tlpCommand.ColumnCount = 2 Me.tlpCommand.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) Me.tlpCommand.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) Me.tlpCommand.Controls.Add(Me.bnCommand, 1, 0) Me.tlpCommand.Controls.Add(Me.tbCommand, 0, 0) Me.tlpCommand.Location = New System.Drawing.Point(686, 557) Me.tlpCommand.Margin = New System.Windows.Forms.Padding(0) Me.tlpCommand.Name = "tlpCommand" Me.tlpCommand.RowCount = 1 Me.tlpCommand.RowStyles.Add(New System.Windows.Forms.RowStyle()) Me.tlpCommand.Size = New System.Drawing.Size(671, 70) Me.tlpCommand.TabIndex = 12 ' 'ToolStrip ' Me.ToolStrip.Anchor = CType((System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.ToolStrip.AutoSize = False Me.tlpMain.SetColumnSpan(Me.ToolStrip, 4) Me.ToolStrip.Dock = System.Windows.Forms.DockStyle.None Me.ToolStrip.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden Me.ToolStrip.ImageScalingSize = New System.Drawing.Size(24, 24) Me.ToolStrip.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.tsbNew, Me.ToolStripSeparator3, Me.tsbCut, Me.tsbCopy, Me.tsbPaste, Me.ToolStripSeparator4, Me.tsbMoveLeft, Me.tsbMoveRight, Me.tsbMoveUp, Me.tsbMoveDown, Me.ToolStripSeparator1, Me.tsbRemove, Me.ToolsToolStripDropDownButton}) Me.ToolStrip.Location = New System.Drawing.Point(0, 0) Me.ToolStrip.Margin = New System.Windows.Forms.Padding(0, 0, 0, 10) Me.ToolStrip.Name = "ToolStrip" Me.ToolStrip.Padding = New System.Windows.Forms.Padding(7, 2, 2, 0) Me.ToolStrip.Size = New System.Drawing.Size(1372, 91) Me.ToolStrip.TabIndex = 1 Me.ToolStrip.Text = "ToolStrip" ' 'tsbNew ' Me.tsbNew.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image Me.tsbNew.ImageTransparentColor = System.Drawing.Color.Magenta Me.tsbNew.Name = "tsbNew" Me.tsbNew.Padding = New System.Windows.Forms.Padding(10, 4, 10, 4) Me.tsbNew.Size = New System.Drawing.Size(69, 80) Me.tsbNew.Text = "New" ' 'ToolStripSeparator3 ' Me.ToolStripSeparator3.Name = "ToolStripSeparator3" Me.ToolStripSeparator3.Size = New System.Drawing.Size(6, 89) ' 'tsbCut ' Me.tsbCut.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image Me.tsbCut.ImageTransparentColor = System.Drawing.Color.Magenta Me.tsbCut.Name = "tsbCut" Me.tsbCut.Padding = New System.Windows.Forms.Padding(10, 4, 10, 4) Me.tsbCut.Size = New System.Drawing.Size(69, 80) Me.tsbCut.Text = "Cut" ' 'tsbCopy ' Me.tsbCopy.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image Me.tsbCopy.ImageTransparentColor = System.Drawing.Color.Magenta Me.tsbCopy.Name = "tsbCopy" Me.tsbCopy.Padding = New System.Windows.Forms.Padding(10, 4, 10, 4) Me.tsbCopy.Size = New System.Drawing.Size(69, 80) Me.tsbCopy.Text = "Copy" ' 'tsbPaste ' Me.tsbPaste.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image Me.tsbPaste.ImageTransparentColor = System.Drawing.Color.Magenta Me.tsbPaste.Name = "tsbPaste" Me.tsbPaste.Padding = New System.Windows.Forms.Padding(10, 4, 10, 4) Me.tsbPaste.Size = New System.Drawing.Size(69, 80) Me.tsbPaste.Text = "Paste" ' 'ToolStripSeparator4 ' Me.ToolStripSeparator4.Name = "ToolStripSeparator4" Me.ToolStripSeparator4.Size = New System.Drawing.Size(6, 89) ' 'tsbMoveLeft ' Me.tsbMoveLeft.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image Me.tsbMoveLeft.Name = "tsbMoveLeft" Me.tsbMoveLeft.Padding = New System.Windows.Forms.Padding(10, 4, 10, 4) Me.tsbMoveLeft.Size = New System.Drawing.Size(69, 80) Me.tsbMoveLeft.ToolTipText = "Move Left" ' 'tsbMoveRight ' Me.tsbMoveRight.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image Me.tsbMoveRight.Name = "tsbMoveRight" Me.tsbMoveRight.Padding = New System.Windows.Forms.Padding(10, 4, 10, 4) Me.tsbMoveRight.Size = New System.Drawing.Size(69, 80) Me.tsbMoveRight.ToolTipText = "Move Right" ' 'tsbMoveUp ' Me.tsbMoveUp.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image Me.tsbMoveUp.Name = "tsbMoveUp" Me.tsbMoveUp.Padding = New System.Windows.Forms.Padding(10, 4, 10, 4) Me.tsbMoveUp.Size = New System.Drawing.Size(69, 80) Me.tsbMoveUp.ToolTipText = "Move Up" ' 'tsbMoveDown ' Me.tsbMoveDown.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image Me.tsbMoveDown.Name = "tsbMoveDown" Me.tsbMoveDown.Padding = New System.Windows.Forms.Padding(10, 4, 10, 4) Me.tsbMoveDown.Size = New System.Drawing.Size(69, 80) Me.tsbMoveDown.ToolTipText = "Move Down" ' 'ToolStripSeparator1 ' Me.ToolStripSeparator1.Name = "ToolStripSeparator1" Me.ToolStripSeparator1.Size = New System.Drawing.Size(6, 89) ' 'tsbRemove ' Me.tsbRemove.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image Me.tsbRemove.ImageTransparentColor = System.Drawing.Color.Magenta Me.tsbRemove.Name = "tsbRemove" Me.tsbRemove.Padding = New System.Windows.Forms.Padding(10, 4, 10, 4) Me.tsbRemove.Size = New System.Drawing.Size(69, 80) Me.tsbRemove.Text = "Remove" ' 'ToolsToolStripDropDownButton ' Me.ToolsToolStripDropDownButton.AutoToolTip = False Me.ToolsToolStripDropDownButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text Me.ToolsToolStripDropDownButton.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.NewFromDefaultsToolStripMenuItem, Me.ResetToolStripMenuItem}) Me.ToolsToolStripDropDownButton.Name = "ToolsToolStripDropDownButton" Me.ToolsToolStripDropDownButton.Size = New System.Drawing.Size(162, 80) Me.ToolsToolStripDropDownButton.Text = " Tools " ' 'NewFromDefaultsToolStripMenuItem ' Me.NewFromDefaultsToolStripMenuItem.Name = "NewFromDefaultsToolStripMenuItem" Me.NewFromDefaultsToolStripMenuItem.Size = New System.Drawing.Size(546, 67) Me.NewFromDefaultsToolStripMenuItem.Text = "New From Defaults..." ' 'ResetToolStripMenuItem ' Me.ResetToolStripMenuItem.Name = "ResetToolStripMenuItem" Me.ResetToolStripMenuItem.Size = New System.Drawing.Size(546, 67) Me.ResetToolStripMenuItem.Text = "Reset Everything" ' 'laIcon ' Me.laIcon.AutoSize = True Me.laIcon.Location = New System.Drawing.Point(686, 347) Me.laIcon.Margin = New System.Windows.Forms.Padding(0, 20, 0, 0) Me.laIcon.Name = "laIcon" Me.laIcon.Size = New System.Drawing.Size(96, 48) Me.laIcon.TabIndex = 13 Me.laIcon.Text = "Icon:" ' 'tlpSymbol ' Me.tlpSymbol.Anchor = CType((System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.tlpSymbol.ColumnCount = 3 Me.tlpSymbol.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) Me.tlpSymbol.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) Me.tlpSymbol.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle()) Me.tlpSymbol.Controls.Add(Me.laSymbol, 1, 0) Me.tlpSymbol.Controls.Add(Me.pbSymbol, 0, 0) Me.tlpSymbol.Controls.Add(Me.bnSymbol, 2, 0) Me.tlpSymbol.Location = New System.Drawing.Point(686, 395) Me.tlpSymbol.Margin = New System.Windows.Forms.Padding(0) Me.tlpSymbol.Name = "tlpSymbol" Me.tlpSymbol.RowCount = 1 Me.tlpSymbol.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) Me.tlpSymbol.Size = New System.Drawing.Size(671, 94) Me.tlpSymbol.TabIndex = 14 ' 'laSymbol ' Me.laSymbol.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.laSymbol.Location = New System.Drawing.Point(98, 0) Me.laSymbol.Margin = New System.Windows.Forms.Padding(7, 0, 7, 0) Me.laSymbol.Name = "laSymbol" Me.laSymbol.Size = New System.Drawing.Size(496, 94) Me.laSymbol.TabIndex = 1 Me.laSymbol.TextAlign = System.Drawing.ContentAlignment.MiddleLeft ' 'pbSymbol ' Me.pbSymbol.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.pbSymbol.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center Me.pbSymbol.Location = New System.Drawing.Point(0, 0) Me.pbSymbol.Margin = New System.Windows.Forms.Padding(0) Me.pbSymbol.Name = "pbSymbol" Me.pbSymbol.Size = New System.Drawing.Size(91, 94) Me.pbSymbol.TabIndex = 2 Me.pbSymbol.TabStop = False ' 'bnSymbol ' Me.bnSymbol.Anchor = System.Windows.Forms.AnchorStyles.None Me.bnSymbol.ContextMenuStrip = Me.cmsSymbol Me.bnSymbol.Location = New System.Drawing.Point(601, 12) Me.bnSymbol.Margin = New System.Windows.Forms.Padding(0) Me.bnSymbol.ShowMenuSymbol = True Me.bnSymbol.Size = New System.Drawing.Size(70, 70) ' 'cmsSymbol ' Me.cmsSymbol.ImageScalingSize = New System.Drawing.Size(48, 48) Me.cmsSymbol.Name = "cmsSymbol" Me.cmsSymbol.Size = New System.Drawing.Size(61, 4) ' 'CustomMenuEditor ' Me.AcceptButton = Me.bnOK Me.AutoScaleDimensions = New System.Drawing.SizeF(288.0!, 288.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi Me.CancelButton = Me.bnCancel Me.ClientSize = New System.Drawing.Size(1372, 1149) Me.Controls.Add(Me.tlpMain) Me.KeyPreview = True Me.Margin = New System.Windows.Forms.Padding(13, 14, 13, 14) Me.Name = "CustomMenuEditor" Me.Text = $"Menu Editor - {g.DefaultCommands.GetApplicationDetails()}" Me.tlpMain.ResumeLayout(False) Me.tlpMain.PerformLayout() Me.flpBottom.ResumeLayout(False) Me.tlpCommand.ResumeLayout(False) Me.tlpCommand.PerformLayout() Me.ToolStrip.ResumeLayout(False) Me.ToolStrip.PerformLayout() Me.tlpSymbol.ResumeLayout(False) CType(Me.pbSymbol, System.ComponentModel.ISupportInitialize).EndInit() Me.ResumeLayout(False) End Sub #End Region Private Block As Boolean Private GridTypeDescriptor As GridTypeDescriptor Private ClipboardNode As TreeNode Private IsClosing As Boolean Property GenericMenu As CustomMenu Sub New(menu As CustomMenu) MyBase.New() InitializeComponent() ScaleClientSize(32, 30) g.SetRenderer(ToolStrip) IsComposited = False ToolStrip.Font = FontManager.GetDefaultFont() tsbNew.Image = ImageHelp.GetSymbolImage(Symbol.Page) tsbCopy.Image = ImageHelp.GetSymbolImage(Symbol.Copy) tsbCut.Image = ImageHelp.GetSymbolImage(Symbol.Cut) tsbPaste.Image = ImageHelp.GetSymbolImage(Symbol.Paste) tsbRemove.Image = ImageHelp.GetSymbolImage(Symbol.Delete) tsbMoveLeft.Image = ImageHelp.GetSymbolImage(Symbol.Back) tsbMoveUp.Image = ImageHelp.GetSymbolImage(Symbol.Up) tsbMoveRight.Image = ImageHelp.GetSymbolImage(Symbol.Forward) tsbMoveDown.Image = ImageHelp.GetSymbolImage(Symbol.Down) ToolsToolStripDropDownButton.Image = ImageHelp.GetSymbolImage(Symbol.More) GenericMenu = menu GridTypeDescriptor = New GridTypeDescriptor PopulateTreeView(menu.MenuItem.GetClone, Nothing) tv.ExpandAll() Command.PopulateCommandMenu(cmsCommand.Items, GenericMenu.CommandManager.Commands.Values.ToList, AddressOf SetCommand) g.SetRenderer(cmsSymbol) tv.SelectedNode = tv.Nodes(0) CancelButton = Nothing tbHotkey.ReadOnly = True ToolStrip.ImageScalingSize = SystemInformation.SmallIconSize For Each i In ToolStrip.Items.OfType(Of ToolStripItem)() i.Image = i.Image.ResizeToSmallIconSize Next TipProvider.SetTip("Parameters used when the command is executed. Please make a feature request if useful parameters are missing.", pg, lParameters) TipProvider.SetTip("Text to be displayed. Enter minus to create a separator.", tbText, laText) TipProvider.SetTip("A key can be deleted by pressing it two times.", tbHotkey, laHotkey) TipProvider.SetTip("Command to be executed. Please make a feature request if useful commands are missing.", tbCommand, laCommand) ApplyTheme() AddHandler ThemeManager.CurrentThemeChanged, AddressOf OnThemeChanged End Sub Protected Overrides Sub Dispose(disposing As Boolean) RemoveHandler ThemeManager.CurrentThemeChanged, AddressOf OnThemeChanged components?.Dispose() MyBase.Dispose(disposing) End Sub Sub OnThemeChanged(theme As Theme) ApplyTheme(theme) End Sub Sub ApplyTheme() ApplyTheme(ThemeManager.CurrentTheme) End Sub Sub ApplyTheme(theme As Theme) If DesignHelp.IsDesignMode Then Exit Sub End If BackColor = theme.General.BackColor End Sub Sub PopulateSymbolMenu() MenuItemEx.Add(Of Symbol)(cmsSymbol.Items, "No Icon", AddressOf HandleSymbol, Symbol.None) Dim enumNames = System.Enum.GetNames(GetType(Symbol)).ToList enumNames.Sort() For Each iName In enumNames If iName.StartsWith("fa_") Then Continue For If IsClosing Then Exit For Dim symbol = DirectCast(System.Enum.Parse(GetType(Symbol), iName), Symbol) Dim path = "Segoe MDL2 Assets | " + iName.Substring(0, 1).ToUpperInvariant + " | " + iName MenuItemEx.Add(Of Symbol)(cmsSymbol.Items, path, AddressOf HandleSymbol, symbol).SetImage(symbol) Application.DoEvents() Next For Each iName In enumNames If Not iName.StartsWith("fa_") Then Continue For If IsClosing Then Exit For Dim symbol = DirectCast(System.Enum.Parse(GetType(Symbol), iName), Symbol) Dim path = "FontAwesome | " + iName.Substring(3, 1).ToUpperInvariant + " | " + iName.Substring(3).ToTitleCase.Replace("_", " ") MenuItemEx.Add(Of Symbol)(cmsSymbol.Items, path, AddressOf HandleSymbol, symbol).SetImage(symbol) Application.DoEvents() Next End Sub Sub HandleSymbol(symbol As Symbol) If Not Block AndAlso tv.SelectedNode IsNot Nothing Then Dim item = DirectCast(tv.SelectedNode.Tag, CustomMenuItem) item.Symbol = symbol UpdateControls() End If End Sub Sub SetCommand(c As Command) tbCommand.Text = c.MethodInfo.Name End Sub Sub tv_DragDrop(sender As Object, e As DragEventArgs) Handles tv.DragDrop Block = False End Sub Sub tv_DragEnter(sender As Object, e As DragEventArgs) Handles tv.DragEnter If e.Data.GetDataPresent(GetType(TreeNode)) Then e.Effect = DragDropEffects.Move End If End Sub Sub tv_ItemDrag(sender As Object, e As ItemDragEventArgs) Handles tv.ItemDrag If e.Button = Windows.Forms.MouseButtons.Left Then Block = True DoDragDrop(e.Item, DragDropEffects.Move) End If End Sub Sub tv_DragOver(sender As Object, e As DragEventArgs) Handles tv.DragOver If e.Data.GetDataPresent(GetType(TreeNode)) Then Dim node As TreeNode = CType(e.Data.GetData(GetType(TreeNode)), TreeNode) Dim destNode As TreeNode = tv.GetNodeAt(tv.PointToClient(New Point(e.X, e.Y))) Dim nodes As New ArrayList AddNodes(node, nodes) If destNode IsNot node AndAlso destNode IsNot Nothing AndAlso Not nodes.Contains(destNode) Then If Control.ModifierKeys = Keys.Control Then If Not destNode.Nodes.Contains(node) AndAlso Not destNode.Text = "-" Then node.Remove() destNode.Nodes.Add(node) destNode.ExpandAll() tv.SelectedNode = node End If Else If destNode.Parent IsNot Nothing Then If destNode.Bounds.Top < node.Bounds.Top Then node.Remove() destNode.Parent.Nodes.Insert( destNode.Parent.Nodes.IndexOf(destNode), node) destNode.ExpandAll() tv.SelectedNode = node Else node.Remove() destNode.Parent.Nodes.Insert( destNode.Parent.Nodes.IndexOf(destNode) + 1, node) destNode.ExpandAll() tv.SelectedNode = node End If End If End If End If End If End Sub Sub UpdateControls() If Not Block Then Block = True Dim n As TreeNode = tv.SelectedNode If n Is Nothing Then Exit Sub Dim item = CType(n.Tag, CustomMenuItem) tbText.Text = item.Text If item.Symbol = Symbol.None Then pbSymbol.BackgroundImage = Nothing Else pbSymbol.BackgroundImage = ImageHelp.GetSymbolImage(item.Symbol) End If laSymbol.Text = If(item.Symbol = Symbol.None, "", item.Symbol.ToString) tbHotkey.Text = KeysHelp.GetKeyString(item.KeyData) Dim found As Boolean For Each i As Command In GenericMenu.CommandManager.Commands.Values If i.MethodInfo.Name = item.MethodName Then If tbCommand.Text = i.MethodInfo.Name Then tbCommand_TextChanged() Else tbCommand.Text = i.MethodInfo.Name End If found = True End If Next If Not found Then tbCommand.Text = "" End If Dim notRoot = n.Parent IsNot Nothing bnSymbol.Enabled = notRoot bnCommand.Enabled = notRoot tbCommand.Enabled = notRoot tbHotkey.Enabled = notRoot tsbCopy.Enabled = notRoot tsbCut.Enabled = notRoot tsbMoveDown.Enabled = notRoot tsbMoveLeft.Enabled = notRoot tsbMoveRight.Enabled = notRoot tsbMoveUp.Enabled = notRoot tsbPaste.Enabled = ClipboardNode IsNot Nothing tsbRemove.Enabled = notRoot tbText.Enabled = notRoot Block = False End If End Sub Sub tbText_TextChanged() Handles tbText.TextChanged If Not Block AndAlso tv.SelectedNode IsNot Nothing Then Dim item = DirectCast(tv.SelectedNode.Tag, CustomMenuItem) tbCommand.Enabled = tbText.Text <> "-" bnCommand.Enabled = tbText.Text <> "-" tbHotkey.Enabled = tbText.Text <> "-" If tbText.Text = "-" Then tbCommand.Text = "" item.KeyData = Keys.None End If item.Text = tbText.Text tv.SelectedNode.Text = item.Text End If End Sub Sub PopulateGrid(item As CustomMenuItem) GridTypeDescriptor.Items.Clear() If GenericMenu.CommandManager.HasCommand(item.MethodName) Then Dim c = GenericMenu.CommandManager.GetCommand(item.MethodName) If c.MethodInfo IsNot Nothing Then Dim params = c.MethodInfo.GetParameters For i = 0 To params.Length - 1 Dim gp As New GridProperty gp.Name = DispNameAttribute.GetValue(params(i).GetCustomAttributes(False)) If gp.Name Is Nothing Then gp.Name = params(i).Name.ToTitleCase gp.Value = c.FixParameters(item.Parameters)(i) gp.Description = DescriptionAttributeHelp.GetDescription(params(i).GetCustomAttributes(False)) gp.TypeEditor = EditorAttributeHelp.GetEditor(params(i).GetCustomAttributes(False)) GridTypeDescriptor.Add(gp) Next End If End If pg.SelectedObject = GridTypeDescriptor End Sub Sub pg_PropertyValueChanged() Handles pg.PropertyValueChanged If tv.SelectedNode IsNot Nothing Then Dim item = DirectCast(tv.SelectedNode.Tag, CustomMenuItem) item.Parameters.Clear() For Each i As DictionaryEntry In GridTypeDescriptor.Items item.Parameters.Add(DirectCast(i.Value, GridProperty).Value) Next End If End Sub Sub AddNodes(node As TreeNode, list As ArrayList) For Each i As TreeNode In node.Nodes list.Add(i) AddNodes(i, list) Next End Sub Sub PopulateTreeView(item As CustomMenuItem, node As TreeNode) Dim newNode As New TreeNode(item.Text) With { .Tag = item } If node Is Nothing Then tv.Nodes.Add(newNode) Else node.Nodes.Add(newNode) End If For Each i As CustomMenuItem In item.SubItems PopulateTreeView(i, newNode) Next End Sub Function GetState() As CustomMenuItem Dim item = DirectCast(tv.Nodes(0).Tag, CustomMenuItem) BuildState(item, tv.Nodes(0)) Return item End Function Sub BuildState(item As CustomMenuItem, node As TreeNode) item.SubItems.Clear() For Each i As TreeNode In node.Nodes Dim subItem As CustomMenuItem = CType(i.Tag, CustomMenuItem) item.SubItems.Add(subItem) BuildState(subItem, i) Next End Sub Protected Overridable Function GetTemplateForm(item As CustomMenuItem) As MenuTemplateForm Return New MenuTemplateForm(item) End Function Sub NewFromDefaultsToolStripMenuItem_Click() Handles NewFromDefaultsToolStripMenuItem.Click If tv.SelectedNode IsNot Nothing Then Dim f = GetTemplateForm(GenericMenu.DefaultMenu.Invoke) If f.ShowDialog = DialogResult.OK Then Dim n = DirectCast(f.TreeNode.Clone, TreeNode) tv.SelectedNode.Nodes.Add(n) tv.SelectedNode.ExpandAll() tv.SelectedNode = n End If End If End Sub Sub RemoveSelectedItem() If tv.SelectedNode IsNot Nothing AndAlso tv.SelectedNode.Parent IsNot Nothing Then tv.SelectedNode.Remove() End If End Sub Sub tv_KeyUp(sender As Object, e As KeyEventArgs) Handles tv.KeyUp UpdateControls() End Sub Sub tbHotkey_KeyDown(sender As Object, e As KeyEventArgs) Handles tbHotkey.KeyDown If Not Block AndAlso tv.SelectedNode IsNot Nothing AndAlso Not e.KeyCode = Keys.ControlKey AndAlso Not e.KeyCode = Keys.Menu AndAlso Not e.KeyCode = Keys.ShiftKey Then Dim item = DirectCast(tv.SelectedNode.Tag, CustomMenuItem) If item.KeyData = e.KeyData Then item.KeyData = Keys.None tbHotkey.Text = KeysHelp.GetKeyString(item.KeyData) Else item.KeyData = e.KeyData tbHotkey.Text = KeysHelp.GetKeyString(item.KeyData) For Each i In tv.GetNodes If TypeOf i.Tag Is CustomMenuItem Then Dim current = DirectCast(i.Tag, CustomMenuItem) If current.KeyData = item.KeyData AndAlso item IsNot current Then current.KeyData = Keys.None MsgInfo(KeysHelp.GetKeyString(item.KeyData) + " detached from " + current.Text.TrimEnd("."c) + " and assigned to " + item.Text.TrimEnd("."c) + " instead.") End If End If Next End If End If e.Handled = True End Sub Sub tbHotkey_KeyPress(sender As Object, e As KeyPressEventArgs) Handles tbHotkey.KeyPress e.Handled = True End Sub Sub tv_AfterSelect() Handles tv.AfterSelect UpdateControls() End Sub Sub tsbCut_Click() Handles tsbCut.Click If tv.SelectedNode IsNot Nothing Then tsbCopy.PerformClick() RemoveSelectedItem() End If End Sub Sub tsbCopy_Click() Handles tsbCopy.Click If tv.SelectedNode IsNot Nothing Then ClipboardNode = DirectCast(ObjectHelp.GetCopy(tv.SelectedNode), TreeNode) UpdateControls() End If End Sub Sub tsbPaste_Click() Handles tsbPaste.Click If tv.SelectedNode IsNot Nothing Then tv.SelectedNode.Nodes.Add(CType(ObjectHelp.GetCopy(ClipboardNode), TreeNode)) tv.SelectedNode.ExpandAll() End If End Sub Sub tsbRemove_Click() Handles tsbRemove.Click RemoveSelectedItem() End Sub Sub ResetToolStripMenuItem_Click() Handles ResetToolStripMenuItem.Click If MsgOK("Please confirm to reset the entire menu.") Then tv.BeginUpdate() tv.Nodes.Clear() PopulateTreeView(GenericMenu.DefaultMenu.Invoke, Nothing) tv.EndUpdate() tv.ExpandAll() tv.SelectedNode = tv.Nodes(0) End If End Sub Sub tsbMoveLeft_Click() Handles tsbMoveLeft.Click Dim n = tv.SelectedNode If n IsNot Nothing AndAlso n.Parent.Parent Is Nothing Then Exit Sub End If Block = True tv.MoveSelectedNodeLeft() Block = False End Sub Sub tsbMoveRight_Click() Handles tsbMoveRight.Click Block = True tv.MoveSelectedNodeRight() Block = False End Sub Sub tsbMoveUp_Click() Handles tsbMoveUp.Click Dim n = tv.SelectedNode If n IsNot Nothing AndAlso n.Parent IsNot Nothing AndAlso n.Parent.Parent Is Nothing AndAlso n.Index = 0 Then Exit Sub End If Block = True tv.MoveSelectedNodeUp() Block = False End Sub Sub tsbMoveDown_Click() Handles tsbMoveDown.Click Dim n = tv.SelectedNode If n IsNot Nothing AndAlso n.Parent.Parent Is Nothing AndAlso n.NextNode Is Nothing Then Exit Sub End If Block = True tv.MoveSelectedNodeDown() Block = False End Sub Sub bCommand_Click() Handles bnCommand.Click cmsCommand.Show(bnCommand, 0, bnCommand.Height) End Sub Sub tbCommand_TextChanged() Handles tbCommand.TextChanged If tv.SelectedNode IsNot Nothing Then Dim item = DirectCast(tv.SelectedNode.Tag, CustomMenuItem) If Not Block Then Dim selectedCommand As Command = Nothing For Each i As Command In GenericMenu.CommandManager.Commands.Values If i.MethodInfo.Name = tbCommand.Text Then selectedCommand = i End If Next If selectedCommand Is Nothing OrElse selectedCommand.MethodInfo Is Nothing Then item.MethodName = "" item.Parameters = Nothing Else item.MethodName = selectedCommand.MethodInfo.Name item.Parameters = selectedCommand.GetDefaultParameters End If End If Dim mi As MethodInfo = Nothing If GenericMenu.CommandManager.HasCommand(item.MethodName) Then mi = GenericMenu.CommandManager.GetCommand(item.MethodName).MethodInfo End If pg.Visible = mi IsNot Nothing AndAlso mi.GetParameters.Length > 0 lParameters.Visible = pg.Visible PopulateGrid(item) End If End Sub Sub tsbNew_Click(sender As Object, e As EventArgs) Handles tsbNew.Click If tv.SelectedNode IsNot Nothing Then Dim newNode As New TreeNode With { .Text = "???", .Tag = New CustomMenuItem("???") } tv.SelectedNode.Nodes.Add(newNode) tv.SelectedNode = newNode End If End Sub Protected Overrides Sub OnShown(e As EventArgs) PopulateSymbolMenu() MyBase.OnShown(e) End Sub Protected Overrides Sub OnFormClosing(args As FormClosingEventArgs) MyBase.OnFormClosing(args) IsClosing = True End Sub Sub bnOK_Click(sender As Object, e As EventArgs) Handles bnOK.Click IsClosing = True End Sub Sub bnCancel_Click(sender As Object, e As EventArgs) Handles bnCancel.Click IsClosing = True End Sub Sub CustomMenuEditor_HelpRequested(sender As Object, hlpevent As HelpEventArgs) Handles Me.HelpRequested Dim form As New HelpForm() form.Doc.WriteStart(Text) form.Doc.WriteParagraph("The menu editor allows to customize the text, location, shortcut key and command of a menu item. Menu items can be rearranged with '''Drag & Drop'''. Pressing Ctrl while dragging moves as sub-item.") 'TODO: convert media wiki link to markdown link form.Doc.WriteParagraph("[https://fontawesome.io/cheatsheet FontAwesome icons]") form.Doc.WriteParagraph("[https://docs.microsoft.com/en-us/windows/uwp/style/segoe-ui-symbol-font Segoe MDL2 icons]") form.Doc.WriteTable("Commands", GenericMenu.CommandManager.GetTips) form.Show() End Sub End Class End Namespace