示例#1
0
        public TransformControler(SignallController signal)
        {
            Transform = new TransformManager(signal);
            View      = new TransformViewState(Transform.Options);

            ViewChanged = () => { };
        }
示例#2
0
        public SignalChart(SignallController signal) : base()
        {
            view = signal.View;
            var chart = GenerateChart();

            Controls.Add(chart);
            signal.ViewChanged += () => {
                Controls.Remove(chart);
                chart = GenerateChart();
                Controls.Add(chart);
            };
        }
示例#3
0
        public TransformManager(SignallController sign)
        {
            Options      = new TransformOptions();
            transformers = new Dictionary <TransformType, CachTransformer>
            {
                [TransformType.Fourier] = new CachTransformer(new SimpleSpectrumGener(sign.Internal.Sum),
                                                              sign),
                //[TransformType.Windowed] = new WindowedFourier()
            };

            Transformer = transformers[DEFAULT_TYPE];
        }
示例#4
0
        public CachTransformer(ISpecGenerator gener, SignallController controller)
        {
            spectrum  = new FreqPoint[0][];
            generator = gener;
            CalcSpectrum();

            controller.SignChanged += () =>
            {
                CalcSpectrum();
            };

            TransformChanged = () => { };
        }
示例#5
0
        private Button GetAddButton(SignallController signalState)
        {
            var button = new Button
            {
                Height = frameHeight - 10,
                Width  = Width - 20,
                Text   = "Добавить"
            };

            button.Click += (sender, ev) =>
            {
                var creatingDialog = new AddSignalDialog(signalState).ShowDialog();
            };

            return(button);
        }
示例#6
0
        public AddSignalDialog(SignallController signal)
        {
            //фиксирование размеров
            Width           = 400;
            Height          = 600;
            FormBorderStyle = FormBorderStyle.FixedDialog;

            opts = new SignalStuff(0, signal.Internal.Size);

            var table = new TableLayoutPanel();

            table.RowStyles.Add(new RowStyle(SizeType.Percent, 20));
            table.RowStyles.Add(new RowStyle(SizeType.Percent, 20));
            table.RowStyles.Add(new RowStyle(SizeType.Percent, 20));
            table.RowStyles.Add(new RowStyle(SizeType.Percent, 20));
            table.RowStyles.Add(new RowStyle(SizeType.Percent, 20));

            table.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50));
            table.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50));

            var startField = new SubscribedField("Начало: ", "Начало сигнала должно быть целым положительным числом.", opts.Start.ToString());
            var durField   = new SubscribedField("Продолжительность:", "Продолжительность сигнала должна быть целым положительным числом.", opts.Duration.ToString());
            var freqField  = new SubscribedField("Частота повторения ():", "Частота повторения  сигнала должна быть действительным числом.", opts.Freq.ToString());
            var multField  = new SubscribedField("Множитель:", "Множитель сигнала должен быть действительным числом.", opts.Mult.ToString());
            var constField = new SubscribedField("Константа:", "Константа сигнала должна быть действительным числом. ", opts.Const.ToString());

            var container = new OptionsParser
            {
                Start     = startField,
                Duration  = durField,
                Frequency = freqField,
                Mult      = multField,
                Const     = constField
            };

            var okButton = new Button
            {
                Text = "Создать"
            };

            okButton.Click += (sender, ev) =>
            {
                opts = container.GetOptions();

                if (opts == null)
                {
                    ThrowErrors(container.ErrorMessages);
                }
                else
                {
                    try
                    {
                        signal.AddSignal(new SinSignal(opts));
                        Close();
                    } catch (ArgumentException ex)
                    {
                        ThrowErrors(ex.Message);
                    }
                }
            };


            var cancelButton = new Button
            {
                Text = "Отмена"
            };

            cancelButton.Click += (sender, ev) =>
            {
                Close();
            };

            //надпись об ошибке
            errorLabel = new Label
            {
                Text      = "",
                ForeColor = Color.Red,
                AutoSize  = true
            };

            table.Controls.Add(startField, 0, 0);
            table.Controls.Add(durField, 1, 0);
            table.Controls.Add(freqField, 0, 1);
            table.Controls.Add(multField, 1, 1);
            table.Controls.Add(constField, 0, 2);

            table.Controls.Add(okButton, 0, 3);
            table.Controls.Add(cancelButton, 1, 3);

            table.Controls.Add(errorLabel, 0, 4);

            table.Dock = DockStyle.Fill;
            Controls.Add(table);
        }
示例#7
0
 public ApplicationModel()
 {
     Signal    = new SignallController();
     Transform = new TransformControler(Signal);
 }