OSDN Git Service

AppliStation-GUI,ソフトコレクションファイルのエクスポートにファイルの種類を選べる機能を追加
authorttp <ttp@users.sourceforge.jp>
Sun, 21 Mar 2010 14:26:21 +0000 (23:26 +0900)
committerttp <ttp@users.sourceforge.jp>
Sun, 21 Mar 2010 14:26:21 +0000 (23:26 +0900)
AppliStation/PackageListViewForm.cs
na-get-lib/NaGet.Packages/PackageCollectionFileData.cs

index b72d9f8..5e4dedb 100644 (file)
@@ -315,6 +315,20 @@ namespace AppliStation
                void SoftCollectionFileExportToolStripMenuItemClick(object sender, EventArgs e)\r
                {\r
                        string pwd = Directory.GetCurrentDirectory();\r
+                       string[] softtargets = new string[]{"PCにインストールされたソフト", "AppliStation内でインストールされたソフト", "インストールされたソフトすべて"};\r
+                       int softtargetid = softtargets.Length - 1;\r
+                       \r
+                       {\r
+                               AppliStation.Util.OptionDialog optdialog = AppliStation.Util.OptionDialog.createOptionDialog(\r
+                                       "ソフトコレクションファイルに出力するソフトの種類を選択してください。", "エクスポート", "エクスポートするソフト",\r
+                                       System.Drawing.SystemIcons.Question, MessageBoxButtons.OKCancel,\r
+                                       softtargets, softtargets.Length-1);\r
+                               if (optdialog.ShowDialog(this) != DialogResult.OK) {\r
+                                       return; // canceled\r
+                               } else if (optdialog.UserInputValue != null) {\r
+                                       softtargetid = (int) optdialog.UserInputValue;\r
+                               }\r
+                       }\r
                        \r
                        SaveFileDialog fd = new SaveFileDialog();\r
                        fd.Filter = "ソフトコレクションファイル (*.txt)|*.txt";\r
@@ -328,7 +342,18 @@ namespace AppliStation
                                \r
                                PackageCollectionFileData collectionData = new PackageCollectionFileData();\r
                                \r
-                               collectionData.loadPackages(pkgListsMan.GetAllInstalledPackages());\r
+                               switch (softtargetid) {\r
+                                       case 0: // PCにインストール\r
+                                               collectionData.loadPackages(pkgListsMan.SystemInstalledPkgList.GetEnumerator());\r
+                                               break;\r
+                                       case 1: // AppliStation内にインストール\r
+                                               collectionData.loadPackages(pkgListsMan.InstalledPkgList.GetEnumerator());\r
+                                               break;\r
+                                       case 2: // すべて\r
+                                       default:\r
+                                               collectionData.loadPackages(pkgListsMan.GetAllInstalledPackages());\r
+                                               break;\r
+                               }\r
                                \r
                                try {\r
                                        collectionData.saveAs(fd.FileName);\r
index 6b380cf..4fcefa0 100644 (file)
@@ -28,6 +28,20 @@ namespace NaGet.Packages
                }\r
                \r
                /// <summary>\r
+               /// パッケージ名をリストに入れる\r
+               /// </summary>\r
+               /// <param name="pkgs">パッケージ情報</param>\r
+               public void loadPackages<T>(IEnumerator<T> e) where T : Package\r
+               {\r
+                       while(e.MoveNext()) {\r
+                               T pkg = e.Current;\r
+                               if (this.IndexOf(pkg.Name) < 0) {\r
+                                       this.Add(pkg.Name);\r
+                               }\r
+                       }\r
+               }\r
+               \r
+               /// <summary>\r
                /// このリストからパッケージのリストを得る\r
                /// </summary>\r
                /// <returns>パッケージのリスト</returns>\r