2007-04-25 Jonathan Pobst <monkey@jpobst.com>
[mono.git] / mcs / class / Managed.Windows.Forms / System.Windows.Forms / Theme.cs
index 7592ed330f375bfa60503d6a9453513221561074..c6c221e647ab9453cd4d752cda5e365d0801e3fc 100644 (file)
@@ -192,9 +192,8 @@ namespace System.Windows.Forms
                protected Font window_border_font;
                protected Color defaultWindowBackColor;
                protected Color defaultWindowForeColor;
-               protected bool always_draw_hotkeys = true;
                internal SystemResPool ResPool = new SystemResPool ();
-               private Type system_colors = Type.GetType ("System.Drawing.SystemColors, " + Consts.AssemblySystem_Drawing);
+               private MethodInfo update;
 
                protected Theme ()
                {
@@ -205,19 +204,17 @@ namespace System.Windows.Forms
 #endif
                }
 
-               private void SetSystemColors(string name, Color value) {
-                       if (system_colors != null) {
-                               MethodInfo update;
-
-                               system_colors.GetField(name, System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic).SetValue(null, value);
-                               update = system_colors.GetMethod("UpdateColors", BindingFlags.Static | BindingFlags.NonPublic);
-                               if (update != null) {
-                                       update.Invoke(null, null);
-                               }
+               private void SetSystemColors (KnownColor kc, Color value)
+               {
+                       if (update == null) {
+                               Type known_colors = Type.GetType ("System.Drawing.KnownColors, " + Consts.AssemblySystem_Drawing);
+                               if (known_colors != null)
+                                       update = known_colors.GetMethod ("Update", BindingFlags.Static | BindingFlags.Public);
                        }
+                       if (update != null)
+                               update.Invoke (null, new object [2] { (int)kc, value.ToArgb () });
                }
 
-
                /* OS Feature support */
                public abstract Version Version {
                        get;
@@ -225,133 +222,133 @@ namespace System.Windows.Forms
 
                /* Default properties */
                public virtual Color ColorScrollBar {
-                       get { return SystemColors.ScrollBar;}
-                       set { SetSystemColors("scroll_bar", value); }
+                       get { return SystemColors.ScrollBar; }
+                       set { SetSystemColors (KnownColor.ScrollBar, value); }
                }
 
                public virtual Color ColorDesktop {
                        get { return SystemColors.Desktop;}
-                       set { SetSystemColors("desktop", value); }
+                       set { SetSystemColors (KnownColor.Desktop, value); }
                }
 
                public virtual Color ColorActiveCaption {
                        get { return SystemColors.ActiveCaption;}
-                       set { SetSystemColors("active_caption", value); }
+                       set { SetSystemColors (KnownColor.ActiveCaption, value); }
                }
 
                public virtual Color ColorInactiveCaption {
                        get { return SystemColors.InactiveCaption;}
-                       set { SetSystemColors("inactive_caption", value); }
+                       set { SetSystemColors (KnownColor.InactiveCaption, value); }
                }
 
                public virtual Color ColorMenu {
                        get { return SystemColors.Menu;}
-                       set { SetSystemColors("menu", value); }
+                       set { SetSystemColors (KnownColor.Menu, value); }
                }
 
                public virtual Color ColorWindow {
                        get { return SystemColors.Window;}
-                       set { SetSystemColors("window", value); }
+                       set { SetSystemColors (KnownColor.Window, value); }
                }
 
                public virtual Color ColorWindowFrame {
                        get { return SystemColors.WindowFrame;}
-                       set { SetSystemColors("window_frame", value); }
+                       set { SetSystemColors (KnownColor.WindowFrame, value); }
                }
 
                public virtual Color ColorMenuText {
                        get { return SystemColors.MenuText;}
-                       set { SetSystemColors("menu_text", value); }
+                       set { SetSystemColors (KnownColor.MenuText, value); }
                }
 
                public virtual Color ColorWindowText {
                        get { return SystemColors.WindowText;}
-                       set { SetSystemColors("window_text", value); }
+                       set { SetSystemColors (KnownColor.WindowText, value); }
                }
 
                public virtual Color ColorActiveCaptionText {
                        get { return SystemColors.ActiveCaptionText;}
-                       set { SetSystemColors("active_caption_text", value); }
+                       set { SetSystemColors (KnownColor.ActiveCaptionText, value); }
                }
 
                public virtual Color ColorActiveBorder {
                        get { return SystemColors.ActiveBorder;}
-                       set { SetSystemColors("active_border", value); }
+                       set { SetSystemColors (KnownColor.ActiveBorder, value); }
                }
 
                public virtual Color ColorInactiveBorder{
                        get { return SystemColors.InactiveBorder;}
-                       set { SetSystemColors("inactive_border", value); }
+                       set { SetSystemColors (KnownColor.InactiveBorder, value); }
                }
 
                public virtual Color ColorAppWorkspace {
                        get { return SystemColors.AppWorkspace;}
-                       set { SetSystemColors("app_workspace", value); }
+                       set { SetSystemColors (KnownColor.AppWorkspace, value); }
                }
 
                public virtual Color ColorHighlight {
                        get { return SystemColors.Highlight;}
-                       set { SetSystemColors("highlight", value); }
+                       set { SetSystemColors (KnownColor.Highlight, value); }
                }
 
                public virtual Color ColorHighlightText {
                        get { return SystemColors.HighlightText;}
-                       set { SetSystemColors("highlight_text", value); }
+                       set { SetSystemColors (KnownColor.HighlightText, value); }
                }
 
                public virtual Color ColorControl {
                        get { return SystemColors.Control;}
-                       set { SetSystemColors("control", value); }
+                       set { SetSystemColors (KnownColor.Control, value); }
                }
 
                public virtual Color ColorControlDark {
                        get { return SystemColors.ControlDark;}
-                       set { SetSystemColors("control_dark", value); }
+                       set { SetSystemColors (KnownColor.ControlDark, value); }
                }
 
                public virtual Color ColorGrayText {
                        get { return SystemColors.GrayText;}
-                       set { SetSystemColors("gray_text", value); }
+                       set { SetSystemColors (KnownColor.GrayText, value); }
                }
 
                public virtual Color ColorControlText {
                        get { return SystemColors.ControlText;}
-                       set { SetSystemColors("control_text", value); }
+                       set { SetSystemColors (KnownColor.ControlText, value); }
                }
 
                public virtual Color ColorInactiveCaptionText {
                        get { return SystemColors.InactiveCaptionText;}
-                       set { SetSystemColors("inactive_caption_text", value); }
+                       set { SetSystemColors (KnownColor.InactiveCaptionText, value); }
                }
 
                public virtual Color ColorControlLight {
                        get { return SystemColors.ControlLight;}
-                       set { SetSystemColors("control_light", value); }
+                       set { SetSystemColors (KnownColor.ControlLight, value); }
                }
 
                public virtual Color ColorControlDarkDark {
                        get { return SystemColors.ControlDarkDark;}
-                       set { SetSystemColors("control_dark_dark", value); }
+                       set { SetSystemColors (KnownColor.ControlDarkDark, value); }
                }
 
                public virtual Color ColorControlLightLight {
                        get { return SystemColors.ControlLightLight;}
-                       set { SetSystemColors("control_light_light", value); }
+                       set { SetSystemColors (KnownColor.ControlLightLight, value); }
                }
 
                public virtual Color ColorInfoText {
                        get { return SystemColors.InfoText;}
-                       set { SetSystemColors("info_text", value); }
+                       set { SetSystemColors (KnownColor.InfoText, value); }
                }
 
                public virtual Color ColorInfo {
                        get { return SystemColors.Info;}
-                       set { SetSystemColors("info", value); }
+                       set { SetSystemColors (KnownColor.Info, value); }
                }
 
                public virtual Color ColorHotTrack {
                        get { return SystemColors.HotTrack;}
-                       set { SetSystemColors("hot_track", value);}
+                       set { SetSystemColors (KnownColor.HotTrack, value);}
                }
 
                public virtual Color DefaultControlBackColor {
@@ -399,9 +396,15 @@ namespace System.Windows.Forms
                        }
                }
 
+               public virtual Size BorderSizableSize {
+                       get {
+                               return new Size (3, 3);
+                       }
+               }
+
                public virtual Size Border3DSize {
                        get {
-                               return new Size(2, 2);
+                               return XplatUI.Border3DSize;
                        }
                }
 
@@ -413,13 +416,13 @@ namespace System.Windows.Forms
 
                public virtual Size BorderSize {
                        get {
-                               return new Size(1, 1);
+                               return XplatUI.BorderSize;
                        }
                }
 
                public virtual Size CaptionButtonSize {
                        get {
-                               return new Size(18, 18);
+                               return XplatUI.CaptionButtonSize;
                        }
                }
 
@@ -443,7 +446,7 @@ namespace System.Windows.Forms
 
                public virtual Size FixedFrameBorderSize {
                        get {
-                               return new Size(3, 3);
+                               return XplatUI.FixedFrameBorderSize;
                        }
                }
 
@@ -477,6 +480,12 @@ namespace System.Windows.Forms
                        }
                }
 
