## :date:2025-07-16 星期三更新

### RySmartEditor    V1.0.2507.1601
- *.[新增]新增文件内容索引搜索。
- *.[新增]新增打开文件自动定位到指定行的功能。
### SuperDesign    V3.0.2507.1601
#### 网页抓取工具
- *.[修复]修复历史记录无法记录的BUG。
#### 编码解码
- *.[新增]新增svg图片代码转Geometry代码的功能。
#### 项目功能->项目管理
- *.[新增]互斥运行标准改为以毕方文件夹为准,而不是以项目文件为准。
- *.[新增]支持同个毕方项目可以不用重启来快捷切换不同子项目。
- *.[新增]支持发布时和打包时自动编译功能。
- *.[修复]修复项目输出路径为相对路径时,更新引用dll可能不成功的BUG。
This commit is contained in:
zilinsoft committed 2025-07-16 09:08:09 +08:00
1 parent 30afab3ce9
commit 5a5faaf5dc
113 files changed
+832320 -898

No files matched your search

+3 -3
View File
@@ -30,7 +30,7 @@ namespace ryConfig
{
public IntPtr dwData;
public int cData;
[MarshalAs(UnmanagedType.LPStr)]
[MarshalAs(UnmanagedType.LPWStr)]
public string lpData;
}
[DllImport("User32.dll", EntryPoint = "SendMessage")]
@@ -43,12 +43,12 @@ namespace ryConfig
/// <param name="str">要发送的文字内容</param>
public static void SendMsg(IntPtr handle, int wParam, string str)
{
byte[] arr = System.Text.Encoding.Default.GetBytes(str);
byte[] arr = System.Text.Encoding.Unicode.GetBytes(str);
int len = arr.Length;
COPYDATASTRUCT cdata;
cdata.dwData = (IntPtr)100;
cdata.lpData = str;
cdata.cData = len + 1;
cdata.cData = (len + 1)*2;
SendMessage(handle, WM_COPYDATA, wParam, ref cdata);
}
/// <summary>
@@ -2,7 +2,8 @@
using System.Drawing;
using System.Windows.Forms;
using AutocompleteMenuNS;
using ScintillaNET;
using ScintillaNETV2;
using ScintillaNETV2;
public class ScintillaWrapper : ITextBoxWrapper
{
@@ -29,14 +29,14 @@ namespace ryControls
}
private void BDSearch_Click(object sender, EventArgs e)
{
if (base.SourceControl is ScintillaNET.Scintilla editor)
if (base.SourceControl is ScintillaNETV2.Scintilla editor)
{
RyFiles.OpenUrl("https://www.baidu.com/s?wd=" +RyWeb.WebDecode.UrlEncode(editor.SelectedText));
}
}
private void Find_Click(object sender, EventArgs e)
{
if(base.SourceControl is ScintillaNET.Scintilla editor)
if(base.SourceControl is ScintillaNETV2.Scintilla editor)
{
if(editor.Parent is HighlightEditor rich_txt)
{
@@ -46,8 +46,8 @@ namespace ryControls
}
private void SelectAll_Click(object sender, EventArgs e)
{
if (!(base.SourceControl is ScintillaNET.Scintilla)) { return; }
var rich_txt = (ScintillaNET.Scintilla)base.SourceControl;
if (!(base.SourceControl is ScintillaNETV2.Scintilla)) { return; }
var rich_txt = (ScintillaNETV2.Scintilla)base.SourceControl;
rich_txt.SelectAll();
//Thread th = new Thread(sendkey);
//th.Start();
@@ -62,39 +62,39 @@ namespace ryControls
}
private void Undo_Click(object sender, EventArgs e)
{
if(!(base.SourceControl is ScintillaNET.Scintilla)) { return; }
var rich_txt = (ScintillaNET.Scintilla)base.SourceControl;
if(!(base.SourceControl is ScintillaNETV2.Scintilla)) { return; }
var rich_txt = (ScintillaNETV2.Scintilla)base.SourceControl;
rich_txt.Undo();
}
private void Redo_Click(object sender, EventArgs e)
{
if (!(base.SourceControl is ScintillaNET.Scintilla)) { return; }
var rich_txt = (ScintillaNET.Scintilla)base.SourceControl;
if (!(base.SourceControl is ScintillaNETV2.Scintilla)) { return; }
var rich_txt = (ScintillaNETV2.Scintilla)base.SourceControl;
rich_txt.Redo();
}
private void Cut_Click(object sender, EventArgs e)
{
if (!(base.SourceControl is ScintillaNET.Scintilla)) { return; }
var rich_txt = (ScintillaNET.Scintilla)base.SourceControl;
if (!(base.SourceControl is ScintillaNETV2.Scintilla)) { return; }
var rich_txt = (ScintillaNETV2.Scintilla)base.SourceControl;
rich_txt.Cut();
}
private void Copy_Click(object sender, EventArgs e)
{
if (!(base.SourceControl is ScintillaNET.Scintilla)) { return; }
var rich_txt = (ScintillaNET.Scintilla)base.SourceControl;
if (!(base.SourceControl is ScintillaNETV2.Scintilla)) { return; }
var rich_txt = (ScintillaNETV2.Scintilla)base.SourceControl;
//var ss = rich_txt.SelectedText;
rich_txt.Copy();
}
private void Paste_Click(object sender, EventArgs e)
{
if (!(base.SourceControl is ScintillaNET.Scintilla)) { return; }
var rich_txt = (ScintillaNET.Scintilla)base.SourceControl;
if (!(base.SourceControl is ScintillaNETV2.Scintilla)) { return; }
var rich_txt = (ScintillaNETV2.Scintilla)base.SourceControl;
rich_txt.Paste();
}
private void Del_Click(object sender, EventArgs e)
{
if (!(base.SourceControl is ScintillaNET.Scintilla)) { return; }
var rich_txt = (ScintillaNET.Scintilla)base.SourceControl;
if (!(base.SourceControl is ScintillaNETV2.Scintilla)) { return; }
var rich_txt = (ScintillaNETV2.Scintilla)base.SourceControl;
rich_txt.DeleteRange(rich_txt.SelectionStart,rich_txt.SelectedText.Length);
}
public ToolStripSeparator AddSeparatorMenu()
@@ -115,8 +115,8 @@ namespace ryControls
private void ContextMenuStripRichText_Opening(object sender, CancelEventArgs e)
{
if (!(base.SourceControl is ScintillaNET.Scintilla)) { return; }
var rich_txt = (ScintillaNET.Scintilla)base.SourceControl;
if (!(base.SourceControl is ScintillaNETV2.Scintilla)) { return; }
var rich_txt = (ScintillaNETV2.Scintilla)base.SourceControl;
for (int i = 0; i < base.Items.Count; i++)
{
var item = base.Items[i];
@@ -28,13 +28,13 @@
/// </summary>
private void InitializeComponent()
{
this.FindResultsScintilla = new ScintillaNET.Scintilla();
this.FindResultsScintilla = new ScintillaNETV2.Scintilla();
this.SuspendLayout();
//
// FindResultsScintilla
//
this.FindResultsScintilla.AutoCMaxHeight = 9;
this.FindResultsScintilla.BiDirectionality = ScintillaNET.BiDirectionalDisplayType.Disabled;
this.FindResultsScintilla.BiDirectionality = ScintillaNETV2.BiDirectionalDisplayType.Disabled;
this.FindResultsScintilla.CaretLineBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
this.FindResultsScintilla.CaretLineVisible = true;
this.FindResultsScintilla.Dock = System.Windows.Forms.DockStyle.Fill;
@@ -46,7 +46,7 @@
this.FindResultsScintilla.TabIndents = true;
this.FindResultsScintilla.TabIndex = 4;
this.FindResultsScintilla.Text = "搜索结果";
this.FindResultsScintilla.WrapMode = ScintillaNET.WrapMode.None;
this.FindResultsScintilla.WrapMode = ScintillaNETV2.WrapMode.None;
this.FindResultsScintilla.KeyUp += new System.Windows.Forms.KeyEventHandler(this.FindResultsScintilla_KeyUp);
this.FindResultsScintilla.MouseClick += new System.Windows.Forms.MouseEventHandler(this.FindResultsScintilla_MouseClick);
this.FindResultsScintilla.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.FindResultsScintilla_MouseDoubleClick);
@@ -64,6 +64,6 @@
#endregion
private ScintillaNET.Scintilla FindResultsScintilla;
private ScintillaNETV2.Scintilla FindResultsScintilla;
}
}
@@ -8,7 +8,7 @@
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ScintillaNET;
using ScintillaNETV2;
public partial class FindAllResultsPanel : UserControl
{
@@ -1,6 +1,6 @@
using Newtonsoft.Json.Linq;
using ryCommon;
using ScintillaNET;
using ScintillaNETV2;
using System;
using System.Collections.Generic;
using System.ComponentModel;
@@ -4,7 +4,7 @@ namespace ScintillaNET_FindReplaceDialog
using System.Collections.Generic;
using System.ComponentModel;
using System.Text.RegularExpressions;
using ScintillaNET;
using ScintillaNETV2;
using System.Drawing;
using System.Windows.Forms;
using WeifenLuo.WinFormsUI.Docking;
@@ -123,7 +123,7 @@ namespace ScintillaNET_FindReplaceDialog
KeyPressed?.Invoke(this, e);
}
//[Editor(typeof(ScintillaNET.Design.FlagEnumUIEditor), typeof(System.Drawing.Design.UITypeEditor))]
//[Editor(typeof(ScintillaNETV2.Design.FlagEnumUIEditor), typeof(System.Drawing.Design.UITypeEditor))]
//public SearchFlags Flags
//{
// get
@@ -1,7 +1,7 @@
namespace ScintillaNET_FindReplaceDialog
{
using ryCommon;
using ScintillaNET;
using ScintillaNETV2;
using SuperDesign.Controls.Highlight.FindReplace;
using System;
using System.Collections.Generic;
@@ -9,7 +9,7 @@ namespace ScintillaNET_FindReplaceDialog
using System.Drawing;
using System.Text.RegularExpressions;
using System.Windows.Forms;
using static ScintillaNET.Style;
using static ScintillaNETV2.Style;
public partial class FindReplaceDialog : Form
{
@@ -1,6 +1,6 @@
using ryCommon;
using ryControls;
using ScintillaNET;
using ScintillaNETV2;
using SuperDesign.Tools.SmartEditor;
using System;
using System.Collections.Generic;
@@ -15,7 +15,7 @@ using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using 开发辅助工具.Tools.SmartEditor;
using static ScintillaNET.Style;
using static ScintillaNETV2.Style;
using static System.Net.Mime.MediaTypeNames;
namespace ScintillaNET_FindReplaceDialog
@@ -408,7 +408,7 @@ namespace ScintillaNET_FindReplaceDialog
/// 正则表达式选项
/// </summary>
public RegexOptions RegexOptions { get; set; } = RegexOptions.None;
public ScintillaNET.SearchFlags SearchFlags { get; set; }
public ScintillaNETV2.SearchFlags SearchFlags { get; set; }
/// <summary>
/// 查找模式,0为普通查找,1表示扩展查找,2表示正则查找
/// </summary>
@@ -1,6 +1,6 @@
namespace ScintillaNET_FindReplaceDialog
{
using ScintillaNET;
using ScintillaNETV2;
using ScintillaNET_FindReplaceDialog;
using System;
using System.ComponentModel;
@@ -1,6 +1,6 @@
#region Using Directives
using ScintillaNET;
using ScintillaNETV2;
using ScintillaNET_FindReplaceDialog;
using System;
using System.Windows.Forms;
@@ -1,7 +1,8 @@
#region Using Directives
using ryCommon;
using ScintillaNET;
using ScintillaNETV2;
using ScintillaNETV2;
using System;
using System.Windows.Forms;
using WeifenLuo.WinFormsUI.Docking;
@@ -1,6 +1,6 @@
#region Using Directives
using ScintillaNET;
using ScintillaNETV2;
using System;
using System.Drawing;
using System.Windows.Forms;
@@ -1,5 +1,4 @@
using ScintillaNET;
using System;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
@@ -7,7 +6,6 @@ using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static ScintillaNET.Style;
using VPKSoft.ScintillaLexers;
using ScintillaNET_FindReplaceDialog.FindAllResults;
using ScintillaNET_FindReplaceDialog;
@@ -17,6 +15,7 @@ using static VPKSoft.ScintillaLexers.LexerEnumerations;
using Newtonsoft.Json.Linq;
using DiffPlex.Model;
using IfacesEnumsStructsClasses;
using ScintillaNETV2;
namespace ryControls
{
@@ -80,10 +79,10 @@ namespace ryControls
get { return Editor.ReadOnly; }
set { Editor.ReadOnly = value; }
}
[DefaultValue(ScintillaNET.BorderStyle.Fixed3D)]
[DefaultValue(ScintillaNETV2.BorderStyle.Fixed3D)]
[Category("Appearance")]
[Description("编辑器边框.")]
public ScintillaNET.BorderStyle BorderStyle
public ScintillaNETV2.BorderStyle BorderStyle
{
get { return Editor.BorderStyle; }
set { Editor.BorderStyle = value; }
@@ -131,7 +130,7 @@ namespace ryControls
Editor.Font = value;
for (int i = 0; i < Editor.Styles.Count; i++)
{
if (i != CallTip) SetStyleFont(i, value);
if (i != Style.CallTip) SetStyleFont(i, value);
}
}
}
@@ -422,7 +421,7 @@ namespace ryControls
// Calculate the width required to display the last line number
// and include some padding for good measure.
const int padding = 2;
scintilla.Margins[0].Width = scintilla.TextWidth(ScintillaNET.Style.LineNumber, new string('9', maxLineNumberCharLength + 1)) + padding;
scintilla.Margins[0].Width = scintilla.TextWidth(ScintillaNETV2.Style.LineNumber, new string('9', maxLineNumberCharLength + 1)) + padding;
mark = maxLineNumberCharLength;
}
}
@@ -537,7 +536,7 @@ namespace ryControls
{
Editor.TargetStart = 0;
Editor.TargetEnd = Editor.TextLength;
var pos= Editor.SearchInTarget(fun_line);
var pos= Editor.Text.IndexOfEx(fun_line);
if(pos>=0)
{
Editor.FirstVisibleLine = Editor.LineFromPosition(pos);
@@ -548,7 +547,7 @@ namespace ryControls
var str = fun_line.GetStr("", "(");
if(str.Length>0)
{
pos = Editor.SearchInTarget(str);
pos = Editor.Text.IndexOfEx(str);
if (pos >= 0)
{
Editor.FirstVisibleLine = Editor.LineFromPosition(pos);
@@ -675,7 +674,7 @@ namespace ryControls
Editor.Font = this.Font;
for (int i = 0; i < Editor.Styles.Count; i++)
{
if (i != CallTip) SetStyleFont(i, this.Font);
if (i != Style.CallTip) SetStyleFont(i, this.Font);
}
}
@@ -792,7 +791,7 @@ namespace ryControls
private Indicator _indicator;
public override ContextMenuStrip ContextMenuStrip { get => Editor.ContextMenuStrip; set => Editor.ContextMenuStrip = value; }
private readonly FindReplace MyFindReplace;
public ScintillaNET.Scintilla Editor { get; set; } = new Scintilla();
public Scintilla Editor { get; set; } = new Scintilla();
private readonly AutocompleteMenuNS.AutocompleteMenu AutoComplete = new AutocompleteMenuNS.AutocompleteMenu();
private readonly ryControls.ContextMenuStripHighlightText2 contextMenuStripHighlightText21 = new ContextMenuStripHighlightText2();
#endregion
@@ -24,7 +24,7 @@ SOFTWARE.
*/
#endregion
using ScintillaNET;
using ScintillaNETV2;
using VPKSoft.ScintillaLexers.HelperClasses;
using VPKSoft.ScintillaLexers.LexerColors;
using static VPKSoft.ScintillaLexers.LexerEnumerations;
@@ -26,10 +26,11 @@ SOFTWARE.
using System.Drawing;
using System.Linq;
using ScintillaNET;
using ScintillaNETV2;
using VPKSoft.ScintillaLexers.HelperClasses;
using static VPKSoft.ScintillaLexers.LexerEnumerations;
using static VPKSoft.ScintillaLexers.GlobalScintillaFont;
using ScintillaNETV2;
namespace VPKSoft.ScintillaLexers.CreateSpecificLexer
{
@@ -24,7 +24,7 @@ SOFTWARE.
*/
#endregion
using ScintillaNET;
using ScintillaNETV2;
using VPKSoft.ScintillaLexers.HelperClasses;
using VPKSoft.ScintillaLexers.LexerColors;
using static VPKSoft.ScintillaLexers.LexerEnumerations;
@@ -24,7 +24,8 @@ SOFTWARE.
*/
#endregion
using ScintillaNET;
using ScintillaNETV2;
using ScintillaNETV2;
using VPKSoft.ScintillaLexers.HelperClasses;
using VPKSoft.ScintillaLexers.LexerColors;
using static VPKSoft.ScintillaLexers.LexerEnumerations;
@@ -24,7 +24,8 @@ SOFTWARE.
*/
#endregion
using ScintillaNET;
using ScintillaNETV2;
using ScintillaNETV2;
using VPKSoft.ScintillaLexers.HelperClasses;
using static VPKSoft.ScintillaLexers.LexerEnumerations;
@@ -24,7 +24,7 @@ SOFTWARE.
*/
#endregion
using ScintillaNET;
using ScintillaNETV2;
using VPKSoft.ScintillaLexers.HelperClasses;
using VPKSoft.ScintillaLexers.LexerColors;
using static VPKSoft.ScintillaLexers.LexerEnumerations;
@@ -24,7 +24,7 @@ SOFTWARE.
*/
#endregion
using ScintillaNET;
using ScintillaNETV2;
using VPKSoft.ScintillaLexers.LexerColors;
using static VPKSoft.ScintillaLexers.LexerEnumerations;
@@ -24,7 +24,7 @@ SOFTWARE.
*/
#endregion
using ScintillaNET;
using ScintillaNETV2;
using VPKSoft.ScintillaLexers.HelperClasses;
using VPKSoft.ScintillaLexers.LexerColors;
using static VPKSoft.ScintillaLexers.LexerEnumerations;
@@ -24,7 +24,7 @@ SOFTWARE.
*/
#endregion
using ScintillaNET;
using ScintillaNETV2;
using VPKSoft.ScintillaLexers.HelperClasses;
using static VPKSoft.ScintillaLexers.LexerEnumerations;
@@ -24,7 +24,8 @@ SOFTWARE.
*/
#endregion
using ScintillaNET;
using ScintillaNETV2;
using ScintillaNETV2;
using VPKSoft.ScintillaLexers.HelperClasses;
using static VPKSoft.ScintillaLexers.LexerEnumerations;
@@ -29,7 +29,8 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ScintillaNET;
using ScintillaNETV2;
using ScintillaNETV2;
using VPKSoft.ScintillaLexers.HelperClasses;
using static VPKSoft.ScintillaLexers.LexerEnumerations;
@@ -24,7 +24,7 @@ SOFTWARE.
*/
#endregion
using ScintillaNET;
using ScintillaNETV2;
using VPKSoft.ScintillaLexers.HelperClasses;
using VPKSoft.ScintillaLexers.LexerColors;
using static VPKSoft.ScintillaLexers.LexerEnumerations;
@@ -24,7 +24,7 @@ SOFTWARE.
*/
#endregion
using ScintillaNET;
using ScintillaNETV2;
namespace VPKSoft.ScintillaLexers.CreateSpecificLexer
{
@@ -24,7 +24,7 @@ SOFTWARE.
*/
#endregion
using ScintillaNET;
using ScintillaNETV2;
using VPKSoft.ScintillaLexers.HelperClasses;
using VPKSoft.ScintillaLexers.LexerColors;
using static VPKSoft.ScintillaLexers.LexerEnumerations;
@@ -24,7 +24,7 @@ SOFTWARE.
*/
#endregion
using ScintillaNET;
using ScintillaNETV2;
using VPKSoft.ScintillaLexers.HelperClasses;
using VPKSoft.ScintillaLexers.LexerColors;
using static VPKSoft.ScintillaLexers.LexerEnumerations;
@@ -24,7 +24,7 @@ SOFTWARE.
*/
#endregion
using ScintillaNET;
using ScintillaNETV2;
using VPKSoft.ScintillaLexers.HelperClasses;
using VPKSoft.ScintillaLexers.LexerColors;
using static VPKSoft.ScintillaLexers.LexerEnumerations;
@@ -24,7 +24,7 @@ SOFTWARE.
*/
#endregion
using ScintillaNET;
using ScintillaNETV2;
using VPKSoft.ScintillaLexers.HelperClasses;
using VPKSoft.ScintillaLexers.LexerColors;
using static VPKSoft.ScintillaLexers.LexerEnumerations;
@@ -24,7 +24,7 @@ SOFTWARE.
*/
#endregion
using ScintillaNET;
using ScintillaNETV2;
using VPKSoft.ScintillaLexers.HelperClasses;
using VPKSoft.ScintillaLexers.LexerColors;
using static VPKSoft.ScintillaLexers.LexerEnumerations;
@@ -24,7 +24,8 @@ SOFTWARE.
*/
#endregion
using ScintillaNET;
using ScintillaNETV2;
using ScintillaNETV2;
using VPKSoft.ScintillaLexers.HelperClasses;
using VPKSoft.ScintillaLexers.LexerColors;
using static VPKSoft.ScintillaLexers.LexerEnumerations;
@@ -24,7 +24,7 @@ SOFTWARE.
*/
#endregion
using ScintillaNET;
using ScintillaNETV2;
using VPKSoft.ScintillaLexers.LexerColors;
using static VPKSoft.ScintillaLexers.LexerEnumerations;
@@ -29,7 +29,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ScintillaNET;
using ScintillaNETV2;
using VPKSoft.ScintillaLexers.HelperClasses;
using static VPKSoft.ScintillaLexers.LexerEnumerations;
@@ -25,7 +25,7 @@ SOFTWARE.
#endregion
using System.Collections.Generic;
using ScintillaNET;
using ScintillaNETV2;
using static VPKSoft.ScintillaLexers.LexerEnumerations;
namespace VPKSoft.ScintillaLexers.CreateSpecificLexer
@@ -24,7 +24,7 @@ SOFTWARE.
*/
#endregion
using ScintillaNET;
using ScintillaNETV2;
namespace VPKSoft.ScintillaLexers
{
@@ -27,7 +27,7 @@ SOFTWARE.
using System;
using System.Collections.Generic;
using System.Linq;
using ScintillaNET;
using ScintillaNETV2;
namespace VPKSoft.ScintillaLexers.HelperClasses
{
@@ -26,7 +26,7 @@ SOFTWARE.
using System.Collections.Generic;
using System.Linq;
using ScintillaNET;
using ScintillaNETV2;
using static VPKSoft.ScintillaLexers.LexerEnumerations;
namespace VPKSoft.ScintillaLexers.HelperClasses
@@ -30,7 +30,7 @@ using System.Drawing;
using System.IO;
using System.Linq;
using System.Xml.Linq;
using ScintillaNET;
using ScintillaNETV2;
using VPKSoft.ScintillaLexers.CreateSpecificLexer;
using VPKSoft.ScintillaLexers.HelperClasses;
using VPKSoft.ScintillaLexers.ScintillaNotepadPlusPlus;
@@ -27,7 +27,7 @@ SOFTWARE.
using System.Drawing;
using System.Linq;
using System.Xml.Linq;
using ScintillaNET;
using ScintillaNETV2;
using VPKSoft.ScintillaLexers.CreateSpecificLexer;
using VPKSoft.ScintillaLexers.HelperClasses;
@@ -25,7 +25,7 @@ SOFTWARE.
#endregion
using System.Drawing;
using ScintillaNET;
using ScintillaNETV2;
namespace ScintillaDiff
{
@@ -36,7 +36,7 @@ using DiffPlex.DiffBuilder.Model;
using DiffPlex.Model;
using ScintillaDiff.Enumerations;
using ScintillaDiff.UtilityClasses;
using ScintillaNET;
using ScintillaNETV2;
using static ScintillaDiff.ScintillaDiffStyles;
namespace ScintillaDiff
@@ -61,7 +61,7 @@ namespace ScintillaDiff
//
scintillaOne = new ScrollSyncScintilla();
this.scintillaOne.AutoCMaxHeight = 9;
this.scintillaOne.BiDirectionality = ScintillaNET.BiDirectionalDisplayType.Disabled;
this.scintillaOne.BiDirectionality = ScintillaNETV2.BiDirectionalDisplayType.Disabled;
this.scintillaOne.CaretLineBackColor = System.Drawing.Color.White;
this.scintillaOne.CaretLineVisible = true;
this.scintillaOne.Dock = System.Windows.Forms.DockStyle.Fill;
@@ -73,14 +73,14 @@ namespace ScintillaDiff
this.scintillaOne.TabIndents = true;
this.scintillaOne.TabIndex = 0;
this.scintillaOne.UseRightToLeftReadingLayout = false;
this.scintillaOne.WrapMode = ScintillaNET.WrapMode.None;
this.scintillaOne.WrapMode = ScintillaNETV2.WrapMode.None;
this.scintillaOne.TextChanged += new System.EventHandler(this.Scintilla_TextChanged);
//
// scintillaTwo
//
scintillaTwo = new ScrollSyncScintilla();
this.scintillaTwo.AutoCMaxHeight = 9;
this.scintillaTwo.BiDirectionality = ScintillaNET.BiDirectionalDisplayType.Disabled;
this.scintillaTwo.BiDirectionality = ScintillaNETV2.BiDirectionalDisplayType.Disabled;
this.scintillaTwo.CaretLineBackColor = System.Drawing.Color.White;
this.scintillaTwo.CaretLineVisible = true;
this.scintillaTwo.Dock = System.Windows.Forms.DockStyle.Fill;
@@ -92,7 +92,7 @@ namespace ScintillaDiff
this.scintillaTwo.TabIndents = true;
this.scintillaTwo.TabIndex = 0;
this.scintillaTwo.UseRightToLeftReadingLayout = false;
this.scintillaTwo.WrapMode = ScintillaNET.WrapMode.None;
this.scintillaTwo.WrapMode = ScintillaNETV2.WrapMode.None;
this.scintillaTwo.TextChanged += new System.EventHandler(this.Scintilla_TextChanged);
this.scMain.Panel1.Controls.Add(scintillaOne);
this.scMain.Panel1.Controls.SetChildIndex(scintillaOne, 0);
@@ -1,4 +1,4 @@
using ScintillaNET;
using ScintillaNETV2;
namespace ScintillaDiff
{
@@ -28,15 +28,15 @@ using System;
using System.ComponentModel;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using ScintillaNET;
using ScintillaNETV2;
namespace ScintillaDiff
{
/// <summary>
/// An inherited class from the <see cref="Scintilla"/> which can synchronize vertical scroll bar position with another <see cref="Scintilla"/> control.
/// Implements the <see cref="ScintillaNET.Scintilla" />
/// Implements the <see cref="ScintillaNETV2.Scintilla" />
/// </summary>
/// <seealso cref="ScintillaNET.Scintilla" />
/// <seealso cref="ScintillaNETV2.Scintilla" />
public class ScrollSyncScintilla : Scintilla
{
// ReSharper disable once CommentTypo
@@ -29,7 +29,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ScintillaNET;
using ScintillaNETV2;
namespace ScintillaDiff
{
+2 -2
View File
@@ -23,7 +23,7 @@ using 开发辅助工具.Tools.SmartEditor;
using SuperDesign.Tools.SmartEditor;
using ObjectListViewDemo;
using System.IO;
using ScintillaNET;
using ScintillaNETV2;
using DiffPlex.Model;
using ryControls.Interface;
using static System.Net.WebRequestMethods;
@@ -31,7 +31,7 @@ using ryControls;
using static VPKSoft.ScintillaLexers.LexerEnumerations;
using VPKSoft.ScintillaLexers;
using TheArtOfDev.HtmlRenderer.Adapters.Entities;
using static ScintillaNET.Style;
using static ScintillaNETV2.Style;
using RySmartEditor.Controls;
using ExtendUI.FTPManager;
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.2503.3001")]
[assembly: AssemblyFileVersion("1.0.2503.3001")]
[assembly: AssemblyVersion("1.0.2507.1601")]
[assembly: AssemblyFileVersion("1.0.2507.1601")]
@@ -53,9 +53,6 @@
<Reference Include="RaUI">
<HintPath>..\..\Bin\Debug\SuperDesign\RaUI.dll</HintPath>
</Reference>
<Reference Include="Scintilla.NET">
<HintPath>..\..\Bin\Debug\SuperDesign\Scintilla.NET.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.DirectoryServices" />
@@ -10,7 +10,7 @@ using System.Linq;
using System.Text;
using System.Windows.Forms;
using 开发辅助工具.Manager;
using static ScintillaNET.Style;
using static ScintillaNETV2.Style;
using System.IO;
using ryControls;
using static VPKSoft.ScintillaLexers.LexerEnumerations;
@@ -25,7 +25,7 @@ using WinSCP;
using RySmartEditor.Controls;
using System.Reflection;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.TextBox;
using ScintillaNET;
using ScintillaNETV2;
using WinShell;
using static System.Net.Mime.MediaTypeNames;
using System.Runtime.InteropServices.ComTypes;
@@ -761,7 +761,8 @@ namespace 开发辅助工具.Tools.SmartEditor
}
}
};
frm.Show();
RyForm.ShowCenter(frm, FrmMainEditor.MainEditor);
frm.Show(FrmMainEditor.MainEditor);
}
private void Frm_FormClosed(object sender, FormClosedEventArgs e)
@@ -10,7 +10,7 @@ using System.Linq;
using System.Text;
using System.Windows.Forms;
using 开发辅助工具.Manager;
using static ScintillaNET.Style;
using static ScintillaNETV2.Style;
using System.IO;
using ryControls;
using static VPKSoft.ScintillaLexers.LexerEnumerations;
+52 -1
View File
@@ -43,6 +43,7 @@
this.TxtFind = new System.Windows.Forms.ToolStripTextBox();
this.TsFind = new System.Windows.Forms.ToolStripButton();
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
this.BtnIndexSearch = new System.Windows.Forms.ToolStripButton();
this.TsFavView = new System.Windows.Forms.ToolStripButton();
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.文件ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@@ -82,6 +83,10 @@
this.替换ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.在文件中查找ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.跳到指定行ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem3 = new System.Windows.Forms.ToolStripSeparator();
this.索引搜索ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.索引规则管理ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.立即刷新索引ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.编码ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.使用ANSI编码ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.使用UTF8编码ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@@ -130,6 +135,7 @@
this.TxtFind,
this.TsFind,
this.toolStripSeparator2,
this.BtnIndexSearch,
this.TsFavView});
this.toolStrip1.Location = new System.Drawing.Point(0, 25);
this.toolStrip1.Name = "toolStrip1";
@@ -244,6 +250,16 @@
this.toolStripSeparator2.Name = "toolStripSeparator2";
this.toolStripSeparator2.Size = new System.Drawing.Size(6, 27);
//
// BtnIndexSearch
//
this.BtnIndexSearch.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.BtnIndexSearch.Image = ((System.Drawing.Image)(resources.GetObject("BtnIndexSearch.Image")));
this.BtnIndexSearch.ImageTransparentColor = System.Drawing.Color.Magenta;
this.BtnIndexSearch.Name = "BtnIndexSearch";
this.BtnIndexSearch.Size = new System.Drawing.Size(24, 24);
this.BtnIndexSearch.Text = "索引搜索";
this.BtnIndexSearch.Click += new System.EventHandler(this.BtnIndexSearch_Click);
//
// TsFavView
//
this.TsFavView.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
@@ -538,7 +554,11 @@
this.查找与替换ToolStripMenuItem,
this.替换ToolStripMenuItem,
this.在文件中查找ToolStripMenuItem,
this.跳到指定行ToolStripMenuItem});
this.跳到指定行ToolStripMenuItem,
this.toolStripMenuItem3,
this.索引搜索ToolStripMenuItem,
this.索引规则管理ToolStripMenuItem,
this.立即刷新索引ToolStripMenuItem});
this.搜索ToolStripMenuItem.Name = "搜索ToolStripMenuItem";
this.搜索ToolStripMenuItem.Size = new System.Drawing.Size(44, 21);
this.搜索ToolStripMenuItem.Text = "搜索";
@@ -576,6 +596,32 @@
this.跳到指定行ToolStripMenuItem.Text = "跳到指定行";
this.跳到指定行ToolStripMenuItem.Click += new System.EventHandler(this.跳到指定行ToolStripMenuItem_Click);
//
// toolStripMenuItem3
//
this.toolStripMenuItem3.Name = "toolStripMenuItem3";
this.toolStripMenuItem3.Size = new System.Drawing.Size(212, 6);
//
// 索引搜索ToolStripMenuItem
//
this.索引搜索ToolStripMenuItem.Name = "索引搜索ToolStripMenuItem";
this.索引搜索ToolStripMenuItem.Size = new System.Drawing.Size(215, 22);
this.索引搜索ToolStripMenuItem.Text = "索引搜索";
this.索引搜索ToolStripMenuItem.Click += new System.EventHandler(this.索引搜索ToolStripMenuItem_Click);
//
// 索引规则管理ToolStripMenuItem
//
this.索引规则管理ToolStripMenuItem.Name = "索引规则管理ToolStripMenuItem";
this.索引规则管理ToolStripMenuItem.Size = new System.Drawing.Size(215, 22);
this.索引规则管理ToolStripMenuItem.Text = "索引规则管理";
this.索引规则管理ToolStripMenuItem.Click += new System.EventHandler(this.索引规则管理ToolStripMenuItem_Click);
//
// 立即刷新索引ToolStripMenuItem
//
this.立即刷新索引ToolStripMenuItem.Name = "立即刷新索引ToolStripMenuItem";
this.立即刷新索引ToolStripMenuItem.Size = new System.Drawing.Size(215, 22);
this.立即刷新索引ToolStripMenuItem.Text = "立即刷新索引";
this.立即刷新索引ToolStripMenuItem.Click += new System.EventHandler(this.立即刷新索引ToolStripMenuItem_Click);
//
// 编码ToolStripMenuItem
//
this.编码ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
@@ -897,5 +943,10 @@
private System.Windows.Forms.Panel PnlLoad;
private System.Windows.Forms.Label label1;
public WeifenLuo.WinFormsUI.Docking.DockPanel dockPanel;
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem3;
private System.Windows.Forms.ToolStripMenuItem 索引搜索ToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem 索引规则管理ToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem 立即刷新索引ToolStripMenuItem;
private System.Windows.Forms.ToolStripButton BtnIndexSearch;
}
}
@@ -9,8 +9,8 @@ using ObjectListViewDemo;
using ryCommon;
using ryCommonDb;
using ryControls;
using ScintillaNET;
using ScintillaNET_FindReplaceDialog;
using ScintillaNETV2;
using SuperDesign.Manager.FTP;
using SuperDesign.Manager.Site;
using SuperDesign.Tools.SmartEditor;
@@ -233,6 +233,49 @@ namespace 开发辅助工具.Tools.SmartEditor
this.Focus();
return dummyDoc;
}
public FrmFileEditor OpenFile(string path, int row)
{
if (path.Length == 0)
{
FrmFileEditor dummyDoc_new = new FrmFileEditor
{
Text = "*新文档"
};
AddEvent(dummyDoc_new);
dummyDoc_new.Show(dockPanel);
SetEncoding(Encoding.UTF8);
return dummyDoc_new;
}
HighlightEditor high_editor = null;
if (GetActiveForm() is FrmFileEditor frm2)
{
high_editor = frm2.highlightEditor1;
}
foreach (IDockContent document in dockPanel.DocumentsToArray())
{
// IMPORANT: dispose all panes.
if (document is FrmFileEditor frm)
{
if (frm.FilePath == path)
{
frm.Show(dockPanel);
frm.highlightEditor1.Editor.FirstVisibleLine = row;
return frm;
}
}
}
FrmFileEditor dummyDoc = new FrmFileEditor();
AddEvent(dummyDoc);
dummyDoc.LoadFile(path);
if (!dummyDoc.IsDisposed)
{
dummyDoc.Show(dockPanel);
dummyDoc.highlightEditor1.Editor.FirstVisibleLine = row;
SetEncoding(dummyDoc.Encoding);
}
this.Focus();
return dummyDoc;
}
public int OpenFTPFileByNewForm(SiteInfo site, string remotePath)
{
if (site.FtpId <= 0) { return -2; }
@@ -947,6 +990,12 @@ namespace 开发辅助工具.Tools.SmartEditor
}
ProcUse = true;
QuickMsg.RyMemoryShare.DelMemory("SmartEditor");
object mainHandle = QuickMsg.RyMemoryShare.ReadFromMemory(1024, typeof(Int64), "FileContentSearch.z");
if (mainHandle != null)
{
var search_handle = (IntPtr)(long)mainHandle;
Win32.SendMessage(search_handle, 17189, 101, 100);//让软件退出
}
//DragManager.ElevatedDragDrop -= FrmMainEditor_ElevatedDragDrop;
//DragManager.Remove();
}
@@ -1083,6 +1132,21 @@ namespace 开发辅助工具.Tools.SmartEditor
}
#endregion
break;
case 1667:
#region 打开文件
try
{
var mm = ryConfig.MsgManager.GetMsg(m);
JObject jo = JObject.Parse(ryConfig.MsgManager.GetMsg(m));
if (System.IO.File.Exists(jo.GetJsonValue("fullpath","")))
{
ShowUI(false);
OpenFile(jo.GetJsonValue("fullpath", ""), jo.GetJsonValue("firstrow", 0));
}
}
catch { }
#endregion
break;
default:
break;
}
@@ -1935,6 +1999,63 @@ namespace 开发辅助工具.Tools.SmartEditor
private void FrmMainEditor_Load(object sender, EventArgs e)
{
LoadState(true);
object mainHandle = QuickMsg.RyMemoryShare.ReadFromMemory(1024, typeof(Int64), "FileContentSearch.z");
if (mainHandle != null)
{
var search_handle= (IntPtr)(long)mainHandle;
}
else
{
RyFiles.RunFile(Application.StartupPath+ "\\SysDb\\Tools\\FileContentSearch\\FileContentSearch.exe", "q");
}
}
public void SendToFileSearch(int wParam)
{
object mainHandle = QuickMsg.RyMemoryShare.ReadFromMemory(1024, typeof(Int64), "FileContentSearch.z");
if (mainHandle != null)
{
var search_handle = (IntPtr)(long)mainHandle;
Win32.SendMessage(search_handle, 17189, wParam, 100);//
}
else
{
RyFiles.RunFile(Application.StartupPath + "\\SysDb\\Tools\\FileContentSearch\\FileContentSearch.exe","q");
Task.Run(() =>
{
var index = 0;
while(index<=3)
{
index++;
Thread.Sleep(1000);
mainHandle = QuickMsg.RyMemoryShare.ReadFromMemory(1024, typeof(Int64), "FileContentSearch.z");
if (mainHandle != null)
{
var search_handle = (IntPtr)(long)mainHandle;
Win32.SendMessage(search_handle, 17189, wParam, 100);//
break;
}
}
});
}
}
private void 索引搜索ToolStripMenuItem_Click(object sender, EventArgs e)
{
SendToFileSearch(100);
}
private void 索引规则管理ToolStripMenuItem_Click(object sender, EventArgs e)
{
SendToFileSearch(103);
}
private void 立即刷新索引ToolStripMenuItem_Click(object sender, EventArgs e)
{
SendToFileSearch(102);
}
private void BtnIndexSearch_Click(object sender, EventArgs e)
{
索引搜索ToolStripMenuItem.PerformClick();
}
}
}
@@ -124,230 +124,249 @@
<data name="TsNew.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACLSURBVFhH7dYhDoAwEETRHo1TYFAYFAaDIuFoHA1mRJMK
IN3uBsNM8l3TPNU0aQ/r0G6sR2Ej4GxoQCErAUdl+fyI3CsBNSsBbEKueQFsRs2LALAFNS0KwFZkXiSA
bci0aADjndWzAu4eptwngLcJIIAAAggggABuAD8bntyAqMyAu9+NJxPgL0vpAoJkz+uuCJ84AAAAAElF
TkSuQmCC
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACSSURBVFhH7ZYxCoVQDARzNE/xGysbq9/YWAkezaMpKYSw
iCYvwcYdmG4NU8kTIdd0IrIG/eGRDBqwN9jjoVZswOb03A94rAUb4MEGqCMOomQD1D+OIlQEqBMOvVQF
qDOOPVQGqAt+8ER1gKo33UQD8KdkfSXgDgYwgAEMYAADGJAOwOd31HRAleEAfNlkDQV8hwOCZM/rkQXp
RQAAAABJRU5ErkJggg==
</value>
</data>
<data name="TsOpen.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFNSURBVFhHYxgFo2AUYAPpm8sd0rZU1ePCIHmoUtoAkAXp
W6r+48Qj3gGpWyr3E4vJcizBECAFjzqA2g7AFs/4MHUdsKniNFQJbQEuB6RtqnQGyWMrnEjFYItwAWwO
AGpaDpJL3VJthS5HKs7YXKkDtggXwOaAjA016hC5qqXocqTgtC2VS8CW4APoDkjbXNkCEk/bUu2BLE4O
TtpQygu2BB9AdkDS5sqXabvL+UHiqZurdiEbRiqGeYQgQHYAMOFlg8TSNlWHIxtGKk5cU/UObDgxAMkB
x6BCQN+XPUI2kGS8uTIVahRhAHNA6qaqYAi/KgfDQBIwMAedARtMLAA5AJha14HYISsLObEZSgpO3VLh
AjaYWAAOgY2V1iA20CGTsRlKPK5cBTaUFAByAIjO3FEtC3YMBThzS4US2FBSQOq2amUocxSMguEOGBgA
cVRz1KE1SXQAAAAASUVORK5CYII=
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFHSURBVFhH7ZS9SsRAFIW3tRCfwEYLG59AG0ELe4WtXZi7
u2hjoZs7EbbxDXwFRRSRdeYiooWdjT6FnY2v4DK7BJKTP2eNjc4HB5J7k3NOEkirFQgECujawQaJHpbJ
7fGeRnEBXdFfpfr3BZTw83c1U9m6Al4KBZougN+4Ts0WMNErXvsrlBUgw5tujz+mWYSZGYoKkOhLt1MS
r+HOVz3Lq5iZoahAb3SyMt3pC9z5iITPMS8HFiDLp25OEm+joa86o6N5zMuRLtCx/EFPgwU3V1Y/oqGP
kgepJV2ADO+7GZm4jYY+2rvRn5hTSqrASzJT9vgdTb1kWWVTKkgKKKN3puf6IGfoIRL9hhmVuAIkfOuO
d68O59DQV0qiLcyoZPIG7njdHZPwGRr6ia/Rv5bk/91/iBcnZX6gvkRL6F+Luo+XcRYI/FnGcVRz1AY/
tdsAAAAASUVORK5CYII=
</value>
</data>
<data name="TsSave.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAwcSURBVGhD7Zh5UFRXFsY7JjWTzT9mKpPEmi0TkxjNmGhc
knGSuOMuQaNOXOMaDBINqKCMK4OCCgquqIka12hM1LgERXZRBJQd2fdu6G6g+zU09MY33312G8YiBLpm
quYPT9VXj37vdb/vd+85596H4lE8ikfxc7HtdYUiMJzHBCpRoQi58b9VaP5PcjxvyxmFImi43VBnguaf
CK18zuUW3vSuxNuUi28+Rq3Kk+Xim4eRvvfuyycXI4RW5sgaLrQiG8OElgtlYai3Q5kY4iWUgcFfCKXj
g1aSPy9LR68lpejuWYUXJmfisa7hFoK42o11NIKOvzA2BWsTgV1pwKbrNqTlFKKmtg71jc3QSs1Q65tQ
o2uCqr4JytomVGqNKNcYUaYWakSFrAZUau6rSmuQpaRUtZKs6lo9quv0UFMaHY+1tYi4HgWv0zrM/h6Y
cQ7ovkQFRZcdSXZjHYwuoSUfbNJj710gLAn41xUz0jPzoNdLMFkBowloaAYkI6BrBOobgDoDoNWDUFQ9
CMjPEs9T4rq4T9zf0ARwDOTfaDYDJgtg4W/aWgAz/7h29Sq8jmsx8xtgwVng/V1Al+eP1tuddTAeDy0f
EWzAzhQg5CYBfjQjIysfOp2EZj5QGBBG9DQkzNXTPAcUGgFA86o6cFbuH2UYQgm4Wt4n7tXxO3oCGVoB
CZjGJjOuXYskgAYDfaLQf+kZDNom4Ve/P6W3O+tgPB5W5hIsIfQ2EEyATRFmZGUXyjNg5mg1cfQcEBKN
CEMPIOwz0CYErwsIMVsyBAEcEPKsGglwNRLeJzR4Y1UyenhFYFBwA37d7YjO7qyDQYDRIRJ2EGDrDWDz
VTOy7xVBkgyw2u6PlgNCGBCjKQzJafRLEGImeM8DCHtqyb/VIACuYflJLVyPtGDSsRYM3W1zAuCJsLJx
OyQE3wKCEoDAqxbk5hfzAQZ7rraC4OjJ6UQjD2qhNQQBOgJhEL9BgMjISKw8pcWUY8D0k8DIvTY86QzA
hDAJ25g+m+MJEWlBXkEpjI18GkPMgkilhyHESDogWteE8udmgvc5akJ8V28wIyoqCr6nazH5a2AaIVz2
OQngulPCFgIExAJbrltQUFQOo/E+QAtnQUCIjtQ6nRw10eHC5nUHhJyGBIiOjsaqM7X48Agw5SgwKtxJ
ALfdEoK4DvjHsA4IUFRSgSY7gAgHxH+kk70mOlTYPOdotTIE76/TmxEbG4vV39bC9TDkWRiz30mAj/ZI
2Mz83xANbIuyoqS0Ck1NdNYqBITo4Q/XRIcLW0CImSCInHYEiI+Lg9/ZOkw8BHkWxh5wAuAxAkzdKyGA
+b/2OlspAcoqlGhuorOH4mEI0Q5/qbDbrAle1+osuJGQgDXf1WHcV5Ahxh10AqALAf4RLsE/DlgTycUs
xoqKSlWbACLarAk7REcLW5xX11uQeOMG1p2rx9gvgfGEmECA33R3AmDGAQkbWcB+14DtsVZUKmtgaqaj
n4kHEA/VRJuF3UY6iVlQ11lw82Yi1p+vx5iDTB9CuH5lw3OvdBLgcQLMOihhAwvY9yoQGmeFSqVuF0CE
DPFwTbRR2G3VRDX/rqm1IOnWTWwkgMsBdiDK7ZANv3vVCYA5X0pYxwL2+fE+QLVaC7OJbn4hHDMh6kLM
Brc3MDpmwl7crdNJjLyAUBGgutaK5KQk+P9Qj5HhXAP2A5MO2/C8MwDzDklYEwUsvwLsjLdBq62FudmI
FpuNsj6QzSGrRZaVsnAKTCYzmjgNRu5vxB5HbBP0BhN0kont0gRtvQmaOhNHvRkqbTOUmmZUVTcgNTkJ
ARd1GLEPGEGIyUdsePG1TgI8QYAFRyT8kx3I+zLfCRJsUGt1hKhDjaZOng1VtQZVTKtKZTUqqlTsUlUo
K69iu61AcUkZCotLufiVIL+gCHn5RcjNK0BObj6yc/KQmZWLjMxspGdkIS09C3fSMpByJw3JqXeQmpKC
wCsShhFAaOrXNnTr4QTAoq8lrGYH8r4kXmiAAzdbsO9GC/YKEWhPK+3mDAntonbGCVllhbH4HQplJxPa
IRRtxXZZFoRE/aRgLpjiHq/zLRi2Fxiyh9uJowR43QkA96MSfNmBlhPAi1r2A/D5BYrHJTx6nAcW863p
U2rRd/dfPuZ9C8w9A8zhy8hsauYpvlVxQ/bxCRo5ztHk3uYjbg8mcYV140orVtsJ7PXj2W1E1xnNnBd5
L9JnGM2/v5vfPUaAnp0FeCqszOOEBB92oNbmPalFNDibhmbSzAzqYxqaxhVzKvURDU1i73ajXGlqAk2N
ZycZS1Ojmc+jaGwkR3Y4jQ2jxLkxwrQ4z7+F8eG8PpTmh/D6e3wbm36cAL2cAPj8pITlETR/EVhKgKU8
zj3egrfm6zBptRpu1IcOrVLD1a6JrTTB1y4fNca3Fs+N89Xg5Rl6/HGaAS9PlzDAz4SRhBUjL1JnMAEG
7eRAnXAG4OmwsmXfSPBmCxXmxciL1JlyoAUrg8ugUZWjskJFKZ2SSqlCCYt83Ocq/NZFj5dc69F/RTNG
cDaE+Q9oXrwLvxMKzDrlJIDXaQlebKHC/BLmu8j7yQRYu7sEZqMGDQ0SGgwSGnl0qMGgh6EDajJKUNco
MW21En+YJOENzsTf/JoxjGnkMP9eGDBwB/DJNzZ0dwZg+RkJy9hCPc4Bn7FQF/M4aX8LVoUWo1GqgU6v
R11dHYwGNZoa1WiQNPLnep2OL//tS0BUVVZi+poqvDbDgAELJLy/zoTBzH+H+UFUvxCmLQFe6SzAU8+E
lfmclbCUBSzMu7PLuPPoFs4UCimATquUjWRkFmOuXyFmrSiFb3AeCgvLUFdbD42mtl0J0FKuFXM2VKHP
ggYM9jRgqL8J74nCZd4PYuq8S/UNZmc7Y8OrzgCs+k6CJwv3U5qXRYAPCeC9NZ81UIFarsyJSQVQ9K2B
4i969JpcgdzcIqaGFkqlul3V1GhQwHfsBQFVGORpxBifBrhsNuPvHH0x8sL8O9uBPtvYnr+1oYczAH7n
JHiwcBexv4sev5AQrmxzXwTeg7KiBDXVasQn3sNTg6qh6F2Pfh+XIjMzD8qqGpSXq9pVVWU1crLz4b6l
EsNXGjF5fSPGbDXjXYd55n5/pk/vreL5NvTsLMDTz4aVrTkvYTELdyEXp/l2TWCOegbkoLSokN1Ehesx
2XhSBtCh77QSpKbmoKxUiaKiynZVWlKFtLu58AypxMR1zZgV1IiJ2y1y0Qr15+j3Y/q8ESRm34ZenQV4
hgDrf5Dgzu4zjwuXLAKMZ4vz2JiFwtw8FNNIRGTGA4A+U4uRlJTJ1BCpVNau8vPKkZKcBa+wCkwLNGFR
aBPcdlrQj8YHcORF8fZl+vQMZPMQAP06CfAsAfwvSVjEzjP3tGhlFI/jWGTu6zOQm5lDE2W4eOUuFG+r
oejZgL9OKUVCwl3k5ohUKm5XOdklSExMh8+eCswNNWPZgWZM3WuVi1aM/Ns034fp89om0QUJ0N8JgIDL
EhaycIX52dzTiL3NWAIsXJOG9NQMZGYU49LlZExcnI6x7rlwX5OCqKgUpKcVMZUK2lXa3ULExtyB3/5y
eOy3YPUxE6YfsOItGhcjL8y/uQV4NUCsQQQY4AwAt7TzWbizaH4WN2SzCDCaAPNW38GNuNuIj8+k4VTE
RiUiLjoR0ddv8vMdxMVlIDY2vV3Fx2fgyhW+Oh4qx4qjVvifNWP2IatctG/Zzfdm/r9CAA+nALqGVWz6
0YBPmPczaX4GN2/TCTKKbW7OymREXI7FpUtJsi5f/kni88WLt3hsX+Les2ejEXCsHGvPtiDksgXzuW3u
RdMO86KAX9pIgAst6N37eOf+O92ly7bYL/YUwZO7UbEFFv+nnMLt8BB2iOnet5FxlynEXE5PL3JKWVkl
iI5KRtDJMmzmar8vxob5HKSX/O+njRj5P9N8T6aT7wUjXuy2u9BuraOxxe1Pr3wF//NabE6wwT+a4kP8
ImxYtysZkRExiIm5zZRJckqx/O75c9cRfqUUh1NtOJFmxVa+DH3GghU5L+RxwYZVFxsxcMT3UCiC1tqN
dSYC53TtGna3R79j9aKNyRpI9TpI7fiv6PVeh3VikRIrrfz7zPUHeueIrps88oEbFIrwp+2mHsWjeBSP
4v8qFIp/A2dkad2NL3U0AAAAAElFTkSuQmCC
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
</value>
</data>
<data name="TsSaveAll.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
AJoAAAAASUVORK5CYII=
</value>
</data>
<data name="TsFTPUpload.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGgSURBVFhH7ZW9TsMwFIX7CGwICV6AASEhtU1U1A5sJK4Q
YmAGdWDjCfoYTZVWDEwg8Qz8iIGBJmnYeQN2ttbHvQZTomInLkIoRzry3732Z9dxK6X+pPr94XkQDLq2
TNPqiwNMbLrXC1s0tZ6QlIt8Tli4BCgMUNuPW6rrXtr83hd99LnteLvZjleQawXAZUmXe+L4ye3MaQdt
1QCQMaJkyQVyrQLIHYoALvRhDHUJgLqAZNEN6ks5ARHAlQVAvnb88TH6rQKIAUW0GAGkAkA9IcgagLpz
Kfq9RQwWRnspAEX0fwAwgYkpzQ4ASrRNLHMlQBBcrqGtLXUSSO5M18iZv5BGmgcwleNFZ1X29N5g6R51
makIgOslh/RG8Cf5+bXmj7ZoSF8qAC8d1LMchuGOSCCJF9EfvUkA8mPNT1cpRE9fAYYdtLM9OBIJXA0W
bWIx14vv6ZHii8d3dT964H9OVxSmJ0wuAfLoE2D2UhqrBMgDsNt+2Vjk6sF4nUJ/1uyC6Rs5rhed0q4z
bQSAm48T0LH8EvhtP1lkI4BSv6dKZQqeXNeBw/l5/gAAAABJRU5ErkJggg==
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGXSURBVFhH7ZW/TsMwEMb7CGwICV6AASEhtY1V1A5sxK4Q
YmAGdWDjCfoYTZREDEwg8Qz8EQMDddKw8wbsbEWX5lrn2ia4MQihfNKn2O5d7hfn4tZqlf6iXDe4dBy/
b8r0/oVy3WBs0oOB16E1cgVJK5ETQeEKoDRA4zDsqG7acXt+TU7XWDfcbXfDNcg1AsBE1GciGls8up84
7sFcNQBgTHIV0RXkGgXAJ8SYtHgSgwAwTiCFvIOxUQDcAYxZBJD61uKjU1g3CkBjsgBxAqDuEMgYgPrk
qPR9TxsV5j8CUEb/BwBuoGM1rzQAXGGuY8xFAMe53qA1cmViB2hDaokC6Mqy5UVdvHy2RHxAf/uWygAw
OzrGQ8kSr+8NPtyhMYVSARzHt2C8yJ7n7al5yYnIhx/KqQh+bvB4XY0rVBYg6NEmm9k/wZyWkNtQjNnh
I/4pMRE+NLl8skR0kylQpDKvADQDmJyU2qoAVgHY775t5bl+NNqkOUs132z5hhxmy3PS/RlrAUDn009u
mfFLaHJ5lmctgEq/qS+eXNeBtBvAWgAAAABJRU5ErkJggg==
</value>
</data>
<data name="TsUndo.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGlSURBVFhHxZa9TsMwFIW7VYCdDqgDEgMSSBUkNr8TE0/A
xoiEGNgYeAJGVAkR2Y4Q7GXhAYANCRh4ExbgFcAOJxC1TuJGjfmkq+ReX/uc/KdVh0DyU+z6x4gHin8h
9Usm/i8G8uLeDQyLezVgE/dmoEjcBFqao0zcxIwKd7IgcbiMaZOhStwa5/xdb+90HAfJ+hKWGp9a4pag
kl93BNvEsm5MSjwfHcWOsHw5TYhnQQV7hEwxTRpII+ExpIpp2oTTPdHopdA3JmTKadKE85NRZcL0dOLV
BfMiopIdpP0yerb15oMqdpYKuFBmAi0jTF9tzNGE72szr7Z5RPAbtLpRZALDhcz2e5RIPhiZq42hxR2b
CQxVQmV0mZ/XlvwDQ+MxbALlSmjMeu0L/vk7N+ZvGBqfvAmUnMjPIzK6R7ke2WJIndDfg73MgI4+yvUx
JrDrxJRg85kB/YQcouyPbrJC/s5AtIWyPwIRLqZHr/gtSn6hItz+McB2UfKLflWfBIq9IPUPEdGD85/R
pDE/qPr0PyH1D1F8QMRaF6lfzNGbLyNSC63WN4IOJgR9G8D7AAAAAElFTkSuQmCC
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGeSURBVFhHxZa7SgNBGIXTBXVmtpAUgoWgEHR3fq+VlU9g
ZymIhZ2FT2ApAXGZmUW0j40PoHaCWvgmadRXUCayOpzsTjYxO35wmv8y5+ywJNtojIHQdIq1YFhzYegT
60HIzf8lgGsePACaBw1QZB4sQJl5kAA+c6sZE+/kYmm8jPt/Yph5oc7pTRi6E4aORba+hGdWZizzAnFN
15GSm3i+l0mZu4qMPEKfQuowz8WVfES/AeoM0FdGKXoOUHeISu9EnSHsi4l+hdQZotItWIaFsDNRurpg
f4i4lgf9eZ084xyKG3mGXqX4QuBszvTVxhzPaF/o5BV3rJiiG9zxUhYC55DZTpszTV3cs8FwdihFIXCm
DK6TS3evqekdZyqBIbBfBk9lu3lBHz+7KfVwpjJuCOz5cPeYTu6xPxL5YVj3ERm559xeB/sjY0NgzceU
kvN5AJ7RIfZrp5WtsN8bSLawXztCxYv9pzd0i70gcBVvfweQu9gLAtfyRBj5gvVgMJU8VP4ymjT2A1UY
esJ6MJihLlNrLawHwT69/WfEussXgg4mBAO+ig4AAAAASUVORK5CYII=
</value>
</data>
<data name="TsRedo.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGhSURBVFhHxZa9SgQxFIW3W3STbCEKgoWgsOhMIv5UVj6B
naUgFnYWPoGlLIpDkkG0XxsfQO0EtfBNbNRX0NzhRvYnOpmd2ckHBzaZ3HPP7ITMNKqCKXGKP8PAtPgO
GiILEDLEb4BQIQYChAgxEqDuEM4AoEmFIEm00tLRjpWzuVUVIVi6vmzMjo3u2YX4GGjgo3FDtCXfpErc
OE2LqmiItuZHTqMy8g1BJX9yGlShvBAsFYmzsCr9FwCeubOoKuXdfWUbzqW85hO9e5/NRzU/cxb3S8Uv
YEYVP4ADqJ2sLUKtc62VT3OASHHrNojfaCr2p6835nHpCM46kG9zABoNGxAlejPdDsUlfzJcl6lIc6Cp
xGe/AVXxFV7Kpb8uU9HmAEvEuzVoXoovmvAOXsqldHOAqPhhXJPSzQFj0LVG5j2wh9NelG4OmJ1+aANM
Sb6A016Ubg4wHW/ZALPpKsHpeqFa3GUhZLSEU/ViTsNdCEBltI1T9cM0fzVH7QkO6we+hIiMH3EYBvMY
nuFDFIf10zoXc0SLHg7DAG/Ayf4LjcYPlIcl/KjyoYIAAAAASUVORK5CYII=
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGSSURBVFhHxZa9SgNBEMfTBc3uXiEKgoWgEPRuR/yorHwC
O0tBLOwsfAJLCYrH7hyifWx8ALUT1MI3sVFfQZnIiZk1d95H9n4wzc7O/H/5ILlWqyaUhWN+5hWF8Nmo
xECgSYkfgaYkhgSakHAEfEs44eOWEHG41MFwKy0nuG4JlawuKoRDhXCrzuDNCcmrshKB0evSwpWzsEwV
lQhQHzhLqtZ/JaTRD85wXZUnoRKInaE6K0uAPnNnoM7KCidq+8L9VXnhY331eeGERH3iDPKy0RMtk1bv
0Q9QEK/M06xzr2g4IQxcO8PfoS8ygd3Jy7VZPpPizBQNJyiILxAW+lO9ruR3OXyucDjRtvD+e4G00QW/
M4rK4YSK4TVd0D6HDxnrLr8zisrhhLDRXdklZeeGUAi9dFGAeof3s6gcTsgE9lOBCaPneD+LyuGEwmgj
FZhOlgXve0Ei3AwkTLjAe16QqLdJQJpwk/e8oVA/S6uP+Lk36ElImOien3tFITzSgyg/90bnFGYEQp+f
e4X+Acf9LnwBlIcl/Fqr9jgAAAAASUVORK5CYII=
</value>
</data>
<data name="TsFind.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAKoSURBVFhH7Vc9aBRBGJ3KKoJNCtHCQotcGbsDudwPd4ek
kKQIIgSraJSAks4Erkh2ESxSXScEwUAQTfA22SZKIIUgpDwM1naCaQWb+L7b9yXj3u1lfy5pzIOPmX3z
fW/e7szNJOYCaVCr1a5Wq9XbpVJptF6vD5M+O+RyuUuVSuV+uVxeRXsUDhj5ibaJ8SmWDA4Qf1EsFr+F
JxUOYwdhHib2ETMszwYIfrXEvyAeY+J8oVAYYopB/wq4Esbm+SU0f50p6WAJSbwm3RfYFzeRu6t1+BLb
HEoGFL5TEbzVHdKxgfo5rUc0SMeDrLlVfIt0YsDErOqgP0m6P2S3WxvuGenUgMZ7au2R6g84nWbBDqlM
gM4INA9FU7RJRwNJG5KMZXhKKjOgtUYDG6SiIYlMHiOVGdBaVF1SvSHHqybm8/nLpDMDBsZVV+Yg3Q05
25n4ndRAYL+YzEG6G1irUUlCe0BqILANyBykuyG3mibK8Uo6gO/k2EsM6N1V3VNvTjjsnOVytpMKJvec
ttlyJsgkAvQWRFO0SUUDiU1JRsyTMsZbGjOee9SJlvOIbGxg4g/UbJKKBnbslCSLW7lYSBtMvHNiYnnB
+C+vc6QvoPOQk8tPO97fCkjcZ9EuqQCe2zox0fgDU5+Nt/yKoz2BvfSLWj6p0wEDMywS13OkA7Tchtl0
fx8b+ej8a9IC3v6T6qCf7EZF0bplYpZ0AN8ZNlvuExhYjTKAujdW/QrpZEDhtoog5FYb4VAkkFND/GCN
RhtfIN3PGMUNFYKhQwitoV1EjMsBg+drGJtALCE2NVcCOc/Rtvmc3gSEJiGwR6E44euay6R4zm5CACPT
iM51HQ7u9rcYf8D0YwzUhEI+f5J/TMImYPgGh84Ptgn075E+X8ib91qm/xnG/AUHzJ/gTsLVCAAAAABJ
RU5ErkJggg==
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAKVSURBVFhH7ZcxaFRBEIZfZaVgk0K0sNAiV5ruQDZv5ufd
IRYSiyBCsFKjBJR0RrgieQ/BwiqdEAQDIprgvXhNlICFIFgGg7VdwLSCTWRk92V37i559+600Q+2yP4z
s7O7LzN7UfSfCjQajVNJkkwQ0YVmszmm9ZFTq9WOAbjGzCsA9vUgol0Ay8w8rX2HhogexHH8RS8qc0S0
o+eZ+TMz39RxKgHgkxf8I4DbcRzXjTHHnY0x5mQcxwRg3p6Es38RRhsQtbOnWu9FkiTnAGx5p/FW25SC
mV+6IER0UetHwcxzXvItrR+K3LnnfF7rZWHmWe8krmq9J/K1ex/cPa0PCoBXNtYHrfWEmWesw6bWqgBg
nJn37CnMaL0LZl6z935Xa1UholWbwJrWuvDubFJrVWHmhy6u1gKkvDrDer1+QutVYebLLq6sofUCqe3W
8KvWhsHfmKyh9QJpLPb+d7Q2DH4CsobWC6SrOUMpr4HYSWvB3wMA4JKLe2TndLVcansxKYvn6Xa0kU4F
xiUBsGB3v6u1LqSl2mzni8l8cTLKs/3fo53eChxKQESvbcxlrXUh/dxlK42lENrp5kESSwtR59GZwLEP
RHTDHX/pt4L0c+u0FQh51j5IovUzaqfvo3zpcWCjMMZ8t7E6WuuLPCa8rOcCsZ21ovXsR5HImzRM0oOI
3rk4A3dUeUx4ScwGYicdizayO1GerfRLAMAzz/+J1kshjwkXxHa1cW2jAdAA8M3zk7FNRNX+jeUx4e1k
TxqL1HYpr1JgiOg0gCkAiwDW/YWZ+b4sPnQS8piQfq52ddjouDuXRUeShCD93LVrPezX/pyZr2u/kSbh
GPSHiU7CGHNW2/xx/CSI6IrW/wqy817X9G/zCwfMn+BUp33PAAAAAElFTkSuQmCC
</value>
</data>
<data name="BtnIndexSearch.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAKiSURBVFhH5VW/ixNBFN5/wcr2xCKx0X9AJGgpgqWgxYH+
CTF3YJEmpYiIhQgSbWwEtbAQ7iCFcInZyd1hIZ6/gt6ts9kDhRPEu+PNyNtkJm/fzrobkhTiB1+xM/vm
e/N+jef96ygt6YXSkq7w9bmiXFP18nVolWtaJ1iFfrkGzVJVL3KbmQBvOxRhwk6qOrefCvGtU7dVdQz/
iAt4e/rPiWXYxnV+1sRAASrsynlb6sVOAP0XW1ovPxs7cbqhdSeAZltO4QgV53ttqSso3JFaU1Inrj0a
rqGT3D4XtNj4zWNxJkyJwiYKD/3R+rcJa2OcU2jS9TxxJKbD2GNE7F5RJ7Cdsm7vCruLJgoX7yTXC9UE
dYCuozEXyqKphbgY6V6RKNi2YsWHxlwoizdXx2nAlNi9AFr0TCds73MHHEJZpA7wPXqmE7T/6To/6G/M
qgFkbh0Mp5u5wThnRQsQaezNLKBMqmXAzgGShqIO0PDbOWAYpIeaE64o4GjlYpwoaOxc4S/UBQa0HTEi
eUOIiqfab8Tc/FMMo0Bewyr0L9yGDRNWbC8kfqPgOGKO0COLtKALqSe5AFPFVzT3WXC9+5QYAZx+9DW0
70AAfUwfP9MJFYrLMBAtiLo/dSQ0RN3flNsfNvfXeu8Onqx8Pry3uge3Vg5UYtLJYfEZp552f0B8zkB8
hYF/X8nNY1zTQoX+Dfx5Uu6EgX4b7lmuvf+uK43D2Ilzjf3EvxAJqQb+ca7tqbB9lB88DXc+vrGpuPs8
SOxBKB5wfU9F3Uv8kGmJwhiB172txDpEIuT6norWr/ID5kWIxC+u76mwd5L/OC+C7L7k+jFgVzzmP8+D
SvrnubYFtgo3mBUhEp/Ubu8K10xBf3l1REW9M0qKszPjYP0U1/m/8QdZx43WbLpwjAAAAABJRU5ErkJg
gg==
</value>
</data>
<data name="TsFavView.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAObSURBVFhH1VZJTxRBFH6ogQzKZlziftDgHgIcjCHxB3jy
aOLJgx6MJw6eNFy8SIyiQk+jGI0IidsIQRM0sqiDJAKyaSKi4K64BReEma6e9r3yVTMzNmMPMCZ+yZfM
VL33fa+qX3U1/LcIeSHH0sEihnTI4+F/B1OHI6oA0wsaD/8bWOWw/JMOY6qAoVIIhE5CNk8nHiENDpDx
2HH4SJS7oEMJTycWVinMGdHhq1x9zdxmszariX5/1+AH7kwGhyUO2Hx7pXk5DAef5r8JPst/bZXAMO/C
IQ5LHMa88IHMhC/9tvWxwCKavsxGGhvV4QuHJQa4+l1kNOyFn8G+jc9VAUZ/7uC3wzBCc3gkCzl8+hHU
4JVc/ZXx1SuaV9JkLwR0GOLwySNUAYtxJZux27fjqvfhsy3Ds36NDPqLQBiPNzyJLsB4kvOY5iiGYimH
cqUGaaEmy0cCJzdhwlGzDHyY3K6O1UQUF9LuRJsryjmHHEXWbicv8sQCCyA6KJzB8qSX1rnkZtOXUW82
Lm2wOte0OxmHUzzI7hA3l7QIX0arOJPcGyhPGnLSVqRX6gX1x7w2r0m0rWoxXuQNOIlPhYGB3Pfi/so2
8rD90Fs+BtyOSnuwBl8sDgLTwpqsZtsHPaW5AlZz2p6kjnYSmALF5XS7P8iLbSNhauBVQdbFtGYnoclQ
XEq7a5ujB9s5A7fmmAoWVakTdrxbiupUv22O2mwTGxhYPF6Ex+8k7IbivKclzLyY5d0Bn9NBu4irmfed
DGLRrJtfZ5ujFsvGB6FDlyyg0nPPySQW5c5Rrhc6WS5+0JeOFLm+IO5eMOsX3qJc+nJiufgQOgVzSUAW
0Layy8kkFkVHdqvKtzTIYln3wDtiixII9OW8czKJxeBgnrw5iXQZsax74EWxR5qfSHrrZGB0r34kKmZ0
Svau63CKCWpJsggsYCfLugfeWCcoWZxNjhA3etb24SXTo1aniHF+6+G6iMsKx+QxjPsIEjDphhSuzZIN
KI2rUjoiTL3QIjSw33JE87ynQfSul0XjvSIbEY9hHcu6h6HDoDTxr/CL6tnjDYU0vNCPH6XbOJQe11Y8
st3hMWa1p5FyOf4Zh7qDVQSzwsVs/v763c1hfwAL2aEK/4MXYSaH/R3YNBujBXBsP0/HBBlhbOFoKXyO
yNdgA4e4g0rE2+t46Bik8LBr0DcgNd+gDgbp8LB74CoWhcpgGf+dNFAnj7T4bxQAfgH5yZY48wlUiAAA
AABJRU5ErkJggg==
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAOfSURBVFhH1VdNb1VFGH6K5pILlnKJQkCUBaYCQhrKghAS
f4ArlySsWODCuHLBSsOGDYQo/TozV2toKDQpH9eSlgQJtFVvJaGtBQpJWz4qH35U1NQPpPeemTnkHe6c
3vPScm7lduGTPEnvzPs+z3tm3jlnCvxfYQRqAomAaCRq+fy8Q0t84grQAh6fn1cEabz+m8SUK2CiETnz
Gap53LzBePiYjKfq8YBoV0HiEI+bFwSNeOmhxJ/26TuW9erTqR76+28P/wRpVPH4ssMIfGDN05jM39zy
Y/7WlvvBIUwWVmE/jy87pgR+JTOVWfJ18GB7QNSZpd009kjiDx5fVhiB3WQ0KfBvfnTTD64A/8bm8b8O
4mHhSH7I88qGvId79ulPTT99uAqnKm0v5CQmeN6cYZqxykhsMx52GIE9WqJJC3SRwcheKH9k4xgvwB+r
GaG5wnuhi3Io12qQVjNWcR8LI7FVC3yqm5AJJAbcsZqNqr3yG27uaOdmyHEsaA+QF3kage3gQcXMpyvu
BkcSvTpTdVZ3r74QDK0b4Kac6vvqQXXu1T6VqbqoDieGc+mKCa5bTHqltrsfuuvlHtX/Rp9/p/Y2F35e
5m5v/kVdWttPHqGfRLvdBi3QGg52pHp4ctnYkeoNfQRaI72gJb4IJ6mjefJzUp1cEvYHeUXMHbQHEe7P
8cpeLvJfqU5UfhuaexDcNwItUOeC1bFFs3Z8qVRti7JFy17H/WaEFjgwXUQyy0VLpTqa7CsyP8B9ngkt
sS8s4sull7h4HHXnK51Fe76P65cEJXHZFtCa/I4bxNGuHOUKDHHdkkE3HStyZvmce0GfXXGecunmxHVL
gvkcy8It6F97mRvEUQ1WX3T5gYcU14+FkXjbCeRGa37mBnHMj9faLyeRPkZcPxZG4H1r3lDxExcn+lfe
vK6aFwxZDm8Y5PO2CK/CFmEkdnH9WOgmNNjlb0lExP2r60fV4cTVcHndNrUkssG1DZGPlWpJ2GM45yNI
0AJfWeHTKduA1vjYwsGIqUCf8hC+5azZ0eQFNfyWLVp3pGwjaolOrh8LX2LcmmTXZFXb4umGkgh8gRtB
Gu+6WCPwjpK4EimkLdlNuYX4W1H1GAR78WKxWMgnt9/3eLyDEdjpCn+Kx/ECj58VRmITFzASH/G4mUBG
dDF91IjfI/keNvLYZ8Ilag/1pg4L+Xwc6A5IzTcu4ZMOn4+FkVhpmvAaH58r6D9n0uLjDo8BuL+WMi8K
e6EAAAAASUVORK5CYII=
</value>
</data>
<metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
@@ -1 +1 @@
{"RootPath":"E:\\My Datas\\My Codes\\毕方项目\\CSharp\\SuperDesign\\Source\\开发辅助工具","ProjectFileName":"SuperDesign.csproj","Configuration":"Debug|AnyCPU","FrameworkPath":"","Sources":[{"SourceFile":"Controls\\ContextMenuStripRichText.cs"},{"SourceFile":"Controls\\ContextMenuStripRichText.Designer.cs"},{"SourceFile":"Controls\\FrmInsertUnixTime.cs"},{"SourceFile":"Controls\\FrmInsertUnixTime.Designer.cs"},{"SourceFile":"Controls\\FrmText.cs"},{"SourceFile":"Controls\\FrmText.Designer.cs"},{"SourceFile":"Controls\\FrmTitle.cs"},{"SourceFile":"Controls\\FrmTitle.Designer.cs"},{"SourceFile":"Controls\\MenuRight.cs"},{"SourceFile":"Controls\\MenuRight.Designer.cs"},{"SourceFile":"Form1.cs"},{"SourceFile":"Form1.Designer.cs"},{"SourceFile":"FrmMessageBox.cs"},{"SourceFile":"FrmMessageBox.Designer.cs"},{"SourceFile":"Globals.cs"},{"SourceFile":"Manager\\APIManager.cs"},{"SourceFile":"Manager\\FrmAddVar.cs"},{"SourceFile":"Manager\\FrmAddVar.Designer.cs"},{"SourceFile":"Manager\\FrmSetting.cs"},{"SourceFile":"Manager\\FrmSetting.Designer.cs"},{"SourceFile":"Manager\\FTP\\FileTransferProgressEventArgs.cs"},{"SourceFile":"Manager\\FTP\\FrmUploadFilesToFtp.cs"},{"SourceFile":"Manager\\FTP\\FrmUploadFilesToFtp.Designer.cs"},{"SourceFile":"Manager\\FTP\\FrmUploadUpdateZipToFtp.cs"},{"SourceFile":"Manager\\FTP\\FrmUploadUpdateZipToFtp.Designer.cs"},{"SourceFile":"Manager\\FTP\\FtpInfo.cs"},{"SourceFile":"Manager\\FTP\\FTP_WinSCP.cs"},{"SourceFile":"Manager\\FTP\\IFTP.cs"},{"SourceFile":"Manager\\HtmlFormater.cs"},{"SourceFile":"Manager\\HtmlIndent.cs"},{"SourceFile":"Manager\\ImgExt.cs"},{"SourceFile":"Manager\\Init.cs"},{"SourceFile":"Manager\\JsonSplit.cs"},{"SourceFile":"Manager\\ClsPY.cs"},{"SourceFile":"Manager\\FrmAddTools.cs"},{"SourceFile":"Manager\\FrmAddTools.Designer.cs"},{"SourceFile":"Manager\\Itrycn_Info.cs"},{"SourceFile":"Manager\\Json.cs"},{"SourceFile":"Manager\\MsgManager.cs"},{"SourceFile":"Manager\\ReactorXML.cs"},{"SourceFile":"Manager\\RyProject.cs"},{"SourceFile":"Program.cs"},{"SourceFile":"Properties\\AssemblyInfo.cs"},{"SourceFile":"Properties\\Resources.Designer.cs"},{"SourceFile":"Tools\\API\\APIEditor.cs"},{"SourceFile":"Tools\\API\\APIEditor.Designer.cs"},{"SourceFile":"Tools\\API\\FrmAddPostParam.cs"},{"SourceFile":"Tools\\API\\FrmAddPostParam.Designer.cs"},{"SourceFile":"Tools\\FrmColor.cs"},{"SourceFile":"Tools\\FrmColor.Designer.cs"},{"SourceFile":"Tools\\FrmCreateProject.cs"},{"SourceFile":"Tools\\FrmCreateProject.Designer.cs"},{"SourceFile":"Tools\\FrmEncode.cs"},{"SourceFile":"Tools\\FrmEncode.Designer.cs"},{"SourceFile":"Tools\\FrmFileTime.cs"},{"SourceFile":"Tools\\FrmFileTime.Designer.cs"},{"SourceFile":"Tools\\FrmHistoryUrls.cs"},{"SourceFile":"Tools\\FrmHistoryUrls.Designer.cs"},{"SourceFile":"Tools\\FrmImageToIcon.cs"},{"SourceFile":"Tools\\FrmImageToIcon.Designer.cs"},{"SourceFile":"Tools\\FrmJson.cs"},{"SourceFile":"Tools\\FrmJson.Designer.cs"},{"SourceFile":"Tools\\FrmPathInfo.cs"},{"SourceFile":"Tools\\FrmPathInfo.Designer.cs"},{"SourceFile":"Tools\\FrmProject.cs"},{"SourceFile":"Tools\\FrmProject.Designer.cs"},{"SourceFile":"Tools\\FrmProjectSearch.cs"},{"SourceFile":"Tools\\FrmProjectSearch.Designer.cs"},{"SourceFile":"Tools\\FrmQrCode.cs"},{"SourceFile":"Tools\\FrmQrCode.Designer.cs"},{"SourceFile":"Tools\\FrmRegex.cs"},{"SourceFile":"Tools\\FrmRegex.Designer.cs"},{"SourceFile":"Tools\\FrmSetup.cs"},{"SourceFile":"Tools\\FrmSetup.Designer.cs"},{"SourceFile":"Tools\\FrmKeyBroad.cs"},{"SourceFile":"Tools\\FrmKeyBroad.Designer.cs"},{"SourceFile":"Tools\\FrmStrCount.cs"},{"SourceFile":"Tools\\FrmStrCount.Designer.cs"},{"SourceFile":"Tools\\FrmStrToCode.cs"},{"SourceFile":"Tools\\FrmStrToCode.Designer.cs"},{"SourceFile":"Tools\\FrmTime.cs"},{"SourceFile":"Tools\\FrmTime.Designer.cs"},{"SourceFile":"Tools\\FrmToolsBox.cs"},{"SourceFile":"Tools\\FrmToolsBox.Designer.cs"},{"SourceFile":"Manager\\FrmToolsSearch.cs"},{"SourceFile":"Manager\\FrmToolsSearch.Designer.cs"},{"SourceFile":"Tools\\UpLog\\FrmCompareLog.cs"},{"SourceFile":"Tools\\UpLog\\FrmCompareLog.Designer.cs"},{"SourceFile":"Tools\\UpLog\\FrmPublishLogs.cs"},{"SourceFile":"Tools\\UpLog\\FrmPublishLogs.Designer.cs"},{"SourceFile":"Tools\\UpLog\\FrmUpdateLog.cs"},{"SourceFile":"Tools\\UpLog\\FrmUpdateLog.Designer.cs"},{"SourceFile":"Tools\\FrmWebGet.cs"},{"SourceFile":"Tools\\FrmWebGet.Designer.cs"},{"SourceFile":"Tools\\FrmXpath.cs"},{"SourceFile":"Tools\\FrmXpath.Designer.cs"},{"SourceFile":"Properties\\Settings.Designer.cs"},{"SourceFile":"obj\\Debug\\.NETFramework,Version=v4.7.2.AssemblyAttributes.cs"}],"References":[{"Reference":"E:\\My Datas\\My Codes\\毕方项目\\CSharp\\SuperDesign\\Source\\packages\\DiffPlex.1.7.1\\lib\\net40\\DiffPlex.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\Microsoft.CSLine truncated
{"RootPath":"E:\\My Datas\\My Codes\\毕方项目\\CSharp\\SuperDesign\\Source\\开发辅助工具","ProjectFileName":"SuperDesign.csproj","Configuration":"Debug|AnyCPU","FrameworkPath":"","Sources":[{"SourceFile":"Controls\\ContextMenuStripRichText.cs"},{"SourceFile":"Controls\\ContextMenuStripRichText.Designer.cs"},{"SourceFile":"Controls\\FrmInsertUnixTime.cs"},{"SourceFile":"Controls\\FrmInsertUnixTime.Designer.cs"},{"SourceFile":"Controls\\FrmText.cs"},{"SourceFile":"Controls\\FrmText.Designer.cs"},{"SourceFile":"Controls\\FrmTitle.cs"},{"SourceFile":"Controls\\FrmTitle.Designer.cs"},{"SourceFile":"Controls\\MenuRight.cs"},{"SourceFile":"Controls\\MenuRight.Designer.cs"},{"SourceFile":"Form1.cs"},{"SourceFile":"Form1.Designer.cs"},{"SourceFile":"FrmMessageBox.cs"},{"SourceFile":"FrmMessageBox.Designer.cs"},{"SourceFile":"Globals.cs"},{"SourceFile":"Manager\\APIManager.cs"},{"SourceFile":"Manager\\FrmAddVar.cs"},{"SourceFile":"Manager\\FrmAddVar.Designer.cs"},{"SourceFile":"Manager\\FrmClearInfo.cs"},{"SourceFile":"Manager\\FrmClearInfo.Designer.cs"},{"SourceFile":"Manager\\FrmSetting.cs"},{"SourceFile":"Manager\\FrmSetting.Designer.cs"},{"SourceFile":"Manager\\FTP\\FileTransferProgressEventArgs.cs"},{"SourceFile":"Manager\\FTP\\FrmUploadFilesToFtp.cs"},{"SourceFile":"Manager\\FTP\\FrmUploadFilesToFtp.Designer.cs"},{"SourceFile":"Manager\\FTP\\FrmUploadUpdateZipToFtp.cs"},{"SourceFile":"Manager\\FTP\\FrmUploadUpdateZipToFtp.Designer.cs"},{"SourceFile":"Manager\\FTP\\FtpInfo.cs"},{"SourceFile":"Manager\\FTP\\FTP_WinSCP.cs"},{"SourceFile":"Manager\\FTP\\IFTP.cs"},{"SourceFile":"Manager\\HtmlFormater.cs"},{"SourceFile":"Manager\\HtmlIndent.cs"},{"SourceFile":"Manager\\ImgExt.cs"},{"SourceFile":"Manager\\Init.cs"},{"SourceFile":"Manager\\JsonSplit.cs"},{"SourceFile":"Manager\\ClsPY.cs"},{"SourceFile":"Manager\\FrmAddTools.cs"},{"SourceFile":"Manager\\FrmAddTools.Designer.cs"},{"SourceFile":"Manager\\Itrycn_Info.cs"},{"SourceFile":"Manager\\Json.cs"},{"SourceFile":"Manager\\MsgManager.cs"},{"SourceFile":"Manager\\ReactorXML.cs"},{"SourceFile":"Manager\\RyProject.cs"},{"SourceFile":"Program.cs"},{"SourceFile":"Properties\\AssemblyInfo.cs"},{"SourceFile":"Properties\\Resources.Designer.cs"},{"SourceFile":"Tools\\API\\APIEditor.cs"},{"SourceFile":"Tools\\API\\APIEditor.Designer.cs"},{"SourceFile":"Tools\\API\\FrmAddPostParam.cs"},{"SourceFile":"Tools\\API\\FrmAddPostParam.Designer.cs"},{"SourceFile":"Tools\\FrmColor.cs"},{"SourceFile":"Tools\\FrmColor.Designer.cs"},{"SourceFile":"Tools\\FrmCreateProject.cs"},{"SourceFile":"Tools\\FrmCreateProject.Designer.cs"},{"SourceFile":"Tools\\FrmEncode.cs"},{"SourceFile":"Tools\\FrmEncode.Designer.cs"},{"SourceFile":"Tools\\FrmFileTime.cs"},{"SourceFile":"Tools\\FrmFileTime.Designer.cs"},{"SourceFile":"Tools\\FrmHistoryUrls.cs"},{"SourceFile":"Tools\\FrmHistoryUrls.Designer.cs"},{"SourceFile":"Tools\\FrmImageToIcon.cs"},{"SourceFile":"Tools\\FrmImageToIcon.Designer.cs"},{"SourceFile":"Tools\\FrmJson.cs"},{"SourceFile":"Tools\\FrmJson.Designer.cs"},{"SourceFile":"Tools\\FrmPathInfo.cs"},{"SourceFile":"Tools\\FrmPathInfo.Designer.cs"},{"SourceFile":"Tools\\FrmProject.cs"},{"SourceFile":"Tools\\FrmProject.Designer.cs"},{"SourceFile":"Tools\\FrmProjectSearch.cs"},{"SourceFile":"Tools\\FrmProjectSearch.Designer.cs"},{"SourceFile":"Tools\\FrmQrCode.cs"},{"SourceFile":"Tools\\FrmQrCode.Designer.cs"},{"SourceFile":"Tools\\FrmRegex.cs"},{"SourceFile":"Tools\\FrmRegex.Designer.cs"},{"SourceFile":"Tools\\FrmSetup.cs"},{"SourceFile":"Tools\\FrmSetup.Designer.cs"},{"SourceFile":"Tools\\FrmKeyBroad.cs"},{"SourceFile":"Tools\\FrmKeyBroad.Designer.cs"},{"SourceFile":"Tools\\FrmStrCount.cs"},{"SourceFile":"Tools\\FrmStrCount.Designer.cs"},{"SourceFile":"Tools\\FrmStrToCode.cs"},{"SourceFile":"Tools\\FrmStrToCode.Designer.cs"},{"SourceFile":"Tools\\FrmTime.cs"},{"SourceFile":"Tools\\FrmTime.Designer.cs"},{"SourceFile":"Tools\\FrmToolsBox.cs"},{"SourceFile":"Tools\\FrmToolsBox.Designer.cs"},{"SourceFile":"Manager\\FrmToolsSearch.cs"},{"SourceFile":"Manager\\FrmToolsSearch.Designer.cs"},{"SourceFile":"Tools\\UpLog\\FrmBuilding.cs"},{"SourceFile":"Tools\\UpLog\\FrmBuilding.Designer.cs"},{"SourceFile":"Tools\\UpLog\\FrmSaveContent.cs"},{"SourceFile":"Tools\\UpLog\\FrmSaveContent.Designer.cs"},{"SourceFile":"Tools\\UpLog\\FrmCompareLog.cs"},{"SourceFile":"Tools\\UpLog\\FrmCompareLog.Designer.cs"},{"SourceFile":"Tools\\UpLog\\FrmGroupSelected.cs"},{"SourceFile":"Tools\\UpLog\\FrmGroupSelected.Designer.cs"},{"SourceFile":"Tools\\UpLog\\FrmPublishLogs.cs"},{"SourceFile":"Tools\\UpLog\\FrmPublishLogs.Designer.cs"},{"SourceFile":"Tools\\UpLog\\FrmUpdateLog.cs"},{"SourceFile":"Tools\\UpLog\\FrmUpdateLog.Designer.cs"},{"SourceFile":"Tools\\FrmWebGet.cs"},{"SourceFile":"Tools\\FrmWebGet.Designer.cs"},{"SourceFile":"Tools\\FrmXpath.cs"},{"SourceFile":"Tools\\FrmXpath.Designer.cs"},{"SourceFile":"Properties\\Settings.Designer.cs"},{"SourceFile":"obj\\Debug\\.NETFramework,Version=v4.7.2.AssemblyAttributeLine truncated
+21 -21
View File
@@ -32,13 +32,13 @@
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
this.panel1 = new System.Windows.Forms.Panel();
this.dockPanel1 = new WeifenLuo.WinFormsUI.Docking.DockPanel();
this.vS2015LightTheme1 = new WeifenLuo.WinFormsUI.ThemeVS2015.VS2015LightTheme();
this.BtnEditor = new ryControls.ButtonEx();
this.BtnCreateProject = new ryControls.ButtonEx();
this.BtnSetting = new ryControls.ButtonEx();
this.BtnTools = new ryControls.ButtonEx();
this.rySearch1 = new ryControls.rySearch();
this.dockPanel1 = new WeifenLuo.WinFormsUI.Docking.DockPanel();
this.vS2015LightTheme1 = new WeifenLuo.WinFormsUI.ThemeVS2015.VS2015LightTheme();
this.table1 = new XPTable.Models.Table();
this.columnModel1 = new XPTable.Models.ColumnModel();
this.textColumn4 = new XPTable.Models.TextColumn();
@@ -58,26 +58,10 @@
this.panel1.Dock = System.Windows.Forms.DockStyle.Top;
this.panel1.Location = new System.Drawing.Point(0, 0);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(964, 30);
this.panel1.Size = new System.Drawing.Size(1084, 30);
this.panel1.TabIndex = 15;
this.panel1.Click += new System.EventHandler(this.Panel1_Click);
//
// dockPanel1
//
this.dockPanel1.BackColor = System.Drawing.Color.White;
this.dockPanel1.DefaultFloatWindowSize = new System.Drawing.Size(970, 700);
this.dockPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.dockPanel1.DockBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(238)))), ((int)(((byte)(238)))), ((int)(((byte)(242)))));
this.dockPanel1.Location = new System.Drawing.Point(0, 30);
this.dockPanel1.Name = "dockPanel1";
this.dockPanel1.Padding = new System.Windows.Forms.Padding(6);
this.dockPanel1.ShowAutoHideContentOnHover = false;
this.dockPanel1.ShowDocumentIcon = true;
this.dockPanel1.Size = new System.Drawing.Size(964, 675);
this.dockPanel1.TabIndex = 12;
this.dockPanel1.Theme = this.vS2015LightTheme1;
this.dockPanel1.Enter += new System.EventHandler(this.DockPanel1_Enter);
//
// BtnEditor
//
this.BtnEditor.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95)))));
@@ -139,6 +123,22 @@
this.rySearch1.Leave += new System.EventHandler(this.RySearch1_Leave);
this.rySearch1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.rySearch1_MouseClick);
//
// dockPanel1
//
this.dockPanel1.BackColor = System.Drawing.Color.White;
this.dockPanel1.DefaultFloatWindowSize = new System.Drawing.Size(970, 700);
this.dockPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.dockPanel1.DockBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(238)))), ((int)(((byte)(238)))), ((int)(((byte)(242)))));
this.dockPanel1.Location = new System.Drawing.Point(0, 30);
this.dockPanel1.Name = "dockPanel1";
this.dockPanel1.Padding = new System.Windows.Forms.Padding(6);
this.dockPanel1.ShowAutoHideContentOnHover = false;
this.dockPanel1.ShowDocumentIcon = true;
this.dockPanel1.Size = new System.Drawing.Size(1084, 717);
this.dockPanel1.TabIndex = 12;
this.dockPanel1.Theme = this.vS2015LightTheme1;
this.dockPanel1.Enter += new System.EventHandler(this.DockPanel1_Enter);
//
// table1
//
this.table1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
@@ -150,7 +150,7 @@
this.table1.Location = new System.Drawing.Point(9, 30);
this.table1.Name = "table1";
this.table1.NoItemsText = "当前列表没有任何项";
this.table1.Size = new System.Drawing.Size(442, 347);
this.table1.Size = new System.Drawing.Size(562, 389);
this.table1.TabIndex = 23;
this.table1.TableModel = this.tableModel1;
this.table1.Text = "table1";
@@ -181,7 +181,7 @@
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(964, 705);
this.ClientSize = new System.Drawing.Size(1084, 747);
this.Controls.Add(this.table1);
this.Controls.Add(this.dockPanel1);
this.Controls.Add(this.panel1);
+43 -2
View File
@@ -1,6 +1,8 @@
using DotNet4.Utilities;
using HtmlAgilityPack;
using Microsoft.Win32;
using Newtonsoft.Json.Linq;
using QuickMsg;
using ryCommon;
using ryCommonDb;
using System;
@@ -23,10 +25,12 @@ namespace 开发辅助工具
{
public partial class Form1 : Form
{
public string ProjectPath = "";
public Form1(string ProjectPath,string mode)
{
InitializeComponent();
if(ProjectPath!="")
this.ProjectPath = ProjectPath;
if (ProjectPath!="")
{
if (mode == "get")
{
@@ -155,8 +159,44 @@ namespace 开发辅助工具
//update.OnAppExit += Update_OnAppExit;
update.ParentForm = this;
update.CheckUpdate();
if (ProjectPath.Length > 0)
{
var filename = "S_" + rySafe.MD5Sha1.GetMD5(SuperDesign.Manager.APIManager.GetBFFolderPath(ProjectPath)) + ".z";
var kk = RyMemoryShare.WriteToMemory(1024, this.Handle.ToInt64(), filename);
MSG = new CustomMsg(this);//创建消息通道
MSG.OnMsg += MSG_OnMsg;
}
}
private void MSG_OnMsg(object sender, MsgArgs e)
{
try
{
JObject json = JObject.Parse(e.Msg_text);
switch (json.GetJsonValue("type", ""))
{
case "project_update"://项目更新
this.Invoke(new Action(() =>
{
this.WindowState = FormWindowState.Normal;
RyForm.ShowCenter(this, null);
RyForm.BringToTop(this.Handle);
this.TopMost = true;
this.TopMost = false;
foreach (IDockContent document in dockPanel1.DocumentsToArray())
{
if (document is FrmProject frm)
{
frm.LoadProject(json.GetJsonValue("path", ""), false);
}
}
}));
break;
}
}
catch { }
}
private void BtnTools_Click(object sender, EventArgs e)
{
FrmToolsSearch frm = new FrmToolsSearch();
@@ -261,6 +301,7 @@ namespace 开发辅助工具
{
ClickItem();
}
CustomMsg MSG;
protected override void WndProc(ref Message m)
{
//Console.WriteLine(m.Msg);
@@ -12,6 +12,27 @@ namespace SuperDesign.Manager
{
public class APIManager
{
/// <summary>
/// 获取毕方标准项目根路径
/// </summary>
/// <returns></returns>
public static string GetBFFolderPath(string _ProjectPath)
{
var _path = _ProjectPath;
while (true)
{
_path = System.IO.Path.GetDirectoryName(_path.TrimEnd('\\')).TrimEnd('\\');
if (System.IO.File.Exists(_path + "\\查看项目.ryp"))
{
return _path;
}
else
{
if (_path.Length < 4) { break; }
}
}
return "";
}
public static string GetMdLogText(JArray jarr, DateTime dt,bool UseEmoji=false)
{
string log_text = "## :date:" + DateTime.Now.ToString("yyyy-MM-dd dddd") + "更新";
+12 -14
View File
@@ -1,4 +1,6 @@
using ryCommon;
using Newtonsoft.Json.Linq;
using QuickMsg;
using ryCommon;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -24,25 +26,21 @@ namespace 开发辅助工具
else if (args[0] == "get")
{
string ProjectPath = args[1];
run = new System.Threading.Mutex(true, "S_"+rySafe.MD5Sha1.GetMD5(ProjectPath), out bool runone);
var bf_path = SuperDesign.Manager.APIManager.GetBFFolderPath(ProjectPath);
run = new System.Threading.Mutex(true, "S_"+rySafe.MD5Sha1.GetMD5(bf_path), out bool runone);
if (!runone) //已经运行了
{
Ini ini = new Ini(Application.StartupPath + "\\UserDb\\Win.dat");
var handle = ini.ReadIni("ProjectHwnd", rySafe.MD5Sha1.GetMD5(ProjectPath),0); ;
if(handle>0)
object mainHandle = RyMemoryShare.ReadFromMemory(1024, typeof(Int64), "S_" + rySafe.MD5Sha1.GetMD5( bf_path) + ".z");
if (mainHandle != null)
{
if (RyForm.GetWinText((IntPtr)handle).Length > 0)
{
ryControls.Win32.SendMessage((IntPtr)handle, 17189, 100, 100);
}
else
{
Application.Run(new Form1(ProjectPath, "get"));
}
JObject jo= new JObject();
jo["type"] = "project_update";
jo["path"] = ProjectPath;
MyDb.RyWin32.SendMsg(IntPtr.Zero,(IntPtr)(long)mainHandle, MyDb.RyWin32.Sys_chanel_id, jo.ToString());
}
else
{
// Application.Run(new Form1(ProjectPath, "get"));
Application.Run(new Form1(ProjectPath, "get"));
}
}
else
@@ -292,6 +292,7 @@ namespace 开发辅助工具.Manager
mySQL.AddField("Cookie", "");
mySQL.AddField("Postdata", "");
mySQL.AddField("Method", "");
mySQL.AddField("UserAgent", "");
mySQL.AddField("Header", "");
mySQL.AddField("Referer", "");
mySQL.AddField("ContentType", "");
+31 -11
View File
@@ -1,4 +1,5 @@
using ExtendUI.FTPManager;
using Newtonsoft.Json.Linq;
using ryCommon;
using ryCommonDb;
using System;
@@ -114,8 +115,8 @@ namespace 开发辅助工具.Manager
else if (compareVer == 0)//引用位置版本一致,则看更新时间
{
var file_dt=RyFiles.GetFileDate(files[z]);
if (file_dt.LastWriteTime <= Min_dt.LastWriteTime)
{
if (file_dt.LastWriteTime <= Min_dt.LastWriteTime)
{
continue;
}
else
@@ -295,13 +296,14 @@ namespace 开发辅助工具.Manager
if (iPos > 0)
{
var Reference_Name = HintPath.Substring(iPos + 1);//引用的dll名称
var dll_path = GetDllPath(OutputPath + Reference_Name);
var full_path = RelToAbsPath(path, OutputPath + Reference_Name);
var dll_path = GetDllPath(full_path);
if (dll_path.Length>0)
{
if (CopyDllToBin)
{
list[i].InnerText = OutputPath + Reference_Name;
RyFiles.CopyBigFile(dll_path,RelToAbsPath(path, OutputPath + Reference_Name));
RyFiles.CopyBigFile(dll_path, full_path);
}
else
{
@@ -334,13 +336,14 @@ namespace 开发辅助工具.Manager
{ dll_name = "ryUpdate.dll"; }
if (dll_name != "")
{
var dll_path = GetDllPath(OutputPath + dll_name);
var fullpath = RelToAbsPath(path, OutputPath + dll_name);
var dll_path = GetDllPath(fullpath);
if (dll_path != "")
{
if (CopyDllToBin)
{
MoveReference(System.IO.Path.GetFileNameWithoutExtension(dll_name), OutputPath + dll_name);
RyFiles.CopyBigFile(dll_path, RelToAbsPath(path, OutputPath + dll_name));
MoveReference(System.IO.Path.GetFileNameWithoutExtension(dll_name), fullpath);
RyFiles.CopyBigFile(dll_path, fullpath);
}
else
{
@@ -653,6 +656,8 @@ namespace 开发辅助工具.Manager
/// <param name="PackByLite">最简化打包</param>
public void Pack(string project_folder,bool PackByLite=false)
{
BigFileOp file_op = new BigFileOp();
file_op.OnCanelCopy += File_op_OnCanelCopy;
var com_mode = "Debug";
DataProvider mydb = new DataProvider();
IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType);
@@ -711,7 +716,7 @@ namespace 开发辅助工具.Manager
ShowState("正在清理不重要的缓存...");
ryCommon.RyFiles.DeleteFile(ouput_folder + "\\Secure\\*.pdb");
ShowState("复制混淆文件到底包目录...");
ryCommon.RyFiles.CopyFileOrFolder(ouput_folder + "\\Secure\\", bf_folder + "\\Publish\\OriginalFiles"+(PackByLite?"_Lite":"")+"\\");
file_op.CopyFileOrFolder(ouput_folder + "\\Secure\\", bf_folder + "\\Publish\\OriginalFiles"+(PackByLite?"_Lite":"")+"\\");
}
#region 复制自定义规则文件到底包目录
ShowState("复制自定义规则文件到底包目录...");
@@ -765,6 +770,7 @@ namespace 开发辅助工具.Manager
}
}
var from_to = item.Replace("->", "|").Split('|');
if (from_to.Length == 2)
{
var from_path = from_to[0];
@@ -773,6 +779,7 @@ namespace 开发辅助工具.Manager
{
from_path= ouput_folder + "\\" + from_path;
}
if (from_path.IndexOfEx("<") >= 0) { continue; }
var from_filename = System.IO.Path.GetFileName(from_path);
if (from_filename.IndexOfEx("*") >= 0)
{
@@ -781,7 +788,7 @@ namespace 开发辅助工具.Manager
{
for (int i = 0; i < file_list.Length; i++)
{
ryCommon.RyFiles.CopyFileOrFolder(file_list[i], bf_folder + "\\Publish\\OriginalFiles"+ (PackByLite ? "_Lite" : "") + "\\" + to_path);
file_op.CopyFileOrFolder(file_list[i], bf_folder + "\\Publish\\OriginalFiles"+ (PackByLite ? "_Lite" : "") + "\\" + to_path);
}
}
var dir_list = System.IO.Directory.GetDirectories(System.IO.Path.GetDirectoryName(from_path), from_filename);
@@ -789,13 +796,13 @@ namespace 开发辅助工具.Manager
{
for (int i = 0; i < dir_list.Length; i++)
{
ryCommon.RyFiles.CopyFileOrFolder(dir_list[i], bf_folder + "\\Publish\\OriginalFiles"+ (PackByLite ? "_Lite" : "") + "\\" + to_path);
file_op.CopyFileOrFolder(dir_list[i], bf_folder + "\\Publish\\OriginalFiles"+ (PackByLite ? "_Lite" : "") + "\\" + to_path);
}
}
}
else
{
ryCommon.RyFiles.CopyFileOrFolder(from_path, bf_folder + "\\Publish\\OriginalFiles"+ (PackByLite ? "_Lite" : "") + "\\" + to_path);
file_op.CopyFileOrFolder(from_path, bf_folder + "\\Publish\\OriginalFiles"+ (PackByLite ? "_Lite" : "") + "\\" + to_path);
}
}
}
@@ -832,6 +839,19 @@ namespace 开发辅助工具.Manager
OnStateChanged?.Invoke(this,text);
}
}
private void File_op_OnCanelCopy(object sender, CancelEventArgs e, string FromPath, string ToPath)
{
if(RyFiles.GetFileSize(FromPath)==RyFiles.GetFileSize(ToPath))
{
var dt1 = RyFiles.GetFileDate(FromPath);
var dt2 = RyFiles.GetFileDate(ToPath);
if(dt1.LastWriteTime==dt2.LastWriteTime)
{
e.Cancel = true;
}
}
}
}
public class VerInfo
{
@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
// 方法是按如下所示使用“*”: :
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("3.0.2504.2401")]
[assembly: AssemblyFileVersion("3.0.2504.2401")]
[assembly: AssemblyVersion("3.0.2507.1601")]
[assembly: AssemblyFileVersion("3.0.2507.1601")]
@@ -331,6 +331,12 @@
<Compile Include="Manager\FrmToolsSearch.Designer.cs">
<DependentUpon>FrmToolsSearch.cs</DependentUpon>
</Compile>
<Compile Include="Tools\UpLog\FrmBuilding.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Tools\UpLog\FrmBuilding.Designer.cs">
<DependentUpon>FrmBuilding.cs</DependentUpon>
</Compile>
<Compile Include="Tools\UpLog\FrmSaveContent.cs">
<SubType>Form</SubType>
</Compile>
@@ -477,6 +483,9 @@
<EmbeddedResource Include="Manager\FrmToolsSearch.resx">
<DependentUpon>FrmToolsSearch.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Tools\UpLog\FrmBuilding.resx">
<DependentUpon>FrmBuilding.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Tools\UpLog\FrmSaveContent.resx">
<DependentUpon>FrmSaveContent.cs</DependentUpon>
</EmbeddedResource>
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
<StartArguments>get "E:\My Datas\My Codes\毕方项目\CSharp\SuperDesign\Source\开发辅助工具\SuperDesign.csproj"</StartArguments>
<StartArguments>get "E:\My Datas\My Codes\毕方项目\CSharp\文件内容搜索\Source\FileContentSearch\FileContentSearch.csproj"</StartArguments>
</PropertyGroup>
<PropertyGroup>
<ProjectView>ShowAllFiles</ProjectView>
+44 -4
View File
@@ -50,6 +50,9 @@
this.TxtResultCode = new ryControls.Controls.RichTextBox2();
this.RbBigToSmall = new System.Windows.Forms.RadioButton();
this.RbSmallToBig = new System.Windows.Forms.RadioButton();
this.RbSVG = new System.Windows.Forms.RadioButton();
this.BtnGetFromClip = new System.Windows.Forms.Button();
this.BtnCopyResult = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// RbChsToUnicode
@@ -232,10 +235,10 @@
this.TxtFromCode.EmptyText = "请填写待转换的内容";
this.TxtFromCode.Font = new System.Drawing.Font("Courier New", 10F);
this.TxtFromCode.ForeColor = System.Drawing.Color.Black;
this.TxtFromCode.Location = new System.Drawing.Point(12, 54);
this.TxtFromCode.Location = new System.Drawing.Point(12, 78);
this.TxtFromCode.Name = "TxtFromCode";
this.TxtFromCode.OnlyInputText = true;
this.TxtFromCode.Size = new System.Drawing.Size(926, 174);
this.TxtFromCode.Size = new System.Drawing.Size(926, 188);
this.TxtFromCode.TabIndex = 29;
this.TxtFromCode.Text = "";
this.TxtFromCode.TextChanged += new System.EventHandler(this.TxtFromCode_TextChanged);
@@ -262,11 +265,11 @@
this.TxtResultCode.EmptyText = "转换好后的内容";
this.TxtResultCode.Font = new System.Drawing.Font("Courier New", 10F);
this.TxtResultCode.ForeColor = System.Drawing.Color.Black;
this.TxtResultCode.Location = new System.Drawing.Point(12, 234);
this.TxtResultCode.Location = new System.Drawing.Point(12, 272);
this.TxtResultCode.Name = "TxtResultCode";
this.TxtResultCode.OnlyInputText = true;
this.TxtResultCode.ReadOnly = true;
this.TxtResultCode.Size = new System.Drawing.Size(926, 273);
this.TxtResultCode.Size = new System.Drawing.Size(926, 235);
this.TxtResultCode.TabIndex = 31;
this.TxtResultCode.Text = "";
//
@@ -292,11 +295,45 @@
this.RbSmallToBig.UseVisualStyleBackColor = true;
this.RbSmallToBig.CheckedChanged += new System.EventHandler(this.RbSmallToBig_CheckedChanged);
//
// RbSVG
//
this.RbSVG.AutoSize = true;
this.RbSVG.Location = new System.Drawing.Point(624, 32);
this.RbSVG.Name = "RbSVG";
this.RbSVG.Size = new System.Drawing.Size(101, 16);
this.RbSVG.TabIndex = 34;
this.RbSVG.Text = "SVG转Geometry";
this.RbSVG.UseVisualStyleBackColor = true;
this.RbSVG.CheckedChanged += new System.EventHandler(this.RbSVG_CheckedChanged);
//
// BtnGetFromClip
//
this.BtnGetFromClip.Location = new System.Drawing.Point(12, 49);
this.BtnGetFromClip.Name = "BtnGetFromClip";
this.BtnGetFromClip.Size = new System.Drawing.Size(66, 28);
this.BtnGetFromClip.TabIndex = 35;
this.BtnGetFromClip.Text = "粘贴内容";
this.BtnGetFromClip.UseVisualStyleBackColor = true;
this.BtnGetFromClip.Click += new System.EventHandler(this.BtnGetFromClip_Click);
//
// BtnCopyResult
//
this.BtnCopyResult.Location = new System.Drawing.Point(84, 49);
this.BtnCopyResult.Name = "BtnCopyResult";
this.BtnCopyResult.Size = new System.Drawing.Size(66, 28);
this.BtnCopyResult.TabIndex = 36;
this.BtnCopyResult.Text = "复制结果";
this.BtnCopyResult.UseVisualStyleBackColor = true;
this.BtnCopyResult.Click += new System.EventHandler(this.BtnCopyResult_Click);
//
// FrmEncode
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(950, 519);
this.Controls.Add(this.BtnCopyResult);
this.Controls.Add(this.BtnGetFromClip);
this.Controls.Add(this.RbSVG);
this.Controls.Add(this.RbSmallToBig);
this.Controls.Add(this.RbBigToSmall);
this.Controls.Add(this.TxtResultCode);
@@ -348,5 +385,8 @@
private ryControls.Controls.RichTextBox2 TxtResultCode;
private System.Windows.Forms.RadioButton RbBigToSmall;
private System.Windows.Forms.RadioButton RbSmallToBig;
private System.Windows.Forms.RadioButton RbSVG;
private System.Windows.Forms.Button BtnCopyResult;
private System.Windows.Forms.Button BtnGetFromClip;
}
}
+55 -3
View File
@@ -1,4 +1,5 @@
using Newtonsoft.Json;
using ryCommon;
using System;
using System.Collections.Generic;
using System.ComponentModel;
@@ -115,7 +116,7 @@ namespace 开发辅助工具.Tools
#region UTF8转字符串
try
{
TxtResultCode.Text = RyWeb.WebDecode.Unescape(from_text.Replace("&#x","%u").Replace(";", ""));
TxtResultCode.Text = RyWeb.WebDecode.Unescape(from_text.Replace("&#x", "%u").Replace(";", ""));
}
catch { TxtResultCode.Text = ""; }
#endregion
@@ -135,7 +136,7 @@ namespace 开发辅助工具.Tools
#region 大写转小写
try
{
TxtResultCode.Text =from_text.ToLower();
TxtResultCode.Text = from_text.ToLower();
}
catch { TxtResultCode.Text = ""; }
#endregion
@@ -214,9 +215,40 @@ namespace 开发辅助工具.Tools
System.Xml.XmlDocument doc1 = JsonConvert.DeserializeXmlNode(json1);
TxtResultCode.Text = formatXml(doc1);
}
catch { TxtResultCode.Text = ""; }
catch { TxtResultCode.Text = ""; }
#endregion
}
else if (RbSVG.Checked)
{
if (!TxtFromCode.Text.StartsWith("<svg", StringComparison.OrdinalIgnoreCase))
{
TxtResultCode.Text = "错误的SVG源码";
}
else
{
try
{
var txt = "";
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(TxtFromCode.Text);
XmlNamespaceManager nsmgr = new XmlNamespaceManager(new NameTable());
nsmgr.AddNamespace("ns", xmlDoc.FirstChild.NamespaceURI);
var nodes = xmlDoc.SelectNodes("//ns:path", nsmgr);
if (nodes != null && nodes.Count > 0)
{
txt = "";
foreach (XmlElement node in nodes)
{
if (txt.Length > 0) { txt += " "; }
txt += node.GetAttribute("d");
}
txt = "<Geometry x:Key=\"名字\">" + txt + "</Geometry>";
}
TxtResultCode.Text = txt;
}
catch { TxtResultCode.Text = "错误的SVG源码"; }
}
}
}
private static string formatXml(object xml)
{
@@ -356,5 +388,25 @@ namespace 开发辅助工具.Tools
private void FrmEncode_Load(object sender, EventArgs e)
{
}
private void RbSVG_CheckedChanged(object sender, EventArgs e)
{
RadioButton chk = (RadioButton)sender;
if (chk.Checked)
{
CbbEncodingCode.Enabled = false;
}
AutoCode();
}
private void BtnGetFromClip_Click(object sender, EventArgs e)
{
TxtFromCode.Text = Clipboard.GetText();
}
private void BtnCopyResult_Click(object sender, EventArgs e)
{
RyFiles.CopyToClip(TxtResultCode.Text);
}
}
}
@@ -28,6 +28,7 @@
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmImageToIcon));
this.TxtImagePath = new ryControls.TextBoxEx2();
this.BtnConvert = new ryControls.ButtonEx();
@@ -38,6 +39,7 @@
this.RbSize32 = new System.Windows.Forms.RadioButton();
this.RbSize128 = new System.Windows.Forms.RadioButton();
this.RbSize256 = new System.Windows.Forms.RadioButton();
this.ChkOpenFolder = new System.Windows.Forms.CheckBox();
((System.ComponentModel.ISupportInitialize)(this.superPictureBox1)).BeginInit();
this.SuspendLayout();
//
@@ -46,7 +48,9 @@
this.TxtImagePath.BackColor = System.Drawing.Color.White;
this.TxtImagePath.EmptyText = "";
this.TxtImagePath.Location = new System.Drawing.Point(45, 117);
this.TxtImagePath.LongTime = 2000;
this.TxtImagePath.MaxLength = 999999999;
this.TxtImagePath.MaxUndoRedoSteps = 50;
this.TxtImagePath.Multiline = false;
this.TxtImagePath.Name = "TxtImagePath";
this.TxtImagePath.OnlyNumeric = false;
@@ -140,11 +144,24 @@
this.RbSize256.Text = "256*256";
this.RbSize256.UseVisualStyleBackColor = true;
//
// ChkOpenFolder
//
this.ChkOpenFolder.AutoSize = true;
this.ChkOpenFolder.Checked = true;
this.ChkOpenFolder.CheckState = System.Windows.Forms.CheckState.Checked;
this.ChkOpenFolder.Location = new System.Drawing.Point(45, 195);
this.ChkOpenFolder.Name = "ChkOpenFolder";
this.ChkOpenFolder.Size = new System.Drawing.Size(144, 16);
this.ChkOpenFolder.TabIndex = 8;
this.ChkOpenFolder.Text = "转换完成后打开文件夹";
this.ChkOpenFolder.UseVisualStyleBackColor = true;
//
// FrmImageToIcon
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(744, 533);
this.Controls.Add(this.ChkOpenFolder);
this.Controls.Add(this.RbSize256);
this.Controls.Add(this.RbSize128);
this.Controls.Add(this.RbSize32);
@@ -173,5 +190,6 @@
private System.Windows.Forms.RadioButton RbSize32;
private System.Windows.Forms.RadioButton RbSize128;
private System.Windows.Forms.RadioButton RbSize256;
private System.Windows.Forms.CheckBox ChkOpenFolder;
}
}
@@ -121,7 +121,10 @@ namespace 开发辅助工具.Tools
FileStream fileStream = new FileStream(icon_path, FileMode.Create);
icon.Save(fileStream);
fileStream.Close();
RyFiles.OpenFolderGotoFile(icon_path);
if (ChkOpenFolder.Checked)
{
RyFiles.OpenFolderGotoFile(icon_path);
}
}
catch
{
+90 -20
View File
@@ -80,6 +80,7 @@
this.BtnSave2 = new ryControls.ButtonEx();
this.panel1 = new System.Windows.Forms.Panel();
this.tabPage4 = new System.Windows.Forms.TabPage();
this.ChkBuildOn = new System.Windows.Forms.CheckBox();
this.LblUseTime = new System.Windows.Forms.Label();
this.ChkUpdateVerByPublish = new System.Windows.Forms.CheckBox();
this.BtnSubmitGit = new ryControls.ButtonEx();
@@ -95,6 +96,10 @@
this.生成Html日志并上传到服务器ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.BtnPublishLogs = new ryControls.ButtonEx();
this.timer1 = new System.Windows.Forms.Timer(this.components);
this.label7 = new System.Windows.Forms.Label();
this.LvProjectBuild = new BrightIdeasSoftware.ObjectListView();
this.olvProjectName = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn()));
this.olvPlatform = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn()));
((System.ComponentModel.ISupportInitialize)(this.table1)).BeginInit();
this.groupBox1.SuspendLayout();
this.groupBox2.SuspendLayout();
@@ -106,6 +111,7 @@
this.tabPage4.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.LvUpdateLogList)).BeginInit();
this.contextMenuStrip1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.LvProjectBuild)).BeginInit();
this.SuspendLayout();
//
// BtnCustomMessageBox
@@ -122,7 +128,7 @@
// BtnCopyCMD
//
this.BtnCopyCMD.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.BtnCopyCMD.Location = new System.Drawing.Point(775, 12);
this.BtnCopyCMD.Location = new System.Drawing.Point(893, 12);
this.BtnCopyCMD.Name = "BtnCopyCMD";
this.BtnCopyCMD.Size = new System.Drawing.Size(142, 38);
this.BtnCopyCMD.TabIndex = 11;
@@ -163,7 +169,7 @@
this.table1.Location = new System.Drawing.Point(3, 3);
this.table1.Name = "table1";
this.table1.NoItemsText = "当前列表没有任何项";
this.table1.Size = new System.Drawing.Size(915, 461);
this.table1.Size = new System.Drawing.Size(1033, 461);
this.table1.TabIndex = 20;
this.table1.TableModel = this.tableModel1;
this.table1.Text = "table1";
@@ -403,7 +409,7 @@
this.groupBox1.Controls.Add(this.BtnClean);
this.groupBox1.Location = new System.Drawing.Point(12, 120);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(905, 62);
this.groupBox1.Size = new System.Drawing.Size(1023, 62);
this.groupBox1.TabIndex = 27;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "项目管理";
@@ -428,7 +434,7 @@
this.groupBox2.Controls.Add(this.BtnCustomMessageBox);
this.groupBox2.Location = new System.Drawing.Point(12, 56);
this.groupBox2.Name = "groupBox2";
this.groupBox2.Size = new System.Drawing.Size(905, 60);
this.groupBox2.Size = new System.Drawing.Size(1023, 60);
this.groupBox2.TabIndex = 28;
this.groupBox2.TabStop = false;
this.groupBox2.Text = "快速代码";
@@ -451,7 +457,7 @@
this.chromeTabControl1.SelectedIndex = 0;
this.chromeTabControl1.ShowAddButton = false;
this.chromeTabControl1.ShowCloseButton = false;
this.chromeTabControl1.Size = new System.Drawing.Size(923, 500);
this.chromeTabControl1.Size = new System.Drawing.Size(1041, 500);
this.chromeTabControl1.SizeMode = System.Windows.Forms.TabSizeMode.Fixed;
this.chromeTabControl1.TabContextMenuStrip = null;
this.chromeTabControl1.TabIndex = 29;
@@ -463,7 +469,7 @@
this.tabPage2.Location = new System.Drawing.Point(1, 29);
this.tabPage2.Name = "tabPage2";
this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
this.tabPage2.Size = new System.Drawing.Size(921, 470);
this.tabPage2.Size = new System.Drawing.Size(1039, 470);
this.tabPage2.TabIndex = 0;
this.tabPage2.Text = "文件夹";
this.tabPage2.UseVisualStyleBackColor = true;
@@ -491,7 +497,7 @@
this.tabPage1.Location = new System.Drawing.Point(1, 29);
this.tabPage1.Name = "tabPage1";
this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
this.tabPage1.Size = new System.Drawing.Size(921, 470);
this.tabPage1.Size = new System.Drawing.Size(1039, 470);
this.tabPage1.TabIndex = 1;
this.tabPage1.Text = "项目信息";
this.tabPage1.UseVisualStyleBackColor = true;
@@ -574,7 +580,7 @@
this.BtnSave.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.BtnSave.BaseColor = System.Drawing.Color.Green;
this.BtnSave.ColorGradient = true;
this.BtnSave.Location = new System.Drawing.Point(814, 430);
this.BtnSave.Location = new System.Drawing.Point(932, 430);
this.BtnSave.Name = "BtnSave";
this.BtnSave.Size = new System.Drawing.Size(99, 34);
this.BtnSave.TabIndex = 27;
@@ -719,13 +725,15 @@
//
// tabPage3
//
this.tabPage3.Controls.Add(this.label7);
this.tabPage3.Controls.Add(this.LvProjectBuild);
this.tabPage3.Controls.Add(this.BtnSave2);
this.tabPage3.Controls.Add(this.panel1);
this.tabPage3.Controls.Add(this.ChkTestOn);
this.tabPage3.Location = new System.Drawing.Point(1, 29);
this.tabPage3.Name = "tabPage3";
this.tabPage3.Padding = new System.Windows.Forms.Padding(3);
this.tabPage3.Size = new System.Drawing.Size(921, 470);
this.tabPage3.Size = new System.Drawing.Size(1039, 470);
this.tabPage3.TabIndex = 2;
this.tabPage3.Text = "C#编译选项";
this.tabPage3.UseVisualStyleBackColor = true;
@@ -735,7 +743,7 @@
this.BtnSave2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.BtnSave2.BaseColor = System.Drawing.Color.Green;
this.BtnSave2.ColorGradient = true;
this.BtnSave2.Location = new System.Drawing.Point(798, 430);
this.BtnSave2.Location = new System.Drawing.Point(932, 430);
this.BtnSave2.Name = "BtnSave2";
this.BtnSave2.Size = new System.Drawing.Size(99, 34);
this.BtnSave2.TabIndex = 28;
@@ -756,6 +764,7 @@
//
// tabPage4
//
this.tabPage4.Controls.Add(this.ChkBuildOn);
this.tabPage4.Controls.Add(this.LblUseTime);
this.tabPage4.Controls.Add(this.ChkUpdateVerByPublish);
this.tabPage4.Controls.Add(this.BtnSubmitGit);
@@ -766,11 +775,24 @@
this.tabPage4.Location = new System.Drawing.Point(1, 29);
this.tabPage4.Name = "tabPage4";
this.tabPage4.Padding = new System.Windows.Forms.Padding(3);
this.tabPage4.Size = new System.Drawing.Size(921, 470);
this.tabPage4.Size = new System.Drawing.Size(1039, 470);
this.tabPage4.TabIndex = 3;
this.tabPage4.Text = "更新日志";
this.tabPage4.UseVisualStyleBackColor = true;
//
// ChkBuildOn
//
this.ChkBuildOn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.ChkBuildOn.AutoSize = true;
this.ChkBuildOn.Checked = true;
this.ChkBuildOn.CheckState = System.Windows.Forms.CheckState.Checked;
this.ChkBuildOn.Location = new System.Drawing.Point(622, 12);
this.ChkBuildOn.Name = "ChkBuildOn";
this.ChkBuildOn.Size = new System.Drawing.Size(84, 16);
this.ChkBuildOn.TabIndex = 16;
this.ChkBuildOn.Text = "发布前编译";
this.ChkBuildOn.UseVisualStyleBackColor = true;
//
// LblUseTime
//
this.LblUseTime.AutoSize = true;
@@ -787,7 +809,7 @@
this.ChkUpdateVerByPublish.AutoSize = true;
this.ChkUpdateVerByPublish.Checked = true;
this.ChkUpdateVerByPublish.CheckState = System.Windows.Forms.CheckState.Checked;
this.ChkUpdateVerByPublish.Location = new System.Drawing.Point(609, 12);
this.ChkUpdateVerByPublish.Location = new System.Drawing.Point(727, 12);
this.ChkUpdateVerByPublish.Name = "ChkUpdateVerByPublish";
this.ChkUpdateVerByPublish.Size = new System.Drawing.Size(144, 16);
this.ChkUpdateVerByPublish.TabIndex = 14;
@@ -799,7 +821,7 @@
this.BtnSubmitGit.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.BtnSubmitGit.BaseColor = System.Drawing.Color.Green;
this.BtnSubmitGit.ColorGradient = true;
this.BtnSubmitGit.Location = new System.Drawing.Point(759, 3);
this.BtnSubmitGit.Location = new System.Drawing.Point(877, 3);
this.BtnSubmitGit.Name = "BtnSubmitGit";
this.BtnSubmitGit.Size = new System.Drawing.Size(75, 33);
this.BtnSubmitGit.TabIndex = 13;
@@ -813,10 +835,10 @@
this.tabControl1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.tabControl1.Location = new System.Drawing.Point(354, 39);
this.tabControl1.Location = new System.Drawing.Point(400, 39);
this.tabControl1.Name = "tabControl1";
this.tabControl1.SelectedIndex = 0;
this.tabControl1.Size = new System.Drawing.Size(561, 425);
this.tabControl1.Size = new System.Drawing.Size(633, 425);
this.tabControl1.TabIndex = 12;
//
// BtnSaveLog
@@ -849,7 +871,7 @@
this.LvUpdateLogList.HideSelection = false;
this.LvUpdateLogList.Location = new System.Drawing.Point(3, 39);
this.LvUpdateLogList.Name = "LvUpdateLogList";
this.LvUpdateLogList.Size = new System.Drawing.Size(345, 425);
this.LvUpdateLogList.Size = new System.Drawing.Size(391, 425);
this.LvUpdateLogList.TabIndex = 10;
this.LvUpdateLogList.UseCompatibleStateImageBehavior = false;
this.LvUpdateLogList.View = System.Windows.Forms.View.Details;
@@ -858,7 +880,7 @@
// OlvUpVer
//
this.OlvUpVer.Text = "版本";
this.OlvUpVer.Width = 110;
this.OlvUpVer.Width = 120;
//
// OlvUpdateDate
//
@@ -868,7 +890,7 @@
// OlvTime
//
this.OlvTime.Text = "周期";
this.OlvTime.Width = 100;
this.OlvTime.Width = 120;
//
// contextMenuStrip1
//
@@ -906,7 +928,7 @@
this.BtnPublishLogs.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.BtnPublishLogs.BaseColor = System.Drawing.Color.Green;
this.BtnPublishLogs.ColorGradient = true;
this.BtnPublishLogs.Location = new System.Drawing.Point(840, 3);
this.BtnPublishLogs.Location = new System.Drawing.Point(958, 3);
this.BtnPublishLogs.Name = "BtnPublishLogs";
this.BtnPublishLogs.Size = new System.Drawing.Size(75, 33);
this.BtnPublishLogs.TabIndex = 9;
@@ -921,11 +943,53 @@
this.timer1.Interval = 1000;
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
//
// label7
//
this.label7.AutoSize = true;
this.label7.Location = new System.Drawing.Point(11, 61);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(65, 12);
this.label7.TabIndex = 39;
this.label7.Text = "打包前编译";
//
// LvProjectBuild
//
this.LvProjectBuild.AllColumns.Add(this.olvProjectName);
this.LvProjectBuild.AllColumns.Add(this.olvPlatform);
this.LvProjectBuild.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)));
this.LvProjectBuild.CellEditUseWholeCell = false;
this.LvProjectBuild.CheckBoxes = true;
this.LvProjectBuild.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.olvProjectName,
this.olvPlatform});
this.LvProjectBuild.Cursor = System.Windows.Forms.Cursors.Default;
this.LvProjectBuild.FullRowSelect = true;
this.LvProjectBuild.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
this.LvProjectBuild.HideSelection = false;
this.LvProjectBuild.Location = new System.Drawing.Point(12, 76);
this.LvProjectBuild.Name = "LvProjectBuild";
this.LvProjectBuild.Size = new System.Drawing.Size(391, 344);
this.LvProjectBuild.TabIndex = 38;
this.LvProjectBuild.UseCompatibleStateImageBehavior = false;
this.LvProjectBuild.View = System.Windows.Forms.View.Details;
this.LvProjectBuild.ItemChecked += new System.Windows.Forms.ItemCheckedEventHandler(this.LvProjectBuild_ItemChecked);
//
// olvProjectName
//
this.olvProjectName.Text = "项目";
this.olvProjectName.Width = 180;
//
// olvPlatform
//
this.olvPlatform.Text = "平台";
this.olvPlatform.Width = 130;
//
// FrmProject
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(929, 706);
this.ClientSize = new System.Drawing.Size(1047, 706);
this.CloseButton = false;
this.CloseButtonVisible = false;
this.Controls.Add(this.chromeTabControl1);
@@ -956,6 +1020,7 @@
this.tabPage4.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.LvUpdateLogList)).EndInit();
this.contextMenuStrip1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.LvProjectBuild)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
@@ -1029,5 +1094,10 @@
private ryControls.ButtonEx BtnFtpFiles;
private ryControls.ButtonEx BtnPackFileList;
private System.Windows.Forms.ToolStripMenuItem 生成Html日志并上传到服务器ToolStripMenuItem;
private System.Windows.Forms.CheckBox ChkBuildOn;
private System.Windows.Forms.Label label7;
private BrightIdeasSoftware.ObjectListView LvProjectBuild;
private BrightIdeasSoftware.OLVColumn olvProjectName;
private BrightIdeasSoftware.OLVColumn olvPlatform;
}
}
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,64 @@
namespace SuperDesign.Tools.UpLog
{
partial class FrmBuilding
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.richTextBox1 = new System.Windows.Forms.RichTextBox();
this.SuspendLayout();
//
// richTextBox1
//
this.richTextBox1.BackColor = System.Drawing.Color.White;
this.richTextBox1.Dock = System.Windows.Forms.DockStyle.Fill;
this.richTextBox1.Location = new System.Drawing.Point(0, 0);
this.richTextBox1.Name = "richTextBox1";
this.richTextBox1.ReadOnly = true;
this.richTextBox1.Size = new System.Drawing.Size(913, 604);
this.richTextBox1.TabIndex = 0;
this.richTextBox1.Text = "";
//
// FrmBuilding
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(913, 604);
this.Controls.Add(this.richTextBox1);
this.Name = "FrmBuilding";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "编译中...";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FrmBuilding_FormClosing);
this.Shown += new System.EventHandler(this.FrmBuilding_Shown);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.RichTextBox richTextBox1;
}
}
@@ -0,0 +1,133 @@
using ryCommon;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace SuperDesign.Tools.UpLog
{
public partial class FrmBuilding : Form
{
public FrmBuilding()
{
InitializeComponent();
}
public List<BuildComand> BuildingList { get; set; }=new List<BuildComand>();
private void FrmBuilding_Shown(object sender, EventArgs e)
{
Task.Run(() =>
{
var err_count = 0;
var success_count = 0;
var index = 0;
foreach (var item in BuildingList)
{
index++;
this.Invoke(new Action(() =>
{
Text = "[" + item.Name + "]编译中["+index+"/"+ BuildingList.Count+ "]...";
}));
Process p = new Process
{
StartInfo = new System.Diagnostics.ProcessStartInfo
{
FileName = "D:\\Program Files\\Microsoft Visual Studio\\2022\\Professional\\Common7\\IDE\\devenv.com",//设定程序名
Arguments = item.Comand,
UseShellExecute = false, //关闭shell的使用
RedirectStandardInput = true, //重定向标准输入
RedirectStandardOutput = true, //重定向标准输出
RedirectStandardError = false, //重定向错误输出
WorkingDirectory = "",
StandardOutputEncoding = Encoding.Default,
CreateNoWindow = true//设置不显示窗口
}
};
p.Start();
while (!p.StandardOutput.EndOfStream)
{
string line = p.StandardOutput.ReadLine();
if (line.StartsWith("版权所有"))
{
continue;
}
var color=Color.Black;
//ryProcessManager=>========== 生成: 0 成功,0 失败,3 最新,0 已跳过
if (line.IndexOfEx("生成:")>=0 && line.IndexOfEx("成功") >= 0 && line.IndexOfEx("失败") >= 0 && line.IndexOfEx("已跳过") >= 0)
{
if (line.IndexOfEx(",0 失败")<0)
{
err_count++;
color = Color.Red;
}
else{
success_count++;
color = Color.Blue;
}
}
this.Invoke(new Action(() =>
{
if (richTextBox1.Text.Length == 0)
{
richTextBox1.Text =item.Name+"=>"+line;
if(color!=Color.Black)
{
richTextBox1.SelectionStart = 0;
richTextBox1.SelectionLength = richTextBox1.Text.Length;
richTextBox1.SelectionColor = color;
richTextBox1.SelectionFont = new Font(richTextBox1.Font, FontStyle.Bold);
}
}
else
{
var start=richTextBox1.Text.Length;
richTextBox1.AppendText("\n" + item.Name + "=>" + line);
if (color != Color.Black)
{
richTextBox1.SelectionStart = start;
richTextBox1.SelectionLength = richTextBox1.Text.Length- start;
richTextBox1.SelectionColor = color;
richTextBox1.SelectionFont = new Font(richTextBox1.Font, FontStyle.Bold);
}
}
richTextBox1.SelectionStart = richTextBox1.Text.Length;
richTextBox1.SelectionLength = 0;
richTextBox1.SelectionColor = Color.Black;
richTextBox1.SelectionFont = richTextBox1.Font;
}));
}
}
this.Invoke(new Action(() =>
{
Text = "编译完成";
if(err_count>0)
{
canexit = true;
MessageBox.Show("部分生成失败,成功:"+success_count+"个,失败"+err_count+"个", "部分生成失败", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
DialogResult = DialogResult.OK;
}));
});
}
bool canexit = false;
private void FrmBuilding_FormClosing(object sender, FormClosingEventArgs e)
{
if(DialogResult != DialogResult.OK && !canexit)
{
e.Cancel = true;
}
}
}
public class BuildComand
{
public string Comand { get; set; } = "";
public string Name { get; set; } = "";
}
}
@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>