123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298 |
- using System;
- using System.ComponentModel;
- using System.Drawing;
- using System.Drawing.Drawing2D;
- using System.Windows.Forms;
- using FastReport.Design;
- using FastReport.Design.PageDesigners.Dialog;
- using FastReport.Utils;
- namespace FastReport.Dialog
- {
- partial class DialogPage
- {
- #region Private Fields
- private Bitmap formBitmap;
- #endregion Private Fields
- #region Public Properties
- /// <inheritdoc/>
- [Browsable(false)]
- public override float Left
- {
- get { return base.Left; }
- set { base.Left = value; }
- }
- /// <inheritdoc/>
- [Browsable(false)]
- public override float Top
- {
- get { return base.Top; }
- set { base.Top = value; }
- }
- /// <inheritdoc/>
- public override SizeF SnapSize
- {
- get { return new SizeF(DialogWorkspace.Grid.SnapSize, DialogWorkspace.Grid.SnapSize); }
- }
- #endregion Public Properties
- #region Internal Properties
- [Browsable(false)]
- internal Bitmap FormBitmap
- {
- get
- {
- if (formBitmap == null)
- ResetFormBitmap();
- return formBitmap;
- }
- }
- #endregion Internal Properties
- #region Public Methods
- /// <inheritdoc/>
- public override void DrawSelection(FRPaintEventArgs e)
- {
- float m = Form.DpiMultiplier();
- Pen pen = e.Cache.GetPen(Color.Gray, m, DashStyle.Dot);
- e.Graphics.DrawRectangle(pen,
- -Form.ClientAreaOffset().X - 2 * m,
- -Form.ClientAreaOffset().Y - 2 * m,
- Form.FrameSize().Width + 3.5f * m,
- Form.FrameSize().Height + 3.5f * m);
- base.DrawSelection(e);
- }
- /// <inheritdoc/>
- public override Type GetPageDesignerType()
- {
- return typeof(DialogPageDesigner);
- }
- /// <inheritdoc/>
- public override ContextMenuBase GetContextMenu()
- {
- return new DialogPageMenu(Report.Designer);
- }
- /// <inheritdoc/>
- public override void HandleDoubleClick()
- {
- Report.Designer.ActiveReportTab.SwitchToCode();
- if (String.IsNullOrEmpty(LoadEvent))
- {
- string newEventName = Name + "_Load";
- if (Report.CodeHelper.AddHandler(typeof(EventHandler), newEventName))
- {
- LoadEvent = newEventName;
- Report.Designer.SetModified(null, "Change");
- }
- }
- else
- {
- Report.CodeHelper.LocateHandler(LoadEvent);
- }
- }
- /// <inheritdoc/>
- public override void HandleMouseDown(FRMouseEventArgs e)
- {
- e.handled = true;
- e.mode = WorkspaceMode2.SelectionRect;
- e.activeObject = this;
- }
- /// <inheritdoc/>
- public override void HandleMouseHover(FRMouseEventArgs e)
- {
- base.HandleMouseHover(e);
- if (e.handled)
- e.cursor = Cursors.Default;
- }
- /// <inheritdoc/>
- public override void HandleMouseUp(FRMouseEventArgs e)
- {
- base.HandleMouseUp(e);
- if (e.mode == WorkspaceMode2.SelectionRect)
- {
- SelectedObjectCollection selection = Report.Designer.SelectedObjects;
- selection.Clear();
- // find objects inside the selection rect
- foreach (DialogComponentBase c in Controls)
- {
- e.handled = false;
- c.HandleMouseUp(e);
- // object is inside
- if (e.handled)
- selection.Add(c);
- }
- if (selection.Count == 0)
- selection.Add(this);
- }
- }
- /// <inheritdoc/>
- public override void SetDefaults()
- {
- ButtonControl btnOk = new ButtonControl();
- btnOk.Parent = this;
- btnOk.Name = CreateButtonName("btnOk");
- btnOk.Text = Res.Get("Buttons,OK");
- btnOk.Location = new Point((int)ClientSize.Width - 166, (int)ClientSize.Height - 31);
- btnOk.Size = new Size(75, 23);
- btnOk.DialogResult = DialogResult.OK;
- btnOk.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
- ButtonControl btnCancel = new ButtonControl();
- btnCancel.Parent = this;
- btnCancel.Name = CreateButtonName("btnCancel");
- btnCancel.Text = Res.Get("Buttons,Cancel");
- btnCancel.Location = new Point((int)ClientSize.Width - 83, (int)ClientSize.Height - 31);
- btnCancel.Size = new Size(75, 23);
- btnCancel.DialogResult = DialogResult.Cancel;
- btnCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
- AcceptButton = btnOk;
- CancelButton = btnCancel;
- Form.AutoScaleDimensions = new SizeF(96f, 96f);
- Form.AutoScaleMode = AutoScaleMode.Dpi;
- base.SetDefaults();
- }
- #endregion Public Methods
- #region Internal Methods
- internal void ResetFormBitmap()
- {
- if (formBitmap != null)
- {
- formBitmap.Dispose();
- formBitmap = null;
- }
- if (!IsDesigning)
- return;
- formBitmap = DrawUtils.DrawToBitmap(Form, false);
- }
- #endregion
- #region Protected Methods
- /// <inheritdoc/>
- protected override SelectionPoint[] GetSelectionPoints()
- {
- return new SelectionPoint[]
- {
- new SelectionPoint(
- Form.FrameSize().Width - Form.ClientAreaOffset().X + 1,
- Form.FrameSize().Height - Form.ClientAreaOffset().Y + 1, SizingPoint.RightBottom),
- new SelectionPoint(
- Form.FrameSize().Width / 2 - Form.ClientAreaOffset().X,
- Form.FrameSize().Height - Form.ClientAreaOffset().Y + 1, SizingPoint.BottomCenter),
- new SelectionPoint(
- Form.FrameSize().Width - Form.ClientAreaOffset().X + 1,
- Form.FrameSize().Height / 2 - Form.ClientAreaOffset().Y, SizingPoint.RightCenter)
- };
- }
- #endregion Protected Methods
- #region Private Methods
- private bool ShouldSerializeBackColor()
- {
- return BackColor != SystemColors.Control;
- }
- //private bool ShouldSerializeFont()
- //{
- // return Font.Name != "Tahoma" || Font.Size != 8 || Font.Style != FontStyle.Regular;
- //}
- #endregion Private Methods
- }
- internal static class DialogPageFormMixins
- {
- #if AVALONIA
- public static Size FrameSize(this Form form) => new Size(form.Width + (int)(8 * form.DpiScale), form.Height + (int)(30 * form.DpiScale));
- public static Point ClientAreaOffset(this Form form) => new Point((int)(4 * form.DpiScale), (int)(26 * form.DpiScale));
- #else
- public static Size FrameSize(this Form form) => new Size(form.Width, form.Height);
- public static Point ClientAreaOffset(this Form form)
- {
- Point offset = new Point(0, 0);
- try
- {
- offset = form.PointToScreen(offset);
- }
- catch (ObjectDisposedException)
- {
- return offset;
- }
- offset.X -= form.Left;
- offset.Y -= form.Top;
- return offset;
- }
- #endif
- }
- internal class DialogPageMenu : ComponentBaseMenu
- {
- #region Private Methods
- private void miCopy_Click(object sender, EventArgs e)
- {
- Designer.cmdCopyPage.Invoke();
- }
- private void miDelete_Click(object sender, EventArgs e)
- {
- Designer.cmdDeletePage.Invoke();
- }
- #endregion // Private Methods
- #region Constructors
- public DialogPageMenu(Designer designer) : base(designer)
- {
- miEdit.Visible = Designer.cmdEdit.Enabled;
- miCut.Visible = false;
- miPaste.Visible = true;
- miBringToFront.Visible = false;
- miSendToBack.Visible = false;
- miCopy.BeginGroup = true;
- // remove from QAT. This menu is too short
- miEdit.QatItem = miCopy.QatItem = miPaste.QatItem = miDelete.QatItem = false;
- miCopy.Text = Res.Get("Designer,Menu,Edit,CopyPage");
- miCopy.Enabled = Designer.cmdCopyPage.Enabled;
- miPaste.Enabled = Designer.cmdPaste.Enabled;
- miDelete.Enabled = Designer.cmdDeletePage.Enabled;
- miCopy.Click += miCopy_Click;
- miDelete.Click += miDelete_Click;
- }
- #endregion // Constructors
- }
- }
|