OSDN Git Service

AppliStation-GUI,タグをクリックして検索できるように
authorttp <ttp@users.sourceforge.jp>
Sat, 27 Dec 2008 16:29:17 +0000 (16:29 +0000)
committerttp <ttp@users.sourceforge.jp>
Sat, 27 Dec 2008 16:29:17 +0000 (16:29 +0000)
 * RichTextBoxに任意のリンクを追加する関数を作成した
 * ToolStripWeb2LikeTextBoxに対して.Textに値をぶち込んでもグレーテキストになるままのバグを修正(いままでそのような利用をしていなかったため気づかなかった)
 * PackageListViewFormのパッケージ詳細パネル(RichTextBox)の表示処理を目的を果たすために可変した

git-svn-id: http://localhost/svn/AppliStation/trunk@1007 34ed2c89-c49f-4a4b-abdb-c318350108cf

AppliStation/AppliStation.Util/NativeMethods.cs
AppliStation/AppliStation.Util/ToolStripWeb2LikeTextBox.cs
AppliStation/PackageListViewForm.Designer.cs
AppliStation/PackageListViewForm.cs
AppliStation/PackageListViewForm.resx

index fa95068..0065897 100644 (file)
@@ -164,7 +164,7 @@ namespace AppliStation.Util
                #region ColumnHeaderのソートの三角印用\r
                \r
                [StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto)]\r
-               internal struct HD_ITEM\r
+               private struct HD_ITEM\r
                {\r
                        public uint    mask;\r
                        public int     cxy;\r
@@ -252,13 +252,81 @@ namespace AppliStation.Util
 //             public static extern bool EnableWindow(IntPtr hWnd, bool bEnable);\r
                #endregion\r
                \r
+               #region RichTextBox関連\r
+               \r
+               [StructLayout(LayoutKind.Sequential)]\r
+               private struct CHARFORMAT2\r
+               {\r
+                       public int cbSize;\r
+                       public uint dwMask;\r
+                       public uint dwEffects;\r
+                       public int yHeight;\r
+                       public int yOffset;\r
+                       public int crTextColor;\r
+                       public byte bCharSet;\r
+                       public byte bPitchAndFamily;\r
+                       [MarshalAs(UnmanagedType.ByValArray, SizeConst=32)]\r
+                       public char[] szFaceName;\r
+                       public short wWeight;\r
+                       public short sSpacing;\r
+                       public int crBackColor;\r
+                       public int LCID;\r
+                       public uint dwReserved;\r
+                       public short sStyle;\r
+                       public short wKerning;\r
+                       public byte bUnderlineType;\r
+                       public byte bAnimation;\r
+                       public byte bRevAuthor;\r
+                       public byte bReserved1;\r
+               }\r
+               \r
+               /// <summary>\r
+               /// リッチテキストの選択部分に文字フォーマット効果を与える\r
+               /// </summary>\r
+               /// <param name="richTextBox">対象のリッチテキストボックス</param>\r
+               /// <param name="dwMask">有効な文字フォーマット効果</param>\r
+               /// <param name="dwEffect">文字フォーマット効果のフラグ</param>\r
+               public static void RichTextBox_SetSelectionFormat(RichTextBox richTextBox, uint dwMask, uint dwEffect)\r
+               {\r
+                       CHARFORMAT2 cfmt = new CHARFORMAT2();\r
+                       cfmt.cbSize = Marshal.SizeOf(typeof(CHARFORMAT2));\r
+                       cfmt.dwMask = dwMask;\r
+                       cfmt.dwEffects = dwEffect;\r
+                       \r
+                       //SendMessage(richTextBox.Handle, EM_SETCHARFORMAT, SCF_SELECTION, ref cfmt);\r
+                       SendMessage(richTextBox.Handle, 0x0444, 0x0001, ref cfmt);\r
+               }\r
+               /// <summary>\r
+               /// リッチテキストにテキストリンクを追加する\r
+               /// </summary>\r
+               /// <param name="richTextBox">対象のリッチテキストボックス</param>\r
+               /// <param name="text">追加するテキスト</param>\r
+               public static void RichTextBox_AddTextLink(RichTextBox richTextBox, string text)\r
+               {\r
+                       int pos = richTextBox.TextLength;\r
+                       richTextBox.Select(pos,0);\r
+                       richTextBox.SelectedText = text;\r
+                       richTextBox.Select(pos, text.Length);\r
+                       \r
+                       // RichTextBox_SetSelectionFormat(richTextBox, CFM_LINK, CFE_LINK);\r
+                       RichTextBox_SetSelectionFormat(richTextBox, 0x00000020, 0x0020);\r
+                       \r
+                       richTextBox.Select(richTextBox.TextLength, 0);\r
+               }\r
+               \r
+               #endregion\r
+               \r
                [DllImport("user32.dll", CharSet=CharSet.Auto)]\r
                internal static extern IntPtr SendMessage( IntPtr hWnd, UInt32 Msg, UInt32 wParam, UInt32 lParam);\r
                \r
                [DllImport("user32.dll", CharSet=CharSet.Auto)]\r
-               internal static extern IntPtr SendMessage( IntPtr hWnd, UInt32 Msg, int wParam, ref HD_ITEM lParam);\r
+               private static extern IntPtr SendMessage( IntPtr hWnd, UInt32 Msg, int wParam, ref HD_ITEM lParam);\r
+               \r
+               [DllImport("user32.dll", CharSet=CharSet.Auto)]\r
+               private static extern IntPtr SendMessage(IntPtr hWnd, Int32 Msg, int wParam, ref CHARFORMAT2 lParam);\r
 \r
                [DllImport("uxtheme.dll", ExactSpelling=true, CharSet=CharSet.Unicode)]\r
                internal static extern int SetWindowTheme(IntPtr hWnd, String pszSubAppName, String pszSubIdList);\r
+               \r
        }\r
 }\r
