2 using System.Windows;
\r
3 using System.Windows.Controls;
\r
4 using System.Windows.Documents;
\r
5 using System.Windows.Input;
\r
6 using System.Windows.Media;
\r
7 using System.Windows.Media.Animation;
\r
8 using System.Windows.Media.Imaging;
\r
9 using System.Windows.Shapes;
\r
21 internal System.Windows.UIElement instance;
\r
22 internal System.Windows.Controls.Slider uislider;
\r
23 internal string label;
\r
24 internal Interval range;
\r
26 public Slider(string l, Interval r)
\r
30 Psychlops.Widgets.Connector.stackSlider(this);
\r
32 public static implicit operator double(Slider s)
\r
36 public double value {
\r
37 get { return uislider.Value; }
\r
38 set { if(uislider!=null) uislider.Dispatcher.BeginInvoke( new Action<System.Windows.Controls.Slider, double>(Connector.sliderSet) , uislider, value ); }
\r
40 public bool changed { get; set; }
\r
46 internal static class Connector
\r
48 delegate void StackSlider_(Slider s);
\r
49 internal static void stackSlider(Slider s)
\r
51 Internal.Main.widgetStack.Dispatcher.BeginInvoke(new StackSlider_(stackSlider__), s);
\r
53 static void stackSlider__(Slider ss)
\r
55 var holder = new System.Windows.Controls.Canvas { Width = 200 };
\r
56 var val = new System.Windows.Controls.TextBox { Width = 100 };
\r
57 System.Windows.Controls.Canvas.SetLeft(val, 100);
\r
58 var slide = new System.Windows.Controls.Slider {
\r
59 Minimum = ss.range.begin.val, Maximum = ss.range.end.val,
\r
61 Tag = ss, Width = 200,
\r
63 System.Windows.Controls.Canvas.SetTop(slide, 25);
\r
64 var b = new System.Windows.Data.Binding {
\r
65 Path = new PropertyPath("Value"),
\r
66 Mode = System.Windows.Data.BindingMode.TwoWay,
\r
69 val.SetBinding(TextBox.TextProperty, b);
\r
70 ss.uislider = slide;
\r
71 //var b2 = new System.Windows.Data.Binding
\r
73 // Path = new PropertyPath("value"),
\r
74 // Mode = System.Windows.Data.BindingMode.TwoWay,
\r
77 //val.SetBinding(System.Windows.Controls.Slider.ValueProperty, b2);
\r
78 var label = new System.Windows.Controls.TextBlock { Text = ss.label };
\r
79 System.Windows.Controls.Canvas.SetLeft(label, 3);
\r
80 System.Windows.Controls.Canvas.SetTop(label, 3);
\r
82 holder.Children.Add(label);
\r
83 holder.Children.Add(slide);
\r
84 holder.Children.Add(val);
\r
85 ss.instance = holder;
\r
86 Internal.Main.widgetStack.Children.Add(ss.instance);
\r
88 public static void sliderSet(System.Windows.Controls.Slider s, double v)
\r