TeacherControlPlugin - вылизывание входа
This commit is contained in:
parent
308da7ab5c
commit
e1ae47aee9
|
|
@ -15,7 +15,7 @@ internal static class RevisionClass
|
|||
public const string Major = "3";
|
||||
public const string Minor = "8";
|
||||
public const string Build = "3";
|
||||
public const string Revision = "3150";
|
||||
public const string Revision = "3152";
|
||||
|
||||
public const string MainVersion = Major + "." + Minor;
|
||||
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
%COREVERSION%=3
|
||||
%REVISION%=3150
|
||||
%REVISION%=3152
|
||||
%MINOR%=8
|
||||
%MAJOR%=3
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -17,6 +17,9 @@ namespace VisualPascalABCPlugins
|
|||
System.Windows.Forms.Keys shortcutKeys = System.Windows.Forms.Keys.None;
|
||||
string shortcutKeyDisplayString = null;
|
||||
|
||||
public object menuItem { get; set; }
|
||||
public object toolStripButton { get; set; }
|
||||
|
||||
public PluginGUIItem(string text, string hint, Image image, Color imageTransparentColor, PluginGUIItemExecuteDelegate executeDelegate)
|
||||
{
|
||||
this.text = text;
|
||||
|
|
|
|||
|
|
@ -32,6 +32,13 @@ namespace VisualPascalABCPlugins
|
|||
{
|
||||
get;
|
||||
}
|
||||
|
||||
/// SSM 07.08.22 кнопка пункта меню. В плагине преобразовать к ToolStripMenuItem
|
||||
object menuItem { get; set; }
|
||||
|
||||
/// SSM 07.08.22 кнопка панели инструментов. В плагине преобразовать к ToolStripButton
|
||||
object toolStripButton { get; set; }
|
||||
|
||||
void Execute();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -17,6 +17,9 @@ namespace VisualPascalABCPlugins
|
|||
System.Windows.Forms.Keys shortcutKeys = System.Windows.Forms.Keys.None;
|
||||
string shortcutKeyDisplayString = null;
|
||||
|
||||
public object menuItem { get; set; }
|
||||
public object toolStripButton { get; set; }
|
||||
|
||||
public PluginGUIItem(string text, string hint, Image image, Color imageTransparentColor, PluginGUIItemExecuteDelegate executeDelegate)
|
||||
{
|
||||
this.text = text;
|
||||
|
|
|
|||
|
|
@ -32,6 +32,13 @@ namespace VisualPascalABCPlugins
|
|||
{
|
||||
get;
|
||||
}
|
||||
|
||||
/// SSM 07.08.22 кнопка пункта меню. В плагине преобразовать к ToolStripMenuItem
|
||||
object menuItem { get; set; }
|
||||
|
||||
/// SSM 07.08.22 кнопка панели инструментов. В плагине преобразовать к ToolStripButton
|
||||
object toolStripButton { get; set; }
|
||||
|
||||
void Execute();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
3.8.3.3150
|
||||
3.8.3.3152
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
!define VERSION '3.8.3.3150'
|
||||
!define VERSION '3.8.3.3152'
|
||||
|
|
|
|||
|
|
@ -81,6 +81,8 @@ type
|
|||
property Parent: Node read getParent write SetParent;
|
||||
property Data: integer read getData write SetData;
|
||||
end;
|
||||
|
||||
var TaskName: string;
|
||||
|
||||
/// Вывести формулировку задания
|
||||
procedure Task(name: string);
|
||||
|
|
@ -833,7 +835,7 @@ procedure StartPT(options: integer); external '%PABCSYSTEM%\PT4\PT4PABC.dll'
|
|||
procedure FreePT; external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'freept';
|
||||
function CheckPT(var res: integer):string;external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'checkptf';
|
||||
procedure RaisePT(s1,s2: string); external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'raisept';
|
||||
procedure Task(name: string); external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'task';
|
||||
procedure Task__(name: string); external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'task';
|
||||
procedure GetR(var param: real); external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'getr';
|
||||
procedure PutR(param: real); external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'putr';
|
||||
procedure GetN(var param: integer); external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'getn';
|
||||
|
|
@ -850,6 +852,12 @@ procedure DisposeP(sNode: IntPtr); external '%PABCSYSTEM%\PT4\PT4PABC.dll'
|
|||
function FinishPT(): integer; external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'finishpt'; // == 4.13 ==
|
||||
procedure _GetSolutionInfo(info: System.Text.StringBuilder);external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'getsolutioninfo';
|
||||
|
||||
procedure Task(name: string);
|
||||
begin
|
||||
Task__(name);
|
||||
TaskName := name;
|
||||
end;
|
||||
|
||||
procedure Dispose(p: pointer);
|
||||
begin
|
||||
DisposeP(IntPtr(p));
|
||||
|
|
|
|||
|
|
@ -48,6 +48,7 @@ namespace PascalABCCompiler.TreeConverter
|
|||
}
|
||||
|
||||
// SSM 29.07.16 - если in_what - одномерный массив, то заменить код foreach на for
|
||||
// Лямбды обходят старое дерево, поэтому не работает. Кстати, почему? SSM 04/08/22
|
||||
// if (OptimizeForeachInCase1DArray(_foreach_stmt, foreachCollection)) return;
|
||||
|
||||
statements_list sl = new statements_list(get_location(_foreach_stmt.stmt));
|
||||
|
|
|
|||
|
|
@ -76,8 +76,9 @@ namespace VisualPascalABCPlugins
|
|||
menuItem.Image = Item.Image;
|
||||
menuItem.ImageTransparentColor = Item.ImageTransparentColor;
|
||||
menuItem.Text = Item.Text;
|
||||
menuItem.ToolTipText = Item.Hint;
|
||||
//menuItem.ToolTipText = Item.Hint;
|
||||
menuItem.Tag = Item;
|
||||
Item.menuItem = menuItem;
|
||||
menuItem.ShortcutKeys = Item.ShortcutKeys;
|
||||
if (Item.ShortcutKeyDisplayString != null)
|
||||
menuItem.ShortcutKeyDisplayString = Item.ShortcutKeyDisplayString;
|
||||
|
|
@ -110,6 +111,7 @@ namespace VisualPascalABCPlugins
|
|||
button.ToolTipText = Item.Hint;
|
||||
button.Click += new EventHandler(button_Click);
|
||||
button.Tag = Item;
|
||||
Item.toolStripButton = button;
|
||||
ToolStrip.Items.Add(button);
|
||||
PascalABCCompiler.StringResources.SetTextForObject(button, "");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -78,6 +78,7 @@ namespace VisualPascalABCPlugins
|
|||
menuItem.Text = Item.Text;
|
||||
//menuItem.ToolTipText = Item.Hint;
|
||||
menuItem.Tag = Item;
|
||||
Item.menuItem = menuItem;
|
||||
menuItem.ShortcutKeys = Item.ShortcutKeys;
|
||||
if (Item.ShortcutKeyDisplayString != null)
|
||||
menuItem.ShortcutKeyDisplayString = Item.ShortcutKeyDisplayString;
|
||||
|
|
@ -110,6 +111,7 @@ namespace VisualPascalABCPlugins
|
|||
button.ToolTipText = Item.Hint;
|
||||
button.Click += new EventHandler(button_Click);
|
||||
button.Tag = Item;
|
||||
Item.toolStripButton = button;
|
||||
ToolStrip.Items.Add(button);
|
||||
PascalABCCompiler.StringResources.SetTextForObject(button, "");
|
||||
}
|
||||
|
|
|
|||
BIN
VisualPlugins/TraningControlPlugin/IconAuthorized.bmp
Normal file
BIN
VisualPlugins/TraningControlPlugin/IconAuthorized.bmp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.1 KiB |
BIN
VisualPlugins/TraningControlPlugin/IconAuthorized.ico
Normal file
BIN
VisualPlugins/TraningControlPlugin/IconAuthorized.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.3 KiB |
BIN
VisualPlugins/TraningControlPlugin/IconAuthorized.png
Normal file
BIN
VisualPlugins/TraningControlPlugin/IconAuthorized.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
BIN
VisualPlugins/TraningControlPlugin/IconAuthorized1.ico
Normal file
BIN
VisualPlugins/TraningControlPlugin/IconAuthorized1.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.3 KiB |
214
VisualPlugins/TraningControlPlugin/LoginForm.Designer.cs
generated
Normal file
214
VisualPlugins/TraningControlPlugin/LoginForm.Designer.cs
generated
Normal file
|
|
@ -0,0 +1,214 @@
|
|||
namespace DBAccessPluginNamespace
|
||||
{
|
||||
partial class LoginForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(LoginForm));
|
||||
this.groupNamesBox = new System.Windows.Forms.ComboBox();
|
||||
this.usersNamesBox = new System.Windows.Forms.ComboBox();
|
||||
this.labelGroup = new System.Windows.Forms.Label();
|
||||
this.labelUser = new System.Windows.Forms.Label();
|
||||
this.passwordBox = new System.Windows.Forms.TextBox();
|
||||
this.labelPassword = new System.Windows.Forms.Label();
|
||||
this.enterButton = new System.Windows.Forms.Button();
|
||||
this.closeButton = new System.Windows.Forms.Button();
|
||||
this.userImage = new System.Windows.Forms.PictureBox();
|
||||
this.groupImage = new System.Windows.Forms.PictureBox();
|
||||
this.PluginImage = new System.Windows.Forms.PictureBox();
|
||||
this.PluginImageAuthorized = new System.Windows.Forms.PictureBox();
|
||||
((System.ComponentModel.ISupportInitialize)(this.userImage)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.groupImage)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.PluginImage)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.PluginImageAuthorized)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// groupNamesBox
|
||||
//
|
||||
this.groupNamesBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.groupNamesBox.FormattingEnabled = true;
|
||||
this.groupNamesBox.Location = new System.Drawing.Point(114, 12);
|
||||
this.groupNamesBox.Name = "groupNamesBox";
|
||||
this.groupNamesBox.Size = new System.Drawing.Size(258, 21);
|
||||
this.groupNamesBox.TabIndex = 1;
|
||||
this.groupNamesBox.SelectedIndexChanged += new System.EventHandler(this.GroupNamesBox_SelectedIndexChanged);
|
||||
//
|
||||
// usersNamesBox
|
||||
//
|
||||
this.usersNamesBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.usersNamesBox.FormattingEnabled = true;
|
||||
this.usersNamesBox.Location = new System.Drawing.Point(114, 50);
|
||||
this.usersNamesBox.Name = "usersNamesBox";
|
||||
this.usersNamesBox.Size = new System.Drawing.Size(258, 21);
|
||||
this.usersNamesBox.TabIndex = 2;
|
||||
//
|
||||
// labelGroup
|
||||
//
|
||||
this.labelGroup.AutoSize = true;
|
||||
this.labelGroup.Location = new System.Drawing.Point(63, 15);
|
||||
this.labelGroup.Name = "labelGroup";
|
||||
this.labelGroup.Size = new System.Drawing.Size(45, 13);
|
||||
this.labelGroup.TabIndex = 3;
|
||||
this.labelGroup.Text = "Группа:";
|
||||
//
|
||||
// labelUser
|
||||
//
|
||||
this.labelUser.AutoSize = true;
|
||||
this.labelUser.Location = new System.Drawing.Point(25, 53);
|
||||
this.labelUser.Name = "labelUser";
|
||||
this.labelUser.Size = new System.Drawing.Size(83, 13);
|
||||
this.labelUser.TabIndex = 4;
|
||||
this.labelUser.Text = "Пользователь:";
|
||||
//
|
||||
// passwordBox
|
||||
//
|
||||
this.passwordBox.Location = new System.Drawing.Point(114, 92);
|
||||
this.passwordBox.Name = "passwordBox";
|
||||
this.passwordBox.Size = new System.Drawing.Size(258, 20);
|
||||
this.passwordBox.TabIndex = 5;
|
||||
//
|
||||
// labelPassword
|
||||
//
|
||||
this.labelPassword.AutoSize = true;
|
||||
this.labelPassword.Location = new System.Drawing.Point(60, 95);
|
||||
this.labelPassword.Name = "labelPassword";
|
||||
this.labelPassword.Size = new System.Drawing.Size(48, 13);
|
||||
this.labelPassword.TabIndex = 6;
|
||||
this.labelPassword.Text = "Пароль:";
|
||||
//
|
||||
// enterButton
|
||||
//
|
||||
this.enterButton.Location = new System.Drawing.Point(87, 131);
|
||||
this.enterButton.Name = "enterButton";
|
||||
this.enterButton.Size = new System.Drawing.Size(118, 34);
|
||||
this.enterButton.TabIndex = 8;
|
||||
this.enterButton.Text = "Вход";
|
||||
this.enterButton.UseVisualStyleBackColor = true;
|
||||
this.enterButton.Click += new System.EventHandler(this.enterButton_Click);
|
||||
//
|
||||
// closeButton
|
||||
//
|
||||
this.closeButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.closeButton.Location = new System.Drawing.Point(225, 131);
|
||||
this.closeButton.Name = "closeButton";
|
||||
this.closeButton.Size = new System.Drawing.Size(118, 34);
|
||||
this.closeButton.TabIndex = 7;
|
||||
this.closeButton.Text = "Закрыть";
|
||||
this.closeButton.UseVisualStyleBackColor = true;
|
||||
this.closeButton.Click += new System.EventHandler(this.cancelButton_Click);
|
||||
//
|
||||
// userImage
|
||||
//
|
||||
this.userImage.InitialImage = null;
|
||||
this.userImage.Location = new System.Drawing.Point(378, 45);
|
||||
this.userImage.Name = "userImage";
|
||||
this.userImage.Size = new System.Drawing.Size(32, 32);
|
||||
this.userImage.TabIndex = 10;
|
||||
this.userImage.TabStop = false;
|
||||
//
|
||||
// groupImage
|
||||
//
|
||||
this.groupImage.InitialImage = null;
|
||||
this.groupImage.Location = new System.Drawing.Point(378, 7);
|
||||
this.groupImage.Name = "groupImage";
|
||||
this.groupImage.Size = new System.Drawing.Size(32, 32);
|
||||
this.groupImage.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
|
||||
this.groupImage.TabIndex = 9;
|
||||
this.groupImage.TabStop = false;
|
||||
//
|
||||
// PluginImage
|
||||
//
|
||||
this.PluginImage.BackColor = System.Drawing.Color.Magenta;
|
||||
this.PluginImage.Image = ((System.Drawing.Image)(resources.GetObject("PluginImage.Image")));
|
||||
this.PluginImage.Location = new System.Drawing.Point(379, 95);
|
||||
this.PluginImage.Margin = new System.Windows.Forms.Padding(6);
|
||||
this.PluginImage.Name = "PluginImage";
|
||||
this.PluginImage.Size = new System.Drawing.Size(25, 26);
|
||||
this.PluginImage.TabIndex = 11;
|
||||
this.PluginImage.TabStop = false;
|
||||
this.PluginImage.Visible = false;
|
||||
//
|
||||
// PluginImageAuthorized
|
||||
//
|
||||
this.PluginImageAuthorized.BackColor = System.Drawing.Color.Magenta;
|
||||
this.PluginImageAuthorized.Image = ((System.Drawing.Image)(resources.GetObject("PluginImageAuthorized.Image")));
|
||||
this.PluginImageAuthorized.InitialImage = null;
|
||||
this.PluginImageAuthorized.Location = new System.Drawing.Point(379, 131);
|
||||
this.PluginImageAuthorized.Name = "PluginImageAuthorized";
|
||||
this.PluginImageAuthorized.Size = new System.Drawing.Size(25, 26);
|
||||
this.PluginImageAuthorized.TabIndex = 12;
|
||||
this.PluginImageAuthorized.TabStop = false;
|
||||
this.PluginImageAuthorized.Visible = false;
|
||||
//
|
||||
// LoginForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.CancelButton = this.closeButton;
|
||||
this.ClientSize = new System.Drawing.Size(422, 175);
|
||||
this.Controls.Add(this.PluginImageAuthorized);
|
||||
this.Controls.Add(this.PluginImage);
|
||||
this.Controls.Add(this.userImage);
|
||||
this.Controls.Add(this.groupImage);
|
||||
this.Controls.Add(this.closeButton);
|
||||
this.Controls.Add(this.enterButton);
|
||||
this.Controls.Add(this.labelPassword);
|
||||
this.Controls.Add(this.passwordBox);
|
||||
this.Controls.Add(this.labelUser);
|
||||
this.Controls.Add(this.labelGroup);
|
||||
this.Controls.Add(this.usersNamesBox);
|
||||
this.Controls.Add(this.groupNamesBox);
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.Name = "LoginForm";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||
this.Text = "Авторизация";
|
||||
this.Load += new System.EventHandler(this.LoginForm_Load);
|
||||
((System.ComponentModel.ISupportInitialize)(this.userImage)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.groupImage)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.PluginImage)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.PluginImageAuthorized)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.ComboBox groupNamesBox;
|
||||
private System.Windows.Forms.ComboBox usersNamesBox;
|
||||
private System.Windows.Forms.Label labelGroup;
|
||||
private System.Windows.Forms.Label labelUser;
|
||||
private System.Windows.Forms.TextBox passwordBox;
|
||||
private System.Windows.Forms.Label labelPassword;
|
||||
private System.Windows.Forms.Button enterButton;
|
||||
private System.Windows.Forms.Button closeButton;
|
||||
private System.Windows.Forms.PictureBox groupImage;
|
||||
private System.Windows.Forms.PictureBox userImage;
|
||||
public System.Windows.Forms.PictureBox PluginImage;
|
||||
public System.Windows.Forms.PictureBox PluginImageAuthorized;
|
||||
}
|
||||
}
|
||||
111
VisualPlugins/TraningControlPlugin/LoginForm.cs
Normal file
111
VisualPlugins/TraningControlPlugin/LoginForm.cs
Normal file
|
|
@ -0,0 +1,111 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using VisualPascalABCPlugins;
|
||||
|
||||
namespace DBAccessPluginNamespace
|
||||
{
|
||||
public partial class LoginForm : Form
|
||||
{
|
||||
public SiteAccessProvider SiteProvider = null;
|
||||
public VisualPascalABCPlugin_TeacherControlPlugin Plugin = null;
|
||||
|
||||
public LoginForm(VisualPascalABCPlugin_TeacherControlPlugin Plugin)
|
||||
{
|
||||
this.Plugin = Plugin;
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public bool Authorized = false;
|
||||
private async void enterButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (SiteProvider == null)
|
||||
throw new Exception("Error in Login form! Site credentials cannot be empty!");
|
||||
|
||||
if (!Authorized)
|
||||
{
|
||||
var answer = await SiteProvider.Login("", usersNamesBox.Text, passwordBox.Text);
|
||||
if(answer == "Success")
|
||||
{
|
||||
//DialogResult = DialogResult.OK;
|
||||
//Close();
|
||||
Text = "Авторизация: вход выполнен";
|
||||
passwordBox.Text = "";
|
||||
enterButton.Text = "Выход";
|
||||
passwordBox.Visible = false;
|
||||
labelPassword.Visible = false;
|
||||
groupNamesBox.Enabled = false;
|
||||
usersNamesBox.Enabled = false;
|
||||
Authorized = true;
|
||||
Plugin.toolStripButton.ToolTipText = "Авторизация выполнена: " + SiteProvider.FullFIO;
|
||||
Plugin.toolStripButton.Image = PluginImageAuthorized.Image;
|
||||
Plugin.menuItem.Image = PluginImageAuthorized.Image;
|
||||
this.Icon = VisualPascalABCPlugins.Properties.Resources.IconAuthorized;
|
||||
closeButton.Focus();
|
||||
}
|
||||
else MessageBox.Show(answer,"Ошибка");
|
||||
}
|
||||
else
|
||||
{
|
||||
SiteProvider.Logout();
|
||||
Text = "Авторизация";
|
||||
passwordBox.Text = "";
|
||||
enterButton.Text = "Вход";
|
||||
groupNamesBox.SelectedIndex = -1;
|
||||
usersNamesBox.Items.Clear();
|
||||
usersNamesBox.SelectedIndex = -1;
|
||||
groupNamesBox.Enabled = true;
|
||||
usersNamesBox.Enabled = true;
|
||||
passwordBox.Visible = true;
|
||||
labelPassword.Visible = true;
|
||||
Authorized = false;
|
||||
Plugin.toolStripButton.ToolTipText = "Авторизация: вход не выполнен";
|
||||
Plugin.toolStripButton.Image = PluginImage.Image;
|
||||
Plugin.menuItem.Image = PluginImage.Image;
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(LoginForm));
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private async void LoginForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
// Получить список групп и заполнить выпадающий список значениями
|
||||
if (SiteProvider == null)
|
||||
throw new Exception("Error in Login form! Site credentials cannot be empty!");
|
||||
if (groupNamesBox.Items.Count > 0) // Группы уже загружены
|
||||
return;
|
||||
//groupImage.Image = Properties.Resources.LoadingImg;
|
||||
var groups = await SiteProvider.GetGroupsNames();
|
||||
groupNamesBox.Items.Clear();
|
||||
groupNamesBox.Items.AddRange(groups.Split(';').Where(Item => Item != "").ToArray());
|
||||
//groupImage.Image = null;
|
||||
}
|
||||
|
||||
private async void GroupNamesBox_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
// Получить список участников группы
|
||||
if (groupNamesBox.Text == "") return;
|
||||
|
||||
if (SiteProvider == null)
|
||||
throw new Exception("Error in Login form! Site credentials cannot be empty!");
|
||||
//userImage.Image = Properties.Resources.LoadingImg;
|
||||
var users = await SiteProvider.GetUsersNames(groupNamesBox.Text);
|
||||
usersNamesBox.Items.Clear();
|
||||
usersNamesBox.Items.AddRange(users.Split(';').Where(Item => Item != "").ToArray());
|
||||
//userImage.Image = null;
|
||||
}
|
||||
|
||||
private void cancelButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
Close();
|
||||
passwordBox.Text = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
347
VisualPlugins/TraningControlPlugin/LoginForm.resx
Normal file
347
VisualPlugins/TraningControlPlugin/LoginForm.resx
Normal file
|
|
@ -0,0 +1,347 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="PluginImage.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
Qk02DAAAAAAAADYAAAAoAAAAIAAAACAAAAABABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wD/d3Z2
|
||||
RUNDRUNDRUNDRUNDRUNDRUNDRUNDRUNDRUNDRUNDRUNDRUNDRUNDRUNDRUNDRUNDRUNDRUNDRUNDRUND
|
||||
RUNDRUNDUlBQeXh4/wD//wD//wD//wD//wD//wD//wD/W1paR0VFWVdXW1paW1paW1paW1paW1paW1pa
|
||||
W1paW1paW1paW1paW1paW1paW1paWlhYSkhIRUNDRUNDRkREUU9PWFdXU1FRR0VFSUdHdXNz/wD//wD/
|
||||
/wD//wD//wD/W1paWFdX09HR5+bm5+bm5+bm5+bm5+bm5+bm5+bm5+bm5+bm5+bm5+bm5+bm5+bmu7q6
|
||||
U1FRRUNDaGZmrq2t19fX4ODg2tnZsbGxa2lpRkREY2Fh/wD//wD//wD//wD/W1paW1pa5+bm////////
|
||||
////////////////////////////////////////7OzscnFxRkREgH9/5OTk/v7+1dXViYeH1dXV/v7+
|
||||
5+bmhIKCRkREdXNz/wD//wD//wD/W1paW1pa5+bm////////////////////////////////////////
|
||||
////////s7OzSEdHaGZm5eTk////////pKOjRUNDpKOj////////5+fna2lpSUdH/wD//wD//wD/XVxc
|
||||
WVdX5OPj////////////////////////////////////////////9/f3fHt7R0VFrq2t/v7+////////
|
||||
oaCgRUNDoaCg/////////v7+sbGxR0VFf35+/wD//wD/ZmRkUlBQ2tnZ////////////////////////
|
||||
////////////////////7OzsYmBgUU9P19fX1dXVpKOjoaCgcnFxRUNDcnFxoaCgpKOj1dXV2dnZUlFR
|
||||
ZGJi/wD//wD/fHp6SEZGvby8////////////////////////////////////////////5+bmW1paWFdX
|
||||
4ODgiYeHRUNDRUNDRUNDRUNDRUNDRUNDRUNDiYeH4uLiWlhYXVtb/wD//wD/pqWlRkREi4qK+/n5////
|
||||
////////////////////////////////////6+vrYV9fUlBQ2NjY1dXVpKOjoaCgcnFxRUNDcnFxoaCg
|
||||
pKOj1dXV2dnZUlFRZGJi/wD//wD//wD/VVNTWFdX2tra////////////////////////////////////
|
||||
////9/f3e3p6R0VFrq2t/v7+////////oaCgRUNDoaCg/////////v7+sbGxR0VFf35+/wD//wD//wD/
|
||||
iYiIRUNDiomJ9fX1////////////////////////////////////////s7KySUdHaGdn5eXl////////
|
||||
pKOjRUNDpKOj////////5+bmamhoSUdH/wD//wD//wD//wD//wD/W1lZTEpKrKys+/v7////////////
|
||||
////////////////////////7ezscXBwRkREgX9/5eXl/v7+1dXViYeH1dXV/v7+5+bmg4GBRkREdXNz
|
||||
/wD//wD//wD//wD//wD/tLOzTkxMUU9PrKys9fX1/////////v7+9PT06enp6enp9PT0/v7+/v7+0tHR
|
||||
Xl1dRkREaGdnsbGx2tra4uHh2trasrGxa2lpRkREY2Fh/wD//wD//wD//wD//wD//wD//wD/p6WlTkxM
|
||||
TEpKiomJ2dnZ5OTkp6amcnBwXVxcXVxccnBwp6am5OTk2trac3FxRUNDRUNDR0VFU1JSWlhYU1FRR0VF
|
||||
SUdHdXNz/wD//wD//wD//wD//wD//wD//wD//wD//wD/tbS0XFpaRUNDWFZWYF5eR0VFSEZGVlRUVlRU
|
||||
SEZGRkREYF5eWFZWRUNDXFtbl5aW/wD/ZGNjXVtbZGJif35+/wD//wD//wD//wD//wD//wD//wD//wD/
|
||||
/wD//wD//wD//wD//wD/cG5uRUNDR0VFb21turm5397e397eurm5cG5uR0VFRUNDb21t/wD//wD//wD/
|
||||
/wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD/YmBgSEZGjYyM
|
||||
6urq/v7+////////////6urqjYyMSEZGYmBg/wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD/
|
||||
/wD//wD//wD//wD//wD//wD//wD//wD/hYSERkREgYCA7+/v////////////////////////7+/vgYCA
|
||||
RkREhoSE/wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD/
|
||||
TkxMXlxc3Nzc////////////////////////////////3NzcXlxcTkxM/wD//wD//wD//wD//wD//wD/
|
||||
/wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD/hIODRkREoaCg/f39////////////////////
|
||||
/////////////f39oaCgRkREhYSE/wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD/
|
||||
/wD//wD//wD/W1lZV1VV3Nzc////////////////////////////////////////3dzcVlRUW1lZ/wD/
|
||||
/wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD/xcXFSkhIdnV19vb2////////
|
||||
////////////////////////////////9vb2d3V1SkhIxcTE/wD//wD//wD//wD//wD//wD//wD//wD/
|
||||
/wD//wD//wD//wD//wD//wD/rKurRUNDk5KS/f39////////////////////////////////////////
|
||||
/f39k5KSRUNDrKur/wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD/o6KiRUND
|
||||
n52d////////////////////////////////////////////////n56eRUNDo6Ki/wD//wD//wD//wD/
|
||||
/wD//wD//wD//wD//wD//wD//wD//wD//wD//wD/rq2tRUNDkpCQ/f39////////////////////////
|
||||
/////////////////f39kY+PRUNDrq2t/wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD/
|
||||
/wD//wD//wD/S0lJb21t8/Ly////////////////////////////////////////8/Lyb21tS0lJ/wD/
|
||||
/wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD/ZGJiTUtLxcXF////////
|
||||
////////////////////////////////xcXFTUtLZGJi/wD//wD//wD//wD//wD//wD//wD//wD//wD/
|
||||
/wD//wD//wD//wD//wD//wD//wD/o6KiR0VFbm1t5eTk////////////////////////////////5OTk
|
||||
bm1tR0VFo6Ki/wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD/
|
||||
c3JyRkREeXd329vb/f39/////////////////f393NvbeXd3RkREc3Jy/wD//wD//wD//wD//wD//wD/
|
||||
/wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD/a2lpRkREXVxcnpyc0NDQ4+Pj4+Pj
|
||||
0dDQn56eXlxcRkREbGpq/wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD/
|
||||
/wD//wD//wD//wD//wD//wD/hYSETkxMRUNDTkxMWFdXWFdXTkxMRURETkxMhoWF/wD//wD//wD//wD/
|
||||
/wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD/
|
||||
jYyMYF5eSUdHSUdHYF5ejIuL/wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD/
|
||||
/wD//wD/
|
||||
</value>
|
||||
</data>
|
||||
<data name="PluginImageAuthorized.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
Qk02EAAAAAAAADYAAAAoAAAAIAAAACAAAAABACAAAAAAAAAAAADEDgAAxA4AAAAAAAAAAAAAPz8/EERD
|
||||
Q7lFQ0P+RUND/0VDQ/9FQ0P/RUND/0VDQ/9FQ0P/RUND/0VDQ/9FQ0P/RUND/0VDQ/9FQ0P/RUND/0VD
|
||||
Q/9FQ0P/RUND/0VDQ/9FQ0P/RUND/0VDQ/9FQ0P/RUJC7ERDQ7ZGQ0Ni/wD///8A////AP///wD///8A
|
||||
//9HPz8gREND30VDQ/tFQ0PjREND30RDQ99EQ0PfREND30RDQ99EQ0PfREND30RDQ99EQ0PfREND30RD
|
||||
Q99EQ0PfREND30VCQuFFQ0P3RUND/0VDQ/9EQkL8REJC7URDQ+NFQ0PrRUND+0RCQvhFQkK8REREOP8A
|
||||
////AP///wD//0c/PyBEQ0PfREND40LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LI
|
||||
U/9CyFP/QshT/0LIU/9CyFP/RUJCXERCQupEQkL9RUJCzkVDQ25CyFP/QshT/0LIU/9DQ0NpRUJCykRC
|
||||
QvxFQ0PVREREOP8A////AP//Rz8/IERDQ99EQ0PfQshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LI
|
||||
U/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9FQ0PAREJC/EVDQ61CyFP/QshT/0LIU/9FQkKhQshT/0LI
|
||||
U/9CyFP/RUJCqERCQvxFQkK8RUVFFv8A//9HPz8gREND30RDQ99CyFP/QshT/0LIU/9CyFP/QshT/0LI
|
||||
U/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/Q0NDZkRDQ/lFQkLOQshT/0LIU/9CyFP/RUNDfEVD
|
||||
Q/5FQ0N8QshT/0LIU/9CyFP/RUJCykRCQvhERERh/wD//0ZGRh1EQ0PcREJC4kLIU/9CyFP/QshT/0LI
|
||||
U/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9EQ0OyRUND+0VDQ25CyFP/QshT/0LI
|
||||
U/9FQ0OARUND/0VDQ4BCyFP/QshT/0LIU/9DQ0NpRUND+0RDQ67/AP//SDw8FURCQtBFQkLsQshT/0LI
|
||||
U/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0VCQtZEQkLtQshT/0LI
|
||||
U/9FQ0N8RUNDgEVDQ8BFQ0P/RUNDwEVDQ4BFQ0N8QshT/0LIU/9EQ0PrREJC0/8A////AP//REFBskVD
|
||||
Q/pEQUFZQshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/REND30RD
|
||||
Q+NCyFP/RUJCoUVDQ/5FQ0P/RUND/0VDQ/9FQ0P/RUND/0VDQ/5FQkKhQshT/0VCQuFFQkLd/wD///8A
|
||||
//9FQ0N5RUND/UVDQ55CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LI
|
||||
U/9EQkLXRUJC7ELIU/9CyFP/RUNDfEVDQ4BFQ0PARUND/0VDQ8BFQ0OARUNDfELIU/9CyFP/REND60RC
|
||||
QtP/AP///wD//0RERDRFQ0PoREND40LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LI
|
||||
U/9CyFP/QshT/0RCQrNFQ0P7Q0FBbULIU/9CyFP/QshT/0VDQ4BFQ0P/RUNDgELIU/9CyFP/QshT/0ND
|
||||
Q2lFQ0P7RENDrv8A////AP///wD//0RCQqBEQkL9RENDn0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LI
|
||||
U/9CyFP/QshT/0LIU/9CyFP/RUJCZ0VDQ/lEQ0PNQshT/0LIU/9CyFP/RUNDfEVDQ/5FQ0N8QshT/0LI
|
||||
U/9CyFP/RUJCy0RCQvhEQUFh/wD///8A////AP//RkFBM0RCQt9EQkL0REREcELIU/9CyFP/QshT/0LI
|
||||
U/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/RENDwURCQvxFQkKsQshT/0LIU/9CyFP/RUJCoULI
|
||||
U/9CyFP/QshT/0VCQqlEQkL8RUJCvP8A////AP///wD///8A////AP//REFBZURCQvFEQkLtREREcELI
|
||||
U/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/REND20RCQvxEQ0PNQ0NDaULI
|
||||
U/9CyFP/QshT/0ZDQ2lFQkLKREJC/EVDQ9VEREQ4/wD///8A////AP///wD///8A////AP//RkFBeERC
|
||||
QvFEQkL0RENDn0LIU/9CyFP/REJCd0VCQsBEQ0PcREND3EVCQsBEQkJ3QshT/0LIU/9FQkK/RUND/0VD
|
||||
Q/9FQ0P7REND6kVCQuFFQ0PrRUND+0RCQvhFQkK8REREOP8A////AP///wD///8A////AP///wD///8A
|
||||
////AP//REJCZERCQt5EQkL9RUND5EVCQtlFQ0P7REJC+UVDQ+dFQ0PnREJC+URCQvxFQkLZRUND5ERC
|
||||
Qv1EQ0PeREJCjURDQ65EQ0PTRUJC3URCQtNEQ0OuREFBYf8A////AP///wD///8A////AP///wD///8A
|
||||
////AP///wD///8A////AP///wD//0VCQsNFQ0P/RUND+0RCQsREQUFdQshT/0LIU/9EQUFdRUJCw0VD
|
||||
Q/tFQ0P/REJCxP8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
|
||||
////AP///wD///8A////AP///wD///8A////AP//RUJC1kVDQ/pFQ0ObQshT/0LIU/9CyFP/QshT/0LI
|
||||
U/9CyFP/RUNDm0VDQ/pFQkLW/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
|
||||
////AP///wD///8A////AP///wD///8A////AP///wD//0VDQ6ZEQkL8RENDq0LIU/9CyFP/QshT/0LI
|
||||
U/9CyFP/QshT/0LIU/9CyFP/RENDq0RCQvxFQkKl/wD///8A////AP///wD///8A////AP///wD///8A
|
||||
////AP///wD///8A////AP///wD///8A////AP///wD///8A//9DQ0NLREJC8UVDQ9xCyFP/QshT/0LI
|
||||
U/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/RUND3ERCQvFDQ0NL/wD///8A////AP///wD///8A
|
||||
////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD//0RDQ6dEQkL8REJCf0LI
|
||||
U/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9EQkJ/REJC/EVDQ6b/AP///wD///8A
|
||||
////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//9EREQlRUND4EVC
|
||||
QuVCyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9EQkLmRUND4P8A
|
||||
////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD//0RE
|
||||
RE5FQ0P3RENDukLIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0VD
|
||||
Q7pFQ0P3REFBTv8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
|
||||
////AP//REJCcEVDQ/5FQ0OTQshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LI
|
||||
U/9CyFP/RUNDk0VDQ/5EQkJw/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
|
||||
////AP///wD///8A//9FQ0N9RUND/0ZCQoNCyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LI
|
||||
U/9CyFP/QshT/0LIU/9GRESDRUND/0VDQ33/AP///wD///8A////AP///wD///8A////AP///wD///8A
|
||||
////AP///wD///8A////AP///wD//0VDQ25FQ0P+RkJClULIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LI
|
||||
U/9CyFP/QshT/0LIU/9CyFP/QshT/0VCQpZFQ0P+RUNDbv8A////AP///wD///8A////AP///wD///8A
|
||||
////AP///wD///8A////AP///wD///8A////AP//RkNDSERCQvVEQkLEQshT/0LIU/9CyFP/QshT/0LI
|
||||
U/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/REJCxERCQvVGQ0NI/wD///8A////AP///wD///8A
|
||||
////AP///wD///8A////AP///wD///8A////AP///wD///8A//9IPz8cREJC00RCQvJEREROQshT/0LI
|
||||
U/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0RERE5EQkLyREJC0/8A////AP///wD///8A
|
||||
////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//9DQUF8RUND+0RD
|
||||
Q8VCyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/RENDxUVDQ/tDQUF8/wD///8A
|
||||
////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD//0JC
|
||||
QhtEQ0O+REJC/EVCQrdCyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0VCQrdEQkL8RENDvv8A
|
||||
////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
|
||||
////AP///wD//0dCQjJFQkLKREJC/ERDQ9xFQUGEQshT/0LIU/9CyFP/QshT/0ZERINFQ0PcREJC/EVD
|
||||
Q8lCQkIy/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
|
||||
////AP///wD///8A////AP///wD//0RERClDQkKlREJC8URCQv1EQkLxREND40RDQ+NEQkLxREND/URC
|
||||
QvFFQ0OlREREKf8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
|
||||
////AP///wD///8A////AP///wD///8A////AP///wD///8A//9GQ0NIRUNDm0VCQtlEQkL4REJC+EVC
|
||||
QtlEQ0OcRUJCSf8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
|
||||
////AP///wD//w==
|
||||
</value>
|
||||
</data>
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAIAICAAAAEAIACoEAAAJgAAABAQAAABACAAaAQAAM4QAAAoAAAAIAAAAEAAAAABACAAAAAAAIAQ
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAPz8/EERDQ7lFQ0P+RUND/0VDQ/9FQ0P/RUND/0VDQ/9FQ0P/RUND/0VD
|
||||
Q/9FQ0P/RUND/0VDQ/9FQ0P/RUND/0VDQ/9FQ0P/RUND/0VDQ/9FQ0P/RUND/0VDQ/9FQ0P/RUJC7ERD
|
||||
Q7ZGQ0NiRUVFFgAAAAAAAAAAAAAAAAAAAABHPz8gREND30VDQ/tFQ0PjREND30RDQ99EQ0PfREND30RD
|
||||
Q99EQ0PfREND30RDQ99EQ0PfREND30RDQ99EQ0PfREND30VCQuFFQ0P3RUND/0VDQ/9EQkL8REJC7URD
|
||||
Q+NFQ0PrRUND+0RCQvhFQkK8REREOAAAAAIAAAAAAAAAAEc/PyBEQ0PfREND40g/PzxHPz8gRz8/IEc/
|
||||
PyBHPz8gRz8/IEc/PyBHPz8gRz8/IEc/PyBHPz8gRz8/IEc/PyBHPz8gRUJCXERCQupEQkL9RUJCzkVD
|
||||
Q25DQ0M1REREKUdCQjJDQ0NpRUJCykRCQvxFQ0PVREREOAAAAAAAAAAARz8/IERDQ99EQ0PfRz8/IAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8/PxhFQ0PAREJC/EVD
|
||||
Q61BQUEjAAAAAURERDhFQkKhREREOAAAAAFHPz8gRUJCqERCQvxFQkK8RUVFFgAAAABHPz8gREND30RD
|
||||
Q99HPz8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ0NDZkRD
|
||||
Q/lFQkLOSEFBIwAAAAAAAAAARUNDfEVDQ/5FQ0N8AAAAAAAAAABHR0cgRUJCykRCQvhERERhAAAAAEZG
|
||||
Rh1EQ0PcREJC4kY/PyQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg4
|
||||
OAlEQ0OyRUND+0VDQ24AAAABAAAAAAAAAABFQ0OARUND/0VDQ4AAAAAAAAAAAAAAAAFDQ0NpRUND+0RD
|
||||
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
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// Этот код создан программой.
|
||||
// Исполняемая версия:4.0.30319.1
|
||||
// Исполняемая версия:4.0.30319.42000
|
||||
//
|
||||
// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
|
||||
// повторной генерации кода.
|
||||
|
|
@ -19,7 +19,7 @@ namespace VisualPascalABCPlugins.Properties {
|
|||
// с помощью такого средства, как ResGen или Visual Studio.
|
||||
// Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen
|
||||
// с параметром /str или перестройте свой проект VS.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
|
@ -59,5 +59,15 @@ namespace VisualPascalABCPlugins.Properties {
|
|||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Поиск локализованного ресурса типа System.Drawing.Icon, аналогичного (Значок).
|
||||
/// </summary>
|
||||
internal static System.Drawing.Icon IconAuthorized {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("IconAuthorized", resourceCulture);
|
||||
return ((System.Drawing.Icon)(obj));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -112,9 +112,13 @@
|
|||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="IconAuthorized" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\IconAuthorized.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
</root>
|
||||
207
VisualPlugins/TraningControlPlugin/SiteAccessInfo.cs
Normal file
207
VisualPlugins/TraningControlPlugin/SiteAccessInfo.cs
Normal file
|
|
@ -0,0 +1,207 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net.Http;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DBAccessPluginNamespace
|
||||
{
|
||||
public enum UserTypeEnum {None, Student, Teacher, Admin };
|
||||
|
||||
// Информация о пользователе для доступа к сайту, а также для работы с сайтом
|
||||
// Это можно сохранять между запусками программы
|
||||
public class SiteAccessProvider
|
||||
{
|
||||
// Данные о пользователе
|
||||
public string ShortFIO { get; set; } = "";
|
||||
public string FullFIO { get; set; } = "";
|
||||
public string Password { get; set; } = "";
|
||||
public string Group { get; set; } = "";
|
||||
public UserTypeEnum UserType { get; set; } = UserTypeEnum.None;
|
||||
|
||||
// Базовый адрес папки со скриптами (адрес сервера)
|
||||
public string ServAddr = "";
|
||||
|
||||
// Клиент для обработки запросов http
|
||||
private HttpClient client = null;
|
||||
|
||||
/// <summary>
|
||||
/// Запрос на добавление информации об активности в БДИм
|
||||
/// </summary>
|
||||
/// <param name="TaskName">Имя задания</param>
|
||||
/// <param name="LessonName">Имя урока</param>
|
||||
/// <param name="TypeString">Тип записи - например, выполнено или нет задание</param>
|
||||
/// <param name="ContentInfo">Дополнительные данные - например, текст программы</param>
|
||||
/// <returns></returns>
|
||||
async public Task<string> SendPostRequest(string TaskName, string LessonName, string TypeString, string ContentInfo)
|
||||
{
|
||||
// Если не выполнен вход, то выход с ошибкой
|
||||
if (UserType == UserTypeEnum.None) return "Error";
|
||||
|
||||
// Если не выполнен вход, то выход с ошибкой
|
||||
if (UserType != UserTypeEnum.Student) return "Cannot write activity, because you're teacher!";
|
||||
|
||||
// Если клиент ещё не создан был, пересоздаём
|
||||
if (client == null) client = new HttpClient();
|
||||
// Словарик для параметров запроса
|
||||
var values = new Dictionary<string, string>
|
||||
{
|
||||
//`id`, `pupilId`, `taskName`, `lessonName`, `type`, `content`, `time`, `IP`
|
||||
{ "shortFIO", ShortFIO }, // shortFIO или FIO, и они должны совпадать с такими же в базе
|
||||
{"FIO", FullFIO },
|
||||
{ "taskName", TaskName },
|
||||
{ "lessonName", LessonName },
|
||||
{ "type", TypeString },
|
||||
{ "content", ContentInfo },
|
||||
{ "password", Password }
|
||||
};
|
||||
// Отправка запроса на сервер
|
||||
var content = new FormUrlEncodedContent(values);
|
||||
var response = await client.PostAsync(ServAddr + "//add.php", content);
|
||||
return await response.Content.ReadAsStringAsync();
|
||||
}
|
||||
|
||||
public void Clear()
|
||||
{
|
||||
ShortFIO = "";
|
||||
FullFIO = "";
|
||||
Password = "";
|
||||
Group = "";
|
||||
UserType = UserTypeEnum.None;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Получение начальной информации (начальная страница)
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
async public Task<string> GetContents()
|
||||
{
|
||||
// Если клиент ещё не создан был, пересоздаём
|
||||
if (client == null) client = new HttpClient();
|
||||
// Тут не столь важно что отправлять, можно и пустой список параметров
|
||||
var values = new Dictionary<string, string>
|
||||
{
|
||||
{ "password", "123" },
|
||||
};
|
||||
|
||||
var content = new FormUrlEncodedContent(values);
|
||||
var response = await client.PostAsync(ServAddr + "/index.php", content);
|
||||
return await response.Content.ReadAsStringAsync();
|
||||
}
|
||||
/// <summary>
|
||||
/// Получить из БД список групп
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
async public Task<string> GetGroupsNames(string ServerAddr = "")
|
||||
{
|
||||
// Этот метод может быть вызван без предварительного входа
|
||||
if (ServerAddr != "")
|
||||
ServAddr = ServerAddr;
|
||||
if (ServAddr == "") return "Error";
|
||||
|
||||
// Если клиент ещё не создан был, пересоздаём
|
||||
if (client == null) client = new HttpClient();
|
||||
var values = new Dictionary<string, string>();
|
||||
var content = new FormUrlEncodedContent(values);
|
||||
var response = await client.PostAsync(ServAddr + "/groupslist.php", content);
|
||||
return await response.Content.ReadAsStringAsync();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Получить из БД список учеников определенной группы
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
async public Task<string> GetUsersNames(string GroupName, string ServerAddr = "")
|
||||
{
|
||||
// Этот метод может быть вызван без предварительного входа
|
||||
if (ServerAddr != "" || GroupName == "")
|
||||
ServAddr = ServerAddr;
|
||||
if (ServAddr == "") return "Error";
|
||||
// Если клиент ещё не создан был, пересоздаём
|
||||
if (client == null) client = new HttpClient();
|
||||
Group = GroupName;
|
||||
var values = new Dictionary<string, string>
|
||||
{
|
||||
//`id`, `pupilId`, `taskName`, `lessonName`, `type`, `content`, `time`, `IP`
|
||||
{ "userGroup", Group } // shortFIO или FIO, и они должны совпадать с такими же в базе
|
||||
};
|
||||
|
||||
var content = new FormUrlEncodedContent(values);
|
||||
var response = await client.PostAsync(ServAddr + "/userslist.php", content);
|
||||
return await response.Content.ReadAsStringAsync();
|
||||
}
|
||||
|
||||
async public Task<string> Login(string shortFIO, string fullFIO, string password, string ServerAddr = "")
|
||||
{
|
||||
// Если передана строка адреса - то и хорошо, а если нет, то используем предыдущее значение
|
||||
Clear();
|
||||
if (ServerAddr != "")
|
||||
ServAddr = ServerAddr;
|
||||
if (ServAddr == "" && ServerAddr == "") return "Error";
|
||||
|
||||
if (shortFIO == "" && fullFIO == "") return "Error";
|
||||
ShortFIO = shortFIO;
|
||||
FullFIO = fullFIO;
|
||||
Password = password;
|
||||
if (client == null) client = new HttpClient();
|
||||
|
||||
// Словарик для параметров запроса
|
||||
var values = new Dictionary<string, string>
|
||||
{
|
||||
//`id`, `pupilId`, `taskName`, `lessonName`, `type`, `content`, `time`, `IP`
|
||||
{ "shortFIO", ShortFIO }, // shortFIO или FIO, и они должны совпадать с такими же в базе
|
||||
{ "FIO", FullFIO },
|
||||
{ "password", Password}
|
||||
};
|
||||
// Отправка запроса на сервер
|
||||
var content = new FormUrlEncodedContent(values);
|
||||
var response = await client.PostAsync(ServAddr + "/login.php", content);
|
||||
string responseText = await response.Content.ReadAsStringAsync();
|
||||
|
||||
// Разобрать ответ от сервера - как пары key:value;
|
||||
// Это сложно, т.к. тут могут быть сообщения об ошибках
|
||||
|
||||
|
||||
//return responseText;
|
||||
var pieces = responseText.Split(';');
|
||||
|
||||
// Сбрасываем тип пользователя, по нему и будем проверять успешность ответа
|
||||
// В сообщениях об ошибках его не должно быть
|
||||
|
||||
foreach(var s in pieces)
|
||||
{
|
||||
if (s.IndexOf(':') < 1) continue;
|
||||
var pair = s.Split(':');
|
||||
switch(pair[0])
|
||||
{
|
||||
case "FIO" : FullFIO = pair[1]; break;
|
||||
case "ShortFIO": ShortFIO = pair[1]; break;
|
||||
case "type" : {
|
||||
if (pair[1] == "prepod") UserType = UserTypeEnum.Teacher;
|
||||
else if (pair[1] == "student") UserType = UserTypeEnum.Student;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(UserType == UserTypeEnum.None)
|
||||
{
|
||||
Clear();
|
||||
return responseText;
|
||||
}
|
||||
return "Success";
|
||||
}
|
||||
|
||||
// Так как мы на сервере пока ничего не запоминаем, то процесс выхода - просто стереть всё
|
||||
public void Logout()
|
||||
{
|
||||
// Данные о пользователе
|
||||
Clear();
|
||||
|
||||
if (client != null)
|
||||
client.Dispose();
|
||||
client = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -5,43 +5,24 @@ using System.Text;
|
|||
using System.Linq;
|
||||
using PascalABCCompiler.SyntaxTreeConverters;
|
||||
using PascalABCCompiler.SyntaxTree;
|
||||
using DBAccessPluginNamespace;
|
||||
|
||||
namespace VisualPascalABCPlugins
|
||||
{
|
||||
/*public class TeacherContolConverter: ISyntaxTreeConverter
|
||||
{
|
||||
public string Name { get => "TeacherContolConverter"; }
|
||||
public syntax_tree_node Convert(syntax_tree_node root)
|
||||
{
|
||||
var program = root as program_module;
|
||||
if (program == null) // если это не главная программа, то не преобразовывать
|
||||
return root;
|
||||
var FileName = program.file_name;
|
||||
var fi = new System.IO.FileInfo(FileName);
|
||||
var SourceFileDirectory = fi.DirectoryName;
|
||||
|
||||
var FullLightPTName = System.IO.Path.Combine(SourceFileDirectory, "lightpt.dat");
|
||||
if (!System.IO.File.Exists(FullLightPTName))
|
||||
return root;
|
||||
|
||||
if (program.used_units == null)
|
||||
program.used_units = new uses_list();
|
||||
program.used_units.Add(new unit_or_namespace("LightPT", null));
|
||||
program.used_units.Add(new unit_or_namespace("Tasks", null));
|
||||
return root;
|
||||
}
|
||||
}*/
|
||||
|
||||
//имя класса *_VisualPascalABCPlugin
|
||||
public class VisualPascalABCPlugin_TeacherControlPlugin : IVisualPascalABCPlugin
|
||||
{
|
||||
private const string LabelEntered = "Личный кабинет: ";
|
||||
private const string LabelNotEntered = "Личный кабинет: вход не выполнен";
|
||||
private const string LabelEntered = "Авторизация: ";
|
||||
private const string LabelNotEntered = "Авторизация: вход не выполнен";
|
||||
public static string StringsPrefix = "VPP_REGISTER_AND_CONTROL_PLUGIN_";
|
||||
IVisualEnvironmentCompiler VisualEnvironmentCompiler;
|
||||
|
||||
IWorkbench Workbench;
|
||||
private TeacherControlForm RegisterForm = new TeacherControlForm();
|
||||
//private TeacherControlForm RegisterForm = new TeacherControlForm(); // старая форма авторизации
|
||||
//private LoginForm RegisterFormNew = new LoginForm(); // новая форма авторизации
|
||||
// User
|
||||
SiteAccessProvider User = new SiteAccessProvider();
|
||||
|
||||
private PluginGUIItem Item;
|
||||
public string Name { get => "Teacher Control Plugin"; }
|
||||
public string Version { get => "0.1"; }
|
||||
|
|
@ -49,27 +30,53 @@ namespace VisualPascalABCPlugins
|
|||
|
||||
public string Login = null;
|
||||
public string Password = null;
|
||||
public void Execute()
|
||||
{
|
||||
var dr = RegisterForm.ShowDialog();
|
||||
if (RegisterForm.Registered)
|
||||
Item.Hint = LabelEntered + RegisterForm.Login;
|
||||
else Item.Hint = LabelNotEntered;
|
||||
}
|
||||
|
||||
public LoginForm loginForm;
|
||||
|
||||
bool firstTime = true;
|
||||
public ToolStripMenuItem menuItem = null;
|
||||
public ToolStripButton toolStripButton = null;
|
||||
|
||||
public VisualPascalABCPlugin_TeacherControlPlugin(IWorkbench Workbench)
|
||||
{
|
||||
loginForm = new LoginForm(this);
|
||||
this.Workbench = Workbench;
|
||||
VisualEnvironmentCompiler = Workbench.VisualEnvironmentCompiler;
|
||||
RegisterForm.VisualEnvironmentCompiler = VisualEnvironmentCompiler;
|
||||
//var tbitem = Workbench.MainForm.Controls.Find("", true);
|
||||
// RegisterForm.VisualEnvironmentCompiler = VisualEnvironmentCompiler; // Пока форма регистрации никак не связана с компилятором
|
||||
|
||||
// Регистрация обработчика
|
||||
this.Workbench.ServiceContainer.RunService.Starting += RunStartingHandler;
|
||||
//Workbench.ServiceContainer.BuildService.BeforeCompile += BeforeCompileHandler;
|
||||
}
|
||||
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;
|
||||
}*/
|
||||
}
|
||||
|
||||
public void GetGUI(List<IPluginGUIItem> MenuItems, List<IPluginGUIItem> ToolBarItems)
|
||||
{
|
||||
Item = new PluginGUIItem(StringsPrefix + "NAME", StringsPrefix + "DESCRIPTION", RegisterForm.PluginImage.Image, RegisterForm.PluginImage.BackColor, Execute);
|
||||
Item = new PluginGUIItem(StringsPrefix + "NAME", StringsPrefix + "DESCRIPTION", loginForm.PluginImage.Image, loginForm.PluginImage.BackColor, Execute);
|
||||
MenuItems.Add(Item);
|
||||
ToolBarItems.Add(Item);
|
||||
}
|
||||
|
|
@ -99,10 +106,10 @@ namespace VisualPascalABCPlugins
|
|||
private void RunStartingHandler(string filename)
|
||||
{
|
||||
|
||||
if (RegisterForm.Registered)
|
||||
/*if (RegisterForm.Registered)
|
||||
{
|
||||
System.IO.File.AppendAllText("d:\\runs.txt", filename + " " + DateTime.Now + '\n');
|
||||
}
|
||||
}*/
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
|
|
@ -15,7 +15,7 @@
|
|||
<OldToolsVersion>4.0</OldToolsVersion>
|
||||
<UpgradeBackupLocation>
|
||||
</UpgradeBackupLocation>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<TargetFrameworkVersion>v4.7.1</TargetFrameworkVersion>
|
||||
<TargetFrameworkProfile />
|
||||
<PublishUrl>publish\</PublishUrl>
|
||||
<Install>true</Install>
|
||||
|
|
@ -43,6 +43,7 @@
|
|||
<WarningLevel>4</WarningLevel>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<UseVSHostingProcess>true</UseVSHostingProcess>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
|
|
@ -52,20 +53,29 @@
|
|||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="LoginForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="LoginForm.designer.cs">
|
||||
<DependentUpon>LoginForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="SiteAccessInfo.cs" />
|
||||
<Compile Include="TeacherControlForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
|
|
@ -76,6 +86,9 @@
|
|||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="LoginForm.resx">
|
||||
<DependentUpon>LoginForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
|
|
@ -137,6 +150,15 @@
|
|||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="IconAuthorized1.ico" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\IconAuthorized.ico" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="IconAuthorized.ico" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
|
|
|
|||
|
|
@ -119,8 +119,6 @@ type
|
|||
function AddGeom(n: integer; a0,step: real): ObjectList; begin lst.AddRange(ArrGen(n,a0,x->x*step).Select(x -> object(x))); Result := Self end;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
var
|
||||
OutputString := new StringBuilder;
|
||||
OutputList := new List<object>;
|
||||
|
|
@ -132,7 +130,7 @@ var
|
|||
|
||||
Cur := 0;
|
||||
|
||||
function TaskName := ExtractFileName(System.Environment.GetCommandLineArgs[0]).Replace('.exe', '');
|
||||
var TaskName := ExtractFileName(System.Environment.GetCommandLineArgs[0]).Replace('.exe', '');
|
||||
|
||||
function IsPT := System.Type.GetType('PT4.PT4') <> nil;
|
||||
|
||||
|
|
@ -687,6 +685,13 @@ begin
|
|||
var bool := IsSol.Invoke(f.GetValue(nil),nil);
|
||||
if boolean(bool) then
|
||||
TaskResult := Solved;
|
||||
// RobField.TaskName
|
||||
var RBTaskNameInfo := f.FieldType.GetField('TaskName');
|
||||
var v := string(RBTaskNameInfo.GetValue(f.GetValue(nil)));
|
||||
// Добавлять RB к имени задания если его там нет
|
||||
if not v.ToLower.StartsWith('rb') then
|
||||
v := v.Insert(0,'RB');
|
||||
TaskName := v;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
|
@ -702,11 +707,18 @@ begin
|
|||
var bool := IsSol.Invoke(f.GetValue(nil),nil);
|
||||
if boolean(bool) then
|
||||
TaskResult := Solved;
|
||||
// DMField.TaskName
|
||||
var DMTaskNameInfo := f.FieldType.GetField('TaskName');
|
||||
var v := string(DMTaskNameInfo.GetValue(f.GetValue(nil)));
|
||||
// Добавлять DM к имени задания если его там нет
|
||||
if not v.ToLower.StartsWith('dm') then
|
||||
v := v.Insert(0,'DM');
|
||||
TaskName := v;
|
||||
end;
|
||||
end;
|
||||
|
||||
// Вызов PT4.PT4.__FinalizeModule__ отражением
|
||||
procedure FinalizeModulePT4;
|
||||
procedure PT4CheckSolution;
|
||||
begin
|
||||
var t := System.Type.GetType('PT4.PT4');
|
||||
if t<>nil then
|
||||
|
|
@ -714,6 +726,9 @@ begin
|
|||
var meth := t.GetMethod('__FinalizeModule__',System.Reflection.BindingFlags.Public or System.Reflection.BindingFlags.Static);
|
||||
if meth <> nil then
|
||||
meth.Invoke(nil,nil);
|
||||
//
|
||||
var f := t.GetField('TaskName',System.Reflection.BindingFlags.Public or System.Reflection.BindingFlags.Static);
|
||||
TaskName := string(f.GetValue(nil));
|
||||
end;
|
||||
end;
|
||||
|
||||
|
|
@ -889,15 +904,27 @@ begin
|
|||
ColoredMessage('PT4: '+info.Replace(#13#10, ' ').TrimStart().TrimEnd('.',' '));}
|
||||
end;
|
||||
|
||||
function ConvertTaskName(tn: string): string;
|
||||
begin
|
||||
var TName := tn;
|
||||
// Если есть номер с подчеркиванием в начале, то отбросить его
|
||||
var ind := TName.IndexOf('_');
|
||||
if (ind >= 0) and TName[1].IsDigit then // Значит, в начале - номер, он служит лишь для упорядочения файлов
|
||||
TName := TName.Remove(0,ind + 1);
|
||||
if TName.ToLower in TaskNamesMap then
|
||||
TName := TaskNamesMap[TName.ToLower];
|
||||
Result := TName;
|
||||
end;
|
||||
|
||||
|
||||
procedure CheckMyPT;
|
||||
begin
|
||||
if CheckTask = nil then
|
||||
exit;
|
||||
var TName := TaskName;
|
||||
try
|
||||
var TName := TaskName;
|
||||
if TName.ToLower in TaskNamesMap then
|
||||
TName := TaskNamesMap[TName.ToLower];
|
||||
TName := ConvertTaskName(TaskName);
|
||||
|
||||
CheckTask(TName);
|
||||
// Если это задача из задачника, то результат будет NotUnderControl. И дальше необходимо это преобразовывать
|
||||
case TaskResult of
|
||||
|
|
@ -943,16 +970,24 @@ begin
|
|||
// Теперь тщательно проверяем задачник и исполнителей
|
||||
if IsPT then
|
||||
begin
|
||||
FinalizeModulePT4;
|
||||
PT4CheckSolution;
|
||||
TName := TaskName;
|
||||
var info := GetSolutionInfoPT4;
|
||||
CalcPT4Result(info,TaskResult,TaskResultInfo);
|
||||
end
|
||||
else if IsRobot then
|
||||
RobotCheckSolution
|
||||
begin
|
||||
RobotCheckSolution;
|
||||
TName := TaskName;
|
||||
end
|
||||
else if IsDrawman then
|
||||
begin
|
||||
DrawmanCheckSolution;
|
||||
TName := TaskName;
|
||||
end;
|
||||
// Хотелось бы писать в БД для Робота и др. имя задания в Task
|
||||
if WriteInfoCallBack<>nil then
|
||||
WriteInfoCallBack(TaskName, TaskResult, TaskResultInfo);
|
||||
WriteInfoCallBack(TName, TaskResult, TaskResultInfo);
|
||||
end;
|
||||
|
||||
procedure LoadLightPTInfo;
|
||||
|
|
|
|||
|
|
@ -81,6 +81,8 @@ type
|
|||
property Parent: Node read getParent write SetParent;
|
||||
property Data: integer read getData write SetData;
|
||||
end;
|
||||
|
||||
var TaskName: string;
|
||||
|
||||
/// Вывести формулировку задания
|
||||
procedure Task(name: string);
|
||||
|
|
@ -833,7 +835,7 @@ procedure StartPT(options: integer); external '%PABCSYSTEM%\PT4\PT4PABC.dll'
|
|||
procedure FreePT; external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'freept';
|
||||
function CheckPT(var res: integer):string;external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'checkptf';
|
||||
procedure RaisePT(s1,s2: string); external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'raisept';
|
||||
procedure Task(name: string); external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'task';
|
||||
procedure Task__(name: string); external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'task';
|
||||
procedure GetR(var param: real); external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'getr';
|
||||
procedure PutR(param: real); external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'putr';
|
||||
procedure GetN(var param: integer); external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'getn';
|
||||
|
|
@ -850,6 +852,12 @@ procedure DisposeP(sNode: IntPtr); external '%PABCSYSTEM%\PT4\PT4PABC.dll'
|
|||
function FinishPT(): integer; external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'finishpt'; // == 4.13 ==
|
||||
procedure _GetSolutionInfo(info: System.Text.StringBuilder);external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'getsolutioninfo';
|
||||
|
||||
procedure Task(name: string);
|
||||
begin
|
||||
Task__(name);
|
||||
TaskName := name;
|
||||
end;
|
||||
|
||||
procedure Dispose(p: pointer);
|
||||
begin
|
||||
DisposeP(IntPtr(p));
|
||||
|
|
|
|||
Loading…
Reference in a new issue