index 88d48fe..b15fb81 100644 (file)
@@ -99,7 +99,7 @@ namespace AppliStation.Util
                                                textIsEmpty = true;\r
                                                base.Text = EmptyText;\r
                                        }\r
-                               } else if (this.Text != value) {\r
+                               } else if (textIsEmpty || (base.Text != value)) {\r
                                        changed = true;\r
                                        \r
                                        textIsEmpty = false;\r
@@ -107,10 +107,10 @@ namespace AppliStation.Util
                                }\r
                                \r
                                if (changed) {\r
+                                       updateForeColorInternal();\r
+                                       \r
                                        FireTextChangedTrigger(EventArgs.Empty);\r
                                        base.OnTextChanged(EventArgs.Empty);\r
-                                       \r
-                                       updateForeColorInternal();\r
                                }\r
                        }\r
                }\r
index ee9ac19..72eafc1 100644 (file)
@@ -75,7 +75,7 @@
                        // packageListContextMenuStripSeparator\r
                        // \r
                        this.packageListContextMenuStripSeparator.Name = "packageListContextMenuStripSeparator";\r
-                       this.packageListContextMenuStripSeparator.Size = new System.Drawing.Size(236, 6);\r
+                       this.packageListContextMenuStripSeparator.Size = new System.Drawing.Size(201, 6);\r
                        // \r
                        // tableLayoutPanel1\r
                        // \r
                                                                        this.searchTextBox});\r
                        this.packageListFilterToolStrip.Location = new System.Drawing.Point(3, 0);\r
                        this.packageListFilterToolStrip.Name = "packageListFilterToolStrip";\r
-                       this.packageListFilterToolStrip.Size = new System.Drawing.Size(177, 25);\r
+                       this.packageListFilterToolStrip.Size = new System.Drawing.Size(175, 25);\r
                        this.packageListFilterToolStrip.TabIndex = 1;\r
                        // \r
                        // packageFilterToolStripDropDownButton\r
                        // allPackageFilterToolStripMenuItem\r
                        // \r
                        this.allPackageFilterToolStripMenuItem.Name = "allPackageFilterToolStripMenuItem";\r
-                       this.allPackageFilterToolStripMenuItem.Size = new System.Drawing.Size(160, 22);\r
+                       this.allPackageFilterToolStripMenuItem.Size = new System.Drawing.Size(150, 22);\r
                        this.allPackageFilterToolStripMenuItem.Text = "全て";\r
                        this.allPackageFilterToolStripMenuItem.ToolTipText = "全てのソフトを表示";\r
                        this.allPackageFilterToolStripMenuItem.Click += new System.EventHandler(this.AnyPackageFilterToolStripMenuItemClicked);\r
                        // notInstalledPackageFilterToolStripMenuItem\r
                        // \r
                        this.notInstalledPackageFilterToolStripMenuItem.Name = "notInstalledPackageFilterToolStripMenuItem";\r
