добавили expand save

This commit is contained in:
klavirshik 2024-08-20 09:45:28 +02:00
parent 599f82140a
commit 3b95cf4ff6
9 changed files with 113 additions and 26 deletions

View File

@ -46,8 +46,9 @@ namespace Reseter2
SGlobalSetting.LoadSetting();
WordsList.MainCategory = SGlobalSetting.LoadWords();
InitializeComponent();
checkControl1.updateCheck += CheckControl1_updateCheck;
@ -57,9 +58,10 @@ namespace Reseter2
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;
@ -169,22 +171,8 @@ namespace Reseter2
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);
}
SGlobalSetting.settingExpand.SaveExpand(treeView1.Nodes);
SGlobalSetting.SaveSettig();
}
private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)

View File

@ -75,6 +75,7 @@
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="reseter.cs" />
<Compile Include="ReseteTask.cs" />
<Compile Include="Setting\SettingExpand.cs" />
<Compile Include="Setting\SettingWords.cs" />
<Compile Include="Setting\SSetting.cs" />
<Compile Include="Shutdown.cs" />

View File

@ -9,6 +9,7 @@ using System.Security.Policy;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using static System.Net.WebRequestMethods;
namespace Reseter2.Setting
{
@ -17,6 +18,7 @@ namespace Reseter2.Setting
{
public static SettingWords settingWords = new SettingWords();
public static SettingExpand settingExpand = new SettingExpand();
//public static void LoadSetting()
// {
@ -31,12 +33,30 @@ namespace Reseter2.Setting
object output = Load("res.dat");
if (!(output is SSetting)) return;
SSetting setting = (SSetting)output;
settingWords = setting .settingWords;
if (setting.settingWords != null) settingWords = setting.settingWords;
if (setting.settingExpand != null) settingExpand = setting.settingExpand;
HistoryList.Hitem = setting.historyItems;
// return output;
}
public static bool SaveSettig()
{
SSetting sSetting = new SSetting();
sSetting.settingWords = settingWords;
sSetting.historyItems = HistoryList.Hitem;
sSetting.settingExpand = settingExpand;
if(Save("res.dat", sSetting))
{
return true;
}
else
{
return false;
}
}
public static WordsCategory LoadWords()
{
WordsCategory output = (WordsCategory)Load(settingWords.PathBase);
@ -61,6 +81,11 @@ namespace Reseter2.Setting
}
catch
{
if (file != null)
{
file.Close();
file.Dispose();
}
return null;
}
@ -130,7 +155,7 @@ namespace Reseter2.Setting
Memory.Dispose();
file.Close();
file.Dispose();
return SaveCheck(output);
return SaveCheck(settingWords.PathBase, output);
}
WordsList.MainCategory = output;
@ -149,7 +174,7 @@ namespace Reseter2.Setting
{
return Save(settingWords.PathBase, output);
}
public static bool Save(string path, object output)
public static bool Save(string path, object output)
{
BinaryFormatter binaryFormatter = new BinaryFormatter();
FileStream file = null;
@ -163,19 +188,22 @@ namespace Reseter2.Setting
}
catch
{
if(file != null)
{
file.Close();
file.Dispose();
return SaveCheck(output);
}
return SaveCheck(path, output);
}
}
public static bool SaveCheck(object output)
public static bool SaveCheck(string path, object output)
{
DialogResult result1 = MessageBox.Show("Файл занят другой программой.\nПовторить еще раз?", "Ошибка сохранения", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Error);
switch (result1)
{
case (DialogResult.Retry):
return SaveCheck(output);
return Save(path, output);
case (DialogResult.Abort):
return true;
}

View File

@ -7,10 +7,12 @@ using System.Threading.Tasks;
namespace Reseter2.Setting
{
[Serializable]
internal struct SSetting
{
public SettingWords settingWords;
public List<HistoryItem> historyItems;
public SettingExpand settingExpand;
}
}

View File

@ -0,0 +1,63 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Reseter2.Setting
{
[Serializable]
internal class SettingExpand
{
private List<string> nodePathes;
public SettingExpand()
{
nodePathes = new List<string>();
}
public void ExpendAll(TreeNodeCollection nodes)
{
foreach (string path in nodePathes)
{
string[] folder = path.Split('/');
Expand(nodes, folder, 0);
}
nodePathes.Clear();
}
private void Expand(TreeNodeCollection nodes, string[] folder, int number)
{
int i = nodes.IndexOfKey(folder[number]);
if (i == -1) return;
if (folder.Count() == number+1)
{
nodes[i].Expand();
}
else
{
Expand(nodes[i].Nodes, folder, number+1);
}
}
public void SaveExpand(TreeNodeCollection nodes, string path = "")
{
foreach(TreeNode node in nodes)
{
if(node.Nodes.Count > 0)
{
if (node.IsExpanded)
{
nodePathes.Add(path + node.Name);
}
SaveExpand(node.Nodes, path + node.Name + "/" );
}
}
}
}
}

View File

@ -32,7 +32,8 @@ namespace Reseter2.Setting
public void HashSumm(MemoryStream memory)
{
hash = Hash.ComputeHash(memory);
if(Hash == null) Hash = MD5.Create();
hash = Hash.ComputeHash(memory);
}
public bool HashCheck(MemoryStream memory)

View File

@ -107,6 +107,7 @@ namespace Reseter2.Words
public override TreeNode NodeList()
{
TreeNode treeNode = new TreeNode(GetName());
treeNode.Name = GetName();
treeNode.Tag = this;
treeNode.ImageIndex = 0;
treeNode.SelectedImageIndex = 0;
@ -114,7 +115,8 @@ namespace Reseter2.Words
foreach (var item in items)
{
treeNode.Nodes.Add(item.NodeList());
int i = treeNode.Nodes.Add(item.NodeList());
treeNode.Nodes[i].Name += treeNode.Nodes[i].Index;
}
return treeNode;
}

View File

@ -112,6 +112,7 @@ namespace Reseter2.Words
{
TreeNode treeNode = new TreeNode();
treeNode.Text = NameNode();
treeNode.Name = NameNode();
treeNode.Tag = this;
treeNode.ImageIndex = Comp.GetImage();
treeNode.SelectedImageIndex = Comp.GetImage();

View File

@ -32,6 +32,7 @@ namespace Reseter2.Words
for(int i = 0; i < MainCategory.Count(); i++)
{
treeNodes[i] = MainCategory.Items(i).NodeList();
treeNodes[i].Name += i;
}
return treeNodes;