123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255 |
- using FastReport.Utils;
- using System;
- using System.Drawing;
- using System.IO;
- using System.Text;
- using System.Windows.Forms;
- namespace FastReport.Forms
- {
- internal partial class JsonEditorForm : BaseDialogForm
- {
- #region Private Fields
- private bool textChanged;
- #endregion Private Fields
- #region Public Properties
- public string JsonText
- {
- get { return tbJson.Text; }
- set
- {
- tbJson.Text = value;
- textChanged = false;
- }
- }
- public void SetToReadOnly()
- {
- tbJson.ReadOnly = true;
- btnOpen.Enabled = false;
- btnFormat.Enabled = false;
- btnOk.Left = btnCancel.Left;
- btnOk.Top = btnCancel.Top;
- btnCancel.Visible = false;
- btnCancel.Enabled = false;
- MyRes res = new MyRes("Forms,JsonEditor");
- Text = res.Get("");
- if (tbJson.ReadOnly)
- {
- Text += " " + res.Get("Readonly");
- }
- }
- #endregion Public Properties
- #region Public Constructors
- public JsonEditorForm()
- {
- CanSaveRestoreState = true;
- InitializeComponent();
- Localize();
- UIUtils.CheckRTL(this);
- UpdateDpiDependencies();
- }
- #endregion Public Constructors
- #region Public Methods
- protected override void SaveState()
- {
- base.SaveState();
- Storage.SetBool("WordWrap", cbWordWrap.Checked);
- Storage.SetStr("Encoding", cbEnconding.SelectedItem is MyEncodingInfo info ? info.Name : Encoding.UTF8.WebName);
- }
- protected override void RestoreState()
- {
- base.RestoreState();
- cbWordWrap.Checked = Storage.GetBool("WordWrap");
- string encoding = Storage.GetStr("Encoding");
- int i = 0;
- foreach (object item in cbEnconding.Items)
- {
- if (item is MyEncodingInfo)
- if ((item as MyEncodingInfo).Name == encoding)
- {
- cbEnconding.SelectedIndex = i;
- break;
- }
- i++;
- }
- if (i >= cbEnconding.Items.Count)
- cbEnconding.SelectedIndex = 0;
- }
- public override void Localize()
- {
- base.Localize();
- MyRes res = new MyRes("Forms,TextEditor");
- cbWordWrap.Text = res.Get("WordWrap");
- res = new MyRes("Forms,JsonEditor");
- Text = res.Get("");
- if (tbJson.ReadOnly)
- {
- Text += " " + res.Get("Readonly");
- }
- btnOpen.Text = res.Get("Open");
- btnSave.Text = res.Get("Save");
- btnFormat.Text = res.Get("FormatJson");
- cbEnconding.Items.Clear();
- cbEnconding.Items.Add(new MyEncodingInfo(Encoding.UTF8));
- cbEnconding.SelectedIndex = 0;
- cbEnconding.Items.Add(new MyEncodingInfo(Encoding.ASCII));
- cbEnconding.Items.Add(new MyEncodingInfo(Encoding.Unicode));
- cbEnconding.Items.Add(new MyEncodingInfo(Encoding.BigEndianUnicode));
- cbEnconding.Items.Add(new MyEncodingInfo(Encoding.UTF7));
- cbEnconding.Items.Add(new MyEncodingInfo(Encoding.UTF32));
- cbEnconding.Items.Add("—————");
- foreach (MyEncodingInfo info in MyEncodingInfo.GetEncodings())
- {
- cbEnconding.Items.Add(info);
- }
- }
- public override void UpdateDpiDependencies()
- {
- base.UpdateDpiDependencies();
- btnOpen.Image = GetImage(1);
- btnSave.Image = GetImage(2);
- btnFormat.Image = GetImage(29);
- tbJson.Font = DrawUtils.FixedFont;
- MinimumSize = this.LogicalToDevice(new Size(320, 320));
- }
- #endregion Public Methods
- #region Private Methods
- private void BtnOpen_Click(object sender, EventArgs e)
- {
- OpenFileDialog ofd = new OpenFileDialog();
- ofd.Filter = Res.Get("Forms,JsonEditor,Filter");
- if (ofd.ShowDialog() == DialogResult.OK)
- {
- try
- {
- tbJson.Text = File.ReadAllText(ofd.FileName, Encoding.GetEncoding((cbEnconding.SelectedItem as MyEncodingInfo).Name));
- }
- catch (Exception ex)
- {
- ExceptionForm exceptionForm = new ExceptionForm(ex);
- exceptionForm.ShowDialog();
- }
- }
- }
- private void CbEnconding_SelectedIndexChanged(object sender, EventArgs e)
- {
- if (cbEnconding.SelectedIndex > 0 && !(cbEnconding.SelectedItem is MyEncodingInfo))
- {
- cbEnconding.SelectedIndex = 0;
- }
- }
- private void BtnSave_Click(object sender, EventArgs e)
- {
- SaveFileDialog sfd = new SaveFileDialog();
- sfd.Filter = Res.Get("Forms,JsonEditor,Filter");
- if (sfd.ShowDialog() == DialogResult.OK)
- {
- try
- {
- File.WriteAllText(sfd.FileName, tbJson.Text, Encoding.GetEncoding((cbEnconding.SelectedItem as MyEncodingInfo).Name));
- }
- catch (Exception ex)
- {
- ExceptionForm exceptionForm = new ExceptionForm(ex);
- exceptionForm.ShowDialog();
- }
- }
- }
- private void BtnFormat_Click(object sender, EventArgs e)
- {
- try
- {
- if (tbJson.Text.Trim().Length > 0)
- {
- JsonBase obj = JsonBase.FromString(tbJson.Text);
- StringBuilder sb = new StringBuilder();
- obj.WriteTo(sb, 2);
- tbJson.Text = sb.ToString();
- }
- }
- catch (Exception ex)
- {
- ExceptionForm exceptionForm = new ExceptionForm(ex);
- exceptionForm.ShowDialog();
- }
- }
- private void CbWordWrap_CheckedChanged(object sender, EventArgs e)
- {
- tbJson.WordWrap = cbWordWrap.Checked;
- }
- private void JsonEditorForm_FormClosing(object sender, FormClosingEventArgs e)
- {
- if (DialogResult != DialogResult.OK && DialogResult != DialogResult.Abort && textChanged)
- {
- string askText = Res.Get("Forms,TextEditor,ConfirmChanges");
- DialogResult askResult = FRMessageBox.Confirm(askText, MessageBoxButtons.YesNoCancel);
- switch (askResult)
- {
- case DialogResult.Yes:
- DialogResult = DialogResult.OK;
- break;
- case DialogResult.No:
- break;
- case DialogResult.Cancel:
- e.Cancel = true;
- break;
- }
- }
- }
- private void TbJson_TextChanged(object sender, EventArgs e)
- {
- textChanged = true;
- }
- private void JsonEditorForm_Shown(object sender, System.EventArgs e)
- {
- tbJson.Height = cbWordWrap.Top - tbJson.Top - 16;
- }
- #endregion Private Methods
- }
- }
|