}\r
}\r
\r
+ private NaGetTaskQueryResult onTaskQueryRaised(object sender, NaGetTaskSetEventArgs e)\r
+ {\r
+ DialogResult result = MessageBox.Show(e.TaskMessage, this.Text,\r
+ MessageBoxButtons.OKCancel,\r
+ (e.Type == NaGetTaskSetEventType.WARNING_QUERY)? MessageBoxIcon.Warning : MessageBoxIcon.Question);\r
+ \r
+ switch (result) {\r
+ case DialogResult.OK:\r
+ //case DialogResult.Ignore:\r
+ return NaGetTaskQueryResult.CONTINUE;\r
+ case DialogResult.Cancel:\r
+ //case DialogResult.Abort:\r
+ return NaGetTaskQueryResult.CANCEL;\r
+ default:\r
+ return NaGetTaskQueryResult.CANCELED_AUTOMATICALLY;\r
+ }\r
+ }\r
+ \r
public void SetTaskSet(NaGetTaskSet taskSet)\r
{\r
this.taskSet = taskSet;\r
onTaskSetRaised(taskSet, e);\r
}\r
};\r
+ \r
+ taskSet.TaskQueryRaised += onTaskQueryRaised;\r
}\r
\r
public void StartTaskSet()\r
\r
NaGet.SubCommands.NaGetInstall tasks = new NaGet.SubCommands.NaGetInstall(pkgListMan, installations);\r
tasks.Downloader = this.downloader;\r
+ tasks.TaskQueryRaised += delegate(object sender, NaGetTaskSetEventArgs e) {\r
+ return AllGet.Util.Confirm(e.TaskMessage + " [yN]? ", false)?\r
+ NaGetTaskQueryResult.CONTINUE : NaGetTaskQueryResult.CANCEL;\r
+ };\r
tasks.TaskSetRaised += delegate(object sender, NaGetTaskSetEventArgs e) { \r
switch (e.Type) {\r
// case NaGetTaskSetEventType.COMPLETED_TASKSET\r
\r
sealed class Util\r
{\r
+// public static char Query(string msg, string selections, char defaultSelection)\r
+// {\r
+// Console.Write(msg);\r
+// string response = Console.ReadLine();\r
+// response.Trim();\r
+// if (response.Length < 1) return defaultSelection;\r
+// int resNum = selections.ToLower().IndexOf(response[0]);\r
+// if (resNum < 0 || resNum >= selections.Length) {\r
+// return Query(msg, selections, defaultSelection);\r
+// } else {\r
+// return selections[resNum];\r
+// }\r
+// }\r
+ \r
public static bool Confirm(string msg, bool defaultSelection)\r
{\r
Console.Write(msg);\r
i++;\r
}\r
\r
- // TODO \83n\83b\83V\83\85\82ª\89ó\82ê\82Ä\82¢\82é\82Æ\82«\82Ì\91Î\8dô\r
-// if (invalid && (! AllGet.Util.Confirm("Some packages do not match hash value. Are you really sure to install them [yN]?", false) )) {\r
-// Console.WriteLine("Abort.");\r
-// Environment.Exit(0);\r
-// }\r
+ \r
+ // \83n\83b\83V\83\85\82ª\89ó\82ê\82Ä\82¢\82é\82Æ\82«\82Ì\91Î\8dô\r
+ if (invalid) {\r
+ string msg = "\82¢\82\82Â\82©\82Ì\83p\83b\83P\81[\83W\82Å\83t\83@\83C\83\8b\82ª\89ó\82ê\82Ä\82¢\82é\89Â\94\\90«\82ª\82 \82è\82Ü\82·\n\8b\90§\93I\82É\83C\83\93\83X\83g\81[\83\8b\82ð\91±\8ds\82µ\82Ü\82·\82©?";\r
+ NaGetTaskQueryResult result = RaiseTaskSetQueryEvent(NaGetTaskSetEventType.WARNING_QUERY, msg);\r
+ \r
+ if (result != NaGetTaskQueryResult.CONTINUE) {\r
+ RaiseTaskSetEvent(NaGetTaskSetEventType.CANCELED, "\83p\83b\83P\81[\83W\82Ì\83C\83\93\83X\83g\81[\83\8b\8f\88\97\9d\82ª\83L\83\83\83\93\83Z\83\8b\82³\82ê\82Ü\82µ\82½");\r
+ done = true;\r
+ return;\r
+ } else {\r
+ RaiseTaskSetEvent(NaGetTaskSetEventType.WARNING, "\83n\83b\83V\83\85\82Ì\94ñ\90®\8d\87\82ð\96³\8e\8b\82µ\82Ä\83C\83\93\83X\83g\81[\83\8b\82ð\8cp\91±");\r
+ }\r
+ }\r
currentTaskSetIndex ++;\r
}\r
\r
/// <summary>\r
/// \8dì\8bÆ\82ð\8fI\97¹\r
/// </summary>\r
- COMPLETED_TASKSET\r
+ COMPLETED_TASKSET,\r
+ /// <summary>\r
+ /// \8e¿\96â\r
+ /// </summary>\r
+ QUERY,\r
+ /// <summary>\r
+ /// \8cx\8d\90\82ð\8aÜ\82Þ\8e¿\96â\r
+ /// </summary>\r
+ WARNING_QUERY,\r
+ }\r
+ \r
+ /// <summary>\r
+ /// \8e¿\96â\82Ì\93\9a\82¦\r
+ /// </summary>\r
+ public enum NaGetTaskQueryResult\r
+ {\r
+ CONTINUE,\r
+ RETRY,\r
+ CANCEL,\r
+ CANCELED_AUTOMATICALLY,\r
}\r
\r
+ public delegate NaGetTaskQueryResult NaGetTaskQueryHandler(object sender, NaGetTaskSetEventArgs e);\r
+ \r
/// <summary>\r
/// NaGet\83^\83X\83N\8f\88\97\9d\82Ì\83p\83b\83N\r
/// </summary>\r
public event EventHandler<NaGetTaskSetEventArgs> TaskSetRaised;\r
\r
/// <summary>\r
+ /// \83^\83X\83N\8f\88\97\9d\92\86\82Ì\8e¿\96â\82Ì\83n\83\93\83h\83\89\r
+ /// </summary>\r
+ public event NaGetTaskQueryHandler TaskQueryRaised;\r
+ \r
+ /// <summary>\r
/// \95¶\8e\9a\97ñ\82Å\95\\8c»\82µ\82½\8dì\8bÆ\88ê\97\97\83\8a\83X\83g\r
/// </summary>\r
public string[] TaskSetNames;\r
\r
protected virtual void RaiseTaskSetEvent(NaGetTaskSetEventType type, string message, float percent)\r
{\r
- RaiseTaskSetEvent(new NaGetTaskSetEventArgs(type, message, percent));\r
- }\r
- \r
- protected virtual void RaiseTaskSetEvent(NaGetTaskSetEventArgs e)\r
- {\r
if (TaskSetRaised != null) {\r
- TaskSetRaised(this, e);\r
+ TaskSetRaised(this, new NaGetTaskSetEventArgs(type, message, percent));\r
}\r
}\r
\r
}\r
}\r
\r
+ protected virtual NaGetTaskQueryResult RaiseTaskSetQueryEvent(NaGetTaskSetEventType type, string message)\r
+ {\r
+ float percent = (CurrentTaskSetIndex >= 0)? CurrentTaskSetIndex * 100 / TaskSetNames.Length : -1;\r
+ return RaiseTaskSetQueryEvent(type, message, percent);\r
+ }\r
+ \r
+ protected virtual NaGetTaskQueryResult RaiseTaskSetQueryEvent(NaGetTaskSetEventType type, string message, float percent)\r
+ {\r
+ if (TaskQueryRaised != null) {\r
+ return TaskQueryRaised(this, new NaGetTaskSetEventArgs(type, message, percent));\r
+ }\r
+ return NaGetTaskQueryResult.CANCELED_AUTOMATICALLY;\r
+ }\r
+ \r
public override bool Running {\r
get { return CurrentTaskSetIndex >= 0 && !Done; }\r
}\r