+               public virtual bool MenuAccessKeysUnderlined {
+                       get {
+                               return XplatUI.MenuAccessKeysUnderlined;
+                       }
+               }
+               
                public virtual Size MenuButtonSize {
                        get {
                                return new Size(18, 18);
@@ -687,6 +696,10 @@ namespace System.Windows.Forms
                #endregion      // OwnerDraw Support
 
                #region Button
+               public abstract void CalculateButtonTextAndImageLayout (Button b, out Rectangle textRectangle, out Rectangle imageRectangle);
+               public abstract void DrawButton (Graphics g, Button b, Rectangle textBounds, Rectangle imageBounds, Rectangle clipRectangle);
+               public abstract void DrawFlatButton (Graphics g, Button b, Rectangle textBounds, Rectangle imageBounds, Rectangle clipRectangle);
+               public abstract void DrawPopupButton (Graphics g, Button b, Rectangle textBounds, Rectangle imageBounds, Rectangle clipRectangle);
                #endregion      // Button
 
                #region ButtonBase
@@ -713,6 +726,7 @@ namespace System.Windows.Forms
                #endregion      // ComboBox
 
                #region Control
+               public abstract Font GetLinkFont (Control control);
                #endregion      // Control
                
                #region Datagrid
@@ -872,13 +886,21 @@ namespace System.Windows.Forms
                #endregion      // StatusBar
 
                #region TabControl
-               public abstract Size TabControlDefaultItemSize { get; }
-               public abstract Point TabControlDefaultPadding { get; }
-               public abstract int TabControlMinimumTabWidth { get; }
-
-               public abstract Rectangle GetTabControlLeftScrollRect (TabControl tab);
-               public abstract Rectangle GetTabControlRightScrollRect (TabControl tab);
-               public abstract Rectangle GetTabControlDisplayRectangle (TabControl tab);
+               public abstract Size TabControlDefaultItemSize {get; }
+               public abstract Point TabControlDefaultPadding {get; }
+               public abstract int TabControlMinimumTabWidth {get; }
+               public abstract Rectangle TabControlSelectedDelta { get; }
+               public abstract int TabControlSelectedSpacing { get; }
+               public abstract int TabPanelOffsetX { get; }
+               public abstract int TabPanelOffsetY { get; }
+               public abstract int TabControlColSpacing { get; }
+               public abstract Point TabControlImagePadding { get; }
+               public abstract int TabControlScrollerWidth { get; }
+
+               public abstract Rectangle TabControlGetLeftScrollRect (TabControl tab);
+               public abstract Rectangle TabControlGetRightScrollRect (TabControl tab);
+               public abstract Rectangle TabControlGetDisplayRectangle (TabControl tab);
+               public abstract Rectangle TabControlGetPanelRect (TabControl tab);
                public abstract Size TabControlGetSpacing (TabControl tab);
                public abstract void DrawTabControl (Graphics dc, Rectangle area, TabControl tab);
                #endregion
@@ -902,6 +924,13 @@ namespace System.Windows.Forms
                public abstract Size ToolTipSize(ToolTip.ToolTipWindow tt, string text);
                #endregion      // ToolTip
                
+               #region BalloonWindow
+#if NET_2_0
+               public abstract void ShowBalloonWindow (IntPtr handle, int timeout, string title, string text, ToolTipIcon icon);
+               public abstract void DrawBalloonWindow (Graphics dc, Rectangle clip, NotifyIcon.BalloonWindow control);
+               public abstract Rectangle BalloonWindowRect (NotifyIcon.BalloonWindow control);
+#endif
+               #endregion      // BalloonWindow
 
                #region TrackBar
                // Drawing
@@ -909,6 +938,8 @@ namespace System.Windows.Forms
 
                // Sizing
                public abstract Size TrackBarDefaultSize{get; }         // Default size for the TrackBar control
+               
+               public abstract int TrackBarValueFromMousePosition (int x, int y, TrackBar tb);
                #endregion      // TrackBar
 
                #region VScrollBar
@@ -960,6 +991,7 @@ namespace System.Windows.Forms
                        int bottomWidth, ButtonBorderStyle bottomStyle);
 
                public abstract void CPDrawBorder3D (Graphics graphics, Rectangle rectangle, Border3DStyle style, Border3DSide sides);
+               public abstract void CPDrawBorder3D (Graphics graphics, Rectangle rectangle, Border3DStyle style, Border3DSide sides, Color control_color);
                public abstract void CPDrawButton (Graphics graphics, Rectangle rectangle, ButtonState state);
                public abstract void CPDrawCaptionButton (Graphics graphics, Rectangle rectangle, CaptionButton button, ButtonState state);
                public abstract void CPDrawCheckBox (Graphics graphics, Rectangle rectangle, ButtonState state);