diff options
| author | jpbruyere <jp.bruyere@hotmail.com> | 2015-06-02 10:44:23 +0200 |
|---|---|---|
| committer | jpbruyere <jp.bruyere@hotmail.com> | 2015-06-02 10:44:23 +0200 |
| commit | b56c22ad826a49b7ea0013c1ca78cf64169fc326 (patch) | |
| tree | 588a3bc9ae0ed826012096a072b138a94ded4e61 /src/GraphicObjects/Checkbox.cs | |
| parent | 999f18b6daf7db54879a85f0f8b5c7b22f740ce7 (diff) | |
TemplatedControls, Picture objects for pixmap and svg raw data sharing
among controls
Diffstat (limited to 'src/GraphicObjects/Checkbox.cs')
| -rw-r--r-- | src/GraphicObjects/Checkbox.cs | 266 |
1 files changed, 34 insertions, 232 deletions
diff --git a/src/GraphicObjects/Checkbox.cs b/src/GraphicObjects/Checkbox.cs index 586855d9..07be76c5 100644 --- a/src/GraphicObjects/Checkbox.cs +++ b/src/GraphicObjects/Checkbox.cs @@ -12,255 +12,57 @@ using winColors = System.Drawing.Color; using System.Diagnostics;
using System.Xml.Serialization;
using OpenTK.Input;
+using System.ComponentModel;
namespace go
{
- public delegate void GOEvent(GraphicObject sender);
+ public class Checkbox : TemplatedControl
+ {
+ Label _caption;
+ Image _image;
- public enum ButtonStates
- {
- normal,
- mouseOver,
- mouseDown,
- Disable
- }
-
- public class Checkbox : Container, IXmlSerializable
- {
- public GOEvent Click;
-
- bool _isCheckable = false;
- bool _isChecked = false;
- bool _affectMultiSelectState = false;
- bool _border3D = false;
- Color _checkedColor;
- ButtonStates _CurrentState = ButtonStates.normal;
-
- public Checkbox() : base()
- {}
-
- [System.Xml.Serialization.XmlAttributeAttribute()]
- [System.ComponentModel.DefaultValue(true)]
- public override bool Focusable
- {
- get { return base.Focusable; }
- set { base.Focusable = value; }
- }
-
- [System.Xml.Serialization.XmlAttributeAttribute()]
- public Color CheckedColor
- {
- get { return _checkedColor; }
- set
- {
- _checkedColor = value;
- registerForGraphicUpdate();
- }
- }
+ public Checkbox() : base()
+ {
+ }
- [System.Xml.Serialization.XmlIgnore]
- public ButtonStates CurrentState
- {
- get { return _CurrentState; }
- set
- {
- if (value == _CurrentState)
- return;
- _CurrentState = value;
- RegisterForRedraw();
- }
- }
+ protected override void loadTemplate()
+ {
+ this.setChild (Interface.Load ("#go.Templates.Checkbox.goml"));
+ _caption = this.child.FindByName ("Caption") as Label;
+ _image = this.child.FindByName ("Image") as Image;
+ _image.SvgSub = "unchecked";
+ }
+
- [System.Xml.Serialization.XmlAttributeAttribute()]
- [System.ComponentModel.DefaultValue(false)]
+ [XmlAttributeAttribute()][DefaultValue("Checkbox")]
+ public string Caption {
+ get { return _caption.Text; }
+ set {
+ _caption.Text = value;
+ }
+ }
+ [XmlAttributeAttribute()][DefaultValue(false)]
public bool IsChecked
{
- get { return _isChecked; }
+ get { return _image == null ? false :_image.SvgSub == "checked"; }
set
{
- if (value == _isChecked)
+ if (value == IsChecked)
return;
- _isChecked = value;
-
- if (Click != null)
- Click(this);
-
+ if (value)
+ _image.SvgSub = "checked";
+ else
+ _image.SvgSub = "unchecked";
+
registerForGraphicUpdate();
}
}
- [System.Xml.Serialization.XmlAttributeAttribute()]
- [System.ComponentModel.DefaultValue(false)]
- public bool IsCheckable
- {
- get { return _isCheckable; }
- set { _isCheckable = value; }
- }
-
- [System.Xml.Serialization.XmlAttributeAttribute()]
- [System.ComponentModel.DefaultValue(false)]
- public bool AffectMultiSelectState
- {
- get { return _affectMultiSelectState; }
- set { _affectMultiSelectState = value; }
- }
-
- [System.Xml.Serialization.XmlAttributeAttribute()]
- [System.ComponentModel.DefaultValue(false)]
- public bool Border3d
- {
- get { return _border3D; }
- set { _border3D = value; }
- }
-
- public override void Paint(ref Context ctx, Rectangles clip = null)
- {
- base.Paint(ref ctx, clip);
-
- Rectangle r = Parent.ContextCoordinates (Slot);
-
- ctx.Save();
- //ctx.ResetClip();
-
- if (IsCheckable){
- if (IsChecked){
- ctx.Color = CheckedColor;
- ctx.Rectangle(r);
- ctx.Fill();
-
- if (Border3d)
- CairoHelpers.StrokeLoweredRectangle(ctx, r);
- }
- else{
- if (Border3d)
- CairoHelpers.StrokeRaisedRectangle(ctx, r);
- }
- }
-
- switch (CurrentState){
- case ButtonStates.normal:
- break;
- case ButtonStates.mouseOver:
- CairoHelpers.CairoRectangle(ctx,r,CornerRadius);
- ctx.Operator = Operator.Add;
- ctx.Color = new Color(0.2, 0.2, 0.2, 1.0);
- ctx.Fill();
- ctx.Operator = Operator.Over;
- break;
- case ButtonStates.mouseDown:
- CairoHelpers.CairoRectangle(ctx,r,CornerRadius);
- ctx.Operator = Operator.Add;
- ctx.Color = Color.Red;
- ctx.Fill();
- ctx.Operator = Operator.Over;
- break;
- case ButtonStates.Disable:
- CairoHelpers.CairoRectangle(ctx,r,CornerRadius);
- ctx.Color = new Color(0.2, 0.2, 0.2, 0.7);
- ctx.Fill();
- break;
-
- }
- ctx.Restore();
- }
-
-
- #region mouse handling
- public override void onMouseButtonDown (object sender,MouseButtonEventArgs e)
+ public override void onMouseClick (object sender, MouseButtonEventArgs e)
{
- if (CurrentState != ButtonStates.Disable)
- {
- if (IsCheckable)
- {
- if (IsChecked)
- IsChecked = false;
- else
- {
- Group wg = Parent as Group;
- if (wg != null)
- {
- if (AffectMultiSelectState && !wg.MultiSelect)
- {
- foreach (Checkbox but in wg.Children.OfType<Checkbox>())
- {
- if (but.IsCheckable)
- {
- if (but.IsChecked && but.AffectMultiSelectState)
- {
- but.IsChecked = false;
- break;
- }
- }
- }
- }
- }
- IsChecked = true;
- }
- }
- //else if (Click != null)
- // Click(this);
-
- CurrentState = ButtonStates.mouseDown;
- }
-
- base.onMouseButtonDown (sender, e);
+ IsChecked = !IsChecked;
+ base.onMouseClick (sender, e);
}
- public override void onMouseButtonUp (object sender, OpenTK.Input.MouseButtonEventArgs e)
- {
- if (CurrentState != ButtonStates.Disable) {
- if (MouseIsIn (e.Position))
- CurrentState = ButtonStates.mouseOver;
- else
- CurrentState = ButtonStates.normal;
-
- }
-
- base.onMouseButtonUp (sender, e);
- }
- public override void onMouseEnter (object sender, MouseMoveEventArgs e)
- {
- if (CurrentState == ButtonStates.normal)
- CurrentState = ButtonStates.mouseOver;
-
- base.onMouseEnter (sender, e);
- }
- public override void onMouseLeave (object sender, MouseMoveEventArgs e)
- {
- if (CurrentState == ButtonStates.mouseOver)
- CurrentState = ButtonStates.normal;
-
- base.onMouseLeave (sender, e);
- }
- #endregion
-
- #region IXmlSerializable
- public override System.Xml.Schema.XmlSchema GetSchema()
- {
- return null;
- }
- public override void ReadXml(System.Xml.XmlReader reader)
- {
- string handler = reader.GetAttribute("OnClick");
- Interface.EventsToResolve.Add(new DynAttribute
- {
- Source = this,
- Value = handler,
- MemberName = "OnClick"
- });
-
- //Container c = this as Container;
- base.ReadXml(reader);
- }
- public override void WriteXml(System.Xml.XmlWriter writer)
- {
- if (Click != null)
- {
- writer.WriteAttributeString("OnClick", Click.Method.Name);
- }
-
- base.WriteXml(writer);
- }
- #endregion
}
}
|