コード例 #1
0
ファイル: DPinTests.cs プロジェクト: Onkeliroh/DSA
        public void DPinEqualsTest()
        {
            var pin1 = new DPin();
            var pin2 = new DPin();

            Assert.AreEqual(true, pin1.Equals(pin2));

            pin1.PlotColor = new Color(0, 255, 0);

            Assert.AreEqual(false, pin1.Equals(pin2));
        }
コード例 #2
0
ファイル: DPinTests.cs プロジェクト: Onkeliroh/DSA
        public void DPinConstructorTests()
        {
            var pin = new DPin();

            Assert.AreEqual(Backend.PinType.DIGITAL, pin.Type);
            Assert.AreEqual(Backend.PinMode.OUTPUT, pin.Mode);

            Assert.AreEqual(Color.Zero, pin.PlotColor);
            pin.PlotColor = new Gdk.Color(255, 0, 0);
            Assert.AreEqual(new Gdk.Color(255, 0, 0), pin.PlotColor);
        }
コード例 #3
0
ファイル: DPinConfigDialog.cs プロジェクト: Onkeliroh/DSA
        /// <summary>
        /// Initializes a new instance of the <see cref="DigitalPinConfigurationDialog.DigitalPinConfiguration"/> class.
        /// </summary>
        /// <param name="availablePins">Available pins.</param>
        /// <param name="dpin">Dpin.</param>
        /// <param name="parent">Parent.</param>
        public DPinConfigDialog(DPin[] availablePins, DPin dpin = null, Gtk.Window parent = null)
            : base("Digital Output - Dialog", parent, Gtk.DialogFlags.Modal, new object[0])
        {
            this.Build();

            this.FocusChain = new Widget[] { entryName, cbPin, cbColor, buttonOk, buttonCancel };

            if (dpin != null)
            {
                //change to ApplyBtn to singal change instead of addition of a new instance
                buttonOk.Label = "Apply";
                buttonOk.Image = new Image(Gtk.Stock.Apply, IconSize.Button);

                AvailablePins = new DPin[availablePins.Length + 1];
                Array.Copy(availablePins, AvailablePins, availablePins.Length);
                AvailablePins [availablePins.Length] = dpin;

                Pin = new DPin(dpin);
            }
            else
            {
                AvailablePins = availablePins;

                if (AvailablePins.Length > 0)
                {
                    pin = AvailablePins [0];
                }
                pin.PlotColor = GUIHelper.ColorHelper.GetRandomGdkColor();
                cbColor.Color = pin.PlotColor;
            }

            for (int i = 0; i < availablePins.Length; i++)
            {
                cbPin.AppendText(availablePins [i].DisplayNumber);
            }
            if (AvailablePins.Length > 0)
            {
                cbPin.Active = 0;
            }
            else
            {
                buttonOk.Sensitive   = false;
                buttonOk.TooltipText = "There are no more Pins left to configure.";
            }

            BindEvents();
        }
コード例 #4
0
        public void SerializeDPin()
        {
            DPin TestPin = new DPin()
            {
                Number    = 42,
                Name      = "TestPin",
                PlotColor = GUIHelper.ColorHelper.GetRandomGdkColor(),
            };

            Formator.Serialize(MemStream, TestPin);

            MemStream.Seek(0, SeekOrigin.Begin);

            DPin TestPinClone = (DPin)Formator.Deserialize(MemStream);

            Assert.AreEqual(TestPin, TestPinClone);
        }
コード例 #5
0
        public void SerializeSequence()
        {
            DPin TestPin = new DPin()
            {
                Number = 42,
                Name   = "Testor the Destroyer"
            };

            Sequence Seq = new Sequence()
            {
                Pin   = TestPin,
                Chain = new System.Collections.Generic.List <SequenceOperation>()
                {
                    new SequenceOperation()
                    {
                        Duration = TimeSpan.FromSeconds(42),
                        State    = DPinState.HIGH
                    },
                    new SequenceOperation()
                    {
                        Duration = TimeSpan.FromSeconds(42),
                        State    = DPinState.LOW
                    }
                },
                Repetitions = -1
            };

            Formator.Serialize(MemStream, Seq);
            MemStream.Seek(0, SeekOrigin.Begin);
            Sequence SeqEvilClone = (Sequence)Formator.Deserialize(MemStream);

            Console.WriteLine(Seq.ToStringLong());
            Console.WriteLine(SeqEvilClone.ToStringLong());

            Assert.AreEqual(Seq, SeqEvilClone);
        }
コード例 #6
0
ファイル: NodeViews.cs プロジェクト: Onkeliroh/DSA
 public DPinTreeNode(DPin pin, int index = -1, Sequence seq = null)
 {
     Sequence = seq;
     Index    = index;
     Pin      = pin;
 }
コード例 #7
0
        /// <summary>
        /// Initializes a new instance of the <see cref="SequenceConfigurationsDialog.SequenceConfiguration"/> class.
        /// </summary>
        /// <param name="pins">Pins.</param>
        /// <param name="groups">Groups.</param>
        /// <param name="seq">Seq.</param>
        /// <param name="RefPin">Reference pin.</param>
        /// <param name="parent">Parent.</param>
        public SeqConfigDialog(DPin[] pins, List <string> groups, Sequence seq = null, DPin RefPin = null, Gtk.Window parent = null)
            : base("Digital Sequences - Dialog", parent, Gtk.DialogFlags.Modal, new object[0])
        {
            this.Build();

            sbRadioBtnStopAfter.Adjustment.Upper = int.MaxValue;
            sbRadioBtnStopAfter.Adjustment.Lower = 0;

            DPins = pins;

            //no DPin no Sequence
            if (DPins.Length > 0)
            {
                for (int i = 0; i < DPins.Length; i++)
                {
//					cbPin.AppendText (string.Format ("{0}(D{1})", DPins [i].Name, DPins [i].Number));
                    cbPin.AppendText(DPins [i].DisplayNumber);
                }
            }
            SetupNodeView();
            SetupOxyPlot();

            if (seq != null)
            {
                PinSequence = seq;
                if (seq.Repetitions == -1)
                {
                    rbRepeateContinously.Active = true;
                }
                else
                {
                    rbStopAfter.Active            = true;
                    sbRadioBtnStopAfter.Sensitive = true;
                    sbRadioBtnStopAfter.Value     = seq.Repetitions;
                }

                buttonOk.Label = "Apply";
                buttonOk.Image = new Image(Gtk.Stock.Apply, IconSize.Button);
            }
            else
            {
                pinSequence             = new Sequence();
                pinSequence.Repetitions = -1;
            }
            if (RefPin == null)
            {
                cbPin.Active = 0;
            }
            else
            {
                cbPin.Active = pins.ToList().IndexOf(RefPin);
            }

            SetupGroups(groups);
            DisplaySequenceInfos();
            BuildEvents();
        }