using FastReport.Forms; using FastReport.Utils; using System; using System.Windows.Forms; namespace FastReport.Design.PageDesigners.Code { internal class FRXPageDesigner : PageDesignerBase { #region Fields private TextBox FEdit; private bool canModify; #endregion #region Properties public TextBox Edit { get { return FEdit; } } #endregion #region Private Methods private void CreateEdit() { FEdit = new TextBox(); FEdit.Multiline = true; FEdit.AcceptsReturn = true; FEdit.AcceptsTab = true; FEdit.WordWrap = false; FEdit.Font = DrawUtils.FixedFont; FEdit.Dock = DockStyle.Fill; Edit.MaxLength = int.MaxValue; FEdit.BorderStyle = BorderStyle.None; FEdit.TextChanged += FEdit_TextChanged; Controls.Add(FEdit); FEdit.ScrollBars = ScrollBars.Both; FEdit.ImeMode = ImeMode.On; } private void SetText() { canModify = false; Edit.Text = Designer.Report.SaveToString(); Edit.Modified = false; canModify = true; } private void FEdit_TextChanged(object sender, EventArgs e) { if (canModify) Designer.SetModified(null, "no-undo"); } public void CommitChanges() { if (Edit.Modified) { Edit.Modified = false; Designer.ActiveReportTab.UpdateFromFRX(Edit.Text); } } #endregion #region Public Methods public void UpdateFont() { } public override bool CanCopy() => true; public override void Copy() { Edit.Copy(); } public override void Cut() { Edit.Cut(); } public override bool CanPaste() => true; public override void Paste() { Edit.Paste(); } public override bool CanUndo() { return Edit.CanUndo; } public override void Undo() { Edit.Undo(); } public override void ResetModified() { Edit.Modified = false; } public override void FillObjects(bool resetSelection) { // do nothing } public override void PageDeactivated() { base.PageDeactivated(); CommitChanges(); } public override void PageActivated() { base.PageActivated(); SetText(); } #endregion #region IDesignerPlugin public override void SaveState() { FRXPageSettings.SaveState(); } public override void RestoreState() { } public override DesignerOptionsPage GetOptionsPage() { return new FRXPageOptions(this); } #endregion public FRXPageDesigner(Designer designer) : base(designer) { Name = "FRX"; CreateEdit(); } } }