-                       this.notInstalledPackageFilterToolStripMenuItem.Size = new System.Drawing.Size(160, 22);\r
+                       this.notInstalledPackageFilterToolStripMenuItem.Size = new System.Drawing.Size(150, 22);\r
                        this.notInstalledPackageFilterToolStripMenuItem.Text = "未インストール";\r
                        this.notInstalledPackageFilterToolStripMenuItem.ToolTipText = "インストールされていないソフトを表示";\r
                        this.notInstalledPackageFilterToolStripMenuItem.Click += new System.EventHandler(this.AnyPackageFilterToolStripMenuItemClicked);\r
                        // installedASPackageFilterToolStripMenuItem\r
                        // \r
                        this.installedASPackageFilterToolStripMenuItem.Name = "installedASPackageFilterToolStripMenuItem";\r
-                       this.installedASPackageFilterToolStripMenuItem.Size = new System.Drawing.Size(160, 22);\r
+                       this.installedASPackageFilterToolStripMenuItem.Size = new System.Drawing.Size(150, 22);\r
                        this.installedASPackageFilterToolStripMenuItem.Text = "AppliStation内";\r
                        this.installedASPackageFilterToolStripMenuItem.ToolTipText = "AppliStationにインストールされているソフトを表示";\r
                        this.installedASPackageFilterToolStripMenuItem.Click += new System.EventHandler(this.AnyPackageFilterToolStripMenuItemClicked);\r
                        // installedSysPackageFilterToolStripMenuItem\r
                        // \r
                        this.installedSysPackageFilterToolStripMenuItem.Name = "installedSysPackageFilterToolStripMenuItem";\r
-                       this.installedSysPackageFilterToolStripMenuItem.Size = new System.Drawing.Size(160, 22);\r
+                       this.installedSysPackageFilterToolStripMenuItem.Size = new System.Drawing.Size(150, 22);\r
                        this.installedSysPackageFilterToolStripMenuItem.Text = "コンピュータ内";\r
                        this.installedSysPackageFilterToolStripMenuItem.ToolTipText = "コンピュータにインストールされているソフトを表示";\r
                        this.installedSysPackageFilterToolStripMenuItem.Click += new System.EventHandler(this.AnyPackageFilterToolStripMenuItemClicked);\r
                                                                        this.uninstallToolStripButton});\r
                        this.packageCommandsToolStrip.Location = new System.Drawing.Point(3, 25);\r
                        this.packageCommandsToolStrip.Name = "packageCommandsToolStrip";\r
-                       this.packageCommandsToolStrip.Size = new System.Drawing.Size(489, 25);\r
+                       this.packageCommandsToolStrip.Size = new System.Drawing.Size(221, 25);\r
                        this.packageCommandsToolStrip.TabIndex = 2;\r
                        // \r
                        // updateToolStripButton\r
                                                                        this.localUpdateToolStripMenuItem});\r
                        this.updateToolStripButton.Image = ((System.Drawing.Image)(resources.GetObject("updateToolStripButton.Image")));\r
                        this.updateToolStripButton.Name = "updateToolStripButton";\r
-                       this.updateToolStripButton.Size = new System.Drawing.Size(131, 22);\r
+                       this.updateToolStripButton.Size = new System.Drawing.Size(111, 22);\r
                        this.updateToolStripButton.Text = "リストの更新(&U)";\r
                        this.updateToolStripButton.ToolTipText = "ソフトリストを更新します";\r
                        this.updateToolStripButton.ButtonClick += new System.EventHandler(this.UpdateToolStripButtonClick);\r
                        // \r
                        this.localUpdateToolStripMenuItem.Name = "localUpdateToolStripMenuItem";\r
                        this.localUpdateToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.F5;\r
-                       this.localUpdateToolStripMenuItem.Size = new System.Drawing.Size(296, 22);\r
+                       this.localUpdateToolStripMenuItem.Size = new System.Drawing.Size(256, 22);\r
                        this.localUpdateToolStripMenuItem.Text = "インストール済ソフトの読み直し(&R)";\r
                        this.localUpdateToolStripMenuItem.Click += new System.EventHandler(this.LocalupdateToolStripMenuItemClick);\r
                        // \r
                        // \r
                        this.upgradeToolStripButton.Image = ((System.Drawing.Image)(resources.GetObject("upgradeToolStripButton.Image")));\r
                        this.upgradeToolStripButton.Name = "upgradeToolStripButton";\r
