using GameBackup3H3.DbOp; using Microsoft.Win32; using MyPage; using ryCommon; using ryCommonDb; using ryControls; using 开发辅助工具.Manager.Site; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using static System.Net.WebRequestMethods; using System.Xml.Linq; namespace 开发辅助工具.Manager { public partial class FrmSetting : Form { public FrmSetting() { InitializeComponent(); OlvSiteName.AspectGetter = delegate (object x) { return ((SiteInfo)x).Name; }; OlvSitePath.AspectGetter = delegate (object x) { return ((SiteInfo)x).LocalPath; }; OlvSiteFTP.AspectGetter = delegate (object x) { return ((SiteInfo)x).FtpName; }; } private void BtnChapeBasePath_Click(object sender, EventArgs e) { folderBrowserDialog1.SelectedPath = TxtCshapeBasePath.Text; if (folderBrowserDialog1.ShowDialog()==DialogResult.OK) { TxtCshapeBasePath.Text = folderBrowserDialog1.SelectedPath; } } private void BtnCancel_Click(object sender, EventArgs e) { DialogResult = DialogResult.Cancel; } private void BtnOK_Click(object sender, EventArgs e) { if(ChkAss_Ryp.Checked) { SetFileAssociation(".ryp", "ryUSQ", "用睿元开发助手打开", Application.ExecutablePath, "open \"%1\""); } else { DelFileAssociation(".ryp", "ryUSQ"); } if(ChkAss_Folder.Checked) { SetFileAssociation("folder", "ryUSQ", "用睿元开发助手打开", Application.ExecutablePath, "open \"%1\""); } else { DelFileAssociation("folder", "ryUSQ"); } if (ChkAss_File.Checked) { SetFileAssociation("*", "ryUSQ", "用睿元编辑器打开", Application.ExecutablePath, "\"%1\""); } else { DelFileAssociation("*", "ryUSQ"); } for (int i = 0; i < checkedListBox1.Items.Count; i++) { var item = checkedListBox1.Items[i].ToString(); var check=checkedListBox1.GetItemChecked(i); if (check) { SetFileAssociation("ryUSQ_" + item, "open", "", Application.ExecutablePath, "\"%1\""); SetDefFileAssociation("." + item, "ryUSQ_" + item); } else { try { var ExtName = "." + item; RegistryKey LRoot = RegistryKey.OpenBaseKey(RegistryHive.ClassesRoot, RegistryView.Registry32); RegistryKey def_key = LRoot.OpenSubKey(ExtName, true); var bak_value = def_key.GetValue("bak_value"); if(bak_value!=null) { def_key.SetValue("", bak_value, RegistryValueKind.String); def_key.DeleteValue("bak_value"); } def_key.Close(); RegistryKey file_key = LRoot.OpenSubKey("ryUSQ_" + item, true); if(file_key!=null) { file_key.Close(); LRoot.DeleteSubKeyTree("ryUSQ_" + item); } LRoot.Close(); } catch { } } } ryCommon.Storage mStor = new ryCommon.Storage(); mStor.SelectNodeBySet(); mStor.SetAttrValue("CshapeBasePath", TxtCshapeBasePath.Text); mStor.SetAttrValue("ReferenceDll", TxtReferenceDll.Text); mStor.SetAttrValue("ReactorPath", TxtReactorPath.Text); mStor.SetAttrValue("WinRARPath", TxtWinRARPath.Text); IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); if (db.ConnDb(Itrycn_Db.User_SQLConn) == 1) { RyQuickSQL mySQL = new RyQuickSQL("Settings"); mySQL.AddField("name","Setting"); mySQL.AddField("value", mStor.XMLText); if(db.ExecuteNonQuery(mySQL.GetUpdateSQL()+ " where name='Setting'",mySQL)==0) { db.ExecuteNonQuery(mySQL.GetInsertSQL(),mySQL); } } db.Free(); DialogResult = DialogResult.OK; } /// /// 设置文件关联 /// /// public bool SetDefFileAssociation(string ExtName, string defName) { try { RegistryKey LRoot = RegistryKey.OpenBaseKey(RegistryHive.ClassesRoot, RegistryView.Registry32); RegistryKey def_key = LRoot.OpenSubKey(ExtName, true); if (def_key == null) { def_key = LRoot.CreateSubKey(ExtName); } def_key.SetValue("bak_value", def_key.GetValue("",""), RegistryValueKind.String); def_key.SetValue("", defName, RegistryValueKind.String); def_key.Close(); LRoot.Close(); return true; } catch { return false; } } /// /// 设置文件关联 /// /// public bool SetFileAssociation(string ExtName, string sName, string AssDes, string filePath,string param, bool defOpen = false) { try { var _path = filePath.Replace("/", "\\"); RegistryKey LRoot = RegistryKey.OpenBaseKey(RegistryHive.ClassesRoot,RegistryView.Registry32); RegistryKey softwareRun = LRoot.OpenSubKey(ExtName + @"\shell\"+sName, true); if (softwareRun == null) { softwareRun = LRoot.CreateSubKey(ExtName + @"\shell\" + sName); } softwareRun.SetValue("", AssDes, RegistryValueKind.String); var Command= softwareRun.OpenSubKey("command",true); if (Command == null) { Command = softwareRun.CreateSubKey("command"); } Command.SetValue("","\""+ _path + "\" "+param); Command.Close(); softwareRun.Close(); if (defOpen) { RegistryKey def_key = LRoot.OpenSubKey(ExtName, true); if (def_key == null) { def_key = LRoot.CreateSubKey(ExtName); } def_key.SetValue("", sName, RegistryValueKind.String); def_key.Close(); } LRoot.Close(); return true; } catch { return false; } } /// /// 判断文件关联是否存在 /// /// /// /// public bool GetFileAssociation(string ExtName, string sName) { try { var result = false; RegistryKey LRoot = RegistryKey.OpenBaseKey(RegistryHive.ClassesRoot, RegistryView.Registry32); RegistryKey softwareRun = LRoot.OpenSubKey(ExtName + @"\shell\"+sName, false); if (softwareRun != null) { softwareRun.Close(); result = true; } LRoot.Close(); return result; } catch { return false; } } /// /// 判断文件关联是否存在 /// /// /// /// public bool GetFileAssociation(string ExtName) { try { var result = false; RegistryKey LRoot = RegistryKey.OpenBaseKey(RegistryHive.ClassesRoot, RegistryView.Registry32); RegistryKey softwareRun = LRoot.OpenSubKey(ExtName, false); if (softwareRun != null) { softwareRun.Close(); result = true; } LRoot.Close(); return result; } catch { return false; } } /// /// 删除文件关联 /// /// /// /// public bool DelFileAssociation(string ExtName, string sName) { try { RegistryKey LRoot = RegistryKey.OpenBaseKey(RegistryHive.ClassesRoot, RegistryView.Registry32); RegistryKey softwareRun = LRoot.OpenSubKey(ExtName + @"\shell", false); if(softwareRun!=null) { var shell_name = softwareRun.OpenSubKey(sName,false); if(shell_name!=null) { shell_name.Close(); softwareRun.DeleteSubKeyTree(sName); } softwareRun.Close(); } LRoot.Close(); return true; } catch { return false; } } private void FrmSetting_Load(object sender, EventArgs e) { ChkAss_Ryp.Checked = GetFileAssociation(".ryp", "ryUSQ"); ChkAss_Folder.Checked = GetFileAssociation("folder", "ryUSQ"); ChkAss_File.Checked = GetFileAssociation("*", "ryUSQ"); for (int i = 0; i < checkedListBox1.Items.Count; i++) { var item = checkedListBox1.Items[i].ToString(); if(GetFileAssociation("ryUSQ_"+item)) { checkedListBox1.SetItemChecked(i, true); } } DataProvider mydb = new DataProvider(); IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); if (db.ConnDb(Itrycn_Db.User_SQLConn) == 1) { var ds = db.ReadData("select * from Settings where name='Setting'"); if(mydb.HaveData(ds)) { var row = mydb.GetData(ds); ryCommon.Storage mStor = new ryCommon.Storage(row["value"].ToString()); mStor.SelectNodeBySet(); TxtCshapeBasePath.Text = mStor.GetAttrValue("CshapeBasePath"); TxtReferenceDll.Text = mStor.GetAttrValue("ReferenceDll"); TxtReactorPath.Text = mStor.GetAttrValue("ReactorPath"); TxtWinRARPath.Text = mStor.GetAttrValue("WinRARPath"); if(TxtWinRARPath.Text=="") { if(System.IO.File.Exists(@"C:\Program Files\WinRAR\WinRAR.exe")) { TxtWinRARPath.Text = @"C:\Program Files\WinRAR\WinRAR.exe"; } } } } db.Free(); LoadVarData(); LoadSite(); } private void LoadVarData() { #region 重新载入数据 tableModel1.Rows.Clear(); tableModel1.Selections.Clear(); DataProvider mydb = new DataProvider(); IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); if (db.ConnDb(Itrycn_Db.User_SQLConn) == 1) { DataSet ds = db.ReadData("select * from VarInfo"); for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { DataRow row = ds.Tables[0].Rows[i]; XPTable.Models.Row itemList = new XPTable.Models.Row() { Tag = row["id"].ToString() }; //需要修改此处 itemList.Cells.Add(new XPTable.Models.Cell(row["VarName"].ToString()));//示例 itemList.Cells.Add(new XPTable.Models.Cell(row["VarValue"].ToString())); itemList.Cells.Add(new XPTable.Models.Cell(row["Des"].ToString())); tableModel1.Rows.Add(itemList); } } db.Free(); #endregion } private void BtnReactorPath_Click(object sender, EventArgs e) { folderBrowserDialog1.SelectedPath = TxtReactorPath.Text; if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) { TxtReactorPath.Text = folderBrowserDialog1.SelectedPath; } } private void BtnWinRARPath_Click(object sender, EventArgs e) { folderBrowserDialog1.SelectedPath = TxtWinRARPath.Text; if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) { TxtWinRARPath.Text = folderBrowserDialog1.SelectedPath; } } private void GetVarRow(string id, int index) { #region 重新载入数据 DataProvider mydb = new DataProvider(); IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); if (db.ConnDb(Itrycn_Db.User_SQLConn) == 1) { DataSet ds = db.ReadData("select * from VarInfo where id=" + id); if (mydb.HaveData(ds)) { DataRow row = ds.Tables[0].Rows[0]; XPTable.Models.Row itemList = tableModel1.Rows[index]; //需要修改此处 itemList.Cells[ColVariable.Index].Text = row["VarName"].ToString(); itemList.Cells[ColPath.Index].Text = row["VarValue"].ToString(); itemList.Cells[ColDes.Index].Text = row["Des"].ToString(); } } db.Free(); #endregion } private void 新增变量ToolStripMenuItem_Click(object sender, EventArgs e) { 开发辅助工具.Manager.FrmAddVar frm = new 开发辅助工具.Manager.FrmAddVar() { Text = "添加变量", Icon = Icon, isAdd = 1 }; if(frm.ShowDialog()==DialogResult.OK) { #region 获取最后一条记录 DataProvider mydb = new DataProvider(); IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); if (db.ConnDb(Itrycn_Db.User_SQLConn) == 1) { DataSet ds = db.ReadData("select * from VarInfo order by id desc limit 1"); for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { DataRow row = ds.Tables[0].Rows[i]; XPTable.Models.Row itemList = new XPTable.Models.Row() { Tag = row["id"].ToString() }; //需要修改此处 itemList.Cells.Add(new XPTable.Models.Cell(row["VarName"].ToString()));//示例 itemList.Cells.Add(new XPTable.Models.Cell(row["VarValue"].ToString())); itemList.Cells.Add(new XPTable.Models.Cell(row["Des"].ToString())); tableModel1.Rows.Add(itemList); } } db.Free(); #endregion } frm.Dispose(); } private void 修改变量ToolStripMenuItem_Click(object sender, EventArgs e) { if (table1.SelectedItems.Length == 0) { return; } string selectId = table1.SelectedItems[0].Tag.ToString(); int index = table1.SelectedItems[0].Index; var frm = new 开发辅助工具.Manager.FrmAddVar() { Text = "修改变量", Icon = Icon, isAdd = 0 }; frm.GetInfo(selectId); if (frm.ShowDialog() == DialogResult.OK) { GetVarRow(selectId, index); } frm.Dispose(); } private void 删除变量ToolStripMenuItem_Click(object sender, EventArgs e) { if (table1.SelectedItems.Length == 0) { MessageBox.Show("请先选择要删除的项。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } string selectId = table1.SelectedItems[0].Tag.ToString(); if (MessageBox.Show("确定要删除该项吗?一旦删除将不可恢复。", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { return; } IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); if (db.ConnDb(Itrycn_Db.User_SQLConn) == 1) { db.DelById("VarInfo", selectId); tableModel1.Rows.RemoveAt(table1.SelectedItems[0].Index); } } private void LoadSite() { List list = new List(); LvSite.ClearObjects(); IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); if (db.ConnDb(Itrycn_Db.User_SQLConn) == 1) { var ds = db.ReadData("select * from Site"); if(ds.HaveData()) { for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { var row = ds.GetRow(i); var ftp_ds = db.ReadData("Ftp", row["ftpId"].ToString()); var ftpname = ""; if (ftp_ds.HaveData()) { ftpname = ftp_ds.GetRow(0)["name"].ToString(); } list.Add(new SiteInfo() { Id = row["id"].ToInt(), Name = row["name"].ToString(), LocalPath = row["localPath"].ToString(), FtpId = row["ftpId"].ToInt(), FtpName= ftpname }); } } ds.Dispose(); } db.Free(); LvSite.AddObjects(list); } private void 添加站点ToolStripMenuItem_Click(object sender, EventArgs e) { FrmAddSite frm = new FrmAddSite(); if(frm.ShowDialog()==DialogResult.OK) { LoadSite(); } frm.Dispose(); } private void 修改站点ToolStripMenuItem_Click(object sender, EventArgs e) { if (LvSite.SelectedObject == null) { return; } var item = (SiteInfo)LvSite.SelectedObject; var selectId = item.Id; FrmAddSite frm = new FrmAddSite() { Icon = Icon, isAdd = 0 }; frm.GetInfo(selectId.ToString()); if (frm.ShowDialog() == DialogResult.OK) { LoadSite(); } frm.Dispose(); } private void 删除站点ToolStripMenuItem_Click(object sender, EventArgs e) { if (LvSite.SelectedObject == null) { MessageBox.Show("请先选择要删除的项。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } var item = (SiteInfo)LvSite.SelectedObject; var selectId = item.Id; switch (MessageBox.Show("确定要删除该项吗?一旦删除将不可恢复。", "询问", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2)) { case DialogResult.No: return; } //DataProvider mydb = new DataProvider(); IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); if (db.ConnDb(Itrycn_Db.User_SQLConn) == 1) { db.DelById("Site", selectId.ToString()); LvSite.RemoveObject(item); } } private void BtnSelectAll_Click(object sender, EventArgs e) { for (int i = 0; i < checkedListBox1.Items.Count; i++) { checkedListBox1.SetItemChecked(i,true); } } private void BtnNoSelect_Click(object sender, EventArgs e) { for (int i = 0; i < checkedListBox1.Items.Count; i++) { checkedListBox1.SetItemChecked(i, false); } } } public class SiteInfo { public int Id { get; set; } = 0; public string Name { get; set; } = ""; public string LocalPath { get; set; } = ""; /// /// 保存的远程路径 /// public string RemoteFullPath { get; set; } = ""; public string FtpDir { get; set; } = ""; public string FtpName { get; set; } = ""; public int FtpId { get; set; } = 0; } }