Sfall-ScriptEditor
133 строки · 4.4 Кб
1using System;
2using System.Windows.Forms;
3using System.Collections.Generic;
4using System.IO;
5using System.Linq;
6
7namespace ScriptEditor
8{
9public partial class SearchForm : Form
10{
11private bool isHide = false;
12
13public SearchForm()
14{
15InitializeComponent();
16
17cbSearchPath.Items.AddRange((Settings.searchListPath.Count > 0)
18? Settings.searchListPath.Cast<String>().ToArray()
19: File.ReadAllLines(Settings.SearchFoldersPath));
20
21if (Settings.lastSearchPath == null) {
22cbSearchPath.Text = "<unset>";
23} else {
24cbSearchPath.Text = Settings.lastSearchPath;
25}
26cbFileMask.SelectedIndex = 0;
27
28cbCase.Checked = !Settings.searchIgnoreCase;
29cbWord.Checked = Settings.searchWholeWord;
30
31this.KeyUp += delegate(object a1, KeyEventArgs a2)
32{
33if (a2.KeyCode == Keys.Escape) this.bHide.PerformClick();
34};
35
36this.rbFolder.CheckedChanged += delegate(object a1, EventArgs a2)
37{
38this.bChange.Enabled = this.cbSearchSubfolders.Enabled = this.rbFolder.Checked;
39this.bReplace.Enabled = !this.rbFolder.Checked;
40};
41
42this.bChange.Click += delegate(object a1, EventArgs a2)
43{
44this.fbdSearchFolder.SelectedPath = Settings.lastSearchPath;
45if (this.fbdSearchFolder.ShowDialog() != DialogResult.OK) return;
46
47Settings.lastSearchPath = this.fbdSearchFolder.SelectedPath;
48
49if (CheckSearchPath()) this.cbSearchPath.Items.Add(Settings.lastSearchPath);
50this.cbSearchPath.Text = Settings.lastSearchPath;
51};
52
53this.cbSearch.KeyPress += delegate(object a1, KeyPressEventArgs a2)
54{
55if (a2.KeyChar == '\r') {
56a2.Handled = true;
57this.bSearch.PerformClick();
58}
59};
60}
61
62public List<string> GetFolderFiles()
63{
64List<string> files = new List<string>();
65SearchOption so = cbSearchSubfolders.Checked ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly;
66if (cbFileMask.SelectedIndex == 0) {
67for (int i = 1; i < cbFileMask.Items.Count; i++)
68files.AddRange(Directory.GetFiles(Settings.lastSearchPath, cbFileMask.Items[i].ToString(), so));
69} else
70files.AddRange(Directory.GetFiles(Settings.lastSearchPath, cbFileMask.Text, so));
71
72return files;
73}
74
75private bool CheckSearchPath()
76{
77foreach (string item in this.cbSearchPath.Items)
78{
79if (String.Equals(item, Settings.lastSearchPath, StringComparison.OrdinalIgnoreCase)) return false;
80}
81return true;
82}
83
84private void SearchForm_Deactivate(object sender, EventArgs e)
85{
86if (!isHide && WindowState == FormWindowState.Minimized) Opacity = 0.6;
87}
88
89private void SearchForm_Activated(object sender, EventArgs e)
90{
91Opacity = 1;
92isHide = false;
93}
94
95private void bHide_Click(object sender, EventArgs e)
96{
97isHide = true;
98this.Hide();
99}
100
101private void rbFolder_CheckedChanged(object sender, EventArgs e)
102{
103cbFileMask.Enabled = rbFolder.Checked;
104cbSearchPath.Enabled = rbFolder.Checked;
105}
106
107private void cbRegular_CheckedChanged(object sender, EventArgs e)
108{
109cbWord.Enabled = !cbRegular.Checked;
110}
111
112private void SearchForm_FormClosing(object sender, FormClosingEventArgs e)
113{
114Settings.searchListPath.Clear();
115Settings.searchListPath.AddRange(cbSearchPath.Items.Cast<String>().ToList());
116}
117
118private void cbCase_Click(object sender, EventArgs e)
119{
120Settings.searchIgnoreCase = !cbCase.Checked;
121}
122
123private void cbWord_Click(object sender, EventArgs e)
124{
125Settings.searchWholeWord = cbWord.Checked;
126}
127
128private void cbSearchPath_SelectedIndexChanged(object sender, EventArgs e)
129{
130Settings.lastSearchPath = cbSearchPath.Text;
131}
132}
133}
134