Esempio n. 1
0
        void Child_Drop(object sender, System.Windows.DragEventArgs e)
        {
            var content = new System.Windows.Controls.ContentControl();
            var bind    = new System.Windows.Data.Binding();

            var cdp = new ChannelDataProvider
            {
                ChannelName    = (string)e.Data.GetData(typeof(string)),
                IsBindInDesign = true
            };

            //cdp.ChannelName = node.Tag + "." + node.Text;
            bind.Source = cdp;

            System.Windows.Data.BindingOperations.SetBinding(content, System.Windows.Controls.ContentControl.ContentProperty, bind);
            //TODO:need to solve problem with drag mouse capturing
            // System.Windows.Point p=System.Windows.Input.Mouse.GetPosition(Schema.MainCanvas);

            System.Windows.Controls.Canvas.SetLeft(content, 0);
            System.Windows.Controls.Canvas.SetTop(content, 0);
            content.Width = 60; content.Height = 50;
            if (MainPanel.Resources[typeof(BaseChannel)] == null)
            {
                var dt = ((DataTemplate)XamlReader.Load(new XmlTextReader(new StringReader(StringResources.ChannelDefaultTemplate))));
                dt.DataType = typeof(BaseChannel);
                var dk = new DataTemplateKey(typeof(BaseChannel));

                MainPanel.Resources[dk] = dt;
            }
            UndoBuff.AddCommand(new AddGraphicsObject(content));
        }
        public override System.Windows.Data.BindingBase Save()
        {
            if (channels.Count > 0)
            {
                System.Windows.Data.MultiBinding multiBind = new MultiBinding();
                foreach (IChannel channel in channels)
                {
                    System.Windows.Data.Binding bind = new System.Windows.Data.Binding("Value");
                    ChannelDataProvider         cdp  = new ChannelDataProvider();
                    cdp.ChannelName = channel.PluginId + "." + channel.Name;
                    bind.Source     = cdp;
                    cdp.Refresh();
                    bind.FallbackValue       = "{" + cdp.ChannelName + "}";
                    bind.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
                    multiBind.Bindings.Add(bind);
                }
                multiBind.Converter = new Kent.Boogaart.Converters.FormatConverter(expressionEdit.Text);

                return(multiBind);
            }
            else
            {
                return(base.Save());
            }
        }
        public override System.Windows.Data.BindingBase Save()
        {
            if (channels.Count > 0)
            {
                System.Windows.Data.MultiBinding multiBind = new MultiBinding();
                foreach (IChannel channel in channels)
                {
                    System.Windows.Data.Binding bind = new System.Windows.Data.Binding("Value");
                    ChannelDataProvider         cdp  = new ChannelDataProvider();
                    cdp.ChannelName    = channel.PluginId + "." + channel.Name;
                    bind.Source        = cdp;
                    bind.FallbackValue = 0;
                    bind.Converter     = new Kent.Boogaart.Converters.TypeConverter(typeof(Double), typeof(Double));
                    multiBind.Bindings.Add(bind);
                }
                multiBind.Mode = BindingMode.TwoWay;
                ScriptConverter ec = new ScriptConverter(expressionEdit.Text);

                multiBind.Converter = ec;

                DependencyObject   depObj;
                DependencyProperty depProp;
                if (Property.GetWpfObjects(out depObj, out depProp))
                {
                    multiBind.FallbackValue = depObj.GetValue(depProp);
                }
                return(multiBind);
            }
            else
            {
                return(base.Save());
            }
        }
        public override System.Windows.Data.BindingBase Save()
        {
            if (channel != null)
            {
                System.Windows.Data.Binding bind = new System.Windows.Data.Binding("Value");
                ChannelDataProvider         cdp  = new ChannelDataProvider();
                cdp.ChannelName = channel.PluginId + "." + channel.Name;
                bind.Source     = cdp;
                cdp.Refresh();

                SolidBrushConverter conv = new SolidBrushConverter();
                conv.MinValue   = Decimal.ToDouble(minEdit.Value);
                conv.MaxValue   = Decimal.ToDouble(maxEdit.Value);
                conv.StartColor = System.Windows.Media.Color.FromArgb(
                    startColorButton.BackColor.A,
                    startColorButton.BackColor.R,
                    startColorButton.BackColor.G,
                    startColorButton.BackColor.B);
                conv.EndColor = System.Windows.Media.Color.FromArgb(
                    endColorButton.BackColor.A,
                    endColorButton.BackColor.R,
                    endColorButton.BackColor.G,
                    endColorButton.BackColor.B);

                bind.Converter = conv;

                bind.Mode = BindingMode.TwoWay;


                DependencyObject   depObj;
                DependencyProperty depProp;
                if (Property.GetWpfObjects(out depObj, out depProp))
                {
                    bind.FallbackValue = depObj.GetValue(depProp);
                }

                return(bind);
            }
            else
            {
                return(base.Save());
            }
        }
