GlobalAccessSoftware icon

Quick And Easy Text Editor in C#.NET

GlobalAccessSoftware | PRO | 04/22/24 01:16:39 PM UTC (Edited) | 0 ⭐ | 385 👁️ | Never ⏰ | []
C# |

10.13 KB

|

None

|

0 👍

/

0 👎

 
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
// 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?
    }
    
    /// <summary> Saves Duplicating this Code Twice Here.
    /// <returns></returns>
    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
    //\\//\\//\\////\\//\\//\\////\\//\\//\\////\\//\\//\\//
    
 
  }
}

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