#region Top Part //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\// // Smesa.cs v1.0.1.00 02-Oct-2017 //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\// // Created by Jp Edwards as Shareware // and as a Fresher Course in Windows // Forms Apps, OOP and C#.NET //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\// // This is an Early Version meant to // inspire freshers to dive right in // and away from mere console Apps, etc. // I've left many many things for you to // code and experiment with. Just beware // of the standard license and rights. // i.e. Share your improvements! // Ask questions, Collaborate! //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\// // v1.0.1.02 02-Oct-17 @ 0455 // v1.0.1.03 03-Oct-17 @ 0643 // v1.0.1.05 07-Oct-17 @ 0000 RC1 // v1.0.1.09 11-Oct-17 @ 0505 RC2b // v1.0.1.16 23-Oct-17 @ 1220 BRC1 // v1.0.1.20 28-Oct-17 @ 2231 ReDesigns // v1.0.2.21 29-Oct-17 @ 0116 ReDesigns // v1.0.2.25 12-Nov-17 @ 0130 Stabilize. // v1.0.3.26 25-Nov-17 @ 2344 Perfected. // v1.1.4.26 10-Dec-17 Newest Mods & Ver // Ready for complete Isolation // v2.2.5.26zz 28-Dec-2017 Set to fully // pound on Rev2. Mods are in Tests are // going well, but a few last things to // resolve before I can truly call it 27 // v2.2.6.27agate 07-Jan-2018 Minor Rev. // Fully Working with Multi-Tab and // ready for Serious Beta-Testing and // further modification & enhancements. // v2.3.6.27alaru 10-Dec-18 Behavior. // v2.3.7.28alfy 22-Jan-18 Integration // and major mods here and there for // Multi-Tab. Then, BAM! WOW! // v2.3.8.29algor 24-Jan-18 Multiple // fixes and upgrades, evolved in testin // and is the best I've seen so far! // v2.5.9.30 04-Feb-2018 Multi-Load and // Multi-Load-WHILE-RUNNING mods finish! // v2.5.9.31 08-Feb-2018 MultiLoad Mods! // v2.6.1.32 20-Feb-2018 0145 Threading. // v2.6.1.33 22-Feb-2018 MMF & Trigger. // v3.0.0.01 25-feb-2018 As WPF App. // Experimental to pass args to an // active 1st instance Smesa from a // 2nd Instance AppLaunch2 MyOtherApp. // v3.0.0.36 28-Feb-2018 0420 MyApp WPF // v3.0.1.37 01-Mar-2018 Reverted Hybrid // v3.1.1.39 10-Mar-2018 Fully Working++ // v3.2.3.43 28-Mar-2018 Preferences2+ // v3.2.3.43 29-Mar-2018 GetCharCount(); // v4.3.5.49 22-Apr-2018 Integrated. // v4.5.7.59 05-Jul-2018 MyToolbox // v4.5.8.60 18-Jul-18 Shared Info! // v4.5.8.60 23-Jul-18 FULLY TESTED! // v4.5.8.60 26-Jul 4 Hooks 4 Shared.sme // Search usages of WriteSharedData(); // v4.5.8.61 30-Jul-2018 ^ Perfecting. // v4.5.8.61 03-Aug Integration w/ Shared.sme // v4.5.9.63 Omega Plan 11-Aug-2018 // v4.5.9.63 15-Aug-2018 Complete & TestsWell. // v4.5.9.64 21-Aug Fixed and finalized // v4.6.9.65 To Keep Smesa simple: (Kiss mods) // v4.6.9.66 05-Sep WriteShared Mods. // v4.6.9.68 10-Sep-2018 Final Wipe Testing. // v4.6.9.69 17- " " Perfected PathPb // v4.7.0.70 18-" " Assy Thread Safe / IO Safe. // v4.7.0.71 19-Sep About Colors. // v4.7.0.72 21-Sep-2018 RC // v4.8.0.76 30-Sep MCT.SaveList & GetList mods // v4.8.2.82 26-Oct-2018 Wrap Mod integration. // v4.9.3.88 16-Nov-2018 Removals / Favorites. // v4.9.4.89 Fellback to 49488G01RC but only // for MyEditor Project no others. (Removals) // v4.9.4.90 27-Nov-2018 ReadRemovals() and // GetSelectedIndex() integration completed. // NOTE: See calls to GetSelectedIndex(); // v4.9.4.91 01-Dec-2018 Integration ^ // v5.0.6.00 21-Feb-19 List to Collection //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\// using System; using System.Collections.ObjectModel; using System.Collections.Specialized; using System.IO; using System.Linq; using System.Threading; using System.Windows.Forms; // Shortcut Class Aliases using MCD = MyCustomLibrary.Dialogs; using MCT = MyCustomLibrary.MyToolbox; using MWS = MyEditor.WriteShared; using SMF = ShowMe.ShowMeForm; // Local Properties Shortcut Aliases using SMR = MyEditor.Properties.Resources; using SMS = MyEditor.Properties.Settings; namespace MyEditor { public partial class Smesa : Form { /****************************************/ /* See SmasaHeader.cs for Class Globals */ /****************************************/ // Class Constructor 1st Instance Only. public Smesa(string[] args, string memo) { #region Release version testcode //MessageBox.Show(string.Format( // "Smesa Constructor:\n\n" + // "memo contains:\n{0}", memo)); #endregion Mapped = memo; Args = MCT.GetCommandLine(args); Watcher = new FileSystemWatcher(); InitializeComponent(); ProgressBar1.Value = 0; StatusLabel.Text = SMR.Status_Hello; } #endregion Top Part //\\//\\//\\//\\//\\//\\//\\//\\//\\ #region Startup Code /// Form Loading Eventhandler /// Called as the Form First Opens. /// /// /// private void SmesaLoading (object sender, EventArgs e) { ProgressBar1.Value = 6; Size = SMS.Default.AppSize; Location = SMS.Default.AppLocation; BackColor = SMS.Default.AppColor; _index = TabControl.TabPages[0] .Controls.IndexOf(RichTextBox1); ReadRemovals(); // ^ v49488 Hook // (see also: GetSelectedIndex) if (Args != null && Args.Length > 0) ParmsPassedInAtStart(); ProgressBar1.Value = 24; CheckDataFiles(); ProgressBar1.Value = 69; SetPaths(Mapped); SetDirectory(); // ^v Switched order v4.9.4.91b SetupOpenFiles(); GetCharCount(); MWS.WriteSharedFile(BackColor); CheckPref2Collections(); MmfEventDelegate(); TestCodeVisibility(); } private void TestCodeVisibility() { TestCode1.Visible = nowTestingToolStripMenuItem .Visible = MCT.Testing; } #region Get everything setup & ready. /// For Resources Tab in Preferences. /// Make Their Documents v Folder Home for Now. /// But I want to make this The Reminder to setup /// a Prefered Folder or something. -Des /// public static void SetDirectory() { string path; if (SMS.Default.EnableRes) { path = Path.GetDirectoryName( SMS.Default.FileNames[ GetSelectedIndex()]); } // Index Bugg ^ Fix. else path = MCT.GetDocFolder; if (!string.IsNullOrEmpty(path) && Directory.Exists(path)) Directory.SetCurrentDirectory(path); } /// Checks the last used index /// if it has been removed or deleted we /// adjust SMS.Default.Index accordingly. /// v4.9.4.89 24-Nov-2018 -JpE- /// /// private static int GetSelectedIndex() { // Updated to v4.9.4.90 var tab = SMS.Default.Index; var las = SMS.Default.FileNames.Count-1; if (las < 1) return 0; while ( tab > las || tab < 0) { while (tab > las) --tab; while (tab < 0) ++tab; } SMS.Default.Index = tab; SMS.Default.Save(); return tab; } /// Called when the Form is /// First Shown, but, After FormLoading. /// /// /// private void ShownForm( object sender, EventArgs e) { var t = TabControl.SelectedIndex = GetSelectedIndex(); #region Event ^ Note // ^ This lil guy Triggers TabChange() event: // Then Editing and everything does the rest. // Makes sure the Filename is the Tab-text & // all that stuff, Colors per extension, etc. #endregion // Startup Focus Mods. SaveButton.Enabled = SaveAllButton.Enabled = false; var c = SMS.Default.FileNames.Count - 1; if (t > c) t = c; RichTextBox rtb; try { var b = TabControl.TabPages.Count; while (t > b && t > -1) --t; rtb = TabControl.TabPages[t] .Controls[_index] as RichTextBox; } catch (ArgumentOutOfRangeException) { if (MCT.Testing && !MCT.Skip) MessageBox.Show(SMR.Range); return; } catch (ArgumentException) { if (MCT.Testing && !MCT.Skip) MessageBox.Show(SMR.Argument); return; } WordWrap.Checked = MCT.Wrap; if (rtb == null) return; rtb.Focus(); GetCharCount(null, true); ProgressBar1.Value = 100; } /// Checks FileName Collection /// Initiating it if necessary, adding default /// FileName to the Collection for first tab. /// private void CheckDataFiles() { if (SMS.Default.FileNames == null) SMS.Default.FileNames = new StringCollection(); var i = SMS.Default.FileNames.Count; // Rev2 Multi-Tab if (i >= 1) return; var r = TabControl.TabPages[i] .Controls[_index] as RichTextBox; if (r == null) throw new ArgumentException( "CheckDataFiles"); r.Clear(); SMS.Default.FileNames.Add( GetDefaultFileName(i)); } /// Adds the tab number to the /// Default FileName for this Application /// where tab number == index + 1; /// /// /// /// default filename for this tab number. /// public static string GetDefaultFileName(int tab) { var dflt = SMS.Default.DefaultFile; var fnmn = Path .GetFileNameWithoutExtension(dflt); if ( tab > int.MaxValue -1) tab = 0; var nmbr = string.Format( "({0})", Convert.ToString(tab + 1)); var exts = Path.GetExtension(dflt); if (SMS.Default.PrefRTF) exts = SMS.Default.SpecialExt; return fnmn + nmbr + exts; } /// Brings relevant collections /// up or down to the same Count as the /// FileName collection. /// private void Check5() { CheckForDuplicates(); // ^ filenames only. EvenUpData(); // split it out to call separately. } private void EvenUpData() { var f = SMS.Default.FileNames.Count; var s = SMS.Default.SaveMe.Count; var c = SMS.Default.BarValue.Count; var z = SMS.Default.Zoo.Count; var p = SMS.Default.Curses.Count; var u = SMS.Default.Status.Count; if (f == s && f == c && f == z && f == p && f == u) return; var i = s; while (i++ < f) SMS.Default.SaveMe.Add("0.00"); while (s-- > f) SMS.Default.SaveMe.RemoveAt(s); i = c; while (i++ < f) SMS.Default.BarValue.Add("100"); while (c-- > f) SMS.Default.BarValue.RemoveAt(c); i = z; while (i++ < f) SMS.Default.Zoo.Add("1.0"); while (z-- > f) SMS.Default.Zoo.RemoveAt(z); i = p; while (i++ < f) SMS.Default.Curses.Add("0, 0"); while (p-- > f) SMS.Default.Curses.RemoveAt(p); i = u; while (i++ < f) SMS.Default.Status.Add(StatusLabel.Text); while (u-- > f) SMS.Default.Status.RemoveAt(u); SMS.Default.Save(); } /// Last ones first removal /// as first ones first would change index, /// dropping everything down 1 for each one. /// Updated to Assure File Exists. v2.2.5.27 /// private void CheckForDuplicates() { var idx = -1; var tab = new Collection(); var cpy = new StringCollection(); foreach (var fn in SMS.Default.FileNames) { ++idx; if (!cpy.Contains(fn)) cpy.Add(fn); else tab.Add(idx); } var c = tab.Count; var t = c > 0; while (c > 0) SMS.Default.FileNames.RemoveAt(tab[--c]); // Rev2 Evolutions. if (!t) return; // if (first) File Not Found. if (SMS.Default.FileNames.Count < 1) { SMS.Default.FileNames.Add( GetDefaultFileName(0)); ZeroSaveMeItem(0); } SMS.Default.Save(); } #endregion Get everything setup & ready. //\\//\\//\\//\\//\\//\\//\\//\\//\\ #endregion Startup //\\//\\//\\//\\//\\//\\//\\//\\//\\ #region Form Active Code /// Keydown Eventhandler detects /// keystrokes as part of the current scheme. /// /// /// private void SmesaKeyDown (object sender, KeyEventArgs e) { var key = e.KeyValue; if (_lastKey == 17 && (key == 107 || key == 109)) { // + is 107 & - is 109 if (key == 107) ZoomIn(); else ZoomOut(); } _lastKey = key; if (MCT.NoCount(e)) { if (ProgressBar1.Value < 100) UnshadyMethod(); return; } SaveOrNot(); if (ProgressBar1.Value < 100) UnshadyMethod(); GetCharCount(e); } private void GetCharCount( KeyEventArgs e = null, bool context = false) { var tab = TabControl.SelectedIndex; var rtb = TabControl.TabPages[tab] .Controls[_index] as RichTextBox; if (rtb == null) return; var offset = 1; // v3.2.3.46 if (context) offset = 0;// YES! // Count Fixed ^v w/ offset thusly: var d = Keys.F22;// or any Random Key. if (e != null) d = e.KeyData; if (Keys.Delete.Equals(d) || Keys.Back.Equals(d)) offset = -1; CharacterCountLabel.Text = string.Format( "{0} chars.", rtb.Text.Length + offset); } /// Determines the Users Preference /// for Saving File Automatically or Manually. /// private void SaveOrNot() { var tab = TabControl.SelectedIndex; if (tab < 0) tab = 0; if (ProgressBar1.Value <= 0) ZeroedOut(tab); else StepDown(tab); SMS.Default.BarValue[tab] = Convert.ToString( ProgressBar1.Value); SMS.Default.Save(); } /// Increments the ProgressBar /// and SaveMe values every 1/sms.step /// keystrokes. OR from 100 to 99 v26. /// Also Sets the Status Label Message. /// /// private void StepDown(int tab) { var num = GetDecimal(tab); var whole = MCT.GetWhole(num); if (num != whole && ProgressBar1.Value != 100) return; if (ProgressBar1.Value > 0) ProgressBar1.Value--; UnshadyMethod(); } private decimal GetDecimal(int tab) { decimal num; var c = SMS.Default.SaveMe.Count; if (tab < c) { try { num = Convert.ToDecimal( SMS.Default.SaveMe[tab]); } catch (FormatException) { num = 0; } catch (OverflowException) { num = 0; } } else { Check5(); return 00000; } SMS.Default.SaveMe[tab] = Convert.ToString(num += SMS.Default.Step); SMS.Default.Save(); return num; } /// Handles Zeroed state of ProgressBar. /// SaveMe is a Collection of Decimals, 1 for each tab. /// Increments the decimal, converts it back to a... /// string & assigns it to the SaveMe[indx] Collection. /// So... /// Note the dual incrementation of SaveMe[indx] /// & deci values. Adjust Step intervals in /// the Settings Designer, it's at 0.1 now. /// /// private void ZeroedOut(int tab) { // Resets ProgressBar & Status Text. if (SMS.Default.SaveSet) { if (SMS.Default.SaveIt) { SaveClick("KeyDown", EventArgs.Empty); ZeroSaveMeItem(tab); } } else SaveNotSet(tab); } private void SaveNotSet(int tab) { // If SaveSet then forget the below. var deci = Convert.ToDecimal( SMS.Default.SaveMe[tab]); SMS.Default.SaveMe[tab] = Convert.ToString(deci += SMS.Default.Step); var hits = 0; var past = Convert.ToString( 250 + SMS.Default.Step); // Move past ^ once hit. if (deci > 125 && deci < 250) hits = PromptForSave(tab, past); past = Convert.ToString( 600 + SMS.Default.Step); if (deci > 400 && deci < 600) hits = PromptForSave(tab, past); if (SMS.Default.SaveIt && SMS.Default.SaveSet) SaveClick("KeyDown", EventArgs.Empty); if (hits > 0) SetSavePref(hits, tab); SMS.Default.Save(); } private int PromptForSave( int tab, string past) { SMS.Default.SaveMe[tab] = past; KeyDown -= SmesaKeyDown; var test = MCD.GetSavePreference(); KeyDown += SmesaKeyDown; return test; } /// Handles Input from GetSavePref: /// YesNoAlways Legend: 1 = Yes, 2 = No, /// 3 = Yes as Pref. 4 = No as Pref. /// /// /// private void SetSavePref(int state, int tab) { switch (state) { case 1: SaveCurrentFile(tab); break; case 2: // do nothing break; case 3: SaveCurrentFile(tab); SMS.Default.SaveIt = true; break; case 4: SMS.Default.SaveIt = false; break; } SMS.Default.SaveSet = state > 2; SMS.Default.Save(); } #endregion Smeasa Form Active Code //\\//\\//\\//\\//\\//\\//\\//\\//\\ #region View And Zoom Menu Items private void ShowLists( object sender, EventArgs e) { string sl="", f = ""; const string lf = "\n"; sl = SMS.Default.Favorites .Cast().Aggregate( sl, (current, file) => current + (file + lf)); var app = Path.GetDirectoryName( Mapped) + SMR.Sme; if (!File.Exists(app)) { var cn = SMR.Show2; var nf = SMR.ShowList; var fn = SMR.Sme.Substring(1); var tx = string.Format( "{0}{1}{2}{3}", fn, cn, lf, nf); MessageBox.Show(tx); return; } var str = string.Format( "Files:{0}{1}", lf, sl); str = str.Replace("\\", "/"); MCT.RunApp(str, SMR.Ttl1, app); Thread.Sleep(400); f = SMS.Default.DataFolders .Cast().Aggregate( f, (current, dir) => current + (dir + lf)); var fldr = string.Format( "Folders:{0}{1}", lf, f); fldr = fldr.Replace("\\", "/"); MCT.RunApp(fldr, SMR.Ttl2, app); } // Multi-Tab Upgraded. // MCT.Wrap v4.8.2.82 25-Oct-2018 private void WordWrapClick (object sender, EventArgs e) { MCT.Wrap = // <-= 1 of 2 new lines. WordWrap.Checked = !WordWrap.Checked; for (var i = 0; i < SMS.Default .FileNames.Count; ++i) { var rtb = TabControl.TabPages[i] .Controls[_index] as RichTextBox; if (rtb == null) continue; SMS.Default.Zoo[i] = Convert.ToString( rtb.ZoomFactor); rtb.WordWrap = MCT.Wrap;// <-= 2 of 2 rtb.ZoomFactor = Convert.ToSingle( SMS.Default.Zoo[i]); } SMS.Default.Save(); } private void ZoomIndexChanged( object sender, EventArgs e) { if (Zoomed) return; Zoomed = true; var sgl = Convert.ToSingle( ZoomMenu.SelectedIndex + 1) / 10; // Multi-Tab updated Rev2. var tab = TabControl.SelectedIndex; var rtb = TabControl.TabPages[tab] .Controls[_index] as RichTextBox; if (rtb == null) return; rtb.ZoomFactor = sgl; Zoomed = false; } private void TabChange (object sender, EventArgs e) { var next = Convert.ToString( sender).Contains("Next"); var c = TabControl.TabCount; var t = TabControl.SelectedIndex; if (next) TabControl.SelectedIndex = #region Event ^ Note // ^ This li guy Triggers TabChange() event: // Then Editing and everything does the rest. // Makes sure the Filename is the Tab-text & // all that stuff, Colors per extension, etc. #endregion ++t < c ? t : 0; // else PreviousTab then. else TabControl.SelectedIndex = t-- > 0 ? t : --c; #region Event ^ Note // ^ This li guy Triggers TabChange() event: // Then Editing and everything does the rest. // Makes sure the Filename is the Tab-text & // all that stuff, Colors per extension, etc. #endregion } #endregion View, WordWrap, & Zoom Menu Items //\\//\\//\\//\\//\\//\\//\\//\\//\\ #region Closing Code /// Form Closing EVenthandler /// triggered when the Form is ready to close. /// /// /// private void SmesaClosing (object sender, FormClosingEventArgs e) { if (Watcher != null) Watcher .EnableRaisingEvents = false; CheckSaveStatus(); SaveZoomValues(); ProgressBar1.Value = 18; StatusLabel.Text = SMR.Status_Closing; ProgressBar1.Value = 42; ProgressBar1.Value = 67; SMS.Default.AppSize = Size; SMS.Default.AppLocation = Location; SMS.Default.AppColor = BackColor; ProgressBar1.Value = 83; SMS.Default.Index = TabControl.SelectedIndex; // ^ Saves current tab number. LogOut(); ProgressBar1.Value = 98; // Cuz at 100% closed you won't see it! StatusLabel.Text = SMR.Status_Bye; CheckPref2Collections(); // ^ See Preferences2.cs MWS.WriteSharedFile(BackColor); SMS.Default.Save(); Mx2.Dispose(); } private static void CheckPref2Collections() { // On Exit. var dirs = new StringCollection(); // First Files, but grab dirs on the fly. foreach (var file in SMS.Default.FileNames .Cast().Where(file => !string.IsNullOrEmpty(file) && File.Exists(file))) { dirs.Add(Path.GetDirectoryName(file)); if (!SMS.Default.Favorites.Contains(file)) SMS.Default.Favorites.Insert(0, file); } // Maintain Max Collection Count of 128 while (SMS.Default.Favorites.Count > 128) SMS.Default.Favorites.RemoveAt(128); // Then do the dirs. foreach (var dir in dirs .Cast().Where(dir => !SMS.Default.DataFolders.Contains(dir))) SMS.Default.DataFolders.Insert(0, dir); // Maintain Max Collection Count of 64 while (SMS.Default.DataFolders.Count > 64) SMS.Default.DataFolders.RemoveAt(64); var fn = Path.GetDirectoryName( BlasterPath) + SMR.Favs; if (!File.Exists(fn)) fn = Path.GetDirectoryName(Mapped) + SMR.Favs; if (!File.Exists(fn)) return; MCT.SaveList( SMS.Default.Favorites, fn); } /// Save Zoom Values to /// the Collection of same and More. /// private void SaveZoomValues() { Check5(); for (var i = 0; i < SMS.Default .FileNames.Count; ++i) { // form closing var rtb = TabControl.TabPages[i] .Controls[_index] as RichTextBox; if (rtb == null) continue; SMS.Default.Zoo[i] = Convert.ToString(rtb.ZoomFactor); SMS.Default.Curses[i] = string.Format("{0}, {1}", Convert.ToString(rtb.SelectionStart), Convert.ToString(rtb.SelectionLength)); } SMS.Default.Save(); } #endregion Closing Code //\\//\\//\\//\\//\\//\\//\\//\\//\\ // ALL test code Below here. #region TestCode private void NowTestingClick( object sender, EventArgs e) { const string t = "Now Testing Removals:\n\n"; if (!MCD.YesNoDialog((string.Format( "{0}{1}", t, DateTime.Now)))) return; // This triggers the Watcher and so forth. var list = new Collection {MCT.GetDocFolder + "\\About.txt"}; if ( //list == null || list.Count < 1) return; var file = Path.GetDirectoryName( EditorPath) + "\\Editor.sme"; var path = Path. GetFileNameWithoutExtension(file); var args = new object[] { file, SMS.Default.EditorSize, SMS.Default.EditorOffset2, list, true, path, false,// Uses... SMS.Default.EditorView2//<-= ALL 8 }; if (!MyCustomLibrary.MemoryMapper .WriteStrings(args)) throw new ArgumentException( "Favorites Testing Failed!"); } // These Methods for testing purposes // only & hidden when not testing. private void Test1Click (object sender, EventArgs e) { MessageBox.Show(string.Format("{0}{1}", "Test 1 Clicked:\n\n", DateTime.Now)); //var args = // new object[] // { // Mapped, MySize, MyOffset-2, // new Collection {1}, true, Path // .GetFileNameWithoutExtension( // Mapped), false // }; //const string txt = // "Write Bytes Failed!\n\n" + // "Please Report Error #5"; //if (!MemoryMapper. // ReverseWriteBytes(args)) // MessageBox.Show(txt); // Space For Rent. } #endregion TestCode //\\//\\//\\////\\//\\//\\////\\//\\ #region Scrap Yard //private void ShowFileNamesListClick // (object sender, EventArgs e) //{ // var msg = // SMS.Default.TestFiles.Cast() // .Aggregate("", (current, fn) => // current + (fn + ", ")); // MessageBox.Show(msg); //} //if (SMS.Default.TestFiles == null) // SMS.Default.TestFiles = // new StringCollection(); //if (SMS.Default.TestFiles != null // && SMS.Default.TestFiles // .Count.Equals(3)) //{ // var msg = // SMS.Default.TestFiles // .Cast() // .Aggregate("", (current, fn) // => current + (fn + ", ")); // MessageBox.Show(msg); //} //if (test Code.InitializeTestFiles()) //{ // Close(); // return; //} //if (SMS.Default.TestFiles == null) return; //// Launcher Mods v2.6.1.33 21-Feb-2018 //var c = SMS.Default.TestFiles.Count;//+ 2; //var args = new string[c]; //for (var i = 0; i < c; ++i) // args[i] = SMS.Default.TestFiles[i]; //if (!YesNoDialog( // "Run the Simulation Now?", "", 1)) return; //if (Watcher != null) // Watcher.EnableRaisingEvents = false; //MmfClientSideWrite(args, Mapped); //if (!YesNoDialog( // "Run the Reader Now?", "", 1)) return; //MmfServerSide(true); //if (Watcher != null) // Watcher.EnableRaisingEvents = true; //MyCustomLibrary.MCT.RunApp(args); //const string p = // "Nothing Pending."; //MessageBox.Show(p); //private static void Msg() //{ // const string msg = // // as are Calls to it. // "Under Construction, Please Return."; // MessageBox.Show(msg); //} //private void Test2() //{ // var c = SMS.Default.TestFiles.Count; // Args = new string[c]; // for (var i = 0; i < c; ++i) // Args[i] = SMS.Default.TestFiles[i]; // ParmsPassedInAtStart(); //} //var t = new test Code(1); //switch (t.Tested) //{ // case 3: // Close(); // break; // case 1: // ShowFileNamesListClick( // "", EventArgs.Empty); // break; //} //if (YesNoDialog( // "Test Parameters Passed In Now?", // "Beta Testers Only:")) //Test2(); //const string txt = "Result: \n\n"; //var test = TabPrompt( // TabControl.SelectedIndex); ////var test = MCD.GetSavePref(); //MessageBox.Show(txt + test); //MmfClientSideWrite(args); ////test Code for ByteReader //MmfServerSide(true); #endregion Scrap Yard //\\//\\//\\////\\//\\//\\////\\//\\ } }