-                       this.upgradeToolStripButton.Size = new System.Drawing.Size(119, 22);\r
+                       this.upgradeToolStripButton.Size = new System.Drawing.Size(100, 22);\r
                        this.upgradeToolStripButton.Text = "ソフトの更新(&G)";\r
                        this.upgradeToolStripButton.ToolTipText = "最新版のソフトを取得して更新します";\r
                        this.upgradeToolStripButton.Click += new System.EventHandler(this.UpgradeToolStripButtonClick);\r
                        this.informationToolStripDropDownButton.DropDown = this.packageListContextMenuStrip;\r
                        this.informationToolStripDropDownButton.Image = ((System.Drawing.Image)(resources.GetObject("informationToolStripDropDownButton.Image")));\r
                        this.informationToolStripDropDownButton.Name = "informationToolStripDropDownButton";\r
-                       this.informationToolStripDropDownButton.Size = new System.Drawing.Size(80, 22);\r
+                       this.informationToolStripDropDownButton.Size = new System.Drawing.Size(74, 22);\r
                        this.informationToolStripDropDownButton.Text = "情報(&D)";\r
                        this.informationToolStripDropDownButton.ToolTipText = "選択されたソフトの情報を調べます";\r
                        this.informationToolStripDropDownButton.Visible = false;\r
                                                                        this.installedDirectoryStripMenuItem,\r
                                                                        this.propertiesToolStripMenuItem});\r
                        this.packageListContextMenuStrip.Name = "packageListContextMenuStrip";\r
-                       this.packageListContextMenuStrip.Size = new System.Drawing.Size(240, 120);\r
+                       this.packageListContextMenuStrip.OwnerItem = this.informationToolStripDropDownButton;\r
+                       this.packageListContextMenuStrip.Size = new System.Drawing.Size(205, 120);\r
                        this.packageListContextMenuStrip.Opening += new System.ComponentModel.CancelEventHandler(this.PackageListContextMenuStripOpening);\r
                        // \r
                        // installToolStripMenuItem\r
                        // \r
                        this.installToolStripMenuItem.Name = "installToolStripMenuItem";\r
-                       this.installToolStripMenuItem.Size = new System.Drawing.Size(239, 22);\r
+                       this.installToolStripMenuItem.Size = new System.Drawing.Size(204, 22);\r
                        this.installToolStripMenuItem.Text = "インストール(&I)...";\r
                        this.installToolStripMenuItem.Click += new System.EventHandler(this.InstallToolStripButtonClick);\r
                        // \r
                        // uninstallToolStripMenuItem\r
                        // \r
                        this.uninstallToolStripMenuItem.Name = "uninstallToolStripMenuItem";\r
-                       this.uninstallToolStripMenuItem.Size = new System.Drawing.Size(239, 22);\r
+                       this.uninstallToolStripMenuItem.Size = new System.Drawing.Size(204, 22);\r
                        this.uninstallToolStripMenuItem.Text = "アンインストール(&U)...";\r
                        this.uninstallToolStripMenuItem.Click += new System.EventHandler(this.UninstallToolStripButtonClick);\r
                        // \r
                                                                        this.webOfficialToolStripMenuItem,\r
                                                                        this.webGoogleSearchToolStripMenuItem});\r
                        this.webResourcesToolStripMenuItem.Name = "webResourcesToolStripMenuItem";\r
-                       this.webResourcesToolStripMenuItem.Size = new System.Drawing.Size(239, 22);\r
+                       this.webResourcesToolStripMenuItem.Size = new System.Drawing.Size(204, 22);\r
                        this.webResourcesToolStripMenuItem.Tag = "\"{0}\"に関するWebページ(&W)";\r
                        // \r
                        // webOfficialToolStripMenuItem\r
                        // \r
                        this.webOfficialToolStripMenuItem.Name = "webOfficialToolStripMenuItem";\r
-                       this.webOfficialToolStripMenuItem.Size = new System.Drawing.Size(159, 22);\r
+                       this.webOfficialToolStripMenuItem.Size = new System.Drawing.Size(151, 22);\r
                        this.webOfficialToolStripMenuItem.Text = "公式サイト(&O)";\r
                        this.webOfficialToolStripMenuItem.Click += new System.EventHandler(this.WebOfficialToolStripMenuItemClick);\r
                        // \r
                        // webGoogleSearchToolStripMenuItem\r
                        // \r
                        this.webGoogleSearchToolStripMenuItem.Name = "webGoogleSearchToolStripMenuItem";\r
