123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412 |
- using System;
- using System.Collections.Generic;
- using System.Drawing;
- using System.Windows.Forms;
- using FastReport.Utils;
- using FastReport.Data;
- using System.Reflection;
- namespace FastReport.Forms
- {
- internal partial class RichEditorForm : BaseForm
- {
- private RichObject rich;
- private bool updating;
- private static List<string> expandedNodes;
- private bool textChanged;
- private string GetTextWithBrackets(string text)
- {
- string[] brackets = rich.Brackets.Split(',');
- return brackets[0] + text + brackets[1];
- }
- private void UpdateControls()
- {
- if (updating)
- return;
- updating = true;
- Font font = rtbText.SelectionFont;
- if (font != null)
- {
- cbxFontName.FontName = font.Name;
- cbxFontSize.FontSize = font.Size;
- btnBold.Checked = font.Bold;
- btnItalic.Checked = font.Italic;
- btnUnderline.Checked = font.Underline;
- }
- else
- {
- cbxFontName.FontName = "Microsoft Sans Serif";
- cbxFontSize.FontSize = 8.5f;
- }
- TextAlign align = rtbText.SelectionAlignment;
- btnAlignLeft.Checked = align == TextAlign.Left;
- btnAlignCenter.Checked = align == TextAlign.Center;
- btnAlignRight.Checked = align == TextAlign.Right;
- btnAlignJustify.Checked = align == TextAlign.Justify;
- btnColor.Color = rtbText.SelectionColor;
- btnSubscript.Checked = rtbText.SelectionCharOffset == -4;
- btnSuperscript.Checked = rtbText.SelectionCharOffset == 4;
- btnBullets.Checked = rtbText.SelectionBullet;
- updating = false;
- }
- private void btnOk_Click(object sender, EventArgs e)
- {
- DialogResult = DialogResult.OK;
- }
- private void btnCancel_Click(object sender, EventArgs e)
- {
- DialogResult = DialogResult.Abort;
- }
- private void btnOpen_Click(object sender, EventArgs e)
- {
- using (OpenFileDialog dialog = new OpenFileDialog())
- {
- dialog.Filter = Res.Get("FileFilters,RtfFile");
- if (dialog.ShowDialog() == DialogResult.OK)
- rtbText.LoadFile(dialog.FileName);
- }
- }
- private void btnSave_Click(object sender, EventArgs e)
- {
- using (SaveFileDialog dialog = new SaveFileDialog())
- {
- dialog.Filter = Res.Get("FileFilters,RtfFile");
- dialog.DefaultExt = "rtf";
- if (dialog.ShowDialog() == DialogResult.OK)
- rtbText.SaveFile(dialog.FileName);
- }
- }
- private void btnUndo_Click(object sender, EventArgs e)
- {
- rtbText.Undo();
- }
- private void btnRedo_Click(object sender, EventArgs e)
- {
- rtbText.Redo();
- }
- private void cbxFontName_FontSelected(object sender, EventArgs e)
- {
- if (!updating)
- {
- rtbText.SetSelectionFont(cbxFontName.FontName);
- UpdateControls();
- rtbText.Focus();
- }
- }
- private void cbxFontSize_SizeSelected(object sender, EventArgs e)
- {
- if (!updating)
- {
- rtbText.SetSelectionSize((int)cbxFontSize.FontSize);
- rtbText.Focus();
- }
- }
- private void btnBold_Click(object sender, EventArgs e)
- {
- if (!updating)
- rtbText.SetSelectionBold(btnBold.Checked);
- }
- private void btnItalic_Click(object sender, EventArgs e)
- {
- if (!updating)
- rtbText.SetSelectionItalic(btnItalic.Checked);
- }
- private void btnUnderline_Click(object sender, EventArgs e)
- {
- if (!updating)
- rtbText.SetSelectionUnderline(btnUnderline.Checked);
- }
- private void btnAlignLeft_Click(object sender, EventArgs e)
- {
- if (!updating)
- {
- rtbText.SelectionAlignment = TextAlign.Left;
- UpdateControls();
- }
- }
- private void btnAlignCenter_Click(object sender, EventArgs e)
- {
- if (!updating)
- {
- rtbText.SelectionAlignment = TextAlign.Center;
- UpdateControls();
- }
- }
- private void btnAlignRight_Click(object sender, EventArgs e)
- {
- if (!updating)
- {
- rtbText.SelectionAlignment = TextAlign.Right;
- UpdateControls();
- }
- }
- private void btnAlignJustify_Click(object sender, EventArgs e)
- {
- if (!updating)
- {
- rtbText.SelectionAlignment = TextAlign.Justify;
- UpdateControls();
- }
- }
- private void btnColor_ButtonClick(object sender, EventArgs e)
- {
- if (!updating)
- rtbText.SelectionColor = btnColor.DefaultColor;
- }
- private void btnSubscript_Click(object sender, EventArgs e)
- {
- if (!updating)
- {
- rtbText.SelectionCharOffset = btnSubscript.Checked ? -4 : 0;
- UpdateControls();
- }
- }
- private void btnSuperscript_Click(object sender, EventArgs e)
- {
- if (!updating)
- {
- rtbText.SelectionCharOffset = btnSuperscript.Checked ? 4 : 0;
- UpdateControls();
- }
- }
- private void btnBullets_Click(object sender, EventArgs e)
- {
- if (!updating)
- rtbText.SelectionBullet = btnBullets.Checked;
- }
- private void rtbText_SelectionChanged(object sender, EventArgs e)
- {
- UpdateControls();
- }
- private void splitContainer1_SplitterMoved(object sender, SplitterEventArgs e)
- {
- rtbText.Focus();
- }
- private void tvData_AfterSelect(object sender, TreeViewEventArgs e)
- {
- bool descrVisible = tvData.SelectedNode != null &&
- (tvData.SelectedNode.Tag is MethodInfo || tvData.SelectedNode.Tag is SystemVariable);
- expandableSplitter1.Visible = descrVisible;
- lblDescription.Visible = descrVisible;
- if (descrVisible)
- lblDescription.ShowDescription(rich.Report, tvData.SelectedNode.Tag);
- }
- private void tvData_ItemDrag(object sender, ItemDragEventArgs e)
- {
- tvData.SelectedNode = e.Item as TreeNode;
- if (tvData.SelectedItem != "")
- tvData.DoDragDrop(e.Item, DragDropEffects.Move);
- else
- tvData.DoDragDrop(e.Item, DragDropEffects.None);
- }
- private void rtbText_DragOver(object sender, DragEventArgs e)
- {
- e.Effect = e.AllowedEffect;
- }
- private void rtbText_DragDrop(object sender, DragEventArgs e)
- {
- rtbText.SelectedText = GetTextWithBrackets(tvData.SelectedItem);
- rtbText.Focus();
- }
- private void tvData_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
- {
- if (tvData.SelectedItem != "")
- {
- rtbText.SelectedText = GetTextWithBrackets(tvData.SelectedItem);
- rtbText.Focus();
- }
- }
- private void rtbText_TextChanged(object sender, EventArgs e)
- {
- textChanged = true;
- }
- private void RichEditorForm_Shown(object sender, EventArgs e)
- {
- UpdateControls();
- rtbText.Focus();
- }
- private void RichEditorForm_FormClosing(object sender, FormClosingEventArgs e)
- {
- if (DialogResult != DialogResult.OK && DialogResult != DialogResult.Abort && textChanged)
- {
- string askText = Res.Get("Forms,RichTextEditor,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 RichEditorForm_FormClosed(object sender, FormClosedEventArgs e)
- {
- Done();
- }
- protected override void SaveState()
- {
- base.SaveState();
- Storage.SetDip("Splitter", splitContainer1.SplitterDistance);
- Storage.SetDip("DescriptionHeight", lblDescription.Height);
- expandedNodes = tvData.ExpandedNodes;
- }
- protected override void RestoreState()
- {
- base.RestoreState();
- splitContainer1.SplitterDistance = Storage.GetDip("Splitter", 550, 50, Width - 50);
- lblDescription.Height = Storage.GetDip("DescriptionHeight", 50, 50, 200);
- if (expandedNodes != null)
- tvData.ExpandedNodes = expandedNodes;
- }
- public override void Localize()
- {
- Text = Res.Get("Forms,RichTextEditor");
- MyRes res = new MyRes("Designer,Toolbar,Standard");
- btnUndo.ToolTipText = res.Get("Undo");
- btnRedo.ToolTipText = res.Get("Redo");
- res = new MyRes("Designer,Toolbar,Text");
- cbxFontName.ToolTipText = res.Get("Name");
- cbxFontSize.ToolTipText = res.Get("Size");
- btnBold.ToolTipText = res.Get("Bold");
- btnItalic.ToolTipText = res.Get("Italic");
- btnUnderline.ToolTipText = res.Get("Underline");
- btnAlignLeft.ToolTipText = res.Get("Left");
- btnAlignCenter.ToolTipText = res.Get("Center");
- btnAlignRight.ToolTipText = res.Get("Right");
- btnAlignJustify.ToolTipText = res.Get("Justify");
- btnColor.ToolTipText = res.Get("Color");
- res = new MyRes("Forms,RichTextEditor");
- btnOk.ToolTipText = Res.Get("Buttons,OK");
- btnCancel.ToolTipText = Res.Get("Buttons,Cancel");
- btnOpen.ToolTipText = res.Get("Open");
- btnSave.ToolTipText = res.Get("Save");
- btnSubscript.ToolTipText = res.Get("Subscript");
- btnSuperscript.ToolTipText = res.Get("Superscript");
- btnBullets.ToolTipText = res.Get("Bullets");
- }
- public override void UpdateDpiDependencies()
- {
- base.UpdateDpiDependencies();
- ts1.Height = this.LogicalToDevice(28);
- ts1.Font = Font;
- cbxFontName.Owner = this;
- cbxFontName.Font = Font;
- cbxFontName.Width = this.LogicalToDevice(140);
- cbxFontName.UpdateDpiDependencies();
- cbxFontSize.Owner = this;
- cbxFontSize.Font = Font;
- cbxFontSize.Width = this.LogicalToDevice(50);
- cbxFontSize.UpdateDpiDependencies();
- tvData.ImageList = GetImages();
- btnOk.Image = GetImage(210);
- btnCancel.Image = GetImage(212);
- btnOpen.Image = GetImage(1);
- btnSave.Image = GetImage(2);
- btnUndo.Image = GetImage(8);
- btnRedo.Image = GetImage(9);
- btnBold.Image = GetImage(20);
- btnItalic.Image = GetImage(21);
- btnUnderline.Image = GetImage(22);
- btnAlignLeft.Image = GetImage(25);
- btnAlignCenter.Image = GetImage(26);
- btnAlignRight.Image = GetImage(27);
- btnAlignJustify.Image = GetImage(28);
- btnSubscript.Image = GetImage(171);
- btnSuperscript.Image = GetImage(172);
- btnBullets.Image = GetImage(170);
- btnColor.Image = GetImage(23);
- }
- private void Init()
- {
- btnColor.ImageIndex = 23;
- btnColor.DefaultColor = Color.Black;
- ts1.GripStyle = ToolStripGripStyle.Hidden;
- ts1.Renderer = UIStyleUtils.GetToolStripRenderer(UIStyle.Light);
- tvData.CreateNodes(rich.Report.Dictionary);
- if (rich.Text != null && rich.Text.StartsWith(@"{\rtf"))
- rtbText.Rtf = rich.Text;
- else
- rtbText.Text = rich.Text;
- rtbText.Modified = false;
- rtbText.AllowDrop = true;
- rtbText.DragOver += rtbText_DragOver;
- rtbText.DragDrop += rtbText_DragDrop;
- textChanged = false;
- }
- private void Done()
- {
- if (DialogResult == DialogResult.OK)
- rich.Text = rtbText.Rtf;
- }
- public RichEditorForm(RichObject rich)
- {
- this.rich = rich;
- CanSaveRestoreState = true;
- InitializeComponent();
- Localize();
- Init();
- UIUtils.CheckRTL(this);
- UpdateDpiDependencies();
- }
- }
- }
|