#region Top Part //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\ // MyCustomLibrary.SearchForm1.cs //\\//\\// //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\ // v5.2.7.12 05-May-2019 Created and Roughed //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\ // v5.2.7.14 12-May-2019 Great Design Stage. // v5.2.8.15 15-May-2019 Comin along nicely! // v5.2.8.16 18-May-2019 EyeOutBug Fixed ++ // v5.2.8.17 24-May PropertyChangedEvents. // v5.2.9.19 31-May Minor Revision, Setups. // v5.3.0.21 10-June Brought MySearchType & // SearchCom into SearchForm Class, but now // it's MST for the Mutexes AND MySearchType // and SearchForm Class for what was MSC // v5.3.0.22 24-June Sorting it out in 2 & 3 // v5.3.1.23 30-June CurrentFile Name, etc. // v5.3.3.27 19-July Integration & Polish. // -=[ Design Revision 4 ]=- My Custom Type. // v5.3.4.29 25-Jul-2019 Spelling things out // Class{in-Class{in-Class}}; Custom Types: // v5.4.5.32 07-Aug-2019 Search & Replace. // v5.4.5.35 21-Aug-2019 Final Details Alpha // v5.4.6.36 07-Sep "" Minor Details. // v5.4.6.37 12-Sep-2019 Debug Testing. 1 // v5.4.7.39 26-Sep-2019 Cleaning up. //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\ using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Collections.Specialized; using System.Drawing; using System.IO; using System.Windows.Forms; using MCD = MyCustomLibrary.Dialogs; using MCT = MyCustomLibrary.MyToolbox; using MCR = MyCustomLibrary .Properties.Resources; using MCS = MyCustomLibrary .Properties.Settings; namespace MyCustomLibrary { public partial class SearchForm : Form { // Incoming Property (ReUsed) // searchBox.Text till load, fn after public void Search4(string value) { Search2 = value; } string Search2 { get; set; } FileSystemWatcher Beagle { get; set; } // 1/1 Class Constructor public SearchForm() { InitializeComponent(); } #endregion Pop Tart //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\ #region Search Form Load void SearchFormLoad( object sender, EventArgs e) { if (Dialogs.WholeList == null || Dialogs.WholeList .Count < 1) return; Size = MCS.Default.SearchSize; Location = MCS.Default.SearchLoca; if (SearchFormLoad2()) return; if (MCT.Testing && !MCT.Skip) MessageBox.Show(MCR.FL2); Close(); } bool SearchFormLoad2() { var app = Application.ExecutablePath; if (app.Contains(MCR.MyApp)) SearchEditor(); else if (app.Contains(MCR.MyOtherApp) ) SearchPrintBlaster(); else return false; caseCheckBox.Checked = MCS.Default.Case; wordCheckBox.Checked = MCS.Default.Word; searchBox.Text = Search2; if (replaceBox.Visible) UpdateReplaceList(); UpdateSearchList(); LoadSharedColors(); ScopeSelectedChanged( // These are unused dummy args. "startup", EventArgs.Empty); // v5.3.0.21 10-June-2019 -JpE- Beagle = new FileSystemWatcher(); SetupWatcher4MeComms(); return true; } #endregion Form Load //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\ #region Load Shared Colors Members void LoadSharedColors() { Color back = DefaultBackColor, fore = DefaultForeColor, formB = BackColor, formF = ForeColor; var fnt = DefaultFont; var info = MCT.ReadShared(fnt, back, fore, formB, formF, fnt); if ( info == null || info .Length < 6 || info .Length > 6 || ! (bool) info[5]) return; // If needed in ReUses: //Font = (Font) info[4]; LoadSharedColors(info); } void LoadSharedColors( IList info) { var colors = new Collection(); try { colors.Add((Color) info[0]); colors.Add((Color) info[1]); colors.Add((Color) info[2]); colors.Add((Color) info[3]); } catch (InvalidCastException) { if ( MCT.Testing && !MCT.Skip) MessageBox.Show(MCR.Err7); return; } catch (FormatException) { if ( MCT.Testing && !MCT.Skip) MessageBox.Show(MCR.Err8); return; } LoadSharedColors(colors); } void LoadSharedColors( IList colors) { replaceBox.BackColor = searchBox.BackColor = scopeBox.BackColor = colors[0]; replaceBox.ForeColor = searchBox.ForeColor = scopeBox.ForeColor = colors[1]; BackColor = colors[2]; ForeColor = colors[3]; } #endregion Load Shared Colors Members //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\ #region Setup Search Form void SearchEditor() { var scope = MCS.Default.ScopeMe; var ct = scope.Count; var ob = new object[ct]; for (var i = 0; i < ct; ++i) { if (string.IsNullOrEmpty( scope[i])) continue; ob[i] = scope[i]; } scopeBox.Items.Clear(); scopeBox.Items.AddRange(ob); scopeBox.SelectedIndex = MCS.Default.ScopeMePref; } /********************************** ** Who ^v is calling, ME or PB? ** /**********************************/ void SearchPrintBlaster() { var pb = MCS.Default.ScopePb; var cn = pb.Count; var ob = new object[cn]; for (var i = 0; i < cn; ++i) { if (string.IsNullOrEmpty( pb[i])) continue; ob[i] = pb[i]; } scopeBox.Items.Clear(); scopeBox.Items.AddRange(ob); scopeBox.SelectedIndex = MCS.Default.ScopePbPref; } void FindSetup() { replaceButton.Hide(); replaceAllButton.Hide(); replaceBox.Hide(); replaceLabel.Hide(); SetupSearchBoxItems(); } void ScopeSelectedChanged( object sender, EventArgs e) { var sel = scopeBox.SelectedIndex; if (Application.ExecutablePath .Contains(MCR.MyApp)) // ME Calling. { if (sel.Equals(0)) FindSetup(); else ReplaceSetup(); } else // It's PB calling. { if (sel.Equals(0)) FindSetup(); else ReplaceSetup(); } } void ReplaceSetup() { replaceButton.Show(); replaceAllButton.Show(); replaceBox.Show(); replaceLabel.Show(); SetupReplaceBoxItems(); SetupSearchBoxItems(); } /**********************************/ void SetupSearchBoxItems() { if (MCS.Default .SearchBoxCollection == null) MCS.Default .SearchBoxCollection = new StringCollection(); MCS.Default.Save(); if (MCS.Default .SearchBoxCollection .Count < 1) return; var sbc = MCS.Default .SearchBoxCollection; var cnt = sbc.Count; var obj = new object[cnt]; for (var i = 0; i < cnt; ++i) { if (string.IsNullOrEmpty( sbc[i])) continue; obj[i] = sbc[i]; } searchBox.Items.Clear(); searchBox.Items.AddRange(obj); if (string.IsNullOrEmpty(searchBox .Text) && !string.IsNullOrEmpty( sbc[0])) searchBox.Text = sbc[0]; } void SetupReplaceBoxItems() { if (MCS.Default .ReplaceBoxCollection == null) MCS.Default .ReplaceBoxCollection = new StringCollection(); if (MCS.Default .ReplaceBoxCollection .Count < 1) return; var rbc = MCS.Default .ReplaceBoxCollection; var cnt = rbc.Count; var obj = new object[cnt]; for (var i = 0; i < cnt; ++i) { if (string.IsNullOrEmpty( rbc[i])) continue; obj[i] = rbc[i]; } replaceBox.Items.Clear(); replaceBox.Items.AddRange(obj); if (string.IsNullOrEmpty( replaceBox.Text) && !string.IsNullOrEmpty( rbc[0])) replaceBox .Text = rbc[0]; } #endregion Setup Search Form //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\ #region Form Close and Save void SearchFormClosing( object sender, FormClosingEventArgs e) { Beagle.EnableRaisingEvents = false; MCS.Default.SearchSize = Size; MCS.Default.SearchLoca = Location; MCS.Default.Case = caseCheckBox.Checked; MCS.Default.Word = wordCheckBox.Checked; if (Application.ExecutablePath .Contains(MCR.MyApp)) { MCS.Default.ReplacePref = replaceBox.Visible; UpdateReplaceList(); MCS.Default.ScopeMePref = scopeBox.SelectedIndex; } else MCS.Default.ScopePbPref = scopeBox.SelectedIndex; ListMaintenance(); UpdateSearchList(); // ^ MCS.Default.Save(); is in there. CancelSearch = true; // <-===<< Alerts // Smesa of Search Form Closing.^^^^^^ } static void ListMaintenance() { while (MCS.Default.SearchBoxCollection .Count > 32) MCS.Default .SearchBoxCollection.RemoveAt(32); while (MCS.Default.ReplaceBoxCollection .Count > 32) MCS.Default .ReplaceBoxCollection.RemoveAt(32); } #endregion Form Close and Save //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\ #region Update Recents Lists void UpdateSearchList() { var str = searchBox.Text; if (!string.IsNullOrEmpty(str)) { while (MCS.Default .SearchBoxCollection .Contains(str)) MCS.Default .SearchBoxCollection .Remove(str); MCS.Default.SearchBoxCollection .Insert(0, str); } SetupSearchBoxItems(); } void UpdateReplaceList() { var txt = replaceBox.Text; if (!string.IsNullOrEmpty(txt)) { while (MCS.Default .ReplaceBoxCollection .Contains(txt)) MCS.Default .ReplaceBoxCollection .Remove(txt); MCS.Default.ReplaceBoxCollection .Insert(0, txt); } SetupReplaceBoxItems(); } #endregion Update Lists //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\ } } // 100% -JpE-