OSDN Git Service

AppliStation-GUI,「複数ソフト同時インストール機能」右クリックのメニュー表示の修正
authorttp <ttp@users.sourceforge.jp>
Fri, 15 Aug 2008 14:42:16 +0000 (14:42 +0000)
committerttp <ttp@users.sourceforge.jp>
Fri, 15 Aug 2008 14:42:16 +0000 (14:42 +0000)
複数個選択の場合は、下記のようにするようにした
 * 全てが未インストールの場合→「インストール」だけのメニューを出す
 * それ以外→何も出さない

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

AppliStation/PackageListViewForm.cs

index 8634bc8..4c96fa4 100644 (file)
@@ -540,18 +540,19 @@ namespace AppliStation
                \r
                void PackageListContextMenuStripOpening(object sender, System.ComponentModel.CancelEventArgs e)\r
                {\r
-                       // 選択されていないなら開かない\r
-                       if (packageListView.SelectedItems.Count <= 0) {\r
-                               e.Cancel = true;\r
-                               return;\r
-                       }\r
-                       \r
                        // メニューアイテムのインストール/アンインストールの表示はツールストリップに同じ\r
                        installToolStripMenuItem.Visible = installToolStripButton.Visible;\r
                        uninstallToolStripMenuItem.Visible = uninstallToolStripButton.Visible;\r
                        \r
+                       // インストールもアンインストールもできない状態ならば、メニューを表示しない\r
+                       if (! (installToolStripButton.Visible || uninstallToolStripButton.Visible)) {\r
+                               e.Cancel = true;\r
+                               return;\r
+                       }\r
+                       \r
                        // 選択パッケージが1つのとき\r
-                       if (packageListView.SelectedItems.Count == 1) {\r
+                       bool selectionIsOnlyOne = packageListView.SelectedItems.Count == 1;\r
+                       if (selectionIsOnlyOne) {\r
                                Package pkg = SelectedPackage<Package>();\r
                                bool isInstalledPackage = pkg is InstalledPackage;\r
                                \r
@@ -564,6 +565,11 @@ namespace AppliStation
                                openInstalledDirectoryStripMenuItem.Visible = isInstalledPackage &&\r
                                        ( (pkg.Type == InstallerType.ARCHIVE) || Directory.Exists(((InstalledPackage) pkg).UninstallInfo.InstallLocation) );\r
                        }\r
+                       \r
+                       toolStripSeparator1.Visible = selectionIsOnlyOne;\r
+                       webResourcesToolStripMenuItem.Visible = selectionIsOnlyOne;\r
+                       if (! selectionIsOnlyOne) openInstalledDirectoryStripMenuItem.Visible = false;\r
+                       propertiesToolStripMenuItem.Visible = selectionIsOnlyOne;\r
                }\r
                \r
                private IEnumerable<Package> getUpdatedPackages(PackageList<InstalledPackage> installedPkgList, PackageList<Package> avaiablePkgList, IComparer<string> verComp)\r