//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\ // ShowMeEdit.cs v5.7.7.86 by -JpE- //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\ // Modeled after ShowMeForm But Editable // Ready to testwell and evolve, etc. // v5.7.7.88 21-Aug-2017 Early Beta // Still Designing as I Develop this. // v5.7.7.89 Opts Out of Dual Use mods. // Leave commented out code for that in // v5.7.7.91 MUMs the Word. 22-Aug-2017 // v5.7.8.05 28-Aug-2017 Context Menu // v5.7.8.07 30-Aug--17 Fixed & trimmed. // v5.7.8.17 08-Sep-2017 Prep for Rev. // v5.7.8.21 19-Sep-2017 File-Menu stuff //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\ // Dependencies using System; using System.Globalization; using System.IO; using System.Windows.Forms; // Class Aliases using AP = WhoAreYou.AppStatic; // Properties Aliases using PS = WhoAreYou.Properties.PersonSettings; using PR = WhoAreYou.Properties.PersonResources; using OS = WhoAreYou.Properties.OptionsSettings; using AU = WhoAreYou.Properties.AppUserSettings; namespace WhoAreYou { public sealed partial class ShowMeEdit : Form { // Class Global Properties private bool Ok { get; set; } private string TextWas { get; set; } private readonly string _original; private string Edited { get; set; } public string // ^v Cool Trick, NOTE! EditedText { get{ return Edited; } } private string ClipBoard { get; set; } // Class Global ^ for the Edit/Context Menu Items. #region ShowMeEdit Form Related Code v5.7.8.03 28-Aug-2017 public ShowMeEdit(string text, string title) //, bool read) // MUMs { InitializeComponent(); //ShowMeRichTextBox.ReadOnly = read; // <-= ^v Multiple Use Mods. _original = TextWas = ShowMeRichTextBox.Text = Edited = text; // NOTE: quadruple assignment ^ at Start. Text += title; // Edit This ^ text file. // // KEEP THIS! v^ MUMs the word. //SaveButton.Visible = OkButton.Visible = // MUMs ^ // MenuStrip.Visible = !read; //if (read) CanceButton.Text = PR.SME_EditClose; } private void OkButtonClick(object sender, EventArgs e) { if (Edited != ShowMeRichTextBox.Text) { if (AP.YesNoDialog( "Unsaved Changes were made.\n\n" + "Would you like to Save These Changes?", "Save Changes?")) { Edited = ShowMeRichTextBox.Text; Ok = true; } } Close(); } private void SaveButtonClick(object sender, EventArgs e) { if (Edited == ShowMeRichTextBox.Text) return; Ok = true; Edited = TextWas = ShowMeRichTextBox.Text; if (OS.Default.MiniVerb) return; MessageBox.Show(PR.SME_ChangesSaved); } private void EditFormClosing( object sender, FormClosingEventArgs e) { if (!Ok) Edited = TextWas; else if (ShowMeRichTextBox.Text != Edited) OkButtonClick("Form Closing", EventArgs.Empty); PS.Default.Save(); } #endregion ShowMeEdit Form Related Code v5.7.8.03 28-Aug-2017 //\\//\\//\\////\\//\\//\\////\\//\\//\\////\\//\\//\\// #region File Menu private void SaveChangesClick(object sender, EventArgs e) { Ok = true; Edited = TextWas = ShowMeRichTextBox.Text; } // Start over with Previous Text // if that equals the _original txt then no Ok. private void RevertClick(object sender, EventArgs e) { if (!OS.Default.MiniVerb) if (!AP.YesNoDialog( "Revert back to previous save?")) return; ShowMeRichTextBox.Text = TextWas; if (TextWas.Equals(_original)) Ok = false; } private void ClearAllClick(object sender, EventArgs e) { const string txt = "Wipe this entire document:\n\n" + "Are You Sure?"; if (!OS.Default.MiniVerb) if (!AP.YesNoDialog( txt, "Clear All Text?")) return; TextWas = ShowMeRichTextBox.Text; ShowMeRichTextBox.Text = ""; } // todo Largely Completed Above Here. /\/\/\/\/\/\/\/\/\ private void ImportClick(object sender, EventArgs e) { // todo testwell var fn = GetDefaultFileName(); if (!string.IsNullOrEmpty(PS.Default.SME_Imported)) fn = PS.Default.SME_Imported; else PS.Default.SME_Imported = fn; // <-= TestWell this branch. const string tt = "Importing this text file:"; using (var d = new OpenFileDialog()) { d.Title = tt; d.FileName = Path.GetFileName(fn); d.InitialDirectory = Path.GetDirectoryName(fn); d.DefaultExt = PS.Default.TxtExt; if (!d.ShowDialog().Equals(DialogResult.OK) || string.IsNullOrEmpty(d.FileName)) return; PS.Default.SME_Imported = d.FileName; } TextWas = ShowMeRichTextBox.Text = File.ReadAllText(PS.Default.SME_Imported); PS.Default.Save(); //Validate(); // todo remnant? } /// Saves Duplicating this Code Twice Here. /// private static string GetDefaultFileName() { var fn = AU.Default.RootDir + "\\" + AU.Default.FileName; var rc = (InfoForm.CurrentRecord + 1) .ToString(CultureInfo.InvariantCulture); fn = fn.Substring(0, fn.Length - 4) + "_Rec" + rc + "_Note.txt"; return fn; } private void ExportClick(object sender, EventArgs e) { var fn = GetDefaultFileName(); if (!string.IsNullOrEmpty(PS.Default.SME_Exported)) fn = PS.Default.SME_Exported; // test this branch now! else PS.Default.SME_Exported = fn; // this branch tests well... while (File.Exists(fn)) fn = AP.ItsACopy(fn); // todo test this too // but it's 100% tested code reused here as far // as the AppStatic Class (AP) is concerned.. const string tt = "Exporting this to text file:"; using (var s = new SaveFileDialog()) { s.Title = tt; s.FileName = Path.GetFileName(fn); s.InitialDirectory = Path.GetDirectoryName(fn); if (!s.ShowDialog().Equals(DialogResult.OK) || string.IsNullOrEmpty(s.FileName)) return; PS.Default.SME_Exported = s.FileName; } // Now simply Write the string to that path. File.WriteAllText(PS.Default.SME_Exported, ShowMeRichTextBox.Text); PS.Default.Save(); } #endregion File Menu //\\//\\//\\////\\//\\//\\////\\//\\//\\////\\//\\//\\// #region EditMenu, ClipBoard && ContextMenu Items covered here. /* Brought in from InfoFormMenuAndEdit.cs: * v5.7.8.03 28-Aug-2017 * Allows all the functionality of an editor. * Sorta, working on it anyway. Not to bad of a start. */ private void UndoClick(object sender, EventArgs e) { if (ActiveControl == null) return; var tx = ActiveControl as RichTextBox; if (tx != null) { ClipBoard = tx.SelectedText; tx.Undo(); } var rtx = ActiveControl as RichTextBox; if (rtx == null) return; ClipBoard = rtx.SelectedText; rtx.Undo(); } private void RedoClick(object sender, EventArgs e) { if (ActiveControl == null) return; var tx = ActiveControl as RichTextBox; if (tx != null) { tx.SelectedText = ClipBoard; } var rtx = ActiveControl as RichTextBox; if (rtx == null) return; rtx.SelectedText = ClipBoard; rtx.Redo(); } private void CutClick(object sender, EventArgs e) { if (ActiveControl == null) return; var tx = ActiveControl as RichTextBox; if (tx != null) { ClipBoard = tx.SelectedText; tx.Cut(); } var rtx = ActiveControl as RichTextBox; if (rtx == null) return; ClipBoard = rtx.SelectedText; rtx.Cut(); } private void CopyClick(object sender, EventArgs e) { if (ActiveControl == null) return; var tx = ActiveControl as RichTextBox; if (tx != null) { ClipBoard = tx.SelectedText; tx.Copy(); } var rtx = ActiveControl as RichTextBox; if (rtx == null) return; ClipBoard = rtx.SelectedText; rtx.Copy(); } private void PasteClick(object sender, EventArgs e) { if (ActiveControl == null) return; var tx = ActiveControl as RichTextBox; if (tx != null) { ClipBoard = tx.SelectedText; tx.Paste(); } var rtx = ActiveControl as RichTextBox; if (rtx == null) return; ClipBoard = rtx.SelectedText; //rtx.Paste(); } private void SelectAllClick(object sender, EventArgs e) { if (ActiveControl == null) return; var tx = ActiveControl as RichTextBox; if (tx != null) { tx.SelectAll(); } var rtx = ActiveControl as RichTextBox; if (rtx == null) return; rtx.SelectAll(); } #endregion Edit Menu //\\//\\//\\////\\//\\//\\////\\//\\//\\////\\//\\//\\// #region Options Menu private void ChangeFontClick(object sender, EventArgs e) { var f = PS.Default.SME_Font; Zone(); // todo } private void BackColorClick(object sender, EventArgs e) { var bc = PS.Default.SME_BackColor; using (var c = new ColorDialog()) { c.ShowDialog(); } Zone(); // todo } private void ForeColorClick(object sender, EventArgs e) { var fc = PS.Default.SME_ForeColor; using (var c = new ColorDialog()) { c.ShowDialog(); } Zone(); // todo } // todo testcode private static void Zone() { const string t = "Under Construction, Please Return."; MessageBox.Show(t); } private void WordWrapClick(object sender, EventArgs e) { WordWrapMenuItem.Checked = ShowMeRichTextBox.WordWrap = !ShowMeRichTextBox.WordWrap; } #endregion Options Menu //\\//\\//\\////\\//\\//\\////\\//\\//\\////\\//\\//\\// } }