public CloudSeedView()
        {
            var plugin = new CloudSeedPlugin();

            plugin.InitializeDevice();

            viewModel   = plugin.ViewModel;
            DataContext = viewModel;
            InitializeComponent();
            Setup();
        }
Exemple #2
0
        public CloudSeedViewModel(CloudSeedPlugin plugin)
        {
            this.plugin = plugin;

            this.parameterUpdates = new Dictionary <Parameter, double>();
            NumberedParameters    = new ObservableCollection <double>();
            foreach (var para in Enum.GetValues(typeof(Parameter)).Cast <Parameter>())
            {
                NumberedParameters.Add(0.0);
            }

            SaveProgramCommand   = new DelegateCommand(name => SaveProgram(name.ToString()));
            LoadProgramCommand   = new DelegateCommand(program => LoadProgram((ProgramBanks.PluginProgram?)program));
            DeleteProgramCommand = new DelegateCommand(_ => DeleteProgram());

            NumberedParameters.CollectionChanged += (s, e) =>
            {
                if (suppressUpdates)
                {
                    return;
                }

                lock (updateLock)
                {
                    var para = (Parameter)e.NewStartingIndex;
                    var val  = (double)e.NewItems[0];
                    plugin.SetParameter(para, val);

                    if (para == Parameter.LateMode)
                    {
                        NotifyChanged(() => DelayMode);
                    }

                    NotifyChanged(() => ActiveControlDisplay);
                }
            };

            updateThread = new Thread(UpdateParameters);
            updateThread.IsBackground = true;
            updateThread.Priority     = ThreadPriority.Lowest;
            updateThread.Start();
        }