634 lines
20 KiB
C#
634 lines
20 KiB
C#
using Reseter2.History;
|
||
using Reseter2.Seacher;
|
||
using Reseter2.Setting;
|
||
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.CompilerServices;
|
||
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 unSave;
|
||
private bool FocusContext;
|
||
private object selectItem;
|
||
public delegate void saveSetting();
|
||
public event saveSetting Save;
|
||
public delegate void updateSetting();
|
||
public event updateSetting UpdateSetting;
|
||
private ListBox ListComp;
|
||
private bool listFocus;
|
||
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();
|
||
|
||
//}
|
||
//catch
|
||
//{
|
||
|
||
// file.Close();
|
||
// file.Dispose();
|
||
// MessageBox.Show("Ошибка чтения конфигурационных файлов.\n Перезапустите программу.", "Критическая ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||
// this.Close();
|
||
//}
|
||
|
||
|
||
SGlobalSetting.LoadSetting();
|
||
|
||
WordsList.MainCategory = SGlobalSetting.LoadWords();
|
||
ListComp = new ListBox();
|
||
this.Controls.Add(ListComp);
|
||
ListComp.LostFocus += tb_comp_Leave;
|
||
ListComp.GotFocus += tb_comp_Enter;
|
||
|
||
|
||
|
||
// ListComp.Enter += tb_comp_Enter;
|
||
// ListComp.MouseClick += tb_comp_MouseClick;
|
||
|
||
|
||
|
||
InitializeComponent();
|
||
this.Save += settingWordsControl1.Save;
|
||
this.Save += settingSCCMControl1.Save;
|
||
this.Save += settingRebootControl1.Save;
|
||
|
||
this.UpdateSetting += settingWordsControl1.UpdateSetting;
|
||
this.UpdateSetting += settingSCCMControl1.UpdateSetting;
|
||
this.UpdateSetting += settingRebootControl1.UpdateSetting;
|
||
this.settingWordsControl1.UpdateTree = UpdateTree;
|
||
|
||
|
||
|
||
ListComp.Location = new Point(tb_comp.Location.X, tb_comp.Location.Y + tb_comp.Height);
|
||
ListComp.Width = tb_comp.Width;
|
||
ListComp.Visible = false;
|
||
|
||
//tb_comp.Controls.Add(ListComp);
|
||
|
||
|
||
checkControl1.updateCheck += CheckControl1_updateCheck;
|
||
flowLayoutPanel1.AutoScrollMinSize = new Size(0, 658);
|
||
flowLayoutPanel1.VerticalScroll.Visible = true;
|
||
Reseter.SetForm(flowLayoutPanel1, this);
|
||
HistoryList.Update += Update_lb;
|
||
lb_history.DataSource = HistoryList.Hitem;
|
||
lb_history.DisplayMember = "ToStr";
|
||
treeView1.PathSeparator = "/";
|
||
|
||
treeView1.Nodes.AddRange(WordsList.ListNodes());
|
||
SGlobalSetting.settingExpand.ExpendAll(treeView1.Nodes);
|
||
//treeView1.SelectedNode.
|
||
//treeView1.MouseCaptureChanged.;
|
||
tabControl1.SelectedIndex = 1;
|
||
}
|
||
|
||
|
||
|
||
public void UpdateTree()
|
||
{
|
||
treeView1.Nodes.Clear();
|
||
treeView1.Nodes.AddRange(WordsList.ListNodes());
|
||
checkControl1.set_state(false);
|
||
}
|
||
|
||
private void bt_reset_Click(object sender, EventArgs e)
|
||
{
|
||
//if(cb_comp.SelectedIndex < 0)
|
||
//{
|
||
// Reseter.AddTask(cb_comp.Text);
|
||
//}
|
||
//else
|
||
//{
|
||
// Reseter.AddTask(SSeaher.seaherMetod.Result(cb_comp.SelectedIndex));
|
||
//}
|
||
//cb_comp.SelectedIndex = -1;
|
||
//cb_comp.Text = "";
|
||
|
||
|
||
tabControl1.SelectedIndex = 0;
|
||
}
|
||
|
||
private void timer1_Tick(object sender, EventArgs e)
|
||
{
|
||
int Act;
|
||
int Cls;
|
||
Reseter.Tick(out Act, out Cls);
|
||
if (Act > 0)
|
||
{
|
||
ss_activ.Text = "Активно:" + Act;
|
||
}
|
||
else
|
||
{
|
||
ss_activ.Text = "";
|
||
}
|
||
if (Cls > 0)
|
||
{
|
||
ss_close.Text = "Завершено:" + Cls;
|
||
}
|
||
else
|
||
{
|
||
ss_close.Text = "";
|
||
}
|
||
}
|
||
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 sm_RebootItem_Click(object sender, EventArgs e)
|
||
{
|
||
if (selectItem is HistoryItem historyItem)
|
||
{
|
||
Reseter.AddTask(historyItem.GetComp());
|
||
tabControl1.SelectedIndex = 0;
|
||
}
|
||
}
|
||
|
||
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 Form1_Load(object sender, EventArgs e)
|
||
{
|
||
|
||
}
|
||
|
||
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
|
||
{
|
||
SGlobalSetting.settingExpand.SaveExpand(treeView1.Nodes);
|
||
SGlobalSetting.SaveSettig();
|
||
}
|
||
|
||
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.Button == MouseButtons.Left && 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;
|
||
|
||
Rectangle BoundsNode = new(e.Node.Bounds.X - 43, e.Node.Bounds.Y, e.Node.Bounds.Width + 43, e.Node.Bounds.Height);
|
||
if (e.Button == MouseButtons.Right)
|
||
{
|
||
if (BoundsNode.Contains(e.Location) && e.Node.Tag is WordsComp)
|
||
{
|
||
tree.SelectedNode = e.Node;
|
||
cm_words.Show(tree.PointToScreen(e.Location));
|
||
}
|
||
else
|
||
{
|
||
tree.SelectedNode = null;
|
||
}
|
||
|
||
}
|
||
//tree.BeginUpdate();
|
||
Rectangle BoundsIcon = new(e.Node.Bounds.X - 43, e.Node.Bounds.Y + 2, 17, 18);
|
||
if (e.Button == MouseButtons.Left && 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]));
|
||
}
|
||
if (comps.Count == 0)
|
||
{
|
||
MessageBox.Show("Не выбранно ни одного ПК");
|
||
return;
|
||
}
|
||
DialogResult result = MessageBox.Show("Будет перезагруженно " + comps.Count() + " компьютеров.\nПродолжить?",
|
||
"Запуск многопоточной перезагрузки.", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
|
||
if (result == DialogResult.Yes)
|
||
{
|
||
Reseter.AddTask(comps);
|
||
checkControl1.set_state(false);
|
||
CheckControl1_updateCheck(false);
|
||
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)
|
||
{
|
||
UpdateTree();
|
||
}
|
||
}
|
||
}
|
||
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();
|
||
}
|
||
}
|
||
|
||
private void label7_Click(object sender, EventArgs e)
|
||
{
|
||
|
||
}
|
||
|
||
private void button4_Click(object sender, EventArgs e)
|
||
{
|
||
Save();
|
||
SGlobalSetting.settingExpand.SaveExpand(treeView1.Nodes);
|
||
SGlobalSetting.SaveSettig();
|
||
SGlobalSetting.LoadSetting();
|
||
WordsList.MainCategory = SGlobalSetting.LoadWords();
|
||
UpdateTree();
|
||
SGlobalSetting.settingExpand.ExpendAll(treeView1.Nodes);
|
||
}
|
||
|
||
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
|
||
{
|
||
if (tabControl1.SelectedIndex == 3)
|
||
{
|
||
if (!unSave)
|
||
{
|
||
unSave = true;
|
||
UpdateSetting();
|
||
}
|
||
|
||
}
|
||
else
|
||
{
|
||
if (unSave && (settingRebootControl1.edited() ||
|
||
settingSCCMControl1.edited() ||
|
||
settingWordsControl1.edited()))
|
||
{
|
||
DialogResult result = MessageBox.Show("Изменения не сохраненны. Продолжить?", "Изменения не сохраненны.", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
|
||
switch (result)
|
||
{
|
||
case DialogResult.Cancel:
|
||
tabControl1.SelectedIndex = 3;
|
||
break;
|
||
case DialogResult.OK:
|
||
unSave = false;
|
||
break;
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
}
|
||
|
||
private void button2_Click(object sender, EventArgs e)
|
||
{
|
||
Reseter.ClearCanceled();
|
||
}
|
||
|
||
private void WordsReboot_Click(object sender, EventArgs e)
|
||
{
|
||
if (treeView1.SelectedNode.Tag is WordsComp)
|
||
{
|
||
WordsComp wordsComp = (WordsComp)treeView1.SelectedNode.Tag;
|
||
|
||
DialogResult result = MessageBox.Show("Перезагрузить ПК: " + wordsComp.NameNode(), "Создание новой задачи", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
|
||
if (result == DialogResult.Yes)
|
||
{
|
||
Reseter.AddTask(wordsComp.GetComp());
|
||
tabControl1.SelectedIndex = 0;
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
private void cb_comp_TextUpdate(object sender, EventArgs e)
|
||
{
|
||
Cursor.Current = Cursors.Default;
|
||
if (sender is ComboBox)
|
||
{
|
||
ComboBox comboBox = (ComboBox)sender;
|
||
SSeaher.seaherMetod.Change(cb_comp_ResultUpdate, comboBox.Text);
|
||
}
|
||
|
||
}
|
||
public void cb_comp_ResultUpdate(List<string> Items)
|
||
{
|
||
// if(cb_comp.Items.Count != Items.Count) cb_comp.DroppedDown = false;
|
||
// cb_comp.Items.Clear();
|
||
// cb_comp.Items.AddRange(Items.ToArray());
|
||
//// cb_comp.AutoCompleteCustomSource.Clear();
|
||
//// cb_comp.AutoCompleteCustomSource.AddRange(Items.ToArray());
|
||
|
||
// // cb_comp.AutoCompleteMode = AutoCompleteMode.None;
|
||
// cb_comp.SelectionStart = cb_comp.Text.Length;
|
||
// cb_comp.DroppedDown = true;
|
||
|
||
// cb_comp.SelectedIndex = -1;
|
||
|
||
}
|
||
|
||
private void tb_comp_Enter(object sender, EventArgs e)
|
||
{
|
||
ListComp.Visible = true;
|
||
}
|
||
|
||
private void tb_comp_MouseClick(object sender, MouseEventArgs e)
|
||
{
|
||
ListComp.Visible = true;
|
||
System.Console.WriteLine("click");
|
||
}
|
||
|
||
private void tb_comp_Leave(object sender, EventArgs e)
|
||
{
|
||
// System.Console.WriteLine("leav" + ListComp.Focused.ToString());
|
||
// if (!listFocus) ListComp.Visible = false;
|
||
//listFocus = false;
|
||
|
||
// if (!ListComp.Focused) ListComp.Visible = false;
|
||
}
|
||
|
||
private void tabControl1_MouseClick(object sender, MouseEventArgs e)
|
||
{
|
||
//ListComp.foc
|
||
// ListComp.Visible = false;
|
||
}
|
||
|
||
private void control_MouseCaptureChanged(object sender, EventArgs e)
|
||
{
|
||
Point clickPoint = ListComp.PointToClient(Cursor.Position);
|
||
if (!ListComp.Bounds.Contains(clickPoint))
|
||
{
|
||
// System.Console.WriteLine("out");
|
||
}
|
||
}
|
||
|
||
protected override void WndProc(ref Message m)
|
||
{
|
||
if ((m.Msg == 0x210 && m.WParam.ToInt32() == 513) || m.Msg == 0x201)
|
||
{
|
||
Point clickPoint = this.PointToClient(Cursor.Position);
|
||
if (!ListComp.Bounds.Contains(clickPoint))
|
||
{
|
||
ListComp.Visible = false;
|
||
}
|
||
System.Console.WriteLine("clickers");
|
||
|
||
}
|
||
base.WndProc(ref m);
|
||
}
|
||
}
|
||
}
|
||
|