Exemple #1
0
        public SeasonalItemsViewModel()
        {
            Title                = "What's in Season?";
            Items                = new ObservableConcurrentDictionary <int, SeasonalItem>();
            DocsChangeIndexes    = new HashSet <int>();
            LoadItemsCommand     = new Command(() => ExecuteLoadItemsCommand());
            SaveDocumentsCommand = new Command(async() => await ExecuteSaveDocumentsCommand());

            //tag::LoadData[]
            var q = QueryBuilder.Select(SelectResult.All())
                    .From(DataSource.Database(_db))
                    .Where(Meta.ID.EqualTo(Expression.String(CoreApp.DocId)))
                    .AddChangeListener((sender, args) =>
            {
                var allResult = args.Results.AllResults();
                var result    = allResult[0];
                var dict      = result[CoreApp.DB.Name].Dictionary;
                var arr       = dict.GetArray(CoreApp.ArrKey);

                if (arr.Count < Items.Count)
                {
                    Items = new ObservableConcurrentDictionary <int, SeasonalItem>();
                }

                Parallel.For(0, arr.Count, i =>
                {
                    var item  = arr[i].Dictionary;
                    var name  = item.GetString("key");
                    var cnt   = item.GetInt("value");
                    var image = item.GetBlob("image");

                    if (_items.ContainsKey(i))
                    {
                        _items[i].Name           = name;
                        _items[i].Quantity       = cnt;
                        _items[i].ImageByteArray = image?.Content;
                    }
                    else
                    {
                        var seasonalItem = new SeasonalItem {
                            Index          = i,
                            Name           = name,
                            Quantity       = cnt,
                            ImageByteArray = image?.Content
                        };

                        _items.Add(i, seasonalItem);
                    }
                });
            });
            //end::LoadData[]
        }
        private static ObservableConcurrentDictionary <string, string> PerformObservableDictionarySetup(
            ICollection <KeyValuePair <string, string> > items)
        {
            var setupLatch = new CountdownEvent(4 * items.Count);

            void SetupCollectionHandler(object sender, NotifyCollectionChangedEventArgs args)
            {
                setupLatch.Signal();
            }

            void SetupPropertyHandler(object sender, PropertyChangedEventArgs args)
            {
                setupLatch.Signal();
            }

            var observableDictionary =
                new ObservableConcurrentDictionary <string, string>(SetupCollectionHandler,
                                                                    SetupPropertyHandler);

            foreach (var item in items)
            {
                observableDictionary.Add(item);
            }

            setupLatch.Wait();

            observableDictionary.CollectionChanged -= SetupCollectionHandler;
            observableDictionary.PropertyChanged   -= SetupPropertyHandler;

            return(observableDictionary);
        }
 public void AddFrameEdit(double timestamp, FRAME_EDIT_TYPE type, BoundingBox bbox)
 {
     if (bbox.x2 - bbox.x1 > m_minimumRedactionSize && bbox.y2 - bbox.y1 > m_minimumRedactionSize) // make sure bounding box is big enough
     {
         if (m_editsDictionary.ContainsKey(timestamp))
         {
             ObservableCollection <FrameEdit> list = m_editsDictionary[timestamp];
             list.Add(new FrameEdit(type, bbox));
         }
         else
         {
             ObservableCollection <FrameEdit> list = new ObservableCollection <FrameEdit>();
             list.Add(new FrameEdit(type, bbox));
             m_editsDictionary.Add(timestamp, list);
         }
     }
 }
        public ItemCopy AddCopy()
        {
            var itemCopy = new ItemCopy {
                CopyNo = _copies.Keys.LastOrDefault() + 1
            };

            _copies.Add(itemCopy.CopyNo, itemCopy);
            return(itemCopy);
        }
        private void ClientOnDeviceAdded(object sender, DeviceAddedEventArgs e)
        {
            if (Devices.TryGetValue(e.Device.Index, out var dev))
            {
                if (!dev.Name.Equals(e.Device.Name, StringComparison.Ordinal))
                {
                    Devices.Remove(e.Device.Index);
                    Devices.Add(e.Device.Index, new ButtplugPanelDevice(e.Device));
                    return;
                }

                dev.Device      = e.Device;
                dev.IsConnected = true;
            }
            else
            {
                Devices.Add(e.Device.Index, new ButtplugPanelDevice(e.Device));
            }
        }
        public bool ReadDatabase()
        {
            bool success = true;

            try
            {
                if (File.Exists(m_databaseFilename))
                {
                    m_editsDictionary = new ObservableConcurrentDictionary <double, ObservableCollection <FrameEdit> >();

                    using (BinaryReader br = new BinaryReader(new FileStream(m_databaseFilename, FileMode.Open)))
                    {
                        int numFrames = br.ReadInt32(); // read number of frames with edits

                        // iterate each frame with edits
                        for (int i = 0; i < numFrames; i++)
                        {
                            double timestamp     = br.ReadDouble();
                            int    numFrameEdits = br.ReadInt32();

                            ObservableCollection <FrameEdit> feList = new ObservableCollection <FrameEdit>();

                            for (int j = 0; j < numFrameEdits; j++)
                            {
                                FRAME_EDIT_TYPE type = (FRAME_EDIT_TYPE)br.ReadInt32();
                                int             x1   = br.ReadInt32();
                                int             y1   = br.ReadInt32();
                                int             x2   = br.ReadInt32();
                                int             y2   = br.ReadInt32();

                                FrameEdit fe = new FrameEdit(type, new BoundingBox(x1, y1, x2, y2));

                                feList.Add(fe);
                            }

                            m_editsDictionary.Add(timestamp, feList);
                        }
                    }
                }
                else
                {
                    success    = false;
                    m_errorMsg = "File does not exist: " + m_databaseFilename;
                    OnVideoEditsDatabaseEvent(new VideoEditsDatabase_EventArgs(true, m_errorMsg));
                }
            }
            catch (Exception ex)
            {
                m_errorMsg = ex.Message;
                success    = false;
                OnVideoEditsDatabaseEvent(new VideoEditsDatabase_EventArgs(true, m_errorMsg));
            }

            return(success);
        }
