diff options
Diffstat (limited to 'src/GraphicObjects/Window.cs')
| -rw-r--r-- | src/GraphicObjects/Window.cs | 55 |
1 files changed, 47 insertions, 8 deletions
diff --git a/src/GraphicObjects/Window.cs b/src/GraphicObjects/Window.cs index be482e43..9ef9e642 100644 --- a/src/GraphicObjects/Window.cs +++ b/src/GraphicObjects/Window.cs @@ -26,7 +26,6 @@ using System.Diagnostics; namespace Crow { - [DefaultTemplate("#Crow.Templates.Window.goml")] public class Window : TemplatedContainer { enum Direction @@ -47,11 +46,15 @@ namespace Crow bool _resizable; bool _movable; bool hoverBorder = false; + bool isMaximized = false; + Measure savedH, savedW; Container _contentContainer; Direction currentDirection = Direction.None; public event EventHandler Closing; + public event EventHandler Maximized; + public event EventHandler Unmaximized; #region CTOR public Window () : base() { @@ -75,6 +78,7 @@ namespace Crow } #endregion + #region public properties [XmlAttributeAttribute()][DefaultValue("Window")] public string Title { get { return _title; } @@ -111,6 +115,24 @@ namespace Crow NotifyValueChanged ("Movable", _movable); } } + [XmlAttributeAttribute()][DefaultValue(false)] + public bool IsMaximized { + get { return isMaximized; } + set{ + if (value == isMaximized) + return; + isMaximized = value; + + if (isMaximized) + onMaximized (this, null); + else + onUnmaximized (this, null); + + NotifyValueChanged ("IsMaximized", isMaximized); + } + } + #endregion + #region GraphicObject Overrides public override void ResolveBindings () { @@ -122,11 +144,11 @@ namespace Crow { base.onMouseMove (sender, e); - Interface otkgw = Interface.CurrentInterface; + Interface otkgw = CurrentInterface; if (!hoverBorder) { currentDirection = Direction.None; - Interface.CurrentInterface.MouseCursor = XCursor.Default; + CurrentInterface.MouseCursor = XCursor.Default; return; } @@ -273,28 +295,45 @@ namespace Crow base.onMouseDown (sender, e); } #endregion + protected void onMaximized (object sender, EventArgs e){ + savedW = this.Width; + savedH = this.Height; + this.Width = Measure.Stretched; + this.Height = Measure.Stretched; + + Maximized.Raise (sender, e); + } + protected void onUnmaximized (object sender, EventArgs e){ + this.Width = savedW; + this.Height = savedH; - public void onBorderMouseLeave (object sender, MouseMoveEventArgs e) + Unmaximized.Raise (sender, e); + } + + protected void onBorderMouseLeave (object sender, MouseMoveEventArgs e) { hoverBorder = false; currentDirection = Direction.None; - Interface.CurrentInterface.MouseCursor = XCursor.Default; + CurrentInterface.MouseCursor = XCursor.Default; } - public void onBorderMouseEnter (object sender, MouseMoveEventArgs e) + protected void onBorderMouseEnter (object sender, MouseMoveEventArgs e) { hoverBorder = true; } + protected void butMaximizePress (object sender, MouseButtonEventArgs e){ + IsMaximized = !IsMaximized; + } protected void butQuitPress (object sender, MouseButtonEventArgs e) { - Interface.CurrentInterface.MouseCursor = XCursor.Default; + CurrentInterface.MouseCursor = XCursor.Default; close (); } void close(){ Closing.Raise (this, null); - Interface.CurrentInterface.DeleteWidget (this); + CurrentInterface.DeleteWidget (this); } } } |