From dc3c80386a80d31d243a6df33e9dbcf3852a18c5 Mon Sep 17 00:00:00 2001 From: ttp Date: Mon, 8 Sep 2008 14:03:09 +0000 Subject: [PATCH] =?utf8?q?AppliStation-GUI,=E3=83=A1=E3=82=A4=E3=83=B3?= =?utf8?q?=E3=82=A6=E3=82=A3=E3=83=B3=E3=83=89=E3=82=A6=E3=81=AB=E6=83=85?= =?utf8?q?=E5=A0=B1=E3=83=A1=E3=83=8B=E3=83=A5=E3=83=BC=E3=81=AE=E8=BF=BD?= =?utf8?q?=E5=8A=A0=E3=81=AA=E3=81=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit * 情報メニューの追加 * インストール確認ダイアログにて、ソート不可能なように変更した。 * メインウィンドウのPackageListViewのアイコンをImageListに変更(SharpDevelopで書換える度にrevertする必要はなくなった。) git-svn-id: http://localhost/svn/AppliStation/trunk@970 34ed2c89-c49f-4a4b-abdb-c318350108cf --- AppliStation/AppliStation.Util/NativeMethods.cs | 28 ++- AppliStation/InstallationConfirmForm.Designer.cs | 14 +- AppliStation/InstallationConfirmForm.cs | 35 +--- AppliStation/PackageListViewForm.Designer.cs | 212 ++++++++++++----------- AppliStation/PackageListViewForm.cs | 21 ++- AppliStation/PackageListViewForm.resx | 189 +++++--------------- 6 files changed, 204 insertions(+), 295 deletions(-) diff --git a/AppliStation/AppliStation.Util/NativeMethods.cs b/AppliStation/AppliStation.Util/NativeMethods.cs index 36481b0..3259167 100644 --- a/AppliStation/AppliStation.Util/NativeMethods.cs +++ b/AppliStation/AppliStation.Util/NativeMethods.cs @@ -1,4 +1,8 @@ -using System; +// Vistaの効果を有効にするフラグ(不要の場合はコメントアウト) +#define USE_VISTA_EFFECTS + +using System; +using System.Diagnostics; using System.Runtime.InteropServices; using System.Windows.Forms; @@ -15,7 +19,6 @@ namespace AppliStation.Util private NativeMethods() { } - /// /// WindowsVista向け、プログレスバーステータス(色)を設定する @@ -24,12 +27,14 @@ namespace AppliStation.Util /// 状態。(1:Normal,2:Error,3:Paused) public static void ProgressBar_SetState(ProgressBar progBar, uint state) { +#if USE_VISTA_EFFECTS try { // status := (PBST_NORMAL | PBST_ERROR | PBST_PAUSED) // SendMessage(progressBar.Handle, PBM_SETSTATE, state, 0); SendMessage(progBar.Handle, 0x410, state, 0); } catch (Exception) { } +#endif } #region タスクバーおよびタイトルバーのフラッシュ @@ -128,6 +133,7 @@ namespace AppliStation.Util /// 対象のListView public static void ListView_EnableVistaExplorerTheme(ListView listView) { +#if USE_VISTA_EFFECTS // Vista未満はなにもしない OperatingSystem os = Environment.OSVersion; if (os.Platform != PlatformID.Win32NT || os.Version.Major < 6) return; @@ -136,6 +142,24 @@ namespace AppliStation.Util SetWindowTheme(listView.Handle, "explorer", null); } catch (Exception) { } +#endif + } + + /// + /// ヘッダに"すべて選択"に似たチェックボックスを作るか否かを指定する + /// + /// このオプションを設定するとVistaエクスプローラでの「チェックボックスを使用して項目を選択する」と同様の動作になる + /// 対象のListBox + /// チェックボックスを使用して項目を選択するときtrue + public static void ListView_SetAutoCheckSelect(ListView listView, bool bAutoCheckSelect) + { +#if USE_VISTA_EFFECTS + try { + // SendMessage(listView.Handle, LVM_SETEXTENDEDLISTVIEWSTYLE, LVS_EX_AUTOCHECKSELECT, bAutoCheckSelect?LVS_EX_AUTOCHECKSELECT:0); + SendMessage(listView.Handle, 0x1036, 0x08000000, (bAutoCheckSelect)?0x08000000u:0x0u); + } catch (Exception) { + } +#endif } #region ColumnHeaderのソートの三角印用 diff --git a/AppliStation/InstallationConfirmForm.Designer.cs b/AppliStation/InstallationConfirmForm.Designer.cs index 9f57717..01d2e8c 100644 --- a/AppliStation/InstallationConfirmForm.Designer.cs +++ b/AppliStation/InstallationConfirmForm.Designer.cs @@ -139,6 +139,7 @@ namespace AppliStation this.instsListView.ContextMenuStrip = this.instListViewContextMenuStrip; this.instsListView.Dock = System.Windows.Forms.DockStyle.Fill; this.instsListView.GridLines = true; + this.instsListView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; this.instsListView.Location = new System.Drawing.Point(5, 53); this.instsListView.Margin = new System.Windows.Forms.Padding(5, 3, 5, 5); this.instsListView.Name = "instsListView"; @@ -148,10 +149,9 @@ namespace AppliStation this.instsListView.TabIndex = 2; this.instsListView.UseCompatibleStateImageBehavior = false; this.instsListView.View = System.Windows.Forms.View.Details; + this.instsListView.DrawColumnHeader += new System.Windows.Forms.DrawListViewColumnHeaderEventHandler(this.InstsListViewDrawColumnHeader); this.instsListView.ItemChecked += new System.Windows.Forms.ItemCheckedEventHandler(this.InstsListViewItemChecked); this.instsListView.DrawSubItem += new System.Windows.Forms.DrawListViewSubItemEventHandler(this.InstsListViewDrawSubItem); - this.instsListView.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.InstsListViewColumnClick); - this.instsListView.DrawColumnHeader += new System.Windows.Forms.DrawListViewColumnHeaderEventHandler(this.InstsListViewDrawColumnHeader); // // nameColumnHeader // @@ -181,32 +181,32 @@ namespace AppliStation this.selectAllInstsStripMenuItem, this.unselectAllInstsStripMenuItem}); this.instListViewContextMenuStrip.Name = "packageListViewContextMenuStrip"; - this.instListViewContextMenuStrip.Size = new System.Drawing.Size(220, 76); + this.instListViewContextMenuStrip.Size = new System.Drawing.Size(263, 76); this.instListViewContextMenuStrip.Opening += new System.ComponentModel.CancelEventHandler(this.InstsListViewContextMenuStripOpening); // // silentInstallStripMenuItem // this.silentInstallStripMenuItem.Name = "silentInstallStripMenuItem"; - this.silentInstallStripMenuItem.Size = new System.Drawing.Size(219, 22); + this.silentInstallStripMenuItem.Size = new System.Drawing.Size(262, 22); this.silentInstallStripMenuItem.Text = "サイレントインストールをする(&S)"; this.silentInstallStripMenuItem.Click += new System.EventHandler(this.SilentInstallStripMenuItemClick); // // instListToolStripSeparator // this.instListToolStripSeparator.Name = "instListToolStripSeparator"; - this.instListToolStripSeparator.Size = new System.Drawing.Size(216, 6); + this.instListToolStripSeparator.Size = new System.Drawing.Size(259, 6); // // selectAllInstsStripMenuItem // this.selectAllInstsStripMenuItem.Name = "selectAllInstsStripMenuItem"; - this.selectAllInstsStripMenuItem.Size = new System.Drawing.Size(219, 22); + this.selectAllInstsStripMenuItem.Size = new System.Drawing.Size(262, 22); this.selectAllInstsStripMenuItem.Text = "全て選択(&A)"; this.selectAllInstsStripMenuItem.Click += new System.EventHandler(this.SelectAllInstsStripMenuItemClick); // // unselectAllInstsStripMenuItem // this.unselectAllInstsStripMenuItem.Name = "unselectAllInstsStripMenuItem"; - this.unselectAllInstsStripMenuItem.Size = new System.Drawing.Size(219, 22); + this.unselectAllInstsStripMenuItem.Size = new System.Drawing.Size(262, 22); this.unselectAllInstsStripMenuItem.Text = "全ての選択を解除(&U)"; this.unselectAllInstsStripMenuItem.Click += new System.EventHandler(this.UnselectAllInstsStripMenuItemClick); // diff --git a/AppliStation/InstallationConfirmForm.cs b/AppliStation/InstallationConfirmForm.cs index 9cc7f04..97f46d1 100644 --- a/AppliStation/InstallationConfirmForm.cs +++ b/AppliStation/InstallationConfirmForm.cs @@ -53,6 +53,8 @@ namespace AppliStation runasCheckBox.Checked = false; runasCheckBox.Visible = false; } + + // ListViewの効果 AppliStation.Util.NativeMethods.ListView_EnableVistaExplorerTheme(instsListView); AppliStation.Util.NativeMethods.ListView_SetDoubleBuffer(instsListView, true); } @@ -157,39 +159,6 @@ namespace AppliStation okButton.Enabled = checkeds != null && checkeds.Count > 0; } - - AppliStation.Util.ListViewItemSortComparer packageListViewSortComparer; - - void InstsListViewColumnClick(object sender, ColumnClickEventArgs e) - { - SortOrder order = SortOrder.None; - - if (packageListViewSortComparer == null) { - order = SortOrder.Ascending; - packageListViewSortComparer = new AppliStation.Util.ListViewItemSortComparer(e.Column, order); - instsListView.ListViewItemSorter = packageListViewSortComparer; - } else { - if (packageListViewSortComparer.Column == e.Column) { - order = (packageListViewSortComparer.Order == SortOrder.Ascending)? SortOrder.Descending : SortOrder.Ascending; - - packageListViewSortComparer.Order = order; - } else { - order = packageListViewSortComparer.Order; - packageListViewSortComparer.Column = e.Column; - } - - instsListView.Sort(); - } - AppliStation.Util.NativeMethods.ColumnHeader_SetSortState(instsListView, e.Column, order); - - // ソート対象列の色付け - try { - // SendMessage(hWnd, LVM_SETSELECTEDCOLUMN, column, NULL); - AppliStation.Util.NativeMethods.SendMessage(instsListView.Handle, 0x1000+140, (uint) e.Column, 0); - } catch (Exception) { - } - } - void InstsListViewContextMenuStripOpening(object sender, System.ComponentModel.CancelEventArgs e) { diff --git a/AppliStation/PackageListViewForm.Designer.cs b/AppliStation/PackageListViewForm.Designer.cs index 27ee4bd..ee9ac19 100644 --- a/AppliStation/PackageListViewForm.Designer.cs +++ b/AppliStation/PackageListViewForm.Designer.cs @@ -30,7 +30,7 @@ { this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PackageListViewForm)); - this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.packageListContextMenuStripSeparator = new System.Windows.Forms.ToolStripSeparator(); this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); this.toolStripContainer = new System.Windows.Forms.ToolStripPanel(); this.packageListFilterToolStrip = new System.Windows.Forms.ToolStrip(); @@ -44,14 +44,7 @@ this.updateToolStripButton = new System.Windows.Forms.ToolStripSplitButton(); this.localUpdateToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.upgradeToolStripButton = new System.Windows.Forms.ToolStripButton(); - this.packageCommandsToolStripSeparator = new System.Windows.Forms.ToolStripSeparator(); - this.installToolStripButton = new System.Windows.Forms.ToolStripButton(); - this.uninstallToolStripButton = new System.Windows.Forms.ToolStripButton(); - this.splitContainer = new System.Windows.Forms.SplitContainer(); - this.packageListView = new System.Windows.Forms.ListView(); - this.nameHeader = new System.Windows.Forms.ColumnHeader(); - this.versionHeader = new System.Windows.Forms.ColumnHeader(); - this.summaryHeader = new System.Windows.Forms.ColumnHeader(); + this.informationToolStripDropDownButton = new System.Windows.Forms.ToolStripDropDownButton(); this.packageListContextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components); this.installToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.uninstallToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -60,21 +53,29 @@ this.webGoogleSearchToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.installedDirectoryStripMenuItem = new AppliStation.Util.ToolStripPetitLauncherMenuItem(); this.propertiesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.installToolStripButton = new System.Windows.Forms.ToolStripButton(); + this.uninstallToolStripButton = new System.Windows.Forms.ToolStripButton(); + this.splitContainer = new System.Windows.Forms.SplitContainer(); + this.packageListView = new System.Windows.Forms.ListView(); + this.nameHeader = new System.Windows.Forms.ColumnHeader(); + this.versionHeader = new System.Windows.Forms.ColumnHeader(); + this.summaryHeader = new System.Windows.Forms.ColumnHeader(); + this.packageListViewImageList = new System.Windows.Forms.ImageList(this.components); this.detailBox = new System.Windows.Forms.RichTextBox(); this.tableLayoutPanel1.SuspendLayout(); this.toolStripContainer.SuspendLayout(); this.packageListFilterToolStrip.SuspendLayout(); this.packageCommandsToolStrip.SuspendLayout(); + this.packageListContextMenuStrip.SuspendLayout(); this.splitContainer.Panel1.SuspendLayout(); this.splitContainer.Panel2.SuspendLayout(); this.splitContainer.SuspendLayout(); - this.packageListContextMenuStrip.SuspendLayout(); this.SuspendLayout(); // - // toolStripSeparator1 + // packageListContextMenuStripSeparator // - this.toolStripSeparator1.Name = "toolStripSeparator1"; - this.toolStripSeparator1.Size = new System.Drawing.Size(201, 6); + this.packageListContextMenuStripSeparator.Name = "packageListContextMenuStripSeparator"; + this.packageListContextMenuStripSeparator.Size = new System.Drawing.Size(236, 6); // // tableLayoutPanel1 // @@ -110,7 +111,7 @@ this.searchTextBox}); this.packageListFilterToolStrip.Location = new System.Drawing.Point(3, 0); this.packageListFilterToolStrip.Name = "packageListFilterToolStrip"; - this.packageListFilterToolStrip.Size = new System.Drawing.Size(175, 25); + this.packageListFilterToolStrip.Size = new System.Drawing.Size(177, 25); this.packageListFilterToolStrip.TabIndex = 1; // // packageFilterToolStripDropDownButton @@ -126,7 +127,7 @@ // allPackageFilterToolStripMenuItem // this.allPackageFilterToolStripMenuItem.Name = "allPackageFilterToolStripMenuItem"; - this.allPackageFilterToolStripMenuItem.Size = new System.Drawing.Size(150, 22); + this.allPackageFilterToolStripMenuItem.Size = new System.Drawing.Size(160, 22); this.allPackageFilterToolStripMenuItem.Text = "全て"; this.allPackageFilterToolStripMenuItem.ToolTipText = "全てのソフトを表示"; this.allPackageFilterToolStripMenuItem.Click += new System.EventHandler(this.AnyPackageFilterToolStripMenuItemClicked); @@ -134,7 +135,7 @@ // notInstalledPackageFilterToolStripMenuItem // this.notInstalledPackageFilterToolStripMenuItem.Name = "notInstalledPackageFilterToolStripMenuItem"; - this.notInstalledPackageFilterToolStripMenuItem.Size = new System.Drawing.Size(150, 22); + this.notInstalledPackageFilterToolStripMenuItem.Size = new System.Drawing.Size(160, 22); this.notInstalledPackageFilterToolStripMenuItem.Text = "未インストール"; this.notInstalledPackageFilterToolStripMenuItem.ToolTipText = "インストールされていないソフトを表示"; this.notInstalledPackageFilterToolStripMenuItem.Click += new System.EventHandler(this.AnyPackageFilterToolStripMenuItemClicked); @@ -142,7 +143,7 @@ // installedASPackageFilterToolStripMenuItem // this.installedASPackageFilterToolStripMenuItem.Name = "installedASPackageFilterToolStripMenuItem"; - this.installedASPackageFilterToolStripMenuItem.Size = new System.Drawing.Size(150, 22); + this.installedASPackageFilterToolStripMenuItem.Size = new System.Drawing.Size(160, 22); this.installedASPackageFilterToolStripMenuItem.Text = "AppliStation内"; this.installedASPackageFilterToolStripMenuItem.ToolTipText = "AppliStationにインストールされているソフトを表示"; this.installedASPackageFilterToolStripMenuItem.Click += new System.EventHandler(this.AnyPackageFilterToolStripMenuItemClicked); @@ -150,7 +151,7 @@ // installedSysPackageFilterToolStripMenuItem // this.installedSysPackageFilterToolStripMenuItem.Name = "installedSysPackageFilterToolStripMenuItem"; - this.installedSysPackageFilterToolStripMenuItem.Size = new System.Drawing.Size(150, 22); + this.installedSysPackageFilterToolStripMenuItem.Size = new System.Drawing.Size(160, 22); this.installedSysPackageFilterToolStripMenuItem.Text = "コンピュータ内"; this.installedSysPackageFilterToolStripMenuItem.ToolTipText = "コンピュータにインストールされているソフトを表示"; this.installedSysPackageFilterToolStripMenuItem.Click += new System.EventHandler(this.AnyPackageFilterToolStripMenuItemClicked); @@ -172,12 +173,12 @@ this.packageCommandsToolStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.updateToolStripButton, this.upgradeToolStripButton, - this.packageCommandsToolStripSeparator, + this.informationToolStripDropDownButton, this.installToolStripButton, this.uninstallToolStripButton}); this.packageCommandsToolStrip.Location = new System.Drawing.Point(3, 25); this.packageCommandsToolStrip.Name = "packageCommandsToolStrip"; - this.packageCommandsToolStrip.Size = new System.Drawing.Size(221, 25); + this.packageCommandsToolStrip.Size = new System.Drawing.Size(489, 25); this.packageCommandsToolStrip.TabIndex = 2; // // updateToolStripButton @@ -186,16 +187,16 @@ this.localUpdateToolStripMenuItem}); this.updateToolStripButton.Image = ((System.Drawing.Image)(resources.GetObject("updateToolStripButton.Image"))); this.updateToolStripButton.Name = "updateToolStripButton"; - this.updateToolStripButton.Size = new System.Drawing.Size(111, 22); + this.updateToolStripButton.Size = new System.Drawing.Size(131, 22); this.updateToolStripButton.Text = "リストの更新(&U)"; - this.updateToolStripButton.ToolTipText = "ソフトリスト更新(U)"; + this.updateToolStripButton.ToolTipText = "ソフトリストを更新します"; this.updateToolStripButton.ButtonClick += new System.EventHandler(this.UpdateToolStripButtonClick); // // localUpdateToolStripMenuItem // this.localUpdateToolStripMenuItem.Name = "localUpdateToolStripMenuItem"; this.localUpdateToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.F5; - this.localUpdateToolStripMenuItem.Size = new System.Drawing.Size(256, 22); + this.localUpdateToolStripMenuItem.Size = new System.Drawing.Size(296, 22); this.localUpdateToolStripMenuItem.Text = "インストール済ソフトの読み直し(&R)"; this.localUpdateToolStripMenuItem.Click += new System.EventHandler(this.LocalupdateToolStripMenuItemClick); // @@ -203,23 +204,92 @@ // this.upgradeToolStripButton.Image = ((System.Drawing.Image)(resources.GetObject("upgradeToolStripButton.Image"))); this.upgradeToolStripButton.Name = "upgradeToolStripButton"; - this.upgradeToolStripButton.Size = new System.Drawing.Size(100, 22); + this.upgradeToolStripButton.Size = new System.Drawing.Size(119, 22); this.upgradeToolStripButton.Text = "ソフトの更新(&G)"; + this.upgradeToolStripButton.ToolTipText = "最新版のソフトを取得して更新します"; this.upgradeToolStripButton.Click += new System.EventHandler(this.UpgradeToolStripButtonClick); // - // packageCommandsToolStripSeparator + // informationToolStripDropDownButton + // + this.informationToolStripDropDownButton.DropDown = this.packageListContextMenuStrip; + this.informationToolStripDropDownButton.Image = ((System.Drawing.Image)(resources.GetObject("informationToolStripDropDownButton.Image"))); + this.informationToolStripDropDownButton.Name = "informationToolStripDropDownButton"; + this.informationToolStripDropDownButton.Size = new System.Drawing.Size(80, 22); + this.informationToolStripDropDownButton.Text = "情報(&D)"; + this.informationToolStripDropDownButton.ToolTipText = "選択されたソフトの情報を調べます"; + this.informationToolStripDropDownButton.Visible = false; + // + // packageListContextMenuStrip + // + this.packageListContextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.installToolStripMenuItem, + this.uninstallToolStripMenuItem, + this.packageListContextMenuStripSeparator, + this.webResourcesToolStripMenuItem, + this.installedDirectoryStripMenuItem, + this.propertiesToolStripMenuItem}); + this.packageListContextMenuStrip.Name = "packageListContextMenuStrip"; + this.packageListContextMenuStrip.Size = new System.Drawing.Size(240, 120); + this.packageListContextMenuStrip.Opening += new System.ComponentModel.CancelEventHandler(this.PackageListContextMenuStripOpening); + // + // installToolStripMenuItem + // + this.installToolStripMenuItem.Name = "installToolStripMenuItem"; + this.installToolStripMenuItem.Size = new System.Drawing.Size(239, 22); + this.installToolStripMenuItem.Text = "インストール(&I)..."; + this.installToolStripMenuItem.Click += new System.EventHandler(this.InstallToolStripButtonClick); + // + // uninstallToolStripMenuItem + // + this.uninstallToolStripMenuItem.Name = "uninstallToolStripMenuItem"; + this.uninstallToolStripMenuItem.Size = new System.Drawing.Size(239, 22); + this.uninstallToolStripMenuItem.Text = "アンインストール(&U)..."; + this.uninstallToolStripMenuItem.Click += new System.EventHandler(this.UninstallToolStripButtonClick); + // + // webResourcesToolStripMenuItem + // + this.webResourcesToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.webOfficialToolStripMenuItem, + this.webGoogleSearchToolStripMenuItem}); + this.webResourcesToolStripMenuItem.Name = "webResourcesToolStripMenuItem"; + this.webResourcesToolStripMenuItem.Size = new System.Drawing.Size(239, 22); + this.webResourcesToolStripMenuItem.Tag = "\"{0}\"に関するWebページ(&W)"; + // + // webOfficialToolStripMenuItem + // + this.webOfficialToolStripMenuItem.Name = "webOfficialToolStripMenuItem"; + this.webOfficialToolStripMenuItem.Size = new System.Drawing.Size(159, 22); + this.webOfficialToolStripMenuItem.Text = "公式サイト(&O)"; + this.webOfficialToolStripMenuItem.Click += new System.EventHandler(this.WebOfficialToolStripMenuItemClick); + // + // webGoogleSearchToolStripMenuItem + // + this.webGoogleSearchToolStripMenuItem.Name = "webGoogleSearchToolStripMenuItem"; + this.webGoogleSearchToolStripMenuItem.Size = new System.Drawing.Size(159, 22); + this.webGoogleSearchToolStripMenuItem.Text = "Google検索(&G)"; + this.webGoogleSearchToolStripMenuItem.Click += new System.EventHandler(this.WebGoogleSearchToolStripMenuItemClick); + // + // installedDirectoryStripMenuItem + // + this.installedDirectoryStripMenuItem.InvokerForm = this; + this.installedDirectoryStripMenuItem.Name = "installedDirectoryStripMenuItem"; + this.installedDirectoryStripMenuItem.Size = new System.Drawing.Size(239, 22); + this.installedDirectoryStripMenuItem.Text = "インストール先のフォルダ(&O)"; + // + // propertiesToolStripMenuItem // - this.packageCommandsToolStripSeparator.Name = "packageCommandsToolStripSeparator"; - this.packageCommandsToolStripSeparator.Size = new System.Drawing.Size(6, 25); - this.packageCommandsToolStripSeparator.Visible = false; + this.propertiesToolStripMenuItem.Name = "propertiesToolStripMenuItem"; + this.propertiesToolStripMenuItem.Size = new System.Drawing.Size(239, 22); + this.propertiesToolStripMenuItem.Text = "プロパティ(&R)"; + this.propertiesToolStripMenuItem.Click += new System.EventHandler(this.PropertiesToolStripMenuItemClick); // // installToolStripButton // this.installToolStripButton.Image = ((System.Drawing.Image)(resources.GetObject("installToolStripButton.Image"))); this.installToolStripButton.Name = "installToolStripButton"; - this.installToolStripButton.Size = new System.Drawing.Size(80, 22); - this.installToolStripButton.Text = "インストール"; - this.installToolStripButton.ToolTipText = "選択されているアプリケーションをインストール"; + this.installToolStripButton.Size = new System.Drawing.Size(115, 22); + this.installToolStripButton.Text = "インストール(&I)"; + this.installToolStripButton.ToolTipText = "選択されているソフトをインストールします"; this.installToolStripButton.Visible = false; this.installToolStripButton.Click += new System.EventHandler(this.InstallToolStripButtonClick); // @@ -227,9 +297,9 @@ // this.uninstallToolStripButton.Image = ((System.Drawing.Image)(resources.GetObject("uninstallToolStripButton.Image"))); this.uninstallToolStripButton.Name = "uninstallToolStripButton"; - this.uninstallToolStripButton.Size = new System.Drawing.Size(98, 22); - this.uninstallToolStripButton.Text = "アンインストール"; - this.uninstallToolStripButton.ToolTipText = "選択されているアプリケーションをアンインストール"; + this.uninstallToolStripButton.Size = new System.Drawing.Size(143, 22); + this.uninstallToolStripButton.Text = "アンインストール(&U)"; + this.uninstallToolStripButton.ToolTipText = "選択されているソフトをアンインストールします"; this.uninstallToolStripButton.Visible = false; this.uninstallToolStripButton.Click += new System.EventHandler(this.UninstallToolStripButtonClick); // @@ -265,6 +335,7 @@ this.packageListView.Location = new System.Drawing.Point(0, 0); this.packageListView.Name = "packageListView"; this.packageListView.Size = new System.Drawing.Size(486, 225); + this.packageListView.SmallImageList = this.packageListViewImageList; this.packageListView.TabIndex = 0; this.packageListView.UseCompatibleStateImageBehavior = false; this.packageListView.View = System.Windows.Forms.View.Details; @@ -286,69 +357,11 @@ this.summaryHeader.Text = "概要"; this.summaryHeader.Width = 300; // - // packageListContextMenuStrip - // - this.packageListContextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.installToolStripMenuItem, - this.uninstallToolStripMenuItem, - this.toolStripSeparator1, - this.webResourcesToolStripMenuItem, - this.installedDirectoryStripMenuItem, - this.propertiesToolStripMenuItem}); - this.packageListContextMenuStrip.Name = "packageListContextMenuStrip"; - this.packageListContextMenuStrip.Size = new System.Drawing.Size(205, 142); - this.packageListContextMenuStrip.Opening += new System.ComponentModel.CancelEventHandler(this.PackageListContextMenuStripOpening); - // - // installToolStripMenuItem - // - this.installToolStripMenuItem.Name = "installToolStripMenuItem"; - this.installToolStripMenuItem.Size = new System.Drawing.Size(204, 22); - this.installToolStripMenuItem.Text = "インストール(&I)..."; - this.installToolStripMenuItem.Click += new System.EventHandler(this.InstallToolStripButtonClick); - // - // uninstallToolStripMenuItem - // - this.uninstallToolStripMenuItem.Name = "uninstallToolStripMenuItem"; - this.uninstallToolStripMenuItem.Size = new System.Drawing.Size(204, 22); - this.uninstallToolStripMenuItem.Text = "アンインストール(&U)..."; - this.uninstallToolStripMenuItem.Click += new System.EventHandler(this.UninstallToolStripButtonClick); + // packageListViewImageList // - // webResourcesToolStripMenuItem - // - this.webResourcesToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.webOfficialToolStripMenuItem, - this.webGoogleSearchToolStripMenuItem}); - this.webResourcesToolStripMenuItem.Name = "webResourcesToolStripMenuItem"; - this.webResourcesToolStripMenuItem.Size = new System.Drawing.Size(204, 22); - this.webResourcesToolStripMenuItem.Tag = "\"{0}\"に関するWebページ(&W)"; - // - // webOfficialToolStripMenuItem - // - this.webOfficialToolStripMenuItem.Name = "webOfficialToolStripMenuItem"; - this.webOfficialToolStripMenuItem.Size = new System.Drawing.Size(152, 22); - this.webOfficialToolStripMenuItem.Text = "公式サイト(&O)"; - this.webOfficialToolStripMenuItem.Click += new System.EventHandler(this.WebOfficialToolStripMenuItemClick); - // - // webGoogleSearchToolStripMenuItem - // - this.webGoogleSearchToolStripMenuItem.Name = "webGoogleSearchToolStripMenuItem"; - this.webGoogleSearchToolStripMenuItem.Size = new System.Drawing.Size(152, 22); - this.webGoogleSearchToolStripMenuItem.Text = "Google検索(&G)"; - this.webGoogleSearchToolStripMenuItem.Click += new System.EventHandler(this.WebGoogleSearchToolStripMenuItemClick); - // - // installedDirectoryStripMenuItem - // - this.installedDirectoryStripMenuItem.Name = "installedDirectoryStripMenuItem"; - this.installedDirectoryStripMenuItem.Size = new System.Drawing.Size(204, 22); - this.installedDirectoryStripMenuItem.Text = "インストール先のフォルダ(&O)"; - this.installedDirectoryStripMenuItem.InvokerForm = this; - // - // propertiesToolStripMenuItem - // - this.propertiesToolStripMenuItem.Name = "propertiesToolStripMenuItem"; - this.propertiesToolStripMenuItem.Size = new System.Drawing.Size(204, 22); - this.propertiesToolStripMenuItem.Text = "プロパティ(&R)"; - this.propertiesToolStripMenuItem.Click += new System.EventHandler(this.PropertiesToolStripMenuItemClick); + this.packageListViewImageList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("packageListViewImageList.ImageStream"))); + this.packageListViewImageList.TransparentColor = System.Drawing.Color.Transparent; + this.packageListViewImageList.Images.SetKeyName(0, "sys"); // // detailBox // @@ -382,16 +395,17 @@ this.packageListFilterToolStrip.PerformLayout(); this.packageCommandsToolStrip.ResumeLayout(false); this.packageCommandsToolStrip.PerformLayout(); + this.packageListContextMenuStrip.ResumeLayout(false); this.splitContainer.Panel1.ResumeLayout(false); this.splitContainer.Panel2.ResumeLayout(false); this.splitContainer.ResumeLayout(false); - this.packageListContextMenuStrip.ResumeLayout(false); this.ResumeLayout(false); } + private System.Windows.Forms.ImageList packageListViewImageList; + private System.Windows.Forms.ToolStripDropDownButton informationToolStripDropDownButton; + private System.Windows.Forms.ToolStripSeparator packageListContextMenuStripSeparator; private AppliStation.Util.ToolStripPetitLauncherMenuItem installedDirectoryStripMenuItem; - private System.Windows.Forms.ToolStripSeparator packageCommandsToolStripSeparator; private System.Windows.Forms.ToolStripMenuItem propertiesToolStripMenuItem; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; private System.Windows.Forms.ToolStripMenuItem webGoogleSearchToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem webOfficialToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem webResourcesToolStripMenuItem; diff --git a/AppliStation/PackageListViewForm.cs b/AppliStation/PackageListViewForm.cs index 3736ba3..13f03da 100644 --- a/AppliStation/PackageListViewForm.cs +++ b/AppliStation/PackageListViewForm.cs @@ -82,9 +82,10 @@ namespace AppliStation installBtnEnabled = (installPkgCount > 0) && (uninstallPkgCount == 0); uninstallBtnEnabled = (uninstallPkgCount == 1) && (installPkgCount == 0); + upgradeToolStripButton.Visible = (selectedPkgs.Length <= 0); + informationToolStripDropDownButton.Visible = (selectedPkgs.Length == 1); uninstallToolStripButton.Visible = uninstallBtnEnabled; installToolStripButton.Visible = installBtnEnabled; - packageCommandsToolStripSeparator.Visible = uninstallBtnEnabled || installBtnEnabled; switch (selectedPkgs.Length) { case 0: @@ -170,15 +171,11 @@ namespace AppliStation void Form_OnLoad(object sender, EventArgs e) { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PackageListViewForm)); - ImageList imageList = new ImageList(); - imageList.Images.Add("installed", this.Icon); - imageList.Images.Add("sys", (Icon)(resources.GetObject("sysinstalled.Icon"))); - packageListView.SmallImageList = imageList; + packageListViewImageList.Images.Add("installed", Icon.ExtractAssociatedIcon(Application.ExecutablePath)); updatePackageFilterToolStripMenuItemCheckState(); - installedASPackageFilterToolStripMenuItem.Image = this.Icon.ToBitmap(); - installedSysPackageFilterToolStripMenuItem.Image = ((Icon)(resources.GetObject("sysinstalled.Icon"))).ToBitmap(); + installedASPackageFilterToolStripMenuItem.Image = packageListViewImageList.Images["installed"]; + installedSysPackageFilterToolStripMenuItem.Image = packageListViewImageList.Images["sys"]; } #region PackageFilter関連 @@ -551,9 +548,11 @@ namespace AppliStation void PackageListContextMenuStripOpening(object sender, System.ComponentModel.CancelEventArgs e) { + // コンテクストメニューから開かれなかった場合はインストール/アンインストールは表示しない + bool parentIsPkgListView = (packageListContextMenuStrip.SourceControl == packageListView); // メニューアイテムのインストール/アンインストールの表示はツールストリップに同じ - installToolStripMenuItem.Visible = installToolStripButton.Visible; - uninstallToolStripMenuItem.Visible = uninstallToolStripButton.Visible; + installToolStripMenuItem.Visible = parentIsPkgListView && installToolStripButton.Visible; + uninstallToolStripMenuItem.Visible = parentIsPkgListView && uninstallToolStripButton.Visible; // インストールもアンインストールもできない状態ならば、メニューを表示しない if (! (installToolStripButton.Visible || uninstallToolStripButton.Visible)) { @@ -581,7 +580,7 @@ namespace AppliStation } } - toolStripSeparator1.Visible = selectionIsOnlyOne; + packageListContextMenuStripSeparator.Visible = parentIsPkgListView && selectionIsOnlyOne; webResourcesToolStripMenuItem.Visible = selectionIsOnlyOne; if (! selectionIsOnlyOne) installedDirectoryStripMenuItem.Visible = false; propertiesToolStripMenuItem.Visible = selectionIsOnlyOne; diff --git a/AppliStation/PackageListViewForm.resx b/AppliStation/PackageListViewForm.resx index adca5e9..04249b8 100644 --- a/AppliStation/PackageListViewForm.resx +++ b/AppliStation/PackageListViewForm.resx @@ -163,6 +163,21 @@ ZdU5k5jcQBKTB1rOZ1/i81oD6/iJgX+xg9F34x/0jcPn/5nC5h3IH5TSYb0vmXYTAAAAAElFTkSuQmCC + + 511, 17 + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALEgAA + CxIB0t1+/AAAASNJREFUOE+VkztrhUAQhZPfmCLaWgQUe0uxsJcLt7DQOsQIFrGx9lWkErGysBTf/2By + z4aV3BA1LnysLjvnzOzsPj7chm3b723bPuH7xHjWdf2N7TcMg84OxKxmXGAYBuq6jtH3/QrWwTiOtCwL + 8/pTAIFxHFOSJIw0Te/IsuxYgDvLskycoiiY+zRN+wII5s5BEJAgCCvI5jADCMAVjqgZ83cWL+z/Xxlw + V56BoigEiuLzWAAuP2vnwXyuqmr/DCDwu3ZkJIoiSZJEqqpSXdfbbeS9Rq1gnmcqy5I0TSPTNMmyLHIc + Z1sAreKnjRPP85wRhiFdLhdyXZc8z9sX4P2GO8DNA03TkO/7FEXRtsCZ93B3la/X6wcWznCLeT3xcre3 + fgFcQn+1XL9JnwAAAABJRU5ErkJggg== + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 @@ -207,152 +222,40 @@ P90Qa56ijxDNAAAAAElFTkSuQmCC - + + 17, 54 + + - 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 - Sf+QAAD/pBMA/6oVAP+0GAD/whwA/8kaAP/FHw7/1cbD//39/f+oj4v/8rGj//27rP/+va3//7+u///D - tv//spr/8MK1/8DU2v+QjYu5AAAAAAAAAABogXbYAHs5/2J4af/YxND/19zb/8rKyv/Nzc7/vM7R/5M0 - Mf++cGj/oisg/5sBAP+uGAD/vhkA/8odAP/WJAD/4BYA//AsBP/VraP/4N3c/+Dg4P+nioL//867///M - vP//z73//9XF///Jsf/0w63/xdTc/5GPj+CXl5cLAAAAAHRqceRHJi3/el9n/8DGx//X2Nj/w8PD/9DQ - 0f++0NP/lUI9/7dhVP+cCQD/qg8A/7cZAP/EHAD/0CAA/9smAP/nDgD/9Eoo//7g2P/Erqf/3t7e/767 - uv+9oZb//9jI///Zyf//287//9jD//nCqf/L19v/k5aX9paWlRgAAAAAjouNnnp0d/+trKz/9fb5//// - ///h4eH/19fX/8HS1/+bWFP/oSgZ/58EAP+vFwD/uxoA/8cdAP/TIAD/3yYA/+sJAP/7d13///Hv//jV - yP/As6//1NTU/6ejof/Js6j//N/S///k2///49X//8qz/9re3v+bnaD/k5KQIQAAAAAAAAAJsbSyUaao - qbi2t7f/2NjY//z8/P//////0N7j/5xbU/+MAAD/phAA/7IXAP+/GwD/yx4A/9ckAP/jIAD/8A4A//+w - nf//+Pb//9/Z//DXz/+zrKr/vb29/62jn//55+L///Ls///z7v//2Mb/6eXk/6asrv+QkI8sAAAAAAAA - AAAAAAAAAAAABZ+goBeQkZFimZqauLO0tPPDz9L/nnJt/40AAP+oEwD/tRwA/8EeAP/PIAD/2yYA/+YY - AP/4JAD//+LX////////7en///Dr/+7i2v/p3tb/7NvS//3m2///5dX//9zJ//u7nv/z6eT/sbq8/42L - ilAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlpaWDK62uaymnZz/kQUC/60IAP+6DQD/xgoA/9QK - AP/jCAD/7wAA//8rAv//29D//dnP///Gtf/6xLH/9MKw//jBr//0u6T/5rSh/+C6rP/jxbn/48zE//X2 - 9f/Exsn/nZybOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsri8bbG6vf+FAAD/oQAA/7MI - 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 - vv+2v8D/tsnJ/7a/wP+2v8D/tr/A/7a/wP+2v8D/tr/A/7a/wP+2v8D/tr/A/7a/wP+2v8D/tr/A/7a/ - wP/Bw8L/t7i41QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAD///8ADgAfAA4AHwAPAB8AD4B/AA/g/wAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAA - AQAAAAEA8AABAPAAAQDwAAEA8AABAPAAAQD///8A////AP///wAoAAAAEAAAACAAAAABACAAAAAAAEAE - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAJGQkP97eXn/kZCQ/wAAAAAAAAAAAAAAALu8vP+7vLz/tLW1/5uc - nP+bnJz/n6Cg/6CgoP8AAAAAAAAAAAAAAAC0tLTTlJSU/56ens0AAAAAAAAAAAAAAADS0tKCyMnJ/8TG - xv+5urr/qqur/6CgoP+goKBhAAAAAAAAAAAAAAAAq6ur97+/v/+lpaX/AAAAAAAAAAAAAAAAAAAAAN7e - 3ja5urr/ioqK/5eXl+ygoKA2AAAAAAAAAAAAAAAAAAAAAK6urvfR0dH/q6ur/8PExIbAwcH/vr+//7u8 - vP+4ubn/tba2/6qqqv+oqKj/pqam/6SkpP+ioqL/oKCg/6CgoJWtra330dHR/6urq//Nz8//zc/P/83O - z//Mzs7/y83N/8rMzP/Hycn/xsnJ/8bJyf/FyMj/xcjI/8THx/+goKD/ra2t99HR0f+rq6v/ztDQ/62u - rv+nDw//qxMN/6gODv+pICD/tD8v/9QbAf/UHQH/2B0A/8slA//FyMj/oaGh/66urvfR0dH/rKys/8/R - 0f+rrKz/siwj/7MxIv+5HQz/ycXE/8xxY//XRyz/3kAl/+NEJ//dOxD/xMfH/6Ojo/+WvaP3APJI/2LC - gv/P0dH/qamp/7RANf+0LyL/19bV/+7u7v/4+Pj/s42H/9tYO//dXEH/3k8t/8XIyP+lpaX/q6ur90hE - Q/97eXn/0dLS/6Ojo/+4Qzr/wEE0/9zKyf/YGgD/1IJ1///////WalP/1WxZ/9piSP/Hysr/q6ur/76+ - vpS+vr7/vr6+wNDS0v+ioqL/vC8k/8UcCf/aHgD/5hsA//9ZNv/zpJD/2dnZ//9qPP//ZTH/x8rK/62u - rv8AAAAAAAAAAAAAAADR0tP/oKCg/8UYB//UGAH/4yYA/+0aAP//cEv//2tI/+Hh4f/Aurj//2s//8jK - y/+wsbH/AAAAAAAAAAAAAAAA0dLT/6CgoP/KBAT/3A8A/+gSAP/3FgD//388/9aCXP/Xg1n/2oFR/99z - Q//Jy8v/srOz/wAAAAAAAAAAAAAAANHS0/+goKD/oKCg/6CgoP+ioqL/pKSk/62urv+wsLD/srOz/7W2 - tv+4ubn/ycvM/7W2tv8AAAAAAAAAAAAAAADR0tN40dLT/9HS0//R0tP/0NLS/9DR0v/O0ND/zc/P/83P - z//Mzs7/y83N/8rMzP+4ubmVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAcBwAAHAcAAB4PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAA4AAAAOAAAADgAAAA4AAAAP//AAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABM + BQAAAk1TRnQBSQFMAwEBAAEEAQABBAEAARABAAEQAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABQAMA + ARADAAEBAQABIAYAARD/AC8AAzsBZAPVAf8D4gH/A9YB/wPIAf8DOQFfBAADAQEC3AADkAHnA8cB/wPU + Af8D4QH/A88B/wO9Af8DtgH/A7AB/wMnAToDEQEX2AADkQHhA78B/wPJAf8C0gHUAf8DxgH/A6IB/wOE + Af8DgwHvAxIBGAMOARPEAAGeAZsBmQH/AuAB4QH/A0cB+wObAfgDQQFzBAADLwFJA4gB7gJ0AXIB/wFx + AW4BcQH/AZ4BnwGhAf8BtwHHAcsB/wHPAekB7AH/AtMB1AH/yAABwAG6AbsB/wGtAqwB/wGqAqkB/wPX + Af8BWQJYAeEBZAFmAWkB8QGxAcIBxwH/AawByAHOAf8BvQHGAcgB/wHHAawBqgH/AcUBZgFWAf8BrwEC + AQAB/wGZAgAB/wHDAeAB5AH/yAAB0gHNAcwB/wGuAawBrwH/A5cB/wGnAbUBtgH/AboCpwH/AaIBTQFP + Af8BjgEOAQ0B/wGBAgAB/wGNAgAB/wGvAS4BGgH/AbsBOQEmAf8BwgE+ASoB/wHIASYBDQH/AcYB6QHt + Af/IAAHeAdYB2AH/Aa4BsAGuAf8DoAH/AYEBKAEkAf8BjQESAQYB/wGLARQBCQH/AZABDQEAAf8BsQGn + AaUB/wFzARsBEwH/AdEBYgFPAf8B1wFfAUsB/wHdAWQBTwH/AeYBXAFEAf8B0AHlAeYB/wMgAS7EAAHR + As0B/wGyArEB/wOzAf8BmgFzAXYB/wGeATcBLwH/AZcBLgEkAf8B1wHMAcsB/wGbAWABWAH/A98B/wHi + AY8BggH/AekBhwFyAf8B7gGKAXYB/wHzAY8BdgH/AdUB0gHRAf8DOAFdxAABrwGqAagB/wG9AbQBuwH/ + Ab8BvQG/Af8BsAG2AboB/wGuAVMBTAH/AZUBFgEPAf8BlAEzASUB/wG3ARQBAAH/AbMBZQFiAf8BuQGw + Aa4B/wH1AagBmQH/AfoBrQGcAv8BsQGlAf8B7QG/AbcB/wNIAYHFAAF4ATYB/wHYAcQB0AH/A8oB/wG8 + Ac4B0QH/Ab4BbQFlAf8BmwIAAf8BvgEWAQAB/wHWASEBAAH/AfABKQEBAf8B4AHdAdwB/wGnAYoBggL/ + AcwBvAL/AdUBxQH/AfQBwwGtAf8DeAHgxAABdwFxAXQB/wH1AfYB+QH/A+EB/wHBAdIB1wH/AaEBJQEW + Af8BrwEUAQAB/wHHARoBAAH/Ad8BIwEAAf8B+wF0AVoB/wH4AdUByAH/A9QB/wHJAbMBqAL/AeQB2wL/ + AcoBswH/AZsBnQGgAf/IAAMRARcDYQG4AcMBzwHSAf8BjQIAAf8BtQEZAQAB/wHPAR0BAAH/AeYBFQEA + Av8B4gHXAv8B7QHpAf8B7gHiAdoB/wHsAdsB0gL/AeUB1QH/AfsBuwGeAf8BsQG6AbwB/9AAA0ABbQGF + AgAB/wGzAQUBAAH/Ab8BKQEXAf8B1gFUAUIB/wHVAa4BpAH/AdABtQGvAf8BxwLKAf8BygHRAdQB/wF4 + AX0BfwHNAU8CUAGPAzMBUdAAAwkBDAFuAXEBcwG+Az8BawMmATgDFgEe/wDdAAFCAU0BPgcAAT4DAAEo + AwABQAMAARADAAEBAQABAQUAAYAXAAP/AQAC/wYAAf4BBQYAAfwHAAH8BwABggEBBgABgAEBBgABgAEB + BgABgAcAAYAHAAGABwABgAcAAYAHAAHABwAB8AcAAfABfwYAAv8GAAs= - - 127, 17 - - - 314, 17 - - - 511, 17 - 53 - + \ No newline at end of file -- 2.11.0