-                       this.webGoogleSearchToolStripMenuItem.Size = new System.Drawing.Size(159, 22);\r
+                       this.webGoogleSearchToolStripMenuItem.Size = new System.Drawing.Size(151, 22);\r
                        this.webGoogleSearchToolStripMenuItem.Text = "Google検索(&G)";\r
                        this.webGoogleSearchToolStripMenuItem.Click += new System.EventHandler(this.WebGoogleSearchToolStripMenuItemClick);\r
                        // \r
                        // \r
                        this.installedDirectoryStripMenuItem.InvokerForm = this;\r
                        this.installedDirectoryStripMenuItem.Name = "installedDirectoryStripMenuItem";\r
-                       this.installedDirectoryStripMenuItem.Size = new System.Drawing.Size(239, 22);\r
+                       this.installedDirectoryStripMenuItem.Size = new System.Drawing.Size(204, 22);\r
                        this.installedDirectoryStripMenuItem.Text = "インストール先のフォルダ(&O)";\r
                        // \r
                        // propertiesToolStripMenuItem\r
                        // \r
                        this.propertiesToolStripMenuItem.Name = "propertiesToolStripMenuItem";\r
-                       this.propertiesToolStripMenuItem.Size = new System.Drawing.Size(239, 22);\r
+                       this.propertiesToolStripMenuItem.Size = new System.Drawing.Size(204, 22);\r
                        this.propertiesToolStripMenuItem.Text = "プロパティ(&R)";\r
                        this.propertiesToolStripMenuItem.Click += new System.EventHandler(this.PropertiesToolStripMenuItemClick);\r
                        // \r
                        // \r
                        this.installToolStripButton.Image = ((System.Drawing.Image)(resources.GetObject("installToolStripButton.Image")));\r
                        this.installToolStripButton.Name = "installToolStripButton";\r
-                       this.installToolStripButton.Size = new System.Drawing.Size(115, 22);\r
+                       this.installToolStripButton.Size = new System.Drawing.Size(91, 22);\r
                        this.installToolStripButton.Text = "インストール(&I)";\r
                        this.installToolStripButton.ToolTipText = "選択されているソフトをインストールします";\r
                        this.installToolStripButton.Visible = false;\r
                        // \r
                        this.uninstallToolStripButton.Image = ((System.Drawing.Image)(resources.GetObject("uninstallToolStripButton.Image")));\r
                        this.uninstallToolStripButton.Name = "uninstallToolStripButton";\r
-                       this.uninstallToolStripButton.Size = new System.Drawing.Size(143, 22);\r
+                       this.uninstallToolStripButton.Size = new System.Drawing.Size(114, 22);\r
                        this.uninstallToolStripButton.Text = "アンインストール(&U)";\r
                        this.uninstallToolStripButton.ToolTipText = "選択されているソフトをアンインストールします";\r
                        this.uninstallToolStripButton.Visible = false;\r
                        // \r
                        this.detailBox.BackColor = System.Drawing.SystemColors.Control;\r
                        this.detailBox.BorderStyle = System.Windows.Forms.BorderStyle.None;\r
+                       this.detailBox.DetectUrls = false;\r
                        this.detailBox.Dock = System.Windows.Forms.DockStyle.Fill;\r
                        this.detailBox.ForeColor = System.Drawing.SystemColors.ControlText;\r
                        this.detailBox.Location = new System.Drawing.Point(0, 0);\r
                        this.detailBox.Size = new System.Drawing.Size(486, 81);\r
                        this.detailBox.TabIndex = 0;\r
                        this.detailBox.Text = "";\r
-                       this.detailBox.LinkClicked += new System.Windows.Forms.LinkClickedEventHandler(this.PackageDetailBoxLinkClicked);\r
+                       this.detailBox.LinkClicked += new System.Windows.Forms.LinkClickedEventHandler(this.DetailBoxLinkClicked);\r
                        // \r
                        // PackageListViewForm\r
                        // \r
