Author: jpobst
Date: 2007-07-05 16:32:23 -0400 (Thu, 05 Jul 2007)
New Revision: 81436
Modified:
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStrip.cs
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripControlHost.cs
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripDropDown.cs
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripItem.cs
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripItemTextRenderEventArgs.cs
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripRenderer.cs
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripSeparator.cs
Log:
2007-07-05 Jonathan Pobst <[EMAIL PROTECTED]>
* ToolStrip.cs, ToolStripControlHost.cs, ToolStripDropDown.cs,
ToolStripItem.cs, ToolStripItem.cs, ToolStripItemTextRenderEventArgs.cs,
ToolStripRenderer.cs, ToolStripSeparator.cs: Implement TextDirection.
Modified: trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
2007-07-05 20:29:47 UTC (rev 81435)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
2007-07-05 20:32:23 UTC (rev 81436)
@@ -1,3 +1,9 @@
+2007-07-05 Jonathan Pobst <[EMAIL PROTECTED]>
+
+ * ToolStrip.cs, ToolStripControlHost.cs, ToolStripDropDown.cs,
+ ToolStripItem.cs, ToolStripItem.cs, ToolStripItemTextRenderEventArgs.cs,
+ ToolStripRenderer.cs, ToolStripSeparator.cs: Implement TextDirection.
+
2007-07-05 Carlos Alberto Cortez <[EMAIL PROTECTED]>
* ListViewItem.cs: Implement the small 2.0 GetSubItemAt method.
Modified:
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStrip.cs
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStrip.cs
2007-07-05 20:29:47 UTC (rev 81435)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStrip.cs
2007-07-05 20:32:23 UTC (rev 81436)
@@ -69,6 +69,7 @@
private List<ToolStripItem> pre_merge_items;
private ToolStripRenderer renderer;
private ToolStripRenderMode render_mode;
+ private ToolStripTextDirection text_direction;
private Timer tooltip_timer;
private ToolTip.ToolTipWindow tooltip_window;
private bool show_item_tool_tips;
@@ -115,6 +116,7 @@
this.render_mode =
ToolStripRenderMode.ManagerRenderMode;
this.show_item_tool_tips = this.DefaultShowItemToolTips;
base.TabStop = false;
+ this.text_direction = ToolStripTextDirection.Horizontal;
this.ResumeLayout ();
DoAutoSize ();
@@ -486,6 +488,23 @@
set { base.TabStop = value; }
}
+ [DefaultValue (ToolStripTextDirection.Horizontal)]
+ public virtual ToolStripTextDirection TextDirection {
+ get { return this.text_direction; }
+ set {
+ if (!Enum.IsDefined (typeof
(ToolStripTextDirection), value))
+ throw new InvalidEnumArgumentException
(string.Format ("Enum argument value '{0}' is not valid for
ToolStripTextDirection", value));
+
+ if (this.text_direction != value) {
+ this.text_direction = value;
+
+ this.PerformLayout (this,
"TextDirection");
+
+ this.Invalidate ();
+ }
+ }
+ }
+
[Browsable (false)]
[EditorBrowsable (EditorBrowsableState.Never)]
public new VScrollProperties VerticalScroll {
Modified:
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripControlHost.cs
===================================================================
---
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripControlHost.cs
2007-07-05 20:29:47 UTC (rev 81435)
+++
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripControlHost.cs
2007-07-05 20:32:23 UTC (rev 81436)
@@ -224,6 +224,14 @@
[Browsable (false)]
[EditorBrowsable (EditorBrowsableState.Never)]
+ [DefaultValue (ToolStripTextDirection.Horizontal)]
+ public override ToolStripTextDirection TextDirection {
+ get { return base.TextDirection; }
+ set { base.TextDirection = value; }
+ }
+
+ [Browsable (false)]
+ [EditorBrowsable (EditorBrowsableState.Never)]
public new TextImageRelation TextImageRelation {
get { return base.TextImageRelation; }
set { base.TextImageRelation = value; }
@@ -480,6 +488,8 @@
#endregion
#region Private Methods
+ internal override ToolStripTextDirection DefaultTextDirection {
get { return ToolStripTextDirection.Horizontal; } }
+
internal override void Dismiss (ToolStripDropDownCloseReason
reason)
{
if (this.Selected)
Modified:
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripDropDown.cs
===================================================================
---
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripDropDown.cs
2007-07-05 20:29:47 UTC (rev 81435)
+++
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripDropDown.cs
2007-07-05 20:32:23 UTC (rev 81436)
@@ -261,6 +261,13 @@
}
[Browsable (false)]
+ [DefaultValue (ToolStripTextDirection.Horizontal)]
+ public override ToolStripTextDirection TextDirection {
+ get { return base.TextDirection; }
+ set { base.TextDirection = value; }
+ }
+
+ [Browsable (false)]
[DesignerSerializationVisibility
(DesignerSerializationVisibility.Hidden)]
[EditorBrowsable (EditorBrowsableState.Advanced)]
public bool TopLevel {
Modified:
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripItem.cs
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripItem.cs
2007-07-05 20:29:47 UTC (rev 81435)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripItem.cs
2007-07-05 20:32:23 UTC (rev 81436)
@@ -85,6 +85,7 @@
private Object tag;
private string text;
private ContentAlignment text_align;
+ private ToolStripTextDirection text_direction;
private TextImageRelation text_image_relation;
private string tool_tip_text;
private bool visible;
@@ -136,6 +137,7 @@
this.bounds.Size = this.DefaultSize;
this.text = text;
this.text_align = ContentAlignment.MiddleCenter;
+ this.text_direction = DefaultTextDirection;
this.text_image_relation =
TextImageRelation.ImageBeforeText;
this.visible = true;
@@ -706,6 +708,20 @@
}
}
+ public virtual ToolStripTextDirection TextDirection {
+ get { return this.text_direction; }
+ set {
+ if (!Enum.IsDefined (typeof
(ToolStripTextDirection), value))
+ throw new InvalidEnumArgumentException
(string.Format ("Enum argument value '{0}' is not valid for
ToolStripTextDirection", value));
+
+ if (this.text_direction != value) {
+ this.text_direction = value;
+ this.CalculateAutoSize ();
+ this.Invalidate ();
+ }
+ }
+ }
+
[Localizable (true)]
[DefaultValue (TextImageRelation.ImageBeforeText)]
public TextImageRelation TextImageRelation {
@@ -830,6 +846,9 @@
[EditorBrowsable (EditorBrowsableState.Never)]
public void ResetPadding () { this.padding =
this.DefaultPadding; }
+ [EditorBrowsable (EditorBrowsableState.Never)]
+ public void ResetTextDirection () { this.TextDirection =
this.DefaultTextDirection; }
+
public void Select ()
{
if (!this.is_selected && this.CanSelect) {
@@ -1298,6 +1317,12 @@
{
this.text_size = TextRenderer.MeasureText (this.Text ==
null ? string.Empty: this.text, this.Font, Size.Empty,
TextFormatFlags.HidePrefix);
+ // If our text is rotated, flip the width and height
+ ToolStripTextDirection direction =
this.GetTextDirection ();
+
+ if (direction == ToolStripTextDirection.Vertical270 ||
direction == ToolStripTextDirection.Vertical90)
+ this.text_size = new Size
(this.text_size.Height, this.text_size.Width);
+
if (!this.auto_size || this is ToolStripControlHost)
return;
//this.text_size.Width += 6;
@@ -1443,6 +1468,8 @@
}
}
+ internal virtual ToolStripTextDirection DefaultTextDirection {
get { return ToolStripTextDirection.Inherit; } }
+
internal virtual void Dismiss (ToolStripDropDownCloseReason
reason)
{
if (is_selected) {
@@ -1450,7 +1477,19 @@
this.Invalidate ();
}
}
-
+
+ private ToolStripTextDirection GetTextDirection ()
+ {
+ if (this.TextDirection ==
ToolStripTextDirection.Inherit) {
+ if (this.Parent != null)
+ return this.Parent.TextDirection;
+ else
+ return
ToolStripTextDirection.Horizontal;
+ }
+
+ return this.TextDirection;
+ }
+
internal virtual ToolStrip GetTopLevelToolStrip ()
{
if (this.Parent != null)
Modified:
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripItemTextRenderEventArgs.cs
===================================================================
---
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripItemTextRenderEventArgs.cs
2007-07-05 20:29:47 UTC (rev 81435)
+++
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripItemTextRenderEventArgs.cs
2007-07-05 20:32:23 UTC (rev 81436)
@@ -48,7 +48,7 @@
this.text_rectangle = textRectangle;
this.text_color = textColor;
this.text_font = textFont;
- this.text_direction = ToolStripTextDirection.Horizontal;
+ this.text_direction = item.TextDirection;
switch (textAlign) {
case ContentAlignment.BottomCenter:
Modified:
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripRenderer.cs
===================================================================
---
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripRenderer.cs
2007-07-05 20:29:47 UTC (rev 81435)
+++
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripRenderer.cs
2007-07-05 20:32:23 UTC (rev 81436)
@@ -31,6 +31,7 @@
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Imaging;
+using System.Drawing.Drawing2D;
namespace System.Windows.Forms
{
@@ -245,9 +246,40 @@
protected virtual void OnRenderItemText
(ToolStripItemTextRenderEventArgs e)
{
- TextRenderer.DrawText (e.Graphics, e.Text, e.TextFont,
e.TextRectangle, e.TextColor, e.TextFormat);
-
- ToolStripItemTextRenderEventHandler eh =
(ToolStripItemTextRenderEventHandler)Events [RenderItemTextEvent];
+ if (e.TextDirection ==
ToolStripTextDirection.Vertical90) {
+ GraphicsState gs = e.Graphics.Save ();
+ PointF p = new PointF
(e.Graphics.Transform.OffsetX, e.Graphics.Transform.OffsetY);
+
+ e.Graphics.ResetTransform ();
+ e.Graphics.RotateTransform (90);
+
+ RectangleF r = new RectangleF ((e.Item.Height -
e.TextRectangle.Height) / 2, (e.TextRectangle.Width + p.X) * -1 - 18,
e.TextRectangle.Height, e.TextRectangle.Width);
+
+ StringFormat sf = new StringFormat ();
+ sf.Alignment = StringAlignment.Center;
+
+ e.Graphics.DrawString (e.Text, e.TextFont,
ThemeEngine.Current.ResPool.GetSolidBrush (e.TextColor), r, sf);
+
+ e.Graphics.Restore (gs);
+ } else if (e.TextDirection ==
ToolStripTextDirection.Vertical270) {
+ GraphicsState gs = e.Graphics.Save ();
+ PointF p = new PointF
(e.Graphics.Transform.OffsetX, e.Graphics.Transform.OffsetY);
+
+ e.Graphics.ResetTransform ();
+ e.Graphics.RotateTransform (270);
+
+ RectangleF r = new RectangleF
(-e.TextRectangle.Height - (e.Item.Height - e.TextRectangle.Height) / 2,
(e.TextRectangle.Width + p.X) + 4, e.TextRectangle.Height,
e.TextRectangle.Width);
+
+ StringFormat sf = new StringFormat ();
+ sf.Alignment = StringAlignment.Center;
+
+ e.Graphics.DrawString (e.Text, e.TextFont,
ThemeEngine.Current.ResPool.GetSolidBrush (e.TextColor), r, sf);
+
+ e.Graphics.Restore (gs);
+ } else
+ TextRenderer.DrawText (e.Graphics, e.Text,
e.TextFont, e.TextRectangle, e.TextColor, e.TextFormat);
+
+ ToolStripItemTextRenderEventHandler eh =
(ToolStripItemTextRenderEventHandler)Events[RenderItemTextEvent];
if (eh != null)
eh (this, e);
}
Modified:
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripSeparator.cs
===================================================================
---
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripSeparator.cs
2007-07-05 20:29:47 UTC (rev 81435)
+++
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripSeparator.cs
2007-07-05 20:32:23 UTC (rev 81436)
@@ -174,6 +174,14 @@
[Browsable (false)]
[EditorBrowsable (EditorBrowsableState.Never)]
+ [DefaultValue (ToolStripTextDirection.Horizontal)]
+ public override ToolStripTextDirection TextDirection {
+ get { return base.TextDirection; }
+ set { base.TextDirection = value; }
+ }
+
+ [Browsable (false)]
+ [EditorBrowsable (EditorBrowsableState.Never)]
[DesignerSerializationVisibility
(DesignerSerializationVisibility.Hidden)]
public new TextImageRelation TextImageRelation {
get { return base.TextImageRelation; }
@@ -261,6 +269,10 @@
remove { base.TextChanged -= value; }
}
#endregion
+
+ #region Internal Method/Properties
+ internal override ToolStripTextDirection DefaultTextDirection {
get { return ToolStripTextDirection.Horizontal; } }
+ #endregion
}
}
#endif
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches