2 using System.Drawing;
\r
3 using System.Windows.Forms;
\r
4 using System.Threading;
\r
5 using NaGet.SubCommands;
\r
8 namespace AppliStation.Util
\r
11 /// Description of ExecutionProgressViewer.
\r
13 public partial class ExecutionProgressViewer : Form
\r
15 private NaGetTaskSet taskSet;
\r
17 private Downloader downloader;
\r
19 private Thread tasksetRunningThread = null;
\r
22 ///
\8fI
\97¹
\8e\9e\82É
\89½
\82ð
\8ds
\82¤
\82©
\82Ì
\83t
\83\89\83O
\r
24 public enum ActionOnDoneFlags {
\r
27 AutoCloseOnSuccess = 2,
\r
31 ///
\8fI
\97¹
\8e\9e\82É
\89½
\82ð
\8ds
\82¤
\82©
\r
33 public ActionOnDoneFlags ActionOnDone = ActionOnDoneFlags.FlashWindow;
\r
35 public Downloader Downloader {
\r
36 get { return downloader; }
\r
39 public ExecutionProgressViewer()
\r
42 // The InitializeComponent() call is required for Windows Forms designer support.
\r
44 InitializeComponent();
\r
46 downloader = new Downloader();
\r
47 downloader.DownloadEventRaised += delegate(object sender, DownloadEventArgs e) {
\r
48 if (InvokeRequired) {
\r
49 Invoke(new EventHandler<DownloadEventArgs>(onDownloadEvent), sender, e);
\r
51 onDownloadEvent(sender, e);
\r
56 private void onDownloadEvent(object sender, DownloadEventArgs a)
\r
58 if (a.TaskProgressPercent >= 0) {
\r
59 progressBarSub.Value = (int) a.TaskProgressPercent;
\r
60 progressBarSub.Style = ProgressBarStyle.Continuous;
\r
62 progressBarSub.Style = ProgressBarStyle.Marquee;
\r
66 case DownloadEventType.INITED:
\r
67 case DownloadEventType.CONNECTED:
\r
68 progressSubLabel.Text = a.TaskMessage;
\r
70 progressBarSub.Visible = true;
\r
71 progressSubLabel.Visible = true;
\r
73 case DownloadEventType.DOWNLOADING:
\r
74 progressSubLabel.Text = a.TaskMessage;
\r
76 case DownloadEventType.COMPLETED:
\r
77 progressBarSub.Visible = false;
\r
78 progressSubLabel.Visible = false;
\r
80 case DownloadEventType.ERROR:
\r
81 progressBarSub.Visible = false;
\r
82 progressSubLabel.Visible = false;
\r
84 logBox.SelectionColor = System.Drawing.Color.Red;
\r
85 logBox.AppendText(" [
\83G
\83\89\81[] " + a.TaskMessage + System.Environment.NewLine);
\r
86 logBox.SelectionColor = logBox.ForeColor;
\r
91 #region NaGetTaskSet
\8aÖ
\98A
\r
93 private void onTaskSetRaised(object sender, NaGetTaskSetEventArgs e)
\r
95 NaGetTaskSet taskSet = (NaGetTaskSet) sender;
\r
97 if (e.TaskProgressPercent >= 0) {
\r
98 progressBar.Value = (int) e.TaskProgressPercent;
\r
99 progressBar.Style = ProgressBarStyle.Continuous;
\r
101 progressBar.Style = ProgressBarStyle.Marquee;
\r
103 progressLabel.Text = e.TaskMessage ?? string.Empty;
\r
105 cancelButton.Enabled = taskSet.Running && taskSet.Cancelable;
\r
108 case NaGetTaskSetEventType.COMPLETED:
\r
109 logBox.AppendText("
\8a®
\97¹." + System.Environment.NewLine);
\r
110 if (taskSet.Done) {
\r
111 okButton.Enabled = true;
\r
112 cancelButton.Enabled = false;
\r
115 case NaGetTaskSetEventType.STARTED_TASKSET:
\r
116 subtitleLabel.Text = taskSet.TaskSetNames[taskSet.CurrentTaskSetIndex];
\r
117 logBox.AppendText(" " + e.TaskMessage + System.Environment.NewLine);
\r
119 case NaGetTaskSetEventType.COMPLETED_TASKSET:
\r
120 if (progressBarSub.Visible) progressBarSub.Hide();
\r
121 if (progressSubLabel.Visible) progressSubLabel.Hide();
\r
123 NativeMethods.ProgressBar_SetState(progressBar, 1); // VistaProgress
\90F
\81F
\83m
\81[
\83}
\83\8b\r
125 logBox.AppendText(string.Format(" ...
\8a®
\97¹. [{0}%]", (int) e.TaskProgressPercent));
\r
126 logBox.AppendText(System.Environment.NewLine);
\r
128 case NaGetTaskSetEventType.INFO:
\r
129 logBox.AppendText(" " + e.TaskMessage + System.Environment.NewLine);
\r
131 case NaGetTaskSetEventType.ERROR:
\r
132 logBox.SelectionColor = System.Drawing.Color.Red;
\r
133 logBox.AppendText(" [
\83G
\83\89\81[] " + e.TaskMessage + System.Environment.NewLine);
\r
134 logBox.SelectionColor = logBox.ForeColor;
\r
136 NativeMethods.ProgressBar_SetState(progressBar, 2); // VistaProgress
\90F
\81F
\83G
\83\89\81[
\r
138 okButton.Enabled = true;
\r
139 cancelButton.Enabled = false;
\r
141 case NaGetTaskSetEventType.CANCELED:
\r
142 logBox.SelectionColor = System.Drawing.Color.Red;
\r
143 logBox.AppendText(e.TaskMessage + System.Environment.NewLine);
\r
144 logBox.SelectionColor = logBox.ForeColor;
\r
146 NativeMethods.ProgressBar_SetState(progressBar, 1); // VistaProgress
\90F
\81F
\92\86\92f
\r
148 okButton.Enabled = true;
\r
149 cancelButton.Enabled = false;
\r
151 case NaGetTaskSetEventType.WARNING:
\r
152 logBox.SelectionColor = System.Drawing.Color.Red;
\r
153 logBox.AppendText(" [
\83G
\83\89\81[] " + e.TaskMessage + System.Environment.NewLine);
\r
154 logBox.SelectionColor = logBox.ForeColor;
\r
159 if (taskSet.Done) {
\r
160 if ((ActionOnDone & ActionOnDoneFlags.FlashWindow) != 0) {
\r
161 NativeMethods.Form_FlashWindow(this,
\r
162 NativeMethods.FlashFlag.All | NativeMethods.FlashFlag.TimerNoFG,
\r
165 if (okButton.Enabled && (ActionOnDone & ActionOnDoneFlags.AutoCloseOnSuccess) != 0) {
\r
166 this.DialogResult = DialogResult.OK;
\r
173 public void SetTaskSet(NaGetTaskSet taskSet)
\r
175 this.taskSet = taskSet;
\r
177 taskSet.TaskSetRaised += delegate(object sender, NaGetTaskSetEventArgs e) {
\r
178 if (InvokeRequired) {
\r
179 Invoke(new EventHandler<NaGetTaskSetEventArgs>(onTaskSetRaised), taskSet, e);
\r
181 onTaskSetRaised(taskSet, e);
\r
186 public void StartTaskSet()
\r
188 tasksetRunningThread = new Thread(taskSet.Run);
\r
189 tasksetRunningThread.Start();
\r
194 void OkButtonClick(object sender, EventArgs e)
\r
196 if (taskSet == null || taskSet.Done) {
\r
202 void CancelButtonClick(object sender, EventArgs e)
\r
204 if (InvokeRequired) {
\r
205 Invoke(new EventHandler(CancelButtonClickConcrete), sender, e);
\r
207 CancelButtonClickConcrete(sender,e);
\r
211 void CancelButtonClickConcrete(object sender, EventArgs e)
\r
213 if (taskSet != null && taskSet.Running && taskSet.Cancelable) {
\r
214 cancelButton.Enabled = false;
\r
216 NativeMethods.ProgressBar_SetState(progressBar, 3); // VistaProgress
\90F
\81F
\92\86\92f
\r
222 void ExecutionProgressViewerShown(object sender, EventArgs e)
\r
224 this.BringToFront();
\r