429 lines
13 KiB
C#
429 lines
13 KiB
C#
using Reseter2.History;
|
||
using Reseter2.Words;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.ComponentModel;
|
||
using System.Data;
|
||
using System.Drawing;
|
||
using System.IO;
|
||
using System.Linq;
|
||
using System.Runtime.Serialization.Formatters.Binary;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
using System.Windows.Forms;
|
||
|
||
namespace Reseter2
|
||
{
|
||
public partial class Form1 : Form
|
||
{
|
||
//private FormHistory formHistory;
|
||
//System.Windows.Forms.CheckBox
|
||
|
||
private bool FocusContext;
|
||
private object selectItem;
|
||
public Form1()
|
||
{
|
||
|
||
BinaryFormatter binaryFormatter = new BinaryFormatter();
|
||
FileStream file = new FileStream("res.dat", FileMode.OpenOrCreate);
|
||
try
|
||
{
|
||
|
||
HistoryList.Hitem = (List<HistoryItem>)binaryFormatter.Deserialize(file);
|
||
file.Close();
|
||
file.Dispose();
|
||
binaryFormatter = new BinaryFormatter();
|
||
file = new FileStream("base.dat", FileMode.OpenOrCreate);
|
||
WordsList.MainCategory = (WordsCategory)binaryFormatter.Deserialize(file);
|
||
file.Close();
|
||
file.Dispose();
|
||
|
||
}
|
||
catch
|
||
{
|
||
|
||
file.Close();
|
||
file.Dispose();
|
||
MessageBox.Show("Ошибка чтения конфигурационных файлов.\n Перезапустите программу.", "Критическая ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||
this.Close();
|
||
}
|
||
|
||
|
||
InitializeComponent();
|
||
checkControl1.updateCheck += CheckControl1_updateCheck;
|
||
flowLayoutPanel1.AutoScrollMinSize = new Size(0, 683) ;
|
||
flowLayoutPanel1.VerticalScroll.Visible = true;
|
||
Reseter.SetForm(flowLayoutPanel1);
|
||
HistoryList.Update += Update_lb;
|
||
lb_history.DataSource = HistoryList.Hitem;
|
||
lb_history.DisplayMember = "ToStr";
|
||
|
||
treeView1.Nodes.AddRange(WordsList.ListNodes());
|
||
|
||
treeView1.SelectedNode.
|
||
//treeView1.MouseCaptureChanged.;
|
||
tabControl1.SelectedIndex = 1;
|
||
|
||
|
||
}
|
||
|
||
|
||
|
||
private void label1_Click(object sender, EventArgs e)
|
||
{
|
||
|
||
}
|
||
|
||
private void bt_reset_Click(object sender, EventArgs e)
|
||
{
|
||
Reseter.AddTask(tb_comp.Text) ;
|
||
}
|
||
|
||
private void timer1_Tick(object sender, EventArgs e)
|
||
{
|
||
Reseter.Tick();
|
||
}
|
||
public void Update_lb()
|
||
{
|
||
lb_history.DataSource = null;
|
||
lb_history.DataSource = HistoryList.Hitem;
|
||
lb_history.DisplayMember = "ToStr";
|
||
}
|
||
|
||
private void button1_Click(object sender, EventArgs e)
|
||
{
|
||
HistoryList.Clear();
|
||
lb_history.DataSource = null;
|
||
lb_history.DataSource = HistoryList.Hitem;
|
||
lb_history.DisplayMember = "ToStr";
|
||
}
|
||
|
||
private void RebootItem_Click(object sender, EventArgs e)
|
||
{
|
||
|
||
}
|
||
|
||
private void sm_RebootItem_Click(object sender, EventArgs e)
|
||
{
|
||
if(selectItem is HistoryItem historyItem)
|
||
{
|
||
Reseter.AddTask(historyItem.GetComp());
|
||
}
|
||
}
|
||
|
||
private void lb_history_MouseMove(object sender, MouseEventArgs e)
|
||
{
|
||
lb_history.SelectedIndex = lb_history.IndexFromPoint(e.Location);
|
||
}
|
||
|
||
private void lb_history_MouseLeave(object sender, EventArgs e)
|
||
{
|
||
|
||
if(!FocusContext)
|
||
{
|
||
lb_history.SelectedIndex = -1;
|
||
}
|
||
|
||
}
|
||
|
||
private void cm_history_Opening(object sender, CancelEventArgs e)
|
||
{
|
||
selectItem = lb_history.SelectedItem;
|
||
FocusContext = true;
|
||
}
|
||
|
||
private void lb_history_MouseDown(object sender, MouseEventArgs e)
|
||
{
|
||
|
||
// lb_history.SelectedIndex = lb_history.IndexFromPoint(e.Location);
|
||
}
|
||
|
||
private void cm_history_Closed(object sender, ToolStripDropDownClosedEventArgs e)
|
||
{
|
||
// selectItem = null;
|
||
FocusContext = false;
|
||
}
|
||
|
||
private void mi_newitem_Click(object sender, EventArgs e)
|
||
{
|
||
BilderWords bilderWords = new BilderWords();
|
||
bilderWords.ShowDialog();
|
||
}
|
||
|
||
private void bt_wordsBilder_Click(object sender, EventArgs e)
|
||
{
|
||
BilderWords bilderWords = new BilderWords();
|
||
DialogResult result = bilderWords.ShowDialog();
|
||
if (result == DialogResult.OK)
|
||
{
|
||
treeView1.Nodes.Clear();
|
||
treeView1.Nodes.AddRange(WordsList.ListNodes());
|
||
}
|
||
|
||
}
|
||
|
||
private void Form1_Load(object sender, EventArgs e)
|
||
{
|
||
|
||
}
|
||
|
||
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
|
||
{
|
||
BinaryFormatter binaryFormatter = new BinaryFormatter();
|
||
FileStream file = null;
|
||
try
|
||
{
|
||
file = new FileStream("res.dat", FileMode.OpenOrCreate);
|
||
binaryFormatter.Serialize(file, HistoryList.Hitem);
|
||
file.Close();
|
||
file.Dispose();
|
||
}
|
||
catch
|
||
{
|
||
file.Close();
|
||
file.Dispose();
|
||
MessageBox.Show("Ошибка записи конфигурационных файлов.\n Текущие данные будут потерянны.", "Критическая ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||
}
|
||
|
||
}
|
||
|
||
private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
|
||
{
|
||
|
||
|
||
// treeView1_treeViewChangeCheckBox(e.Node);
|
||
|
||
}
|
||
|
||
private void treeView1_treeViewChangeCheckBox(TreeNode treeNode)
|
||
{
|
||
for (int i = 0; i < treeNode.Nodes.Count; i++)
|
||
{
|
||
treeNode.Nodes[i].Checked = treeNode.Checked;
|
||
if (treeNode.Nodes[i].Checked)
|
||
{
|
||
treeNode.Nodes[i].StateImageIndex = 1;
|
||
}
|
||
else
|
||
{
|
||
treeNode.Nodes[i].StateImageIndex = 0;
|
||
}
|
||
treeView1_treeViewChangeCheckBox(treeNode.Nodes[i]);
|
||
}
|
||
}
|
||
|
||
private int treeView1_treeViewChangeRootCheckBox(TreeNode treeNode)
|
||
{
|
||
if (treeNode.Nodes.Count == 0)
|
||
{
|
||
if(treeNode.Checked)
|
||
{
|
||
return 1;
|
||
}
|
||
else
|
||
{
|
||
return 0;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
bool nedoCheked = false;
|
||
int nodeCheked = 0;
|
||
for (int i = 0; i < treeNode.Nodes.Count; i++)
|
||
{
|
||
if(treeView1_treeViewChangeRootCheckBox(treeNode.Nodes[i]) == 2) nedoCheked = true;
|
||
if (treeNode.Nodes[i].StateImageIndex == 1) nodeCheked++;
|
||
//treeNo
|
||
|
||
}
|
||
int Cheked = 0;
|
||
|
||
if (treeNode.Nodes.Count == nodeCheked)
|
||
{
|
||
Cheked = 1;
|
||
treeNode.Checked = true;
|
||
treeNode.StateImageIndex = 1;
|
||
}
|
||
else if(nodeCheked == 0)
|
||
{
|
||
Cheked = 0;
|
||
treeNode.Checked = false;
|
||
treeNode.StateImageIndex = 0;
|
||
}
|
||
if ((nodeCheked > 0 && treeNode.Nodes.Count > nodeCheked) || nedoCheked)
|
||
{
|
||
treeNode.Checked = false;
|
||
treeNode.StateImageIndex = 2;
|
||
Cheked = 2;
|
||
}
|
||
|
||
|
||
return Cheked;
|
||
|
||
}
|
||
|
||
}
|
||
|
||
private void treeView1_ChangePrentRootCheckBox(TreeNode treeNode)
|
||
{
|
||
|
||
if (treeNode.Parent != null)
|
||
{
|
||
//treeView1_treeViewChangeRootCheckBox(treeNode.Parent);
|
||
treeView1_ChangePrentRootCheckBox(treeNode.Parent);
|
||
}
|
||
}
|
||
|
||
private void treeView1_DoubleClick(object sender, EventArgs e)
|
||
{
|
||
|
||
}
|
||
|
||
private void treeView1_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
|
||
{
|
||
|
||
if (e.Node.Tag is WordsComp)
|
||
{
|
||
WordsComp wordsComp = (WordsComp)e.Node.Tag;
|
||
|
||
DialogResult result = MessageBox.Show("Перезагрузить ПК: " + wordsComp.NameNode(),"Создание новой задачи", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
|
||
if(result == DialogResult.Yes)
|
||
{
|
||
Reseter.AddTask(wordsComp.GetComp());
|
||
tabControl1.SelectedIndex = 0;
|
||
}
|
||
}
|
||
}
|
||
|
||
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
|
||
{
|
||
|
||
TreeView tree = (TreeView)sender;
|
||
|
||
if(e.Button == MouseButtons.Right)
|
||
{
|
||
tree.SelectedNode = e.Node;
|
||
}
|
||
//tree.BeginUpdate();
|
||
Rectangle BoundsIcon = new Rectangle(e.Node.Bounds.X -43, e.Node.Bounds.Y + 2, 17, 18);
|
||
if (BoundsIcon.Contains(e.Location))
|
||
{
|
||
e.Node.Checked = !e.Node.Checked;
|
||
if (e.Node.Checked)
|
||
{
|
||
e.Node.StateImageIndex = 1;
|
||
}
|
||
else
|
||
{
|
||
e.Node.StateImageIndex = 0;
|
||
}
|
||
treeView1_treeViewChangeCheckBox(e.Node);
|
||
treeView1_ChangePrentRootCheckBox(e.Node);
|
||
CheckControl1_interdmet();
|
||
}
|
||
|
||
|
||
|
||
// for (int i = 0; i < tree.Nodes.Count; i++)
|
||
// {
|
||
// treeView1_treeViewChangeRootCheckBox(tree.Nodes[i]);
|
||
// }
|
||
|
||
|
||
}
|
||
|
||
|
||
|
||
private void treeView1_MouseCaptureChanged(object sender, EventArgs e)
|
||
{
|
||
// System.Diagnostics.Debug.WriteLine(sender.ToString());
|
||
//TreeView tree = (TreeView)sender;
|
||
|
||
//treeView1_treeViewChangeCheckBox(tree.Nodes[0]);
|
||
|
||
}
|
||
|
||
private List<IComp> treeViewCheckOn(TreeNode node)
|
||
{
|
||
List<IComp> comps = new List<IComp>();
|
||
if (node.Checked && node.Tag is WordsComp)
|
||
{
|
||
WordsComp comp = (WordsComp)node.Tag;
|
||
comps.Add(comp.GetComp());
|
||
}
|
||
for (int i = 0; i < node.Nodes.Count; i++)
|
||
{
|
||
comps.AddRange(treeViewCheckOn(node.Nodes[i]));
|
||
|
||
}
|
||
return comps;
|
||
}
|
||
|
||
private void bt_resetAll_Click(object sender, EventArgs e)
|
||
{
|
||
List<IComp> comps = new List<IComp>();
|
||
for (int i = 0; i < treeView1.Nodes.Count; i++)
|
||
{
|
||
comps.AddRange(treeViewCheckOn(treeView1.Nodes[i]));
|
||
}
|
||
|
||
DialogResult result = MessageBox.Show("Будет перезагруженно " + comps.Count() + " компьютеров.\nПродолжить?",
|
||
"Запуск многопоточной перезагрузки.", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
|
||
if (result == DialogResult.Yes) {
|
||
Reseter.AddTask(comps);
|
||
tabControl1.SelectedIndex = 0;
|
||
}
|
||
}
|
||
|
||
private void sm_SaveItem_Click(object sender, EventArgs e)
|
||
{
|
||
|
||
if (selectItem is HistoryItem historyItem)
|
||
{
|
||
BilderWords bilderWords = new BilderWords(historyItem.GetComp());
|
||
DialogResult result = bilderWords.ShowDialog();
|
||
if (result == DialogResult.OK)
|
||
{
|
||
treeView1.Nodes.Clear();
|
||
treeView1.Nodes.AddRange(WordsList.ListNodes());
|
||
}
|
||
}
|
||
}
|
||
private void CheckControl1_updateCheck(bool Сhecked)
|
||
{
|
||
for (int i = 0; i < treeView1.Nodes.Count; i++)
|
||
{
|
||
treeView1.Nodes[i].Checked = Сhecked;
|
||
treeView1_treeViewChangeCheckBox(treeView1.Nodes[i]);
|
||
}
|
||
}
|
||
|
||
private void CheckControl1_interdmet()
|
||
{
|
||
int chek_inter = 0;
|
||
|
||
int summ = 0;
|
||
for (int i = 0; i < treeView1.Nodes.Count; i++)
|
||
{
|
||
int check = treeView1_treeViewChangeRootCheckBox(treeView1.Nodes[i]);
|
||
if (2 == check) chek_inter++;
|
||
if (1 == check) summ++;
|
||
}
|
||
|
||
if(treeView1.Nodes.Count == summ )
|
||
{
|
||
checkControl1.set_state(true);
|
||
}
|
||
else if(0 == summ)
|
||
{
|
||
checkControl1.set_state(false);
|
||
}
|
||
if ((summ < treeView1.Nodes.Count && summ > 0) || chek_inter > 0)
|
||
{
|
||
checkControl1.set_intedmet();
|
||
}
|
||
}
|
||
|
||
}
|
||
}
|