OSDN Git Service

AppliStation-GUI,インストール確認ダイアログにて、非同期の依存解決に対応
authorttp <ttp@users.sourceforge.jp>
Sat, 13 Sep 2008 14:01:22 +0000 (14:01 +0000)
committerttp <ttp@users.sourceforge.jp>
Sat, 13 Sep 2008 14:01:22 +0000 (14:01 +0000)
git-svn-id: http://localhost/svn/AppliStation/trunk@976 34ed2c89-c49f-4a4b-abdb-c318350108cf

AppliStation/InstallationConfirmForm.Designer.cs
AppliStation/InstallationConfirmForm.cs
AppliStation/InstallationConfirmForm.resx

index 2acfe32..9b3653a 100644 (file)
@@ -158,9 +158,9 @@ namespace AppliStation
                        this.instsListView.TabIndex = 2;\r
                        this.instsListView.UseCompatibleStateImageBehavior = false;\r
                        this.instsListView.View = System.Windows.Forms.View.Details;\r
-                       this.instsListView.DrawColumnHeader += new System.Windows.Forms.DrawListViewColumnHeaderEventHandler(this.InstsListViewDrawColumnHeader);\r
                        this.instsListView.ItemChecked += new System.Windows.Forms.ItemCheckedEventHandler(this.InstsListViewItemChecked);\r
                        this.instsListView.DrawSubItem += new System.Windows.Forms.DrawListViewSubItemEventHandler(this.InstsListViewDrawSubItem);\r
+                       this.instsListView.DrawColumnHeader += new System.Windows.Forms.DrawListViewColumnHeaderEventHandler(this.InstsListViewDrawColumnHeader);\r
                        // \r
                        // nameColumnHeader\r
                        // \r
@@ -190,32 +190,32 @@ namespace AppliStation
                                                                        this.selectAllInstsStripMenuItem,\r
                                                                        this.unselectAllInstsStripMenuItem});\r
                        this.instListViewContextMenuStrip.Name = "packageListViewContextMenuStrip";\r
-                       this.instListViewContextMenuStrip.Size = new System.Drawing.Size(263, 76);\r
+                       this.instListViewContextMenuStrip.Size = new System.Drawing.Size(220, 76);\r
                        this.instListViewContextMenuStrip.Opening += new System.ComponentModel.CancelEventHandler(this.InstsListViewContextMenuStripOpening);\r
                        // \r
                        // silentInstallStripMenuItem\r
                        // \r
                        this.silentInstallStripMenuItem.Name = "silentInstallStripMenuItem";\r
-                       this.silentInstallStripMenuItem.Size = new System.Drawing.Size(262, 22);\r
+                       this.silentInstallStripMenuItem.Size = new System.Drawing.Size(219, 22);\r
                        this.silentInstallStripMenuItem.Text = "サイレントインストールをする(&S)";\r
                        this.silentInstallStripMenuItem.Click += new System.EventHandler(this.SilentInstallStripMenuItemClick);\r
                        // \r
                        // instListToolStripSeparator\r
                        // \r
                        this.instListToolStripSeparator.Name = "instListToolStripSeparator";\r
-                       this.instListToolStripSeparator.Size = new System.Drawing.Size(259, 6);\r
+                       this.instListToolStripSeparator.Size = new System.Drawing.Size(216, 6);\r
                        // \r
                        // selectAllInstsStripMenuItem\r
                        // \r
                        this.selectAllInstsStripMenuItem.Name = "selectAllInstsStripMenuItem";\r
-                       this.selectAllInstsStripMenuItem.Size = new System.Drawing.Size(262, 22);\r
+                       this.selectAllInstsStripMenuItem.Size = new System.Drawing.Size(219, 22);\r
                        this.selectAllInstsStripMenuItem.Text = "全て選択(&A)";\r
                        this.selectAllInstsStripMenuItem.Click += new System.EventHandler(this.SelectAllInstsStripMenuItemClick);\r
                        // \r
                        // unselectAllInstsStripMenuItem\r
                        // \r
                        this.unselectAllInstsStripMenuItem.Name = "unselectAllInstsStripMenuItem";\r
-                       this.unselectAllInstsStripMenuItem.Size = new System.Drawing.Size(262, 22);\r
+                       this.unselectAllInstsStripMenuItem.Size = new System.Drawing.Size(219, 22);\r
                        this.unselectAllInstsStripMenuItem.Text = "全ての選択を解除(&U)";\r
                        this.unselectAllInstsStripMenuItem.Click += new System.EventHandler(this.UnselectAllInstsStripMenuItemClick);\r
                        // \r
