From: ttp Date: Sat, 13 Sep 2008 14:01:22 +0000 (+0000) Subject: AppliStation-GUI,インストール確認ダイアログにて、非同期の依存解決に対応 X-Git-Tag: v1.1.0~16 X-Git-Url: http://git.sourceforge.jp/view?a=commitdiff_plain;h=492b1b9315ce9ecbe6405d79e3bf3cfb5cde02c7;p=applistation%2FAppliStation.git AppliStation-GUI,インストール確認ダイアログにて、非同期の依存解決に対応 git-svn-id: http://localhost/svn/AppliStation/trunk@976 34ed2c89-c49f-4a4b-abdb-c318350108cf --- diff --git a/AppliStation/InstallationConfirmForm.Designer.cs b/AppliStation/InstallationConfirmForm.Designer.cs index 2acfe32..9b3653a 100644 --- a/AppliStation/InstallationConfirmForm.Designer.cs +++ b/AppliStation/InstallationConfirmForm.Designer.cs @@ -158,9 +158,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.DrawColumnHeader += new System.Windows.Forms.DrawListViewColumnHeaderEventHandler(this.InstsListViewDrawColumnHeader); // // nameColumnHeader // @@ -190,32 +190,32 @@ namespace AppliStation this.selectAllInstsStripMenuItem, this.unselectAllInstsStripMenuItem}); this.instListViewContextMenuStrip.Name = "packageListViewContextMenuStrip"; - this.instListViewContextMenuStrip.Size = new System.Drawing.Size(263, 76); + this.instListViewContextMenuStrip.Size = new System.Drawing.Size(220, 76); this.instListViewContextMenuStrip.Opening += new System.ComponentModel.CancelEventHandler(this.InstsListViewContextMenuStripOpening); // // silentInstallStripMenuItem // this.silentInstallStripMenuItem.Name = "silentInstallStripMenuItem"; - this.silentInstallStripMenuItem.Size = new System.Drawing.Size(262, 22); + this.silentInstallStripMenuItem.Size = new System.Drawing.Size(219, 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(259, 6); + this.instListToolStripSeparator.Size = new System.Drawing.Size(216, 6); // // selectAllInstsStripMenuItem // this.selectAllInstsStripMenuItem.Name = "selectAllInstsStripMenuItem"; - this.selectAllInstsStripMenuItem.Size = new System.Drawing.Size(262, 22); + this.selectAllInstsStripMenuItem.Size = new System.Drawing.Size(219, 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(262, 22); + this.unselectAllInstsStripMenuItem.Size = new System.Drawing.Size(219, 22); this.unselectAllInstsStripMenuItem.Text = "全ての選択を解除(&U)"; this.unselectAllInstsStripMenuItem.Click += new System.EventHandler(this.UnselectAllInstsStripMenuItemClick); // @@ -239,6 +239,7 @@ namespace AppliStation this.ShowInTaskbar = false; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; this.Text = "ソフトのインストール"; + this.Shown += new System.EventHandler(this.InstallationConfirmFormShown); this.tableLayoutPanel1.ResumeLayout(false); this.tableLayoutPanel1.PerformLayout(); this.btnPanel.ResumeLayout(false); diff --git a/AppliStation/InstallationConfirmForm.cs b/AppliStation/InstallationConfirmForm.cs index 63aa10a..f579f55 100644 --- a/AppliStation/InstallationConfirmForm.cs +++ b/AppliStation/InstallationConfirmForm.cs @@ -57,15 +57,19 @@ namespace AppliStation AppliStation.Util.NativeMethods.ListView_SetDoubleBuffer(instsListView, true); } + #region インストールリスト表示処理部 + + #region インストールリストの反映 + /// /// インストールリストを更新したなどで、リストの表示を更新する /// private void updateInstsListView() { instsListView.Items.Clear(); - - updateInstsListViewPerGroup(requiredInstallations, instsListView.Groups["requires"], true); - updateInstsListViewPerGroup(selectedInstallations, instsListView.Groups["install"], false); + + addInstsListItemPerGroup(requiredInstallations, instsListView.Groups["requires"], true); + addInstsListItemPerGroup(selectedInstallations, instsListView.Groups["install"], false); InstsListViewItemChecked(instsListView, null); instsListView.Refresh(); @@ -77,11 +81,9 @@ namespace AppliStation /// インストールリスト /// 対象のグループ /// 先頭に追加するか - private void updateInstsListViewPerGroup(IEnumerable insts, ListViewGroup group, bool firstAppend) + private void addInstsListItemPerGroup(IEnumerable insts, ListViewGroup group, bool firstAppend) { // まず所属グループのアイテムをすべて削除する - group.Items.Clear(); - if (insts == null) return; List itemsToAdd = new List(); @@ -118,6 +120,8 @@ namespace AppliStation instsListView.Items.AddRange(itemsToAdd.ToArray()); } } + + #endregion /// /// アイテムのサイレントインストール部分の表示の更新を行う。 @@ -176,11 +180,13 @@ namespace AppliStation #endregion + #endregion + void InstsListViewItemChecked(object sender, ItemCheckedEventArgs e) { System.Windows.Forms.ListView.CheckedListViewItemCollection checkeds = instsListView.CheckedItems; - okButton.Enabled = checkeds != null && checkeds.Count > 0; + okButton.Enabled = (checkeds != null) && (checkeds.Count > 0); } void InstsListViewContextMenuStripOpening(object sender, System.ComponentModel.CancelEventArgs e) @@ -238,6 +244,33 @@ namespace AppliStation } instsListView.Refresh(); } + + void InstallationConfirmFormShown(object sender, EventArgs e) + { + System.Threading.Thread thread = new System.Threading.Thread( + new System.Threading.ThreadStart(resolveDependecies)); + thread.Start(); + } + + /// + /// 依存関係を解決する + /// + private void resolveDependecies() + { + if (requiredInstallations == null) { + Installation[] resolved, dependencies; + + DependeciesResolver.ResolveInstallations( + selectedInstallations, + pkgListMan, + out resolved, + out dependencies); + + requiredInstallations = dependencies; + + updateInstsListView(); + } + } /// /// インストールするよう選択されたパッケージの配列 @@ -305,6 +338,6 @@ namespace AppliStation } #endregion - + } } diff --git a/AppliStation/InstallationConfirmForm.resx b/AppliStation/InstallationConfirmForm.resx index 547caa4..ed303b4 100644 --- a/AppliStation/InstallationConfirmForm.resx +++ b/AppliStation/InstallationConfirmForm.resx @@ -146,28 +146,28 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 - ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAC4 + ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADQ BAAAAk1TRnQBSQFMAwEBAAEEAQABBAEAAQ4BAAEOAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABOAMA - AQ4DAAEBAQABIAUAAUABDB4AAwIBAwMSARkBIgIhATEBLQIsAUQBcAJBAbABgwEoAU8B6QGJAScBTQHo - AYkBLAFGAeQBjgEtAUMB4gGMASwBSQHjAWYCRAGhsAADDgETAV4CQwGWAYACPAHCAZABNAExAdYBkwEw - AS8B3AFUASQBlQH7AkcB8QH/AlQB8gH/AicB7wH/AkkB8gH/AlAB8gH/AYwBLAFJAeOsAAMBAQIBbwJC - Aa0BnQFlATsB/wGbAWABMgH/AZsBXgEuAf8BnAFeAS4B/wFDATsBuwH/AkIB8QH/AtgB/AH/AnEB9QH/ - AtgB/AH/AkkB8gH/AY4BLQFDAeKsAAEiAiEBMQGbAVcBJwH7AZ8BYAEvAf8BogFiATAB/wGkAWMBMQH/ - AagBawE7Af8BRQE/AcIB/wInAe8B/wJhAfQB/wL4Af4B/wJxAfUB/wInAe8B/wGOAS0BQwHirAABOQI2 - AVoBpQFpAT0B/wGfAWABLwH/AaoBZwEzAf8BrQFpATQB/wG6AYgBYAH/AUkBRAHHAf8CSwHyAf8C2wH8 - Af8CYQH0Af8C2AH8Af8CVAHyAf8BjgEtAUMB4qwAARUCFAEcAacBQQEpAfMBqQFmATMB/wGvAWoBNQH/ - AbUBbgE2Af8B0gGzAZsB/wFMAUoBzwH/Aj4B8QH/AksB8gH/AicB7wH/AkIB8QH/AkcB8QH/AY4BLQFD - AeKwAAFmAkQBoQGtAW0BPAH/AbABawE2Af8BpQFzAUoB/wGaApwB/wFSAVcBqwH/AUABOgG8Af8BRAE7 - AbsB/wFFAT0BvAH/AYMBKQFXAe0BjwExAT8B2gFaAkQBkbAAAwsBDwGDAjwBwwGRAXYBXQH/ATsBhQGv - Af8BLwGUAdIB/wEtAZQB0wH/AS4BfAGtAf8BcQFjAVsB/gFmAkQBoQMBAQK8AAMKAQ0BgwE+AU0B6gE5 - AaEB4gH/AUIBpgHjAf8BPwGkAeMB/wEvAZwB4AH/AWYBUgFzAfQDGgEkwAABQQI7AWgBPAGjAeIB/wFX - Aa8B5gH/AXIBvAHqAf8BbQG5AeoB/wFLAaoB5QH/ATEBngHhAf8BUAJCAYLAAAFRAkMBgwFGAagB5AH/ - AWwBuQHpAf8BnQHPAfEB/wGQAckB7wH/AV0BsgHnAf8BNQGgAeEB/wFeAkMBlsAAATgCNQFZAUEBpAHi - Af8BYQG0AegB/wGFAcQB7QH/AXsBwAHsAf8BVAGuAeYB/wE0AZ8B4QH/AUgCPwF1wwABAQF+Aj8BvgFK - AakB5QH/AVUBrwHmAf8BUQGsAeUB/wFBAaUB4wH/AYgBOgE9Ac4DBgEIxAADCgENAWECRQGaAYoBOgE8 - AdABjgE4AT4B1AFmAkQBoQMRARe4AAFCAU0BPgcAAT4DAAEoAwABOAMAAQ4DAAEBAQABAQUAAXAXAAP/ - AQAB4AcAAcAHAAGABwABgAcAAYAHAAGABwABwAcAAcABDAYAAeABHAYAAeABHAYAAeABHAYAAeABHAYA - AeABHAYAAfABPAYACw== + AQ4DAAEBAQABIAUAAUABDB4AAdECAAEDAcACAgEZAbECBgExAacCDAFEAY4CLQGwAYoBJQFHAekBkAEj + AUUB6AGQASYBPwHkAZYBKAE6AeIBlAEmAUEB4wGOAisBobAAAcQCAQETAY4CJwGWAZMCLgHCAZsBLAEo + AdYBnAIpAdwBVgEiAZMB+wJHAfEB/wJUAfIB/wInAe8B/wJJAfIB/wJQAfIB/wGUASYBQQHjrAAB0QIA + AQIBjwItAa0BnQFlATsB/wGbAWABMgH/AZsBXgEuAf8BnAFeAS4B/wFDATsBuwH/AkIB8QH/AtgB/AH/ + AnEB9QH/AtgB/AH/AkkB8gH/AZYBKAE6AeKsAAGxAgYBMQGcAVYBJQH7AZ8BYAEvAf8BogFiATAB/wGk + AWMBMQH/AagBawE7Af8BRQE/AcIB/wInAe8B/wJhAfQB/wL4Af4B/wJxAfUB/wInAe8B/wGWASgBOgHi + rAABnQITAVoBpQFpAT0B/wGfAWABLwH/AaoBZwEzAf8BrQFpATQB/wG6AYgBYAH/AUkBRAHHAf8CSwHy + Af8C2wH8Af8CYQH0Af8C2AH8Af8CVAHyAf8BlgEoAToB4qwAAb4CAgEcAagBPgEmAfMBqQFmATMB/wGv + AWoBNQH/AbUBbgE2Af8B0gGzAZsB/wFMAUoBzwH/Aj4B8QH/AksB8gH/AicB7wH/AkIB8QH/AkcB8QH/ + AZYBKAE6AeKwAAGOAisBoQGtAW0BPAH/AbABawE2Af8BpQFzAUoB/wGaApwB/wFSAVcBqwH/AUABOgG8 + Af8BRAE7AbsB/wFFAT0BvAH/AYkBJQFRAe0BmAEqATYB2gGOAicBkbAAAcgCAQEPAZUCLgHDAZEBdgFd + Af8BOwGFAa8B/wEvAZQB0gH/AS0BlAHTAf8BLgF8Aa0B/wFyAWMBWwH+AY4CKwGhAdECAAECvAAByQIB + AQ0BiAE5AUcB6gE5AaEB4gH/AUIBpgHjAf8BPwGkAeMB/wEvAZwB4AH/AWsBTgFtAfQBuQIEASTAAAGY + AhgBaAE8AaMB4gH/AVcBrwHmAf8BcgG8AeoB/wFtAbkB6gH/AUsBqgHlAf8BMQGeAeEB/wGQAiIBgsAA + AZECIgGDAUYBqAHkAf8BbAG5AekB/wGdAc8B8QH/AZAByQHvAf8BXQGyAecB/wE1AaAB4QH/AY4CJwGW + wAABnQISAVkBQQGkAeIB/wFhAbQB6AH/AYUBxAHtAf8BewHAAewB/wFUAa4B5gH/ATQBnwHhAf8BkwId + AXXAAAHSAgABAQGUAi8BvgFKAakB5QH/AVUBrwHmAf8BUQGsAeUB/wFBAaUB4wH/AZcBLwEwAc4BzAIA + AQjEAAHJAgEBDQGPAioBmgGYAS4BMQHQAZkBLwE0AdQBjgIrAaEBwgICARe4AAFCAU0BPgcAAT4DAAEo + AwABOAMAAQ4DAAEBAQABAQUAAXAXAAP/AQAB4AcAAcAHAAGABwABgAcAAYAHAAGABwABwAcAAcABDAYA + AeABHAYAAeABHAYAAeABHAYAAeABHAYAAeABHAYAAfABPAYACw==