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
21 public Downloader Downloader {
\r
22 get { return downloader; }
\r
25 public ExecutionProgressViewer()
\r
28 // The InitializeComponent() call is required for Windows Forms designer support.
\r
30 InitializeComponent();
\r
32 downloader = new Downloader();
\r
33 downloader.DownloadEventRaised += delegate(object sender, DownloadEventArgs e) {
\r
34 if (InvokeRequired) {
\r
35 Invoke(new EventHandler<DownloadEventArgs>(onDownloadEvent), sender, e);
\r
37 onDownloadEvent(sender, e);
\r
42 private void onDownloadEvent(object sender, DownloadEventArgs a)
\r
44 if (a.TaskProgressPercent >= 0) {
\r
45 progressBarSub.Value = (int) a.TaskProgressPercent;
\r
46 progressBarSub.Style = ProgressBarStyle.Continuous;
\r
48 progressBarSub.Style = ProgressBarStyle.Marquee;
\r
52 case DownloadEventType.INITED:
\r
53 case DownloadEventType.CONNECTED:
\r
54 progressSubLabel.Text = a.TaskMessage;
\r
56 progressBarSub.Visible = true;
\r
57 progressSubLabel.Visible = true;
\r
59 case DownloadEventType.DOWNLOADING:
\r
60 progressSubLabel.Text = a.TaskMessage;
\r
62 case DownloadEventType.COMPLETED:
\r
63 progressBarSub.Visible = false;
\r
64 progressSubLabel.Visible = false;
\r
66 case DownloadEventType.ERROR:
\r
67 progressBarSub.Visible = false;
\r
68 progressSubLabel.Visible = false;
\r
70 logBox.SelectionColor = System.Drawing.Color.Red;
\r
71 logBox.AppendText(" [
\83G
\83\89\81[] " + a.TaskMessage + System.Environment.NewLine);
\r
72 logBox.SelectionColor = logBox.ForeColor;
\r
77 #region NaGetTaskSet
\8aÖ
\98A
\r
79 private void onTaskSetRaised(object sender, NaGetTaskSetEventArgs e)
\r
81 NaGetTaskSet taskSet = (NaGetTaskSet) sender;
\r
83 if (e.TaskProgressPercent >= 0) {
\r
84 progressBar.Value = (int) e.TaskProgressPercent;
\r
85 progressBar.Style = ProgressBarStyle.Continuous;
\r
87 progressBar.Style = ProgressBarStyle.Marquee;
\r
89 progressLabel.Text = e.TaskMessage ?? string.Empty;
\r
91 cancelButton.Enabled = taskSet.Running && taskSet.Cancelable;
\r
94 case NaGetTaskSetEventType.COMPLETED:
\r
95 logBox.AppendText("
\8a®
\97¹." + System.Environment.NewLine);
\r
97 okButton.Enabled = true;
\r
98 cancelButton.Enabled = false;
\r
101 case NaGetTaskSetEventType.STARTED_TASKSET:
\r
102 subtitleLabel.Text = taskSet.TaskSetNames[taskSet.CurrentTaskSetIndex];
\r
103 logBox.AppendText(" " + e.TaskMessage + System.Environment.NewLine);
\r
105 case NaGetTaskSetEventType.COMPLETED_TASKSET:
\r
106 if (progressBarSub.Visible) progressBarSub.Hide();
\r
107 if (progressSubLabel.Visible) progressSubLabel.Hide();
\r
109 NativeMethods.ProgressBar_SetState(progressBar, 1); // VistaProgress
\90F
\81F
\83m
\81[
\83}
\83\8b\r
111 logBox.AppendText(string.Format(" ...
\8a®
\97¹. [{0}%]", (int) e.TaskProgressPercent));
\r
112 logBox.AppendText(System.Environment.NewLine);
\r
114 case NaGetTaskSetEventType.INFO:
\r
115 logBox.AppendText(" " + e.TaskMessage + System.Environment.NewLine);
\r
117 case NaGetTaskSetEventType.ERROR:
\r
118 logBox.SelectionColor = System.Drawing.Color.Red;
\r
119 logBox.AppendText(" [
\83G
\83\89\81[] " + e.TaskMessage + System.Environment.NewLine);
\r
120 logBox.SelectionColor = logBox.ForeColor;
\r
122 NativeMethods.ProgressBar_SetState(progressBar, 2); // VistaProgress
\90F
\81F
\83G
\83\89\81[
\r
124 okButton.Enabled = true;
\r
125 cancelButton.Enabled = false;
\r
127 case NaGetTaskSetEventType.CANCELED:
\r
128 logBox.SelectionColor = System.Drawing.Color.Red;
\r
129 logBox.AppendText(e.TaskMessage + System.Environment.NewLine);
\r
130 logBox.SelectionColor = logBox.ForeColor;
\r
132 NativeMethods.ProgressBar_SetState(progressBar, 1); // VistaProgress
\90F
\81F
\92\86\92f
\r
134 okButton.Enabled = true;
\r
135 cancelButton.Enabled = false;
\r
137 case NaGetTaskSetEventType.WARNING:
\r
138 logBox.SelectionColor = System.Drawing.Color.Red;
\r
139 logBox.AppendText(" [
\83G
\83\89\81[] " + e.TaskMessage + System.Environment.NewLine);
\r
140 logBox.SelectionColor = logBox.ForeColor;
\r
145 if (taskSet.Done) {
\r
146 NativeMethods.Form_FlashWindow(this,
\r
147 NativeMethods.FlashFlag.All | NativeMethods.FlashFlag.TimerNoFG,
\r
152 public void SetTaskSet(NaGetTaskSet taskSet)
\r
154 this.taskSet = taskSet;
\r
156 taskSet.TaskSetRaised += delegate(object sender, NaGetTaskSetEventArgs e) {
\r
157 if (InvokeRequired) {
\r
158 Invoke(new EventHandler<NaGetTaskSetEventArgs>(onTaskSetRaised), taskSet, e);
\r
160 onTaskSetRaised(taskSet, e);
\r
165 public void StartTaskSet()
\r
167 tasksetRunningThread = new Thread(taskSet.Run);
\r
168 tasksetRunningThread.Start();
\r
173 void OkButtonClick(object sender, EventArgs e)
\r
175 if (taskSet == null || taskSet.Done) {
\r
181 void CancelButtonClick(object sender, EventArgs e)
\r
183 if (InvokeRequired) {
\r
184 Invoke(new EventHandler(CancelButtonClickConcrete), sender, e);
\r
186 CancelButtonClickConcrete(sender,e);
\r
190 void CancelButtonClickConcrete(object sender, EventArgs e)
\r
192 if (taskSet != null && taskSet.Running && taskSet.Cancelable) {
\r
193 cancelButton.Enabled = false;
\r
195 NativeMethods.ProgressBar_SetState(progressBar, 3); // VistaProgress
\90F
\81F
\92\86\92f
\r
201 void ExecutionProgressViewerShown(object sender, EventArgs e)
\r
203 this.BringToFront();
\r