@@ -239,6 +239,7 @@ namespace AppliStation
                        this.ShowInTaskbar = false;\r
                        this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;\r
                        this.Text = "ソフトのインストール";\r
+                       this.Shown += new System.EventHandler(this.InstallationConfirmFormShown);\r
                        this.tableLayoutPanel1.ResumeLayout(false);\r
                        this.tableLayoutPanel1.PerformLayout();\r
                        this.btnPanel.ResumeLayout(false);\r
index 63aa10a..f579f55 100644 (file)
@@ -57,15 +57,19 @@ namespace AppliStation
                        AppliStation.Util.NativeMethods.ListView_SetDoubleBuffer(instsListView, true);\r
                }\r
                \r
+               #region インストールリスト表示処理部\r
+               \r
+               #region インストールリストの反映\r
+               \r
                /// <summary>\r
                /// インストールリストを更新したなどで、リストの表示を更新する\r
                /// </summary>\r
                private void updateInstsListView()\r
                {\r
                        instsListView.Items.Clear();\r
-\r
-                       updateInstsListViewPerGroup(requiredInstallations, instsListView.Groups["requires"], true);\r
-                       updateInstsListViewPerGroup(selectedInstallations, instsListView.Groups["install"], false);\r
+                       \r
+                       addInstsListItemPerGroup(requiredInstallations, instsListView.Groups["requires"], true);\r
+                       addInstsListItemPerGroup(selectedInstallations, instsListView.Groups["install"], false);\r
                        \r
                        InstsListViewItemChecked(instsListView, null);\r
                        instsListView.Refresh();\r
@@ -77,11 +81,9 @@ namespace AppliStation
                /// <param name="insts">インストールリスト</param>\r
                /// <param name="group">対象のグループ</param>\r
                /// <param name="firstAppend">先頭に追加するか</param>\r
-               private void updateInstsListViewPerGroup(IEnumerable<Installation> insts, ListViewGroup group, bool firstAppend)\r
+               private void addInstsListItemPerGroup(IEnumerable<Installation> insts, ListViewGroup group, bool firstAppend)\r
                {\r
                        // まず所属グループのアイテムをすべて削除する\r
-                       group.Items.Clear();\r
-                       \r
                        if (insts == null) return;\r
                        \r
                        List<ListViewItem> itemsToAdd = new List<ListViewItem>();\r
@@ -118,6 +120,8 @@ namespace AppliStation
                                instsListView.Items.AddRange(itemsToAdd.ToArray());\r
                        }\r
                }\r
+\r
+               #endregion\r
                \r
                /// <summary>\r
                /// アイテムのサイレントインストール部分の表示の更新を行う。\r
@@ -176,11 +180,13 @@ namespace AppliStation
                \r
                #endregion\r
                \r
+               #endregion\r
+               \r
                void InstsListViewItemChecked(object sender, ItemCheckedEventArgs e)\r
                {\r
                        System.Windows.Forms.ListView.CheckedListViewItemCollection checkeds = instsListView.CheckedItems;\r
                        \r
-                       okButton.Enabled = checkeds != null && checkeds.Count > 0;\r
+                       okButton.Enabled = (checkeds != null) && (checkeds.Count > 0);\r
                }\r
                                \r
                void InstsListViewContextMenuStripOpening(object sender, System.ComponentModel.CancelEventArgs e)\r
@@ -238,6 +244,33 @@ namespace AppliStation
                        }\r
                        instsListView.Refresh();\r
                }\r
+\r
+               void InstallationConfirmFormShown(object sender, EventArgs e)\r
+               {\r
+                       System.Threading.Thread thread = new System.Threading.Thread(\r
+                               new System.Threading.ThreadStart(resolveDependecies));\r
+                       thread.Start();\r
+               }\r
+               \r
+               /// <summary>\r
+               /// 依存関係を解決する\r
+               /// </summary>\r
+               private void resolveDependecies()\r
+               {\r
+                       if (requiredInstallations == null) {\r
+                               Installation[] resolved, dependencies;\r
+                               \r
+                               DependeciesResolver.ResolveInstallations(\r
+                                       selectedInstallations,\r
+                                       pkgListMan,\r
+                                       out resolved,\r
+                                       out dependencies);\r
+                               \r
+                               requiredInstallations = dependencies;\r
+                               \r
+                               updateInstsListView();\r
+                       }\r
+               }\r
                \r
                /// <summary>\r
                /// インストールするよう選択されたパッケージの配列\r
