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;
}
}