aboutsummaryrefslogtreecommitdiffstatsci
path: root/src/GraphicObjects/Window.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/GraphicObjects/Window.cs')
-rw-r--r--src/GraphicObjects/Window.cs55
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);
}
}
}