@@ -305,6 +338,6 @@ namespace AppliStation
                }\r
                \r
                #endregion\r
-               \r
+\r
        }\r
 }\r
index 547caa4..ed303b4 100644 (file)
     <value>\r
         AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w\r
         LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0\r
-        ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAC4\r
+        ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADQ\r
         BAAAAk1TRnQBSQFMAwEBAAEEAQABBAEAAQ4BAAEOAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABOAMA\r
-        AQ4DAAEBAQABIAUAAUABDB4AAwIBAwMSARkBIgIhATEBLQIsAUQBcAJBAbABgwEoAU8B6QGJAScBTQHo\r
-        AYkBLAFGAeQBjgEtAUMB4gGMASwBSQHjAWYCRAGhsAADDgETAV4CQwGWAYACPAHCAZABNAExAdYBkwEw\r
-        AS8B3AFUASQBlQH7AkcB8QH/AlQB8gH/AicB7wH/AkkB8gH/AlAB8gH/AYwBLAFJAeOsAAMBAQIBbwJC\r
-        Aa0BnQFlATsB/wGbAWABMgH/AZsBXgEuAf8BnAFeAS4B/wFDATsBuwH/AkIB8QH/AtgB/AH/AnEB9QH/\r
-        AtgB/AH/AkkB8gH/AY4BLQFDAeKsAAEiAiEBMQGbAVcBJwH7AZ8BYAEvAf8BogFiATAB/wGkAWMBMQH/\r
-        AagBawE7Af8BRQE/AcIB/wInAe8B/wJhAfQB/wL4Af4B/wJxAfUB/wInAe8B/wGOAS0BQwHirAABOQI2\r
-        AVoBpQFpAT0B/wGfAWABLwH/AaoBZwEzAf8BrQFpATQB/wG6AYgBYAH/AUkBRAHHAf8CSwHyAf8C2wH8\r
-        Af8CYQH0Af8C2AH8Af8CVAHyAf8BjgEtAUMB4qwAARUCFAEcAacBQQEpAfMBqQFmATMB/wGvAWoBNQH/\r
-        AbUBbgE2Af8B0gGzAZsB/wFMAUoBzwH/Aj4B8QH/AksB8gH/AicB7wH/AkIB8QH/AkcB8QH/AY4BLQFD\r
-        AeKwAAFmAkQBoQGtAW0BPAH/AbABawE2Af8BpQFzAUoB/wGaApwB/wFSAVcBqwH/AUABOgG8Af8BRAE7\r
-        AbsB/wFFAT0BvAH/AYMBKQFXAe0BjwExAT8B2gFaAkQBkbAAAwsBDwGDAjwBwwGRAXYBXQH/ATsBhQGv\r
-        Af8BLwGUAdIB/wEtAZQB0wH/AS4BfAGtAf8BcQFjAVsB/gFmAkQBoQMBAQK8AAMKAQ0BgwE+AU0B6gE5\r
-        AaEB4gH/AUIBpgHjAf8BPwGkAeMB/wEvAZwB4AH/AWYBUgFzAfQDGgEkwAABQQI7AWgBPAGjAeIB/wFX\r
-        Aa8B5gH/AXIBvAHqAf8BbQG5AeoB/wFLAaoB5QH/ATEBngHhAf8BUAJCAYLAAAFRAkMBgwFGAagB5AH/\r
-        AWwBuQHpAf8BnQHPAfEB/wGQAckB7wH/AV0BsgHnAf8BNQGgAeEB/wFeAkMBlsAAATgCNQFZAUEBpAHi\r
-        Af8BYQG0AegB/wGFAcQB7QH/AXsBwAHsAf8BVAGuAeYB/wE0AZ8B4QH/AUgCPwF1wwABAQF+Aj8BvgFK\r
-        AakB5QH/AVUBrwHmAf8BUQGsAeUB/wFBAaUB4wH/AYgBOgE9Ac4DBgEIxAADCgENAWECRQGaAYoBOgE8\r
-        AdABjgE4AT4B1AFmAkQBoQMRARe4AAFCAU0BPgcAAT4DAAEoAwABOAMAAQ4DAAEBAQABAQUAAXAXAAP/\r
-        AQAB4AcAAcAHAAGABwABgAcAAYAHAAGABwABwAcAAcABDAYAAeABHAYAAeABHAYAAeABHAYAAeABHAYA\r
-        AeABHAYAAfABPAYACw==\r
+        AQ4DAAEBAQABIAUAAUABDB4AAdECAAEDAcACAgEZAbECBgExAacCDAFEAY4CLQGwAYoBJQFHAekBkAEj\r
+        AUUB6AGQASYBPwHkAZYBKAE6AeIBlAEmAUEB4wGOAisBobAAAcQCAQETAY4CJwGWAZMCLgHCAZsBLAEo\r
+        AdYBnAIpAdwBVgEiAZMB+wJHAfEB/wJUAfIB/wInAe8B/wJJAfIB/wJQAfIB/wGUASYBQQHjrAAB0QIA\r
+        AQIBjwItAa0BnQFlATsB/wGbAWABMgH/AZsBXgEuAf8BnAFeAS4B/wFDATsBuwH/AkIB8QH/AtgB/AH/\r
+        AnEB9QH/AtgB/AH/AkkB8gH/AZYBKAE6AeKsAAGxAgYBMQGcAVYBJQH7AZ8BYAEvAf8BogFiATAB/wGk\r
+        AWMBMQH/AagBawE7Af8BRQE/AcIB/wInAe8B/wJhAfQB/wL4Af4B/wJxAfUB/wInAe8B/wGWASgBOgHi\r
+        rAABnQITAVoBpQFpAT0B/wGfAWABLwH/AaoBZwEzAf8BrQFpATQB/wG6AYgBYAH/AUkBRAHHAf8CSwHy\r
+        Af8C2wH8Af8CYQH0Af8C2AH8Af8CVAHyAf8BlgEoAToB4qwAAb4CAgEcAagBPgEmAfMBqQFmATMB/wGv\r
+        AWoBNQH/AbUBbgE2Af8B0gGzAZsB/wFMAUoBzwH/Aj4B8QH/AksB8gH/AicB7wH/AkIB8QH/AkcB8QH/\r
+        AZYBKAE6AeKwAAGOAisBoQGtAW0BPAH/AbABawE2Af8BpQFzAUoB/wGaApwB/wFSAVcBqwH/AUABOgG8\r
+        Af8BRAE7AbsB/wFFAT0BvAH/AYkBJQFRAe0BmAEqATYB2gGOAicBkbAAAcgCAQEPAZUCLgHDAZEBdgFd\r
+        Af8BOwGFAa8B/wEvAZQB0gH/AS0BlAHTAf8BLgF8Aa0B/wFyAWMBWwH+AY4CKwGhAdECAAECvAAByQIB\r
+        AQ0BiAE5AUcB6gE5AaEB4gH/AUIBpgHjAf8BPwGkAeMB/wEvAZwB4AH/AWsBTgFtAfQBuQIEASTAAAGY\r
+        AhgBaAE8AaMB4gH/AVcBrwHmAf8BcgG8AeoB/wFtAbkB6gH/AUsBqgHlAf8BMQGeAeEB/wGQAiIBgsAA\r
+        AZECIgGDAUYBqAHkAf8BbAG5AekB/wGdAc8B8QH/AZAByQHvAf8BXQGyAecB/wE1AaAB4QH/AY4CJwGW\r
+        wAABnQISAVkBQQGkAeIB/wFhAbQB6AH/AYUBxAHtAf8BewHAAewB/wFUAa4B5gH/ATQBnwHhAf8BkwId\r
+        AXXAAAHSAgABAQGUAi8BvgFKAakB5QH/AVUBrwHmAf8BUQGsAeUB/wFBAaUB4wH/AZcBLwEwAc4BzAIA\r
+        AQjEAAHJAgEBDQGPAioBmgGYAS4BMQHQAZkBLwE0AdQBjgIrAaEBwgICARe4AAFCAU0BPgcAAT4DAAEo\r
+        AwABOAMAAQ4DAAEBAQABAQUAAXAXAAP/AQAB4AcAAcAHAAGABwABgAcAAYAHAAGABwABwAcAAcABDAYA\r
+        AeABHAYAAeABHAYAAeABHAYAAeABHAYAAeABHAYAAfABPAYACw==\r
 </value>\r
   </data>\r
   <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">\r