2022-07-10 14:51:51 +03:00
using System ;
using System.Collections.Generic ;
using System.Windows.Forms ;
using System.Text ;
using System.Linq ;
using PascalABCCompiler.SyntaxTreeConverters ;
using PascalABCCompiler.SyntaxTree ;
2022-08-07 13:38:40 +03:00
using DBAccessPluginNamespace ;
2022-07-10 14:51:51 +03:00
namespace VisualPascalABCPlugins
{
//имя класса *_VisualPascalABCPlugin
public class VisualPascalABCPlugin_TeacherControlPlugin : IVisualPascalABCPlugin
{
2022-08-07 13:38:40 +03:00
private const string LabelEntered = "Авторизация: " ;
private const string LabelNotEntered = "Авторизация: вход не выполнен" ;
2022-07-10 14:51:51 +03:00
public static string StringsPrefix = "VPP_REGISTER_AND_CONTROL_PLUGIN_" ;
IVisualEnvironmentCompiler VisualEnvironmentCompiler ;
IWorkbench Workbench ;
2022-08-07 13:38:40 +03:00
//private TeacherControlForm RegisterForm = new TeacherControlForm(); // старая форма авторизации
//private LoginForm RegisterFormNew = new LoginForm(); // новая форма авторизации
// User
SiteAccessProvider User = new SiteAccessProvider ( ) ;
2022-07-10 14:51:51 +03:00
private PluginGUIItem Item ;
public string Name { get = > "Teacher Control Plugin" ; }
public string Version { get = > "0.1" ; }
public string Copyright { get = > "Copyright © 2021-2022 by Stanislav Mikhalkovich" ; }
public string Login = null ;
public string Password = null ;
2022-08-07 13:38:40 +03:00
public LoginForm loginForm ;
bool firstTime = true ;
public ToolStripMenuItem menuItem = null ;
public ToolStripButton toolStripButton = null ;
2022-07-10 14:51:51 +03:00
public VisualPascalABCPlugin_TeacherControlPlugin ( IWorkbench Workbench )
{
2022-08-07 13:38:40 +03:00
loginForm = new LoginForm ( this ) ;
2022-07-10 14:51:51 +03:00
this . Workbench = Workbench ;
VisualEnvironmentCompiler = Workbench . VisualEnvironmentCompiler ;
2022-08-07 13:38:40 +03:00
//var tbitem = Workbench.MainForm.Controls.Find("", true);
// RegisterForm.VisualEnvironmentCompiler = VisualEnvironmentCompiler; // Пока форма регистрации никак не связана с компилятором
2022-07-10 14:51:51 +03:00
// Регистрация обработчика
this . Workbench . ServiceContainer . RunService . Starting + = RunStartingHandler ;
2022-07-18 19:39:13 +03:00
//Workbench.ServiceContainer.BuildService.BeforeCompile += BeforeCompileHandler;
2022-07-10 14:51:51 +03:00
}
2022-08-07 13:38:40 +03:00
public void Execute ( )
{
if ( firstTime )
{
firstTime = false ;
menuItem = ( ToolStripMenuItem ) Item . menuItem ;
toolStripButton = ( ToolStripButton ) Item . toolStripButton ;
}
User . ServAddr = "https://air.mmcs.sfedu.ru/pascalabc" ;
loginForm . SiteProvider = User ;
loginForm . ShowDialog ( ) ; // OK никогда не будет
/ * if ( loginForm . Authorized )
{
toolStripButton . ToolTipText = "Авторизация выполнена" ;
toolStripButton . Image = loginForm . PluginImageAuthorized . Image ;
}
else
{
toolStripButton . ToolTipText = "Авторизация: вход не выполнен" ;
toolStripButton . Image = loginForm . PluginImage . Image ;
} * /
}
2022-07-10 14:51:51 +03:00
public void GetGUI ( List < IPluginGUIItem > MenuItems , List < IPluginGUIItem > ToolBarItems )
{
2022-08-07 13:38:40 +03:00
Item = new PluginGUIItem ( StringsPrefix + "NAME" , StringsPrefix + "DESCRIPTION" , loginForm . PluginImage . Image , loginForm . PluginImage . BackColor , Execute ) ;
2022-07-10 14:51:51 +03:00
MenuItems . Add ( Item ) ;
ToolBarItems . Add ( Item ) ;
}
2022-07-18 19:39:13 +03:00
/ * private void BeforeCompileHandler ( string filename ) // filename - pas-файл
2022-07-10 14:51:51 +03:00
{
// Проверяем присутствие файла lightpt.dat
var fi = new System . IO . FileInfo ( filename ) ;
var SourceFileDirectory = fi . DirectoryName ;
var FullLightPTName = System . IO . Path . Combine ( SourceFileDirectory , "lightpt.dat" ) ;
2022-07-18 19:39:13 +03:00
// VisualEnvironmentCompiler.Compiler.SyntaxTreeConvertersController возвращает NotSupportedException для RemoteCompiler. Странно... И как это вообще срабатывает?
var SyntaxTreeConverters = VisualEnvironmentCompiler . Compiler . SyntaxTreeConvertersController . SyntaxTreeConverters ;
2022-07-10 14:51:51 +03:00
// Если осталось с прошлого раза
2022-07-18 19:39:13 +03:00
SyntaxTreeConverters . RemoveAll ( st = > st . Name = = "TeacherContolConverter" ) ;
//if (System.IO.File.Exists(FullLightPTName)) // Если в папке есть файл lightpt.dat
2022-07-10 14:51:51 +03:00
{
2022-07-18 19:39:13 +03:00
//SyntaxTreeConverters.Add(new TeacherContolConverter());
2022-07-10 14:51:51 +03:00
}
//System.IO.File.AppendAllText("d:\\Stmd.txt", string.Join(" ", StandartModules.Select(sm => sm.Name)) + '\n');
//System.IO.File.AppendAllText("d:\\Stmd.txt", FullLightPTName + " " + DateTime.Now + '\n');
2022-07-18 19:39:13 +03:00
} * /
2022-07-10 14:51:51 +03:00
private void RunStartingHandler ( string filename )
{
2022-08-07 13:38:40 +03:00
/ * if ( RegisterForm . Registered )
2022-07-10 14:51:51 +03:00
{
System . IO . File . AppendAllText ( "d:\\runs.txt" , filename + " " + DateTime . Now + '\n' ) ;
2022-08-07 13:38:40 +03:00
} * /
2022-07-10 14:51:51 +03:00
}
}
}