Изменения в RunService чтобы можно было в плагине вызвать коллбэк изменения аргументов запускаемого приложения

В TeacherControlPlugin.cs синхронные изменения - добавить в командную строку True или false в зависимости от авторизации

В LightPT синхронные изменения - писать в базу только если авторизован. Если сеть работает плохо - просто деавторизоваться
This commit is contained in:
Mikhalkovich Stanislav 2022-09-10 22:47:28 +03:00
parent ee69f424e8
commit 2f1458834d
6 changed files with 26 additions and 2 deletions

View file

@ -80,6 +80,8 @@ namespace VisualPascalABCPlugins
public delegate void RunnerManagerActionDelegate(string fileName); public delegate void RunnerManagerActionDelegate(string fileName);
// SSM 02.07.22 - ïåðåä ñòàðòîì êîìïèëÿöèè äëÿ ïëàãèíîâ // SSM 02.07.22 - ïåðåä ñòàðòîì êîìïèëÿöèè äëÿ ïëàãèíîâ
public delegate void BuildServiceActionDelegate(string fileName); public delegate void BuildServiceActionDelegate(string fileName);
// SSM 02.07.22 - ïåðåä çàïóñêîì èçìåíèòü ïàðàìåòðû êîìàíäíîé ñòðîêè
public delegate void ChangeArgsBeforeRunDelegate(ref string args);
public enum SourceLocationAction public enum SourceLocationAction
{ {
@ -311,6 +313,7 @@ namespace VisualPascalABCPlugins
{ {
event RunnerManagerActionDelegate Starting; // ìîæíî âûçûâàòü èç ïëàãèíà event RunnerManagerActionDelegate Starting; // ìîæíî âûçûâàòü èç ïëàãèíà
event RunnerManagerActionDelegate Exited; // ìîæíî âûçûâàòü èç ïëàãèíà event RunnerManagerActionDelegate Exited; // ìîæíî âûçûâàòü èç ïëàãèíà
event ChangeArgsBeforeRunDelegate ChangeArgsBeforeRun;
bool IsRun(); bool IsRun();
bool IsRun(string FileName); bool IsRun(string FileName);
bool Run(bool RedirectConsoleIO); bool Run(bool RedirectConsoleIO);

View file

@ -207,6 +207,7 @@ namespace VisualPascalABC
public event RunnerManagerActionDelegate Exited; public event RunnerManagerActionDelegate Exited;
public event RunnerManagerActionDelegate Starting; public event RunnerManagerActionDelegate Starting;
public event ChangeArgsBeforeRunDelegate ChangeArgsBeforeRun;
public class StackTraceItem public class StackTraceItem
{ {
@ -281,6 +282,8 @@ namespace VisualPascalABC
try try
{ {
if (ChangeArgsBeforeRun != null)
ChangeArgsBeforeRun(ref args);
PRunner.Start(fileName, args, redirectIO, redirectErrors, RunWithPause, attachDebugger, fictive_attach); PRunner.Start(fileName, args, redirectIO, redirectErrors, RunWithPause, attachDebugger, fictive_attach);
if (Starting != null) if (Starting != null)
Starting(fileName); Starting(fileName);

View file

@ -30,6 +30,17 @@ namespace VisualPascalABC
private Dictionary<string, string> RunArgumentsTable = new Dictionary<string, string>(); private Dictionary<string, string> RunArgumentsTable = new Dictionary<string, string>();
bool RunActiveTabPage = false; bool RunActiveTabPage = false;
public event ChangeArgsBeforeRunDelegate ChangeArgsBeforeRun
{
add
{
RunnerManager.ChangeArgsBeforeRun += value;
}
remove
{
RunnerManager.ChangeArgsBeforeRun -= value;
}
}
// SSM 16/05/22 - добавил чтобы иметь возможность добавлять обработчики во внешнем плагине // SSM 16/05/22 - добавил чтобы иметь возможность добавлять обработчики во внешнем плагине
public event RunnerManagerActionDelegate Starting public event RunnerManagerActionDelegate Starting
{ {

View file

@ -16,7 +16,7 @@ namespace DBAccessPluginNamespace
{ {
public SiteAccessProvider SiteProvider = null; public SiteAccessProvider SiteProvider = null;
public VisualPascalABCPlugin_TeacherControlPlugin Plugin = null; public VisualPascalABCPlugin_TeacherControlPlugin Plugin = null;
public bool Authorized = false; public bool Authorized { get; set; } = false;
public LoginForm(VisualPascalABCPlugin_TeacherControlPlugin Plugin) public LoginForm(VisualPascalABCPlugin_TeacherControlPlugin Plugin)
{ {

View file

@ -51,6 +51,7 @@ namespace VisualPascalABCPlugins
// Регистрация обработчика // Регистрация обработчика
this.Workbench.ServiceContainer.RunService.Starting += RunStartingHandler; this.Workbench.ServiceContainer.RunService.Starting += RunStartingHandler;
this.Workbench.ServiceContainer.RunService.ChangeArgsBeforeRun += ChangeArgsBeforeRunHandler;
//Workbench.ServiceContainer.BuildService.BeforeCompile += BeforeCompileHandler; //Workbench.ServiceContainer.BuildService.BeforeCompile += BeforeCompileHandler;
} }
public void Execute() public void Execute()
@ -266,6 +267,11 @@ namespace VisualPascalABCPlugins
private void RunStartingHandler(string filename) private void RunStartingHandler(string filename)
{ {
} }
private void ChangeArgsBeforeRunHandler(ref string args)
{
args += " " + loginForm.Authorized.ToString();
}
} }
} }

View file

@ -1201,7 +1201,8 @@ begin
try try
System.IO.File.AppendAllText('db.txt', $'{LessonName} {TaskName} {dateTime.Now.ToString(''u'')} {TaskResult.ToString} {AdditionalInfo}' + #10); System.IO.File.AppendAllText('db.txt', $'{LessonName} {TaskName} {dateTime.Now.ToString(''u'')} {TaskResult.ToString} {AdditionalInfo}' + #10);
var auth := FindAuthDat(); 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); WriteInfoToRemoteDatabase(auth,LessonName,TaskName,TaskResult.ToString, AdditionalInfo);
except except