index 08ede70..7c1d066 100644 (file)
@@ -40,7 +40,12 @@ namespace AppliStation
                        detailBox.SelectedText += string.Format("{0} ({1})\r\n", pkg.Name, pkg.Version);\r
                        if (! string.IsNullOrEmpty(pkg.Tags) ) {\r
                                detailBox.SelectionFont = new Font(detailBox.Font.FontFamily, 8);\r
-                               detailBox.SelectedText += string.Format("タグ: {0}\r\n", pkg.Tags);\r
+                               detailBox.SelectedText += "タグ:";\r
+                               foreach (string tag in pkg.Tags.Split(' ')) {\r
+                                       detailBox.AppendText(" ");\r
+                                       AppliStation.Util.NativeMethods.RichTextBox_AddTextLink(detailBox, tag);\r
+                               }\r
+                               detailBox.AppendText("\r\n");\r
                        }\r
                        if (pkg is InstalledPackage) {\r
                                InstalledPackage iPkg = (InstalledPackage) pkg;\r
@@ -60,7 +65,9 @@ namespace AppliStation
                        }\r
                        detailBox.SelectionFont = detailBox.Font;\r
                        if (pkg.Url != null && pkg.Url.Href != null) {\r
-                               detailBox.SelectedText += "公式サイト: " + pkg.Url.Href + "\r\n";\r
+                               detailBox.SelectedText += "公式サイト: ";\r
+                               AppliStation.Util.NativeMethods.RichTextBox_AddTextLink(detailBox, pkg.Url.Href);\r
+                               detailBox.SelectedText += "\r\n";\r
                        }\r
                        detailBox.SelectedText += pkg.Summary;\r
                }\r
@@ -105,8 +112,12 @@ namespace AppliStation
                                        break;\r
                        }\r
                        \r
-                       detailBox.SelectionStart = 0;\r
-                       detailBox.ScrollToCaret();\r
+                       try {\r
+                               detailBox.Select(0, 0);\r
+                               detailBox.ScrollToCaret();\r
+                       } catch (System.Runtime.InteropServices.COMException) {\r
+                               // ScrollToCaretでこけることがある\r
+                       }\r
                }\r
 \r
                void PackageListViewItemActivate(object sender, EventArgs e)\r
@@ -298,9 +309,15 @@ namespace AppliStation
                        //this.packageListView.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);\r
                }\r
                \r
-               void PackageDetailBoxLinkClicked(object sender, LinkClickedEventArgs e)\r
+               void DetailBoxLinkClicked(object sender, LinkClickedEventArgs e)\r
                {\r
-                       System.Diagnostics.Process.Start(e.LinkText);\r
+                       if (System.Text.RegularExpressions.Regex.IsMatch(e.LinkText, "^https?://")){\r
+                               /* URLの場合はブラウザ起動 */\r
+                               System.Diagnostics.Process.Start(e.LinkText);\r
+                       } else {\r
+                               /* それ以外はタグとみなして検索 */\r
+                               searchTextBox.Text = e.LinkText;\r
+                       }\r
                }\r
                \r
                internal void updateActionInvoke(bool downloadPackageListsFlag)\r
index 04249b8..e5d2a56 100644 (file)
   <metadata name="packageListContextMenuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">\r
     <value>511, 17</value>\r
   </metadata>\r
+  <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">\r
+    <value>53</value>\r
+  </metadata>\r
   <data name="informationToolStripDropDownButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">\r
     <value>\r
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8\r
-        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALEgAA\r
-        CxIB0t1+/AAAASNJREFUOE+VkztrhUAQhZPfmCLaWgQUe0uxsJcLt7DQOsQIFrGx9lWkErGysBTf/2By\r
+        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALEQAA\r
+        CxEBf2RfkQAAASNJREFUOE+VkztrhUAQhZPfmCLaWgQUe0uxsJcLt7DQOsQIFrGx9lWkErGysBTf/2By\r
         z4aV3BA1LnysLjvnzOzsPj7chm3b723bPuH7xHjWdf2N7TcMg84OxKxmXGAYBuq6jtH3/QrWwTiOtCwL\r
         8/pTAIFxHFOSJIw0Te/IsuxYgDvLskycoiiY+zRN+wII5s5BEJAgCCvI5jADCMAVjqgZ83cWL+z/Xxlw\r
         V56BoigEiuLzWAAuP2vnwXyuqmr/DCDwu3ZkJIoiSZJEqqpSXdfbbeS9Rq1gnmcqy5I0TSPTNMmyLHIc\r
     <value>\r
         AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w\r
         LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0\r
-        ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABM\r
+        ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACC\r
         BQAAAk1TRnQBSQFMAwEBAAEEAQABBAEAARABAAEQAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABQAMA\r
