## :date:2025-08-02 星期六更新

### RySmartEditor    V1.0.2508.0201
- *.[新增]文件查找支持批量替换功能。
- *.[修复]修复文件查找功能失效的BUG。
This commit is contained in:
zilinsoft committed 2025-08-02 10:50:47 +08:00
1 parent 5a5faaf5dc
commit 6e3b87ed94
28 files changed
+514 -42

No files matched your search

@@ -1,9 +1,8 @@
using System;
using AutocompleteMenuNS;
using ScintillaNETV2;
using System;
using System.Drawing;
using System.Windows.Forms;
using AutocompleteMenuNS;
using ScintillaNETV2;
using ScintillaNETV2;
public class ScintillaWrapper : ITextBoxWrapper
{
@@ -831,7 +831,6 @@ namespace ScintillaNET_FindReplaceDialog
//
this.btnFileReplaceAll.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.btnFileReplaceAll.Enabled = false;
this.btnFileReplaceAll.Location = new System.Drawing.Point(392, 57);
this.btnFileReplaceAll.Name = "btnFileReplaceAll";
this.btnFileReplaceAll.Size = new System.Drawing.Size(121, 27);
@@ -1214,7 +1214,50 @@ namespace ScintillaNET_FindReplaceDialog
private void btnFileReplaceAll_Click(object sender, EventArgs e)
{
var folder = TxtSearchPath.Text;
if (!System.IO.Directory.Exists(folder))
{
MessageBox.Show("目录不存在。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
if (TxtFileSearchText.Text.Length == 0)
{
MessageBox.Show("待查找文本为空。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
if (!DesignMode)
{
ryCommon.Ini ini = new ryCommon.Ini(Application.StartupPath + "\\UserDb\\FindReplace.ini");
ini.WriteIni("FileFind", "Exts", TxtFileType.Text);
ini.WriteIni("FileFind", "SkipDirName_On", ChkSkipDirName.Checked);
ini.WriteIni("FileFind", "SkipDirName_Text", CbbSkipDirName.Text);
ini.WriteIni("FileFind", "SearchSubDir", ChkSubDir.Checked);
ini.WriteIni("FileFind", "IgnoreBinExt", ChkIgnoreBinExt.Checked);
ini.WriteIni("FileFind", "SearchHiddenDir", ChkHiddenDir.Checked);
ini.WriteIni("FileFind", "LimitFileSize_On", ChkLimitFileSize.Checked);
ini.WriteIni("FileFind", "LimitFileSize_Value", NumLimitFileSize.Value);
}
FrmFinding frm = new FrmFinding();
frm.SearchConfig.FindText = TxtFileSearchText.Text;
frm.SearchConfig.ReplaceText = TxtFileReplaceText.Text;
frm.SearchConfig.SearchDir = folder;
if (TxtFileType.Text.IndexOfEx("(") >= 0)
{
frm.SearchConfig.Exts = TxtFileType.Text.GetStr("(", ")");
}
else
{
frm.SearchConfig.Exts = TxtFileType.Text;
}
frm.SearchConfig.ReplaceModeOn = true;
frm.SearchConfig.SkipDirName = ChkSkipDirName.Checked ? CbbSkipDirName.Text : "";
frm.SearchConfig.LimitFileSize = ChkLimitFileSize.Checked ? (NumLimitFileSize.Value.ToInt() * 1024 * 1024) : 0;
frm.SearchConfig.SearchSubDir = ChkSubDir.Checked;
frm.SearchConfig.IgnoreBinExt = ChkIgnoreBinExt.Checked;
frm.SearchConfig.SearchHiddenDir = ChkHiddenDir.Checked;
frm.SearchConfig.RegexOptions = fcFile.GetRegexOptions();
frm.SearchConfig.SearchFlags = fcFile.GetSearchFlags();
frm.ShowDialog();
}
}
}
@@ -129,9 +129,6 @@
<metadata name="mnuRecentFindF.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>576, 17</value>
</metadata>
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 56</value>
</metadata>
<metadata name="mnuExtendedCharFindR.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>198, 17</value>
</metadata>
@@ -1,4 +1,5 @@
using ryCommon;
using ryCommon.sType;
using ryControls;
using ScintillaNETV2;
using SuperDesign.Tools.SmartEditor;
@@ -305,7 +306,31 @@ namespace ScintillaNET_FindReplaceDialog
var find_list= SearchText(text);
if(find_list.Count>0)
{
dict_list.Add(files[f],find_list);
if (SearchConfig.ReplaceModeOn)
{
var new_text = "";
var start = 0;
var new_find_list = new List<CharacterRange>();
for (int z = 0; z < find_list.Count; z++)
{
var item = find_list[z];
if (start > text.Length) { break; }
new_text += text.Substring(start, item.CpMin - start) + SearchConfig.ReplaceText;
new_find_list.Add(new CharacterRange(new_text.Length - SearchConfig.ReplaceText.Length, new_text.Length) { LineNum = item.LineNum, RangeText = SearchConfig.ReplaceText });
start = item.CpMax;
if (find_list.Count == z + 1)
{
new_text += text.Substring(start);
}
}
开发辅助工具.Manager.Itrycn_Db.AddHistory(files[f], text);
RyFiles.WriteAllText(files[f], new_text, TxtFileEncoder.GetEncoding(files[f]));
dict_list.Add(files[f], new_find_list);
}
else
{
dict_list.Add(files[f], find_list);
}
}
count++;
if (count <= total_count)
@@ -2,7 +2,6 @@
using ryCommon;
using ScintillaNETV2;
using ScintillaNETV2;
using System;
using System.Windows.Forms;
using WeifenLuo.WinFormsUI.Docking;
@@ -30,7 +30,6 @@ 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,6 @@ SOFTWARE.
*/
#endregion
using ScintillaNETV2;
using ScintillaNETV2;
using VPKSoft.ScintillaLexers.HelperClasses;
using VPKSoft.ScintillaLexers.LexerColors;
@@ -24,7 +24,6 @@ SOFTWARE.
*/
#endregion
using ScintillaNETV2;
using ScintillaNETV2;
using VPKSoft.ScintillaLexers.HelperClasses;
using static VPKSoft.ScintillaLexers.LexerEnumerations;
@@ -24,7 +24,6 @@ SOFTWARE.
*/
#endregion
using ScintillaNETV2;
using ScintillaNETV2;
using VPKSoft.ScintillaLexers.HelperClasses;
using static VPKSoft.ScintillaLexers.LexerEnumerations;
@@ -30,7 +30,6 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ScintillaNETV2;
using ScintillaNETV2;
using VPKSoft.ScintillaLexers.HelperClasses;
using static VPKSoft.ScintillaLexers.LexerEnumerations;
@@ -24,7 +24,6 @@ SOFTWARE.
*/
#endregion
using ScintillaNETV2;
using ScintillaNETV2;
using VPKSoft.ScintillaLexers.HelperClasses;
using VPKSoft.ScintillaLexers.LexerColors;