From 2f1458834ded38d0afe52f8cfefe92f5969b32b5 Mon Sep 17 00:00:00 2001 From: Mikhalkovich Stanislav Date: Sat, 10 Sep 2022 22:47:28 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=B2=20RunService=20=D1=87=D1=82=D0=BE=D0=B1?= =?UTF-8?q?=D1=8B=20=D0=BC=D0=BE=D0=B6=D0=BD=D0=BE=20=D0=B1=D1=8B=D0=BB?= =?UTF-8?q?=D0=BE=20=D0=B2=20=D0=BF=D0=BB=D0=B0=D0=B3=D0=B8=D0=BD=D0=B5=20?= =?UTF-8?q?=D0=B2=D1=8B=D0=B7=D0=B2=D0=B0=D1=82=D1=8C=20=D0=BA=D0=BE=D0=BB?= =?UTF-8?q?=D0=BB=D0=B1=D1=8D=D0=BA=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=B0=D1=80=D0=B3=D1=83=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D1=82=D0=BE=D0=B2=20=D0=B7=D0=B0=D0=BF=D1=83=D1=81=D0=BA=D0=B0?= =?UTF-8?q?=D0=B5=D0=BC=D0=BE=D0=B3=D0=BE=20=D0=BF=D1=80=D0=B8=D0=BB=D0=BE?= =?UTF-8?q?=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit В TeacherControlPlugin.cs синхронные изменения - добавить в командную строку True или false в зависимости от авторизации В LightPT синхронные изменения - писать в базу только если авторизован. Если сеть работает плохо - просто деавторизоваться --- PluginsSupport/Interfaces.cs | 3 +++ VisualPascalABCNET/DS/RunManager/RunManager.cs | 3 +++ VisualPascalABCNET/Workbench/RunService.cs | 11 +++++++++++ VisualPlugins/TraningControlPlugin/LoginForm.cs | 2 +- .../TraningControlPlugin/TeacherControlPlugin.cs | 6 ++++++ bin/Lib/LightPT.pas | 3 ++- 6 files changed, 26 insertions(+), 2 deletions(-) diff --git a/PluginsSupport/Interfaces.cs b/PluginsSupport/Interfaces.cs index e3705cc4f..d912a0d19 100644 --- a/PluginsSupport/Interfaces.cs +++ b/PluginsSupport/Interfaces.cs @@ -80,6 +80,8 @@ namespace VisualPascalABCPlugins public delegate void RunnerManagerActionDelegate(string fileName); // SSM 02.07.22 - ïåðåä ñòàðòîì êîìïèëÿöèè äëÿ ïëàãèíîâ public delegate void BuildServiceActionDelegate(string fileName); + // SSM 02.07.22 - ïåðåä çàïóñêîì èçìåíèòü ïàðàìåòðû êîìàíäíîé ñòðîêè + public delegate void ChangeArgsBeforeRunDelegate(ref string args); public enum SourceLocationAction { @@ -311,6 +313,7 @@ namespace VisualPascalABCPlugins { event RunnerManagerActionDelegate Starting; // ìîæíî âûçûâàòü èç ïëàãèíà event RunnerManagerActionDelegate Exited; // ìîæíî âûçûâàòü èç ïëàãèíà + event ChangeArgsBeforeRunDelegate ChangeArgsBeforeRun; bool IsRun(); bool IsRun(string FileName); bool Run(bool RedirectConsoleIO); diff --git a/VisualPascalABCNET/DS/RunManager/RunManager.cs b/VisualPascalABCNET/DS/RunManager/RunManager.cs index ef4294b9f..16b9f7040 100644 --- a/VisualPascalABCNET/DS/RunManager/RunManager.cs +++ b/VisualPascalABCNET/DS/RunManager/RunManager.cs @@ -207,6 +207,7 @@ namespace VisualPascalABC public event RunnerManagerActionDelegate Exited; public event RunnerManagerActionDelegate Starting; + public event ChangeArgsBeforeRunDelegate ChangeArgsBeforeRun; public class StackTraceItem { @@ -281,6 +282,8 @@ namespace VisualPascalABC try { + if (ChangeArgsBeforeRun != null) + ChangeArgsBeforeRun(ref args); PRunner.Start(fileName, args, redirectIO, redirectErrors, RunWithPause, attachDebugger, fictive_attach); if (Starting != null) Starting(fileName); diff --git a/VisualPascalABCNET/Workbench/RunService.cs b/VisualPascalABCNET/Workbench/RunService.cs index 3ad101b13..55d590589 100644 --- a/VisualPascalABCNET/Workbench/RunService.cs +++ b/VisualPascalABCNET/Workbench/RunService.cs @@ -30,6 +30,17 @@ namespace VisualPascalABC private Dictionary RunArgumentsTable = new Dictionary(); bool RunActiveTabPage = false; + public event ChangeArgsBeforeRunDelegate ChangeArgsBeforeRun + { + add + { + RunnerManager.ChangeArgsBeforeRun += value; + } + remove + { + RunnerManager.ChangeArgsBeforeRun -= value; + } + } // SSM 16/05/22 - добавил чтобы иметь возможность добавлять обработчики во внешнем плагине public event RunnerManagerActionDelegate Starting { diff --git a/VisualPlugins/TraningControlPlugin/LoginForm.cs b/VisualPlugins/TraningControlPlugin/LoginForm.cs index fe2f7e67f..0e9b6d9f1 100644 --- a/VisualPlugins/TraningControlPlugin/LoginForm.cs +++ b/VisualPlugins/TraningControlPlugin/LoginForm.cs @@ -16,7 +16,7 @@ namespace DBAccessPluginNamespace { public SiteAccessProvider SiteProvider = null; public VisualPascalABCPlugin_TeacherControlPlugin Plugin = null; - public bool Authorized = false; + public bool Authorized { get; set; } = false; public LoginForm(VisualPascalABCPlugin_TeacherControlPlugin Plugin) { diff --git a/VisualPlugins/TraningControlPlugin/TeacherControlPlugin.cs b/VisualPlugins/TraningControlPlugin/TeacherControlPlugin.cs index eadf2cdfd..da0fb7c94 100644 --- a/VisualPlugins/TraningControlPlugin/TeacherControlPlugin.cs +++ b/VisualPlugins/TraningControlPlugin/TeacherControlPlugin.cs @@ -51,6 +51,7 @@ namespace VisualPascalABCPlugins // Регистрация обработчика this.Workbench.ServiceContainer.RunService.Starting += RunStartingHandler; + this.Workbench.ServiceContainer.RunService.ChangeArgsBeforeRun += ChangeArgsBeforeRunHandler; //Workbench.ServiceContainer.BuildService.BeforeCompile += BeforeCompileHandler; } public void Execute() @@ -266,6 +267,11 @@ namespace VisualPascalABCPlugins private void RunStartingHandler(string filename) { } + + private void ChangeArgsBeforeRunHandler(ref string args) + { + args += " " + loginForm.Authorized.ToString(); + } } } diff --git a/bin/Lib/LightPT.pas b/bin/Lib/LightPT.pas index 5d657e871..fdba323ae 100644 --- a/bin/Lib/LightPT.pas +++ b/bin/Lib/LightPT.pas @@ -1201,7 +1201,8 @@ begin try System.IO.File.AppendAllText('db.txt', $'{LessonName} {TaskName} {dateTime.Now.ToString(''u'')} {TaskResult.ToString} {AdditionalInfo}' + #10); var auth := FindAuthDat(); - if auth<>'' then + var args := System.Environment.GetCommandLineArgs; + if (auth <> '') and (args.Length = 3) and (args[2].ToLower = 'true') then // Есть проблема паузы при плохой сети WriteInfoToRemoteDatabase(auth,LessonName,TaskName,TaskResult.ToString, AdditionalInfo); except