Esempio n. 5
0
        public override System.Windows.Data.BindingBase Save()
        {
            if (channel != null)
            {
                System.Windows.Data.Binding bind = new System.Windows.Data.Binding("Value");
                ChannelDataProvider         cdp  = new ChannelDataProvider();
                cdp.ChannelName          = channel.PluginId + "." + channel.Name;
                bind.Source              = cdp;
                bind.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
                cdp.Refresh();

                ComposingConverter conv = new ComposingConverter();
                if (checkBox1.Checked)
                {
                    RangeConverter rc = new RangeConverter();
                    rc.Min = Decimal.ToDouble(minEdit.Value);
                    rc.Max = Decimal.ToDouble(maxEdit.Value);
                    conv.Converters.Add(rc);
                }

                conv.Converters.Add(new Kent.Boogaart.Converters.TypeConverter(cdp.Channel.Type, Property.PropertyType));
                bind.Converter = conv;

                bind.Mode = BindingMode.TwoWay;


                DependencyObject   depObj;
                DependencyProperty depProp;
                if (Property.GetWpfObjects(out depObj, out depProp))
                {
                    bind.FallbackValue = depObj.GetValue(depProp);
                }

                return(bind);
            }
            else
            {
                return(base.Save());
            }
        }
Esempio n. 6
0
        public override void Initialize(object element, PropertyWrapper property, System.Windows.Data.BindingBase binding)
        {
            base.Initialize(element, property, binding);

            System.Windows.Data.Binding bind = binding as System.Windows.Data.Binding;
            if (bind != null)
            {
                ChannelDataProvider cdp = (ChannelDataProvider)bind.Source;
                AddChannel(cdp.Channel);

                ComposingConverter conv = bind.Converter as ComposingConverter;
                foreach (IValueConverter converter in conv.Converters)
                {
                    if (converter is RangeConverter)
                    {
                        checkBox1.Checked = true;
                        RangeConverter rc = converter as RangeConverter;
                        minEdit.Value = (Decimal)rc.Min;
                        maxEdit.Value = (Decimal)rc.Max;
                    }
                }
            }
        }
        public override void Initialize(object element, PropertyWrapper property, System.Windows.Data.BindingBase binding)
        {
            base.Initialize(element, property, binding);

            DependencyObject   depObj;
            DependencyProperty depProp;

            if (property.GetWpfObjects(out depObj, out depProp))
            {
                if (depObj.GetValue(depProp) is String)
                {
                    expressionEdit.Text = (string)depObj.GetValue(depProp);
                }
            }

            System.Windows.Data.MultiBinding bind = binding as System.Windows.Data.MultiBinding;
            if (bind != null)
            {
                expressionEdit.Text = (bind.Converter as ScriptConverter).Expression;

                channels.Clear();
                foreach (System.Windows.Data.BindingBase bindingBase in bind.Bindings)
                {
                    if (bindingBase is System.Windows.Data.Binding)
                    {
                        System.Windows.Data.Binding b = bindingBase as System.Windows.Data.Binding;
                        if (b.Source is ChannelDataProvider)
                        {
                            ChannelDataProvider src = (ChannelDataProvider)b.Source;
                            channels.Add(src.Channel);
                        }
                    }
                }
                FillChannelsGrid();
            }
        }
        public override void Initialize(object element, PropertyWrapper property, System.Windows.Data.BindingBase binding)
        {
            base.Initialize(element, property, binding);

            System.Windows.Data.Binding bind = binding as System.Windows.Data.Binding;
            if (bind != null)
            {
                ChannelDataProvider cdp = (ChannelDataProvider)bind.Source;
                AddChannel(cdp.Channel);
                SolidBrushConverter sbc = bind.Converter as SolidBrushConverter;
                minEdit.Value = (Decimal)sbc.MinValue;
                maxEdit.Value = (Decimal)sbc.MaxValue;
                startColorButton.BackColor = Color.FromArgb(
                    sbc.StartColor.A,
                    sbc.StartColor.R,
                    sbc.StartColor.G,
                    sbc.StartColor.B);
                endColorButton.BackColor = Color.FromArgb(
                    sbc.EndColor.A,
                    sbc.EndColor.R,
                    sbc.EndColor.G,
                    sbc.EndColor.B);
            }
        }