Exemple #7
0
 public void RegisterPlugin(string key, IExceptionlessPlugin plugin)
 {
     if (_plugins.ContainsKey(key))
     {
         _plugins[key] = plugin;
     }
     else
     {
         _plugins.Add(key, plugin);
     }
 }
        public Calculation CreateEmptyCalculation()
        {
            ObservableConcurrentDictionary <string, Parameter> p_in = new ObservableConcurrentDictionary <string, Parameter>();

            p_in.Add("x", null);
            ObservableConcurrentDictionary <string, Parameter> p_out = new ObservableConcurrentDictionary <string, Parameter>();

            p_out.Add("out01", null);
            this.calc_candidate = new Calculation(CALC_CANDIDATE_EXPR, CALC_CANDIDATE_NAME, p_in, p_out);
            this.calc_record.Add(this.calc_candidate);
            return(this.calc_candidate);
        }
        /// <summary>
        /// Creates a named calculation that takes a lambda expression, input and output Parameter instances.
        /// </summary>
        /// <param name="_name"></param>
        /// <param name="_expr">a mathematical expression with named parameters (e.g. (x + y/2)*3.5)</param>
        /// <param name="_parameters_in">List of input parameters</param>
        /// <param name="_parameters_out">List of output parameters (each receives the same value)</param>
        /// <returns></returns>
        internal Calculation CreateCalculation(string _name, string _expr, Dictionary <string, Parameter> _parameters_in,
                                               Dictionary <string, Parameter> _parameters_out)
        {
            if (string.IsNullOrEmpty(_name) || string.IsNullOrEmpty(_expr) ||
                _parameters_in == null || _parameters_in.Count < 1 ||
                _parameters_out == null || _parameters_out.Count < 1)
            {
                return(null);
            }

            ObservableConcurrentDictionary <string, Parameter> p_IN = new ObservableConcurrentDictionary <string, Parameter>();

            foreach (var entry in _parameters_in)
            {
                p_IN.Add(entry.Key, entry.Value);
            }
            ObservableConcurrentDictionary <string, Parameter> p_OUT = new ObservableConcurrentDictionary <string, Parameter>();

            foreach (var entry in _parameters_out)
            {
                p_OUT.Add(entry.Key, entry.Value);
            }

            try
            {
                Dictionary <string, double> params_in_value = new Dictionary <string, double>();
                foreach (var entry in p_IN)
                {
                    if (entry.Value == null)
                    {
                        continue;
                    }
                    params_in_value.Add(entry.Key, entry.Value.ValueCurrent);
                }
                // try to parse the expression(SPACES and UNDERLINES cause Exceptions!!!)
                Func <double> func = CalculationFactory.CALCULATOR.ParseExpression(_expr, params_in_value).Compile();
                if (func == null)
                {
                    return(null);
                }
                // create the Calculation instance ONLY if parsing was successful
                Calculation c = new Calculation(_expr, _name, p_IN, p_OUT);
                this.calc_record.Add(c);
                return(c);
            }
            catch (Exception e)
            {
                string debug = e.Message;
                MessageBox.Show(debug, "Eingabefehler Gleichung", MessageBoxButton.OK, MessageBoxImage.Error);
                return(null);
            }
        }
        public void TestAddWithKeyValuePair()
        {
            var latch = new CountdownEvent(4);

            var collectionChangedActions = new List <NotifyCollectionChangedAction>();
            var propertiesChanged        = new List <string>();

            void CollectionChangedHandler(object sender, NotifyCollectionChangedEventArgs args)
            {
                collectionChangedActions.Add(args.Action);
                latch?.Signal();
            }

            void PropertyChangedHandler(object sender, PropertyChangedEventArgs args)
            {
                propertiesChanged.Add(args.PropertyName);
                latch?.Signal();
            }

            var observableDictionary =
                new ObservableConcurrentDictionary <string, string>(CollectionChangedHandler, PropertyChangedHandler);

            var item = new KeyValuePair <string, string>("1", "value");

            observableDictionary.Add(item);

            latch.Wait();

            Assert.Single(observableDictionary);

            var keys = new string[1];

            observableDictionary.Keys.CopyTo(keys, 0);
            Assert.Equal("1", keys[0]);

            var values = new string[1];

            observableDictionary.Values.CopyTo(values, 0);
            Assert.Equal("value", values[0]);

            Assert.Single(collectionChangedActions);
            Assert.Equal(NotifyCollectionChangedAction.Add, collectionChangedActions[0]);

            Assert.Equal(3, propertiesChanged.Count);
            Assert.Contains("Count", propertiesChanged);
            Assert.Contains("Keys", propertiesChanged);
            Assert.Contains("Values", propertiesChanged);

            latch.Dispose();
        }
        private async void StartUpdateTask()
        {
            if (_updateTask != null && _updateTask.Status == TaskStatus.Running)
            {
                return;
            }

            _ctsUpdate = new CancellationTokenSource();
            try
            {
                _updateTask = Task.Factory.StartNew(() =>
                {
                    Stopwatch sw = new Stopwatch();
                    while (!_ctsUpdate.Token.IsCancellationRequested)
                    {
                        sw.Restart();
                        foreach (MotionControllerModel mc in _camera.Controllers)
                        {
                            var mc1 = mc;
                            // update if the controller is selected for tracking
                            if (mc.Tracking.ContainsKey(_camera) && mc.Tracking[_camera])
                            {
                                // add if missing
                                if (!_controllerObjects.ContainsKey(mc))
                                {
                                    DispatcherHelper.UIDispatcher.Invoke(() =>
                                    {
                                        // convert color
                                        byte r      = (byte)(mc1.Color.r * 255 + 0.5);
                                        byte g      = (byte)(mc1.Color.g * 255 + 0.5);
                                        byte b      = (byte)(mc1.Color.b * 255 + 0.5);
                                        Color color = Color.FromRgb(r, g, b);

                                        SphereVisual3D sphere = new SphereVisual3D
                                        {
                                            Center = new Point3D(mc1.WorldPosition[_camera].x,
                                                                 mc1.WorldPosition[_camera].z,
                                                                 mc1.WorldPosition[_camera].y),
                                            Radius = ((int)((14.0 / Math.PI) * 100)) / 200.0,
                                            Fill   = new SolidColorBrush(color)
                                        };
                                        _controllerObjects.Add(mc1, sphere);
                                        _items.Add(sphere);
                                    });
                                }
                                // update position
                                if (mc.WorldPosition.ContainsKey(_camera))
                                {
                                    DispatcherHelper.UIDispatcher.Invoke((Action)(() => _controllerObjects[mc1].Center = new Point3D(
                                                                                      mc1.WorldPosition[_camera].x,
                                                                                      mc1.WorldPosition[_camera].z,
                                                                                      mc1.WorldPosition[_camera].y)));
                                }
                            }
                            // remove objects corresponding to unselected controllers
                            else
                            {
                                if (_controllerObjects.ContainsKey(mc))
                                {
                                    DispatcherHelper.UIDispatcher.Invoke((Action)(() => _items.Remove(_controllerObjects[mc1])));
                                    _controllerObjects.Remove(mc);
                                }
                            }
                        } // foreach
                        sw.Stop();
                        // taking the processing time of the task itself into account, pause the thread to approximately reach the given FPS
                        Thread.Sleep((int)(Math.Max((1000.0 / _camera.FPS) - sw.ElapsedMilliseconds, 0) + 0.5));
                    } // while
                }, _ctsUpdate.Token, TaskCreationOptions.LongRunning, TaskScheduler.Default);
                await _updateTask;
            }
            catch (OperationCanceledException ex)
            {
                Console.WriteLine(ex.StackTrace);
                Stop();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.StackTrace);
                Stop();
            }
        }