aboutsummaryrefslogtreecommitdiffstatsci
path: root/src
diff options
context:
space:
mode:
authorjpbruyere <jp.bruyere@hotmail.com>2016-08-14 06:43:59 +0200
committerjpbruyere <jp.bruyere@hotmail.com>2016-08-14 06:43:59 +0200
commit9d0137b1d39e62b09437b6a11e8dcf1318e2a7eb (patch)
tree6f34808a56eb5562bdfd5306ec2ad74c935d964b /src
parent854f2f732acc4c1d9fa4126962149cae14f4d4e9 (diff)
* Crow.csproj, XCursor.cs, Interface.cs, ibeam:
text xcursor * Window.template, Expandable.template, TabView.cs, 0.crow: divers * ExtensionsMethods.cs, CairoHelpers.cs, Border.cs: stroke better alignment, should be reworked for different width * Label.cs: text xcursor, selection rectangles adjustments * Window.cs: Maximize
Diffstat (limited to 'src')
-rw-r--r--src/Cairo/CairoHelpers.cs30
-rw-r--r--src/ExtensionsMethods.cs8
-rw-r--r--src/GraphicObjects/Border.cs3
-rw-r--r--src/GraphicObjects/Label.cs21
-rw-r--r--src/GraphicObjects/TabView.cs2
-rw-r--r--src/GraphicObjects/Window.cs44
-rw-r--r--src/Interface.cs1
-rw-r--r--src/XCursor.cs1
8 files changed, 78 insertions, 32 deletions
diff --git a/src/Cairo/CairoHelpers.cs b/src/Cairo/CairoHelpers.cs
index 60852def..8f9e6325 100644
--- a/src/Cairo/CairoHelpers.cs
+++ b/src/Cairo/CairoHelpers.cs
@@ -31,24 +31,24 @@ namespace Crow
return arr[minp];
}
- public static void CairoRectangle(Cairo.Context gr, Rectangle r, double radius)
+ public static void CairoRectangle(Cairo.Context gr, Rectangle r, double radius, bool stroke = false)
{
- if (radius>0)
- CairoHelpers.DrawRoundedRectangle(gr,r,radius);
+ if (radius > 0)
+ CairoHelpers.DrawRoundedRectangle (gr, r, radius, stroke);
else
- gr.Rectangle (r);
+ gr.Rectangle (r, stroke);
}
public static void CairoCircle(Cairo.Context gr, Rectangle r)
{
gr.Arc(r.X + r.Width/2, r.Y + r.Height/2, Math.Min(r.Width,r.Height)/2, 0, 2*Math.PI);
}
- public static void DrawRoundedRectangle(Cairo.Context gr, Rectangle r, double radius)
+ public static void DrawRoundedRectangle(Cairo.Context gr, Rectangle r, double radius, bool stroke = false)
{
- DrawRoundedRectangle(gr, r.X, r.Y, r.Width, r.Height, radius);
- }
- public static void DrawCurvedRectangle(Cairo.Context gr, Rectangle r)
- {
- DrawCurvedRectangle(gr, r.X, r.Y, r.Width, r.Height);
+ if (stroke) {
+ DrawRoundedRectangle (gr, r.X + 0.5, r.Y + 0.5, r.Width - 1.0, r.Height - 1.0, radius);
+ gr.Stroke ();
+ }else
+ DrawRoundedRectangle(gr, r.X, r.Y, r.Width, r.Height, radius);
}
public static void DrawRoundedRectangle(Cairo.Context gr, double x, double y, double width, double height, double radius)
{
@@ -68,16 +68,6 @@ namespace Crow
gr.ClosePath();
gr.Restore();
}
- public static void DrawCurvedRectangle(Cairo.Context gr, double x, double y, double width, double height)
- {
- gr.Save();
- gr.MoveTo(x, y + height / 2);
- gr.CurveTo(x, y, x, y, x + width / 2, y);
- gr.CurveTo(x + width, y, x + width, y, x + width, y + height / 2);
- gr.CurveTo(x + width, y + height, x + width, y + height, x + width / 2, y + height);
- gr.CurveTo(x, y + height, x, y + height, x, y + height / 2);
- gr.Restore();
- }
public static void StrokeRaisedRectangle(Cairo.Context gr, Rectangle r, double width = 1)
{
gr.Save();
diff --git a/src/ExtensionsMethods.cs b/src/ExtensionsMethods.cs
index 8985c929..07c37174 100644
--- a/src/ExtensionsMethods.cs
+++ b/src/ExtensionsMethods.cs
@@ -26,9 +26,13 @@ namespace Crow
public static class ExtensionsMethods
{
#region Cairo extensions
- public static void Rectangle(this Cairo.Context ctx, Rectangle r)
+ public static void Rectangle(this Cairo.Context ctx, Rectangle r, bool stroke = false)
{
- ctx.Rectangle (r.X, r.Y, r.Width, r.Height);
+ if (stroke) {
+ ctx.Rectangle (r.X + 0.5, r.Y + 0.5, r.Width - 1.0, r.Height - 1.0);
+ ctx.Stroke ();
+ }else
+ ctx.Rectangle (r.X, r.Y, r.Width, r.Height);
}
public static void SetSourceColor(this Cairo.Context ctx, Color c)
{
diff --git a/src/GraphicObjects/Border.cs b/src/GraphicObjects/Border.cs
index 6c1ed6a1..bd72d750 100644
--- a/src/GraphicObjects/Border.cs
+++ b/src/GraphicObjects/Border.cs
@@ -55,8 +55,7 @@ namespace Crow
if (BorderWidth > 0) {
gr.LineWidth = BorderWidth;
Foreground.SetAsSource (gr, rBack);
- CairoHelpers.CairoRectangle(gr, rBack, CornerRadius);
- gr.Stroke ();
+ CairoHelpers.CairoRectangle(gr, rBack, CornerRadius, true);
}
gr.Save ();
diff --git a/src/GraphicObjects/Label.cs b/src/GraphicObjects/Label.cs
index 3cc0f916..37a32a2f 100644
--- a/src/GraphicObjects/Label.cs
+++ b/src/GraphicObjects/Label.cs
@@ -569,8 +569,8 @@ namespace Crow
Foreground.SetAsSource (gr);
gr.LineWidth = 1.0;
- gr.MoveTo(new PointD(textCursorPos + rText.X, rText.Y + CurrentLine * fe.Height));
- gr.LineTo(new PointD(textCursorPos + rText.X, rText.Y + (CurrentLine + 1) * fe.Height));
+ gr.MoveTo (0.5 + textCursorPos + rText.X, rText.Y + CurrentLine * fe.Height);
+ gr.LineTo (0.5 + textCursorPos + rText.X, rText.Y + (CurrentLine + 1) * fe.Height);
gr.Stroke();
}
#endregion
@@ -603,9 +603,9 @@ namespace Crow
int lineLength = (int)gr.TextExtents (l).XAdvance;
Rectangle lineRect = new Rectangle (
rText.X,
- rText.Y + (int)(i * fe.Height),
- lineLength,
- (int)fe.Height);
+ rText.Y + (int)Math.Ceiling(i * fe.Height),
+ lineLength,
+ (int)Math.Ceiling(fe.Height));
// if (TextAlignment == Alignment.Center ||
// TextAlignment == Alignment.Top ||
@@ -659,6 +659,17 @@ namespace Crow
if (mouseLocalPos.Y < 0)
mouseLocalPos.Y = 0;
}
+ public override void onMouseEnter (object sender, MouseMoveEventArgs e)
+ {
+ base.onMouseEnter (sender, e);
+ if (Selectable)
+ Interface.CurrentInterface.MouseCursor = XCursor.Text;
+ }
+ public override void onMouseLeave (object sender, MouseMoveEventArgs e)
+ {
+ base.onMouseLeave (sender, e);
+ Interface.CurrentInterface.MouseCursor = XCursor.Default;
+ }
public override void onFocused (object sender, EventArgs e)
{
base.onFocused (sender, e);
diff --git a/src/GraphicObjects/TabView.cs b/src/GraphicObjects/TabView.cs
index e140191b..fa352b0d 100644
--- a/src/GraphicObjects/TabView.cs
+++ b/src/GraphicObjects/TabView.cs
@@ -82,7 +82,7 @@ namespace Crow
RegisterForRedraw ();
}
}
- [XmlAttributeAttribute()][DefaultValue("15")]
+ [XmlAttributeAttribute()][DefaultValue("18")]
public virtual Measure TabThickness {
get { return tabThickness; }
set {
diff --git a/src/GraphicObjects/Window.cs b/src/GraphicObjects/Window.cs
index 9fb6bd29..bf6bd5cf 100644
--- a/src/GraphicObjects/Window.cs
+++ b/src/GraphicObjects/Window.cs
@@ -46,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() {
@@ -74,6 +78,7 @@ namespace Crow
}
#endregion
+ #region public properties
[XmlAttributeAttribute()][DefaultValue("Window")]
public string Title {
get { return _title; }
@@ -110,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 ()
{
@@ -272,19 +295,36 @@ 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;
}
- 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;
diff --git a/src/Interface.cs b/src/Interface.cs
index 4a0789a2..052a5a19 100644
--- a/src/Interface.cs
+++ b/src/Interface.cs
@@ -151,6 +151,7 @@ namespace Crow
XCursor.SE = XCursorFile.Load("#Crow.Images.Icons.Cursors.bottom_right_corner").Cursors[0];
XCursor.H = XCursorFile.Load("#Crow.Images.Icons.Cursors.sb_h_double_arrow").Cursors[0];
XCursor.V = XCursorFile.Load("#Crow.Images.Icons.Cursors.sb_v_double_arrow").Cursors[0];
+ XCursor.Text = XCursorFile.Load("#Crow.Images.Icons.Cursors.ibeam").Cursors[0];
}
#endregion
diff --git a/src/XCursor.cs b/src/XCursor.cs
index 8897753d..68173938 100644
--- a/src/XCursor.cs
+++ b/src/XCursor.cs
@@ -117,6 +117,7 @@ namespace Crow
public static XCursor Default;
public static XCursor Cross;
public static XCursor Arrow;
+ public static XCursor Text;
public static XCursor SW;
public static XCursor SE;
public static XCursor NW;