OSDN Git Service

na-get-lib,ひとまず依存関係解決関数群を作った。
[applistation/AppliStation.git] / AppliStation / PackageListViewForm.cs
index 8634bc8..4b5dfaa 100644 (file)
@@ -28,6 +28,7 @@ namespace AppliStation
                        pkgListsMan = new PackageListsManager();\r
                        \r
                        this.Icon = Icon.ExtractAssociatedIcon(Application.ExecutablePath);\r
+                       AppliStation.Util.NativeMethods.ListView_EnableVistaExplorerTheme(packageListView);\r
                }\r
                \r
                private void ShowInfoToDetailBoxFor(Package pkg)\r
@@ -125,6 +126,13 @@ namespace AppliStation
                        }\r
                }\r
                \r
+               private void buildInstalledDirectoryMenuItemStripChildren(InstalledPackage pkg)\r
+               {\r
+                       installedDirectoryStripMenuItem.BaseFolderPath = pkg.UninstallInfo.InstallLocation;\r
+               }\r
+               \r
+               #region packageListViewのSort関連\r
+               \r
                AppliStation.Util.ListViewItemSortComparer packageListViewSortComparer;\r
 \r
                void PackageListViewColumnClick(object sender, ColumnClickEventArgs e)\r
@@ -157,6 +165,8 @@ namespace AppliStation
                        }\r
                }\r
                \r
+               #endregion\r
+               \r
                void Form_OnLoad(object sender, EventArgs e)\r
                {\r
                        System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PackageListViewForm));\r
@@ -540,18 +550,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
@@ -561,9 +572,18 @@ namespace AppliStation
                                webOfficialToolStripMenuItem.Enabled = ! (pkg.Url == null || string.IsNullOrEmpty(pkg.Url.Href));\r
                                // webGoogleSearchToolStripMenuItem always active.\r
                                \r
-                               openInstalledDirectoryStripMenuItem.Visible = isInstalledPackage &&\r
+                               bool installedDirectoryStripMenuItemVisible = isInstalledPackage &&\r
                                        ( (pkg.Type == InstallerType.ARCHIVE) || Directory.Exists(((InstalledPackage) pkg).UninstallInfo.InstallLocation) );\r
+                               installedDirectoryStripMenuItem.Visible = installedDirectoryStripMenuItemVisible;\r
+                               if (installedDirectoryStripMenuItemVisible) {\r
+                                       buildInstalledDirectoryMenuItemStripChildren((InstalledPackage) pkg);\r
+                               }\r
                        }\r
+                       \r
+                       toolStripSeparator1.Visible = selectionIsOnlyOne;\r
+                       webResourcesToolStripMenuItem.Visible = selectionIsOnlyOne;\r
+                       if (! selectionIsOnlyOne) installedDirectoryStripMenuItem.Visible = false;\r
+                       propertiesToolStripMenuItem.Visible = selectionIsOnlyOne;\r
                }\r
                \r
                private IEnumerable<Package> getUpdatedPackages(PackageList<InstalledPackage> installedPkgList, PackageList<Package> avaiablePkgList, IComparer<string> verComp)\r