using DotNet4.Utilities; using HtmlAgilityPack; using ICSharpCode.TextEditor.Document; using Microsoft.Win32; using ryCommon; using ryCommonDb; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading; using System.Windows.Forms; using System.Xml; using WeifenLuo.WinFormsUI.Docking; using 开发辅助工具.Manager; using 开发辅助工具.Tools; namespace 开发辅助工具 { public partial class Form1 : Form { string _ProjectPath = ""; public Form1(string ProjectPath,string mode) { _ProjectPath = ProjectPath; InitializeComponent(); if(ProjectPath!="") { if (mode == "get") { FrmProject frm = new FrmProject(ProjectPath); frm.Show(dockPanel1); } else if (mode == "open") { FrmPathInfo frm = new FrmPathInfo(ProjectPath); frm.Show(dockPanel1); } } Manager.Itrycn_Db.CreateSysTable(); Manager.Itrycn_Db.CreateUserTable(); LoadBaseTools(); } public void HideDownList() { table1.Visible = false; } private void LoadBaseTools() { 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 Starts order by ClickCount desc,editTime desc"); if(mydb.HaveData(ds)) { for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { DataRow row = ds.Tables[0].Rows[i]; Type type = Type.GetType(row["Addr"].ToString()); if (type == null) { continue; } ShowForm(type); } } else { ShowForm(typeof(FrmWebGet)); ShowForm(typeof(FrmXpath)); ShowForm(typeof(FrmRegex)); ShowForm(typeof(FrmEncode)); } } db.Free(); //ShowForm(Type.GetType("开发辅助工具.Tools.FrmWebGet")); //ShowForm(typeof(FrmToolsBox)); //FrmProject frm = new FrmProject(ProjectPath); //frm.Show(dockPanel1); } private void ShowForm(Type type) { DockContent frm = (DockContent)Activator.CreateInstance(type); frm.Click += Frm_Click; frm.Show(dockPanel1); } private void Frm_Click(object sender, EventArgs e) { HideDownList(); } private void Form1_Load(object sender, EventArgs e) { Text = "开发辅助工具 V"+ryCommon.RySoft.VersionStr; bool test_mode = false; if (System.IO.File.Exists(Application.StartupPath + "\\测试.txt")){test_mode = true;} BtnTools.Visible = test_mode; BtnSetting.Visible = test_mode; BtnCreateProject.Visible = test_mode; DataProvider mydb = new DataProvider(); IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); if (db.ConnDb(Itrycn_Db.User_SQLConn) == 1) { RyQuickSQL mySQL = new RyQuickSQL("Urls"); mySQL.AddField("editTime",DateTime.Now.AddDays(-10)); db.ExecuteNonQuery("DELETE FROM Urls WHERE id IN (SELECT id FROM Urls ORDER BY ClickCount desc,editTime desc LIMIT 1000,50) and editTime<=@editTime", mySQL); } db.Free(); } private void BtnTools_Click(object sender, EventArgs e) { FrmToolsSearch frm = new FrmToolsSearch(); frm.ShowDialog(); } private void RySearch1_OnTextChanged(object sender, EventArgs e) { string sql_where = ""; if (rySearch1.Text != ""){ sql_where = " where (Name like @SearchText or Des like @SearchText or Keys like @SearchText or PY like @SearchText)"; } #region 重新载入数据 tableModel1.Rows.Clear(); tableModel1.Selections.Clear(); DataProvider mydb = new DataProvider(); IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); if (db.ConnDb(Itrycn_Db.Sys_SQLConn) == 1) { db.AddParameter("SearchText", "%" + rySearch1.Text + "%"); DataSet ds = db.ReadData("select * from Tools"+ sql_where+ " order by sort desc, addTime desc", db.GetParameter()); 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["Addr"].ToString() }; //需要修改此处 itemList.Cells.Add(new XPTable.Models.Cell(row["Name"].ToString()));//示例 var cell = new XPTable.Models.Cell(row["Des"].ToString()); cell.ForeColor = Color.Gray; itemList.Cells.Add(cell); tableModel1.Rows.Add(itemList); } db.Free(); textColumn4.Text = "工具名称("+ tableModel1.Rows.Count+ ")"; table1.Visible = tableModel1.Rows.Count!=0; } #endregion } private void RySearch1_KeyDown(object sender, KeyEventArgs e) { if(e.KeyCode==Keys.Down) { if (table1.Visible) { table1.TableModel.Selections.Clear(); table1.TableModel.Selections.AddCells(0, 0, 0, columnModel1.Columns.Count - 1); table1.Focus(); } } } private void Table1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Up) { if (table1.SelectedItems.Length>0 && table1.SelectedItems[0].Index==0) { table1.TableModel.Selections.Clear(); rySearch1.Select(); } } else if(e.KeyCode==Keys.Enter) { ClickItem(); } } private void DockPanel1_Enter(object sender, EventArgs e) { table1.Visible = false; } private void Panel1_Click(object sender, EventArgs e) { table1.Visible = false; } private void ClickItem() { if (table1.SelectedItems.Length > 0) { table1.Visible = false; Application.DoEvents(); string addr = table1.SelectedItems[0].Tag.ToString(); Type type = Type.GetType("开发辅助工具." + addr); if (type == null) { MessageBox.Show("无法找到工具", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { ShowForm(type); } } } private void Table1_Click(object sender, EventArgs e) { ClickItem(); } private const int WM_COPYDATA = 0x004A; protected override void WndProc(ref Message m) { //Console.WriteLine(m.Msg); const int WM_SYSCOMMAND = 0x0112; const int SC_CLOSE = 0xF060; #region 关闭软件时 if (m.Msg == WM_SYSCOMMAND && (int)m.WParam == SC_CLOSE) { //捕捉关闭窗体消息 //用户点击关闭窗体控制按钮 注释为最小化窗体 //this.WindowState = FormWindowState.Minimized; if (Itrycn_Db.IsCloseConfirm) { switch (MessageBox.Show("是否确定要关闭所有窗口?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question)) { case DialogResult.Cancel: RyForm.SetActiveWindow(Handle); return; case DialogResult.OK: Itrycn_Db.IsCloseConfirm = false; break; } } } #endregion base.WndProc(ref m); } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { Itrycn_Db.IsCloseConfirm = false; } private void RySearch1_Leave(object sender, EventArgs e) { if (!table1.Focused) { table1.Visible = false; } } private void Table1_Leave(object sender, EventArgs e) { if (!rySearch1.Focused) { table1.Visible = false; } } private void BtnSetting_Click(object sender, EventArgs e) { FrmSetting frm = new FrmSetting(); frm.Icon = Icon; frm.ShowDialog(); } private void BtnCreateProject_Click(object sender, EventArgs e) { FrmCreateProject frm = new FrmCreateProject(); frm.Icon = Icon; frm.StartPosition = FormStartPosition.CenterParent; frm.ShowDialog(); } } }