-        ARADAAEBAQABIAYAARD/AC8AAzsBZAPVAf8D4gH/A9YB/wPIAf8DOQFfBAADAQEC3AADkAHnA8cB/wPU\r
-        Af8D4QH/A88B/wO9Af8DtgH/A7AB/wMnAToDEQEX2AADkQHhA78B/wPJAf8C0gHUAf8DxgH/A6IB/wOE\r
-        Af8DgwHvAxIBGAMOARPEAAGeAZsBmQH/AuAB4QH/A0cB+wObAfgDQQFzBAADLwFJA4gB7gJ0AXIB/wFx\r
-        AW4BcQH/AZ4BnwGhAf8BtwHHAcsB/wHPAekB7AH/AtMB1AH/yAABwAG6AbsB/wGtAqwB/wGqAqkB/wPX\r
-        Af8BWQJYAeEBZAFmAWkB8QGxAcIBxwH/AawByAHOAf8BvQHGAcgB/wHHAawBqgH/AcUBZgFWAf8BrwEC\r
-        AQAB/wGZAgAB/wHDAeAB5AH/yAAB0gHNAcwB/wGuAawBrwH/A5cB/wGnAbUBtgH/AboCpwH/AaIBTQFP\r
-        Af8BjgEOAQ0B/wGBAgAB/wGNAgAB/wGvAS4BGgH/AbsBOQEmAf8BwgE+ASoB/wHIASYBDQH/AcYB6QHt\r
-        Af/IAAHeAdYB2AH/Aa4BsAGuAf8DoAH/AYEBKAEkAf8BjQESAQYB/wGLARQBCQH/AZABDQEAAf8BsQGn\r
-        AaUB/wFzARsBEwH/AdEBYgFPAf8B1wFfAUsB/wHdAWQBTwH/AeYBXAFEAf8B0AHlAeYB/wMgAS7EAAHR\r
-        As0B/wGyArEB/wOzAf8BmgFzAXYB/wGeATcBLwH/AZcBLgEkAf8B1wHMAcsB/wGbAWABWAH/A98B/wHi\r
-        AY8BggH/AekBhwFyAf8B7gGKAXYB/wHzAY8BdgH/AdUB0gHRAf8DOAFdxAABrwGqAagB/wG9AbQBuwH/\r
-        Ab8BvQG/Af8BsAG2AboB/wGuAVMBTAH/AZUBFgEPAf8BlAEzASUB/wG3ARQBAAH/AbMBZQFiAf8BuQGw\r
-        Aa4B/wH1AagBmQH/AfoBrQGcAv8BsQGlAf8B7QG/AbcB/wNIAYHFAAF4ATYB/wHYAcQB0AH/A8oB/wG8\r
-        Ac4B0QH/Ab4BbQFlAf8BmwIAAf8BvgEWAQAB/wHWASEBAAH/AfABKQEBAf8B4AHdAdwB/wGnAYoBggL/\r
-        AcwBvAL/AdUBxQH/AfQBwwGtAf8DeAHgxAABdwFxAXQB/wH1AfYB+QH/A+EB/wHBAdIB1wH/AaEBJQEW\r
-        Af8BrwEUAQAB/wHHARoBAAH/Ad8BIwEAAf8B+wF0AVoB/wH4AdUByAH/A9QB/wHJAbMBqAL/AeQB2wL/\r
-        AcoBswH/AZsBnQGgAf/IAAMRARcDYQG4AcMBzwHSAf8BjQIAAf8BtQEZAQAB/wHPAR0BAAH/AeYBFQEA\r
-        Av8B4gHXAv8B7QHpAf8B7gHiAdoB/wHsAdsB0gL/AeUB1QH/AfsBuwGeAf8BsQG6AbwB/9AAA0ABbQGF\r
-        AgAB/wGzAQUBAAH/Ab8BKQEXAf8B1gFUAUIB/wHVAa4BpAH/AdABtQGvAf8BxwLKAf8BygHRAdQB/wF4\r
-        AX0BfwHNAU8CUAGPAzMBUdAAAwkBDAFuAXEBcwG+Az8BawMmATgDFgEe/wDdAAFCAU0BPgcAAT4DAAEo\r
-        AwABQAMAARADAAEBAQABAQUAAYAXAAP/AQAC/wYAAf4BBQYAAfwHAAH8BwABggEBBgABgAEBBgABgAEB\r
-        BgABgAcAAYAHAAGABwABgAcAAYAHAAHABwAB8AcAAfABfwYAAv8GAAs=\r
+        ARADAAEBAQABIAYAARD/AC8AAZcCFwFkA9UB/wPiAf8D1gH/A8gB/wGZAhUBXwQAAdECAAEC3AABlgKC\r
+        AecDxwH/A9QB/wPhAf8DzwH/A70B/wO2Af8DsAH/AawCCQE6AcICAgEX2AABmQKAAeEDvwH/A8kB/wLS\r
+        AdQB/wPGAf8DogH/A4QB/wGIAnsB7wHBAgIBGAHEAgEBE8QAAZ4BmwGZAf8C4AHhAf8BSQJGAfsBnQKX\r
+        AfgBkQIdAXMEAAGkAg0BSQGNAn8B7gJ0AXIB/wFxAW4BcQH/AZ4BnwGhAf8BtwHHAcsB/wHPAekB7AH/\r
+        AtMB1AH/yAABwAG6AbsB/wGtAqwB/wGqAqkB/wPXAf8BaAJOAeEBawFfAWIB8QGxAcIBxwH/AawByAHO\r
+        Af8BvQHGAcgB/wHHAawBqgH/AcUBZgFWAf8BrwECAQAB/wGZAgAB/wHDAeAB5AH/yAAB0gHNAcwB/wGu\r
+        AawBrwH/A5cB/wGnAbUBtgH/AboCpwH/AaIBTQFPAf8BjgEOAQ0B/wGBAgAB/wGNAgAB/wGvAS4BGgH/\r
+        AbsBOQEmAf8BwgE+ASoB/wHIASYBDQH/AcYB6QHtAf/IAAHeAdYB2AH/Aa4BsAGuAf8DoAH/AYEBKAEk\r
+        Af8BjQESAQYB/wGLARQBCQH/AZABDQEAAf8BsQGnAaUB/wFzARsBEwH/AdEBYgFPAf8B1wFfAUsB/wHd\r
+        AWQBTwH/AeYBXAFEAf8B0AHlAeYB/wGzAgYBLsQAAdECzQH/AbICsQH/A7MB/wGaAXMBdgH/AZ4BNwEv\r
+        Af8BlwEuASQB/wHXAcwBywH/AZsBYAFYAf8D3wH/AeIBjwGCAf8B6QGHAXIB/wHuAYoBdgH/AfMBjwF2\r
+        Af8B1QHSAdEB/wGaAhQBXcQAAa8BqgGoAf8BvQG0AbsB/wG/Ab0BvwH/AbABtgG6Af8BrgFTAUwB/wGV\r
+        ARYBDwH/AZQBMwElAf8BtwEUAQAB/wGzAWUBYgH/AbkBsAGuAf8B9QGoAZkB/wH6Aa0BnAL/AbEBpQH/\r
+        Ae0BvwG3Af8BjAIkAYHFAAF4ATYB/wHYAcQB0AH/A8oB/wG8Ac4B0QH/Ab4BbQFlAf8BmwIAAf8BvgEW\r
+        AQAB/wHWASEBAAH/AfABKQEBAf8B4AHdAdwB/wGnAYoBggL/AcwBvAL/AdUBxQH/AfQBwwGtAf8BgwJp\r
+        AeDEAAF3AXEBdAH/AfUB9gH5Af8D4QH/AcEB0gHXAf8BoQElARYB/wGvARQBAAH/AccBGgEAAf8B3wEj\r
+        AQAB/wH7AXQBWgH/AfgB1QHIAf8D1AH/AckBswGoAv8B5AHbAv8BygGzAf8BmwGdAaAB/8gAAcICAgEX\r
+        AYECRgG4AcMBzwHSAf8BjQIAAf8BtQEZAQAB/wHPAR0BAAH/AeYBFQEAAv8B4gHXAv8B7QHpAf8B7gHi\r
+        AdoB/wHsAdsB0gL/AeUB1QH/AfsBuwGeAf8BsQG6AbwB/9AAAZQCGwFtAYUCAAH/AbMBBQEAAf8BvwEp\r
+        ARcB/wHWAVQBQgH/AdUBrgGkAf8B0AG1Aa8B/wHHAsoB/wHKAdEB1AH/AYkBZAFlAc0BiQItAY8BoAIQ\r
+        AVHQAAHJAgABDAGIAVMBVgG+AZQCGgFrAa0CCAE4Ab0CAwEe/wDdAAFCAU0BPgcAAT4DAAEoAwABQAMA\r
+        ARADAAEBAQABAQUAAYAXAAP/AQAC/wYAAf4BBQYAAfwHAAH8BwABggEBBgABgAEBBgABgAEBBgABgAcA\r
+        AYAHAAGABwABgAcAAYAHAAHABwAB8AcAAfABfwYAAv8GAAs=\r
 </value>\r
   </data>\r
-  <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">\r
-    <value>53</value>\r
-  </metadata>\r
 </root>
\ No newline at end of file