OSDN Git Service

AppliStation,ハッシュが非整合の時に尋ねるようにした。(all-get.exeにも反映)
authorttp <ttp@users.sourceforge.jp>
Sat, 10 May 2008 04:05:03 +0000 (04:05 +0000)
committerttp <ttp@users.sourceforge.jp>
Sat, 10 May 2008 04:05:03 +0000 (04:05 +0000)
git-svn-id: http://localhost/svn/AppliStation/trunk@903 34ed2c89-c49f-4a4b-abdb-c318350108cf

AppliStation/AppliStation.Util/ExecutionProgressViewer.cs
all-get/Main.cs
all-get/Util.cs
na-get-lib/NaGet.SubCommands/NaGetInstall.cs
na-get-lib/NaGet.SubCommands/NaGetTaskSet.cs

index ea596d6..c4de9a1 100644 (file)
@@ -170,6 +170,24 @@ namespace AppliStation.Util
                        }\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
@@ -181,6 +199,8 @@ namespace AppliStation.Util
                                        onTaskSetRaised(taskSet, e);\r
                                }\r
                        };\r
+                       \r
+                       taskSet.TaskQueryRaised += onTaskQueryRaised;\r
                }\r
 \r
                public void StartTaskSet()\r
index 1442635..6d56b46 100644 (file)
@@ -290,6 +290,10 @@ namespace AllGet
                        \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
index de82784..621a056 100644 (file)
@@ -5,6 +5,20 @@ namespace AllGet
        \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
index 3d01139..ca67f78 100644 (file)
@@ -132,11 +132,20 @@ namespace NaGet.SubCommands
                                        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
index 83beaf8..75a43ac 100644 (file)
@@ -50,9 +50,30 @@ namespace NaGet.SubCommands
                /// <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
@@ -64,6 +85,11 @@ namespace NaGet.SubCommands
                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
@@ -83,13 +109,8 @@ namespace NaGet.SubCommands
                \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
@@ -107,6 +128,20 @@ namespace NaGet.SubCommands
                        }\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