private void SetStatusLabelCaption(string caption, int?errorCount = null)
        {
            var reparseCommandButton = FindChildByTag(typeof(ReparseCommandMenuItem).FullName) as ReparseCommandMenuItem;

            if (reparseCommandButton == null)
            {
                return;
            }

            var showErrorsCommandButton = FindChildByTag(typeof(ShowParserErrorsCommandMenuItem).FullName) as ShowParserErrorsCommandMenuItem;

            if (showErrorsCommandButton == null)
            {
                return;
            }

            UiDispatcher.Invoke(() =>
            {
                reparseCommandButton.SetCaption(caption);
                reparseCommandButton.SetToolTip(string.Format(RubberduckUI.ReparseToolTipText, caption));
                if (errorCount.HasValue && errorCount.Value > 0)
                {
                    showErrorsCommandButton.SetToolTip(string.Format(RubberduckUI.ParserErrorToolTipText, errorCount.Value));
                }
            });
            Localize();
        }
Example #2
0
        private void NewRate(LatestPriceResultMessage result)
        {
            UiDispatcher.Invoke(() =>
            {
                var e = ExchangeRates.FirstOrDefault(x => x.IsSimilarRequest(result));
                if (e != null)
                {
                    ExchangeRates.Remove(e);
                }
                ExchangeRates.Add(result);

                var exrs = ExchangeRates.OrderBy(x => x.Pair.ToString()).ToList();
                ExchangeRates.Clear();

                foreach (var er in exrs)
                {
                    ExchangeRates.Add(er);
                }

                if (AssetLeft.IsNone() || AssetRight.IsNone() || ConvertLeft == 0)
                {
                    return;
                }

                var ap = new AssetPair(AssetLeft, AssetRight);
                if (!result.Pair.Equals(ap))
                {
                    return;
                }

                _isConverted    = result.IsConverted;
                ResultViewModel = new ExchangeRateResultViewModel(this, result);
                LoadingInfo     = "";
            });
        }
Example #3
0
        private void _state_StateChanged(object sender, System.EventArgs e)
        {
            _allDeclarations = _state.AllDeclarations
                               .Select(item => new Declaration(item))
                               .ToArray();

            _userDeclarations = _state.AllUserDeclarations
                                .Select(item => new Declaration(item))
                                .ToArray();

            var errorHandler = OnError;

            if (_state.Status == Parsing.VBA.ParserState.Error && errorHandler != null)
            {
                UiDispatcher.Invoke(errorHandler.Invoke);
            }

            var parsedHandler = OnParsed;

            if (_state.Status == Parsing.VBA.ParserState.Parsed && parsedHandler != null)
            {
                UiDispatcher.Invoke(parsedHandler.Invoke);
            }

            var readyHandler = OnReady;

            if (_state.Status == Parsing.VBA.ParserState.Ready && readyHandler != null)
            {
                UiDispatcher.Invoke(readyHandler.Invoke);
            }
        }
Example #4
0
 public void Startup()
 {
     CleanReloadConfig();
     _appMenus.Initialize();
     _hooks.HookHotkeys(); // need to hook hotkeys before we localize menus, to correctly display ShortcutTexts
     _appMenus.Localize();
     Task.Delay(1000).ContinueWith(t => UiDispatcher.Invoke(() => _parser.State.OnParseRequested(this)));
     UpdateLoggingLevel();
 }
Example #5
0
 private void BookmarkAllResponseMessage(BookmarkAllResponseMessage m)
 {
     UiDispatcher.Invoke(() =>
     {
         _bookmarks.Clear();
         foreach (var i in m.Bookmarks)
         {
             _bookmarks.Add(i);
         }
     });
 }
Example #6
0
 /// <summary>
 /// An utility method to run a worker thread on UI. This method is Cross-platform and works on all the supported
 /// platforms (iOS, Android, WPF)
 /// </summary>
 /// <param name="code">The code to run on the UI thread</param>
 public void RunUI(Action code)
 {
     if (UiDispatcher != null)
     {
         UiDispatcher.Invoke(code);
     }
     else
     {
         code.Invoke();
     }
 }
Example #7
0
 private void Start()
 {
     while ((bool)UiDispatcher.Invoke(new Func <bool>(() => prg.Value < prg.Maximum)))
     {
         if (Stop)
         {
             return;
         }
         UiDispatcher.Invoke(new Action(() => prg.Value++));
         Thread.Sleep(100);
     }
 }
        private void ParserState_ModuleStateChanged(object sender, Parsing.ParseProgressEventArgs e)
        {
            // if we are resolving references, we already have the declarations and don't need to display error
            if (!(e.State == ParserState.Error ||
                  (e.State == ParserState.ResolverError &&
                   e.OldState == ParserState.ResolvingDeclarations)))
            {
                return;
            }

            var components       = e.Component.Collection;
            var componentProject = components.Parent;
            {
                var projectNode = Projects.OfType <CodeExplorerProjectViewModel>()
                                  .FirstOrDefault(p => p.Declaration.Project.Equals(componentProject));

                if (projectNode == null)
                {
                    return;
                }

                SetErrorState(projectNode, e.Component);

                if (_errorStateSet)
                {
                    return;
                }

                // at this point, we know the node is newly added--we have to add a new node, not just change the icon of the old one.
                var projectName = componentProject.Name;
                var folderNode  = projectNode.Items.FirstOrDefault(f => f is CodeExplorerCustomFolderViewModel && f.Name == projectName);

                UiDispatcher.Invoke(() =>
                {
                    if (folderNode == null)
                    {
                        folderNode = new CodeExplorerCustomFolderViewModel(projectNode, projectName, projectName);
                        projectNode.AddChild(folderNode);
                    }

                    var declaration = CreateDeclaration(e.Component);
                    var newNode     = new CodeExplorerComponentViewModel(folderNode, declaration, new List <Declaration>())
                    {
                        IsErrorState = true
                    };

                    folderNode.AddChild(newNode);

                    // Force a refresh. OnPropertyChanged("Projects") didn't work.
                    Projects = Projects;
                });
            }
        }
Example #9
0
        private void ServiceChanged()
        {
            UiDispatcher.Invoke(delegate
            {
                Assets.Clear();

                if (ServiceSelected != null)
                {
                    M.SendAsync(new AssetNetworkRequestMessage(ServiceSelected?.Network));
                }
            });
        }
Example #10
0
        public void SetPerformance(long res, bool isTryParse)
        {
            string val = res > 5000 ? $"{(int)TimeSpan.FromMilliseconds(res).TotalSeconds} Sec" : $"{res} Ms";

            if (isTryParse)
            {
                UiDispatcher?.Invoke(() => { TryParsePerformance = val; OnPropertyRaised("TryParsePerformance"); });
            }
            else
            {
                UiDispatcher?.Invoke(() => { ParsePerformance = val; OnPropertyRaised("ParsePerformance"); });
            }
        }
Example #11
0
        private void PopulateTestData()
        {
            UiDispatcher.Invoke(() =>
            {
                DateTime timestamp = DateTime.UtcNow;

                //PortfolioDistributionChangedMessage message1 = new PortfolioDistributionChangedMessage(UserContext.Current.Id, 200, 20, timestamp, new PortfolioInfoItem(Networks.I.Get("Poloniex")));
                //PortfolioDistributionChangedMessage message2 = new PortfolioDistributionChangedMessage(UserContext.Current.Id, 300, 30, timestamp, new PortfolioInfoItem(Networks.I.Get("Bittrex")));
                //PortfolioDistributionChangedMessage message3 = new PortfolioDistributionChangedMessage(UserContext.Current.Id, 500, 50, timestamp, new PortfolioInfoItem(Networks.I.Get("Bitstamp")));

                //M.Send(new PortfolioNetworksMessage(DateTime.UtcNow, new List<PortfolioDistributionItem>()));
            });
        }
        private void SetContextSelectionCaption(string caption, int contextReferenceCount, string description)
        {
            var contextLabel       = FindChildByTag(typeof(ContextSelectionLabelMenuItem).FullName) as ContextSelectionLabelMenuItem;
            var contextReferences  = FindChildByTag(typeof(ReferenceCounterLabelMenuItem).FullName) as ReferenceCounterLabelMenuItem;
            var contextDescription = FindChildByTag(typeof(ContextDescriptionLabelMenuItem).FullName) as ContextDescriptionLabelMenuItem;

            UiDispatcher.Invoke(() =>
            {
                contextLabel?.SetCaption(caption);
                contextReferences?.SetCaption(contextReferenceCount);
                contextDescription?.SetCaption(description);
            });
            Localize();
        }
Example #13
0
        private void RetreiveAllAssets(AssetPairAllResponseMessage m)
        {
            UiDispatcher.Invoke(() =>
            {
                ListDataExplorerItems.Clear();

                foreach (var currentAssetPair in m.Pairs)
                {
                    ListDataExplorerItems.Add(new DataExplorerItemModel(currentAssetPair.Asset1.ShortCode + " -> " + currentAssetPair.Asset2.ShortCode, currentAssetPair));
                }

                M.Unregister <AssetPairAllResponseMessage>(this, RetreiveAllAssets);
            });
        }
Example #14
0
        private void PortfolioResultsMessage(PortfolioResultsMessage m)
        {
            if (!m.IsConversionComplete)
            {
                return;
            }

            if (_lastTotal != null && _lastTotal.Value.IsWithinPercentage(m.TotalConverted, 1))
            {
                return;
            }

            _lastTotal = m.TotalConverted;

            UiDispatcher.Invoke(() => UpdatePieChart(m));
        }
        private async void RefreshInspections()
        {
            var stopwatch = Stopwatch.StartNew();

            IsBusy = true;

            var results = (await _inspector.FindIssuesAsync(_state, CancellationToken.None)).ToList();

            if (GroupByInspectionType)
            {
                results = results.OrderBy(o => o.Inspection.InspectionType)
                          .ThenBy(t => t.Inspection.Name)
                          .ThenBy(t => t.QualifiedSelection.QualifiedName.Name)
                          .ThenBy(t => t.QualifiedSelection.Selection.StartLine)
                          .ThenBy(t => t.QualifiedSelection.Selection.StartColumn)
                          .ToList();
            }
            else
            {
                results = results.OrderBy(o => o.QualifiedSelection.QualifiedName.Name)
                          .ThenBy(t => t.Inspection.Name)
                          .ThenBy(t => t.QualifiedSelection.Selection.StartLine)
                          .ThenBy(t => t.QualifiedSelection.Selection.StartColumn)
                          .ToList();
            }

            Results = new ObservableCollection <IInspectionResult>(results);

            UiDispatcher.Invoke(() =>
            {
                try
                {
                    IsBusy = false;
                    OnPropertyChanged("EmptyUIRefreshVisibility");
                    IsRefreshing = false;
                    SelectedItem = null;
                }
                catch (Exception exception)
                {
                    Logger.Error(exception, "Exception thrown trying to refresh the inspection results view on th UI thread.");
                }
            });

            stopwatch.Stop();
            LogManager.GetCurrentClassLogger().Trace("Inspections loaded in {0}ms", stopwatch.ElapsedMilliseconds);
        }
Example #16
0
        public void Localize()
        {
            if (Item == null)
            {
                return;
            }

            foreach (var kvp in _items)
            {
                var item = kvp;
                UiDispatcher.Invoke(() =>
                {
                    item.Value.Caption     = item.Key.Caption.Invoke();
                    item.Value.TooltipText = item.Key.ToolTipText.Invoke();
                });
            }
        }
Example #17
0
        public void Startup()
        {
            CleanReloadConfig();

            _appMenus.Initialize();
            _appMenus.Localize();

            Task.Delay(1000).ContinueWith(t =>
            {
                // run this on UI thread
                UiDispatcher.Invoke(() =>
                {
                    _parser.State.OnParseRequested(this);
                });
            }).ConfigureAwait(false);

            _hooks.HookHotkeys();
        }
Example #18
0
        public void Localize()
        {
            if (Item == null)
            {
                return;
            }

            foreach (var kvp in _items.Where(kv => kv.Key != null && kv.Value != null && !kv.Value.IsWrappingNullReference))
            {
                try
                {
                    var item = kvp;
                    UiDispatcher.Invoke(() => LocalizeInternal(item, kvp));
                }
                catch (Exception e)
                {
                    Logger.Error(e, $"Failed to dispatch assignment of {kvp.Value.GetType().Name}.Caption and .TooltipText for {kvp.Key.GetType().Name} to the UI thread.");
                }
            }
        }
        private async void _state_StateChanged(object sender, EventArgs e)
        {
            _logger.Debug("InspectionResultsViewModel handles StateChanged...");
            if (_state.Status != ParserState.Ready)
            {
                IsBusy = false;
                return;
            }

            _logger.Debug("Running code inspections...");
            IsBusy = true;

            var results = (await _inspector.FindIssuesAsync(_state, CancellationToken.None)).ToList();

            if (GroupByInspectionType)
            {
                results = results.OrderBy(o => o.Inspection.InspectionType)
                          .ThenBy(t => t.Inspection.Name)
                          .ThenBy(t => t.QualifiedSelection.QualifiedName.Name)
                          .ThenBy(t => t.QualifiedSelection.Selection.StartLine)
                          .ThenBy(t => t.QualifiedSelection.Selection.StartColumn)
                          .ToList();
            }
            else
            {
                results = results.OrderBy(o => o.QualifiedSelection.QualifiedName.Name)
                          .ThenBy(t => t.Inspection.Name)
                          .ThenBy(t => t.QualifiedSelection.Selection.StartLine)
                          .ThenBy(t => t.QualifiedSelection.Selection.StartColumn)
                          .ToList();
            }

            UiDispatcher.Invoke(() =>
            {
                Results = new ObservableCollection <ICodeInspectionResult>(results);

                CanRefresh   = true;
                IsBusy       = false;
                SelectedItem = null;
            });
        }
Example #20
0
        private void BookmarkHasChangedMessage(BookmarkHasChangedMessage m)
        {
            var state = _bookmarks.Contains(m.Bookmark);

            UiDispatcher.Invoke(() =>
            {
                if (m.IsBookmarked && state || !m.IsBookmarked && !state)
                {
                    return;
                }

                if (m.IsBookmarked)
                {
                    _bookmarks.Add(m.Bookmark);
                }
                else
                {
                    _bookmarks.Remove(m.Bookmark);
                }
            });
        }
Example #21
0
        private void SetContextSelectionCaption(string caption, int contextReferenceCount, string description)
        {
            var contextLabel       = FindChildByTag(typeof(ContextSelectionLabelMenuItem).FullName) as ContextSelectionLabelMenuItem;
            var contextReferences  = FindChildByTag(typeof(ReferenceCounterLabelMenuItem).FullName) as ReferenceCounterLabelMenuItem;
            var contextDescription = FindChildByTag(typeof(ContextDescriptionLabelMenuItem).FullName) as ContextDescriptionLabelMenuItem;

            UiDispatcher.Invoke(() =>
            {
                try
                {
                    contextLabel?.SetCaption(caption);
                    contextReferences?.SetCaption(contextReferenceCount);
                    contextDescription?.SetCaption(description);
                }
                catch (Exception exception)
                {
                    Logger.Error(exception, "Exception thrown trying to set the context selection caption on the UI thread.");
                }
            });
            Localize();
        }
Example #22
0
        private async void RefreshInspections()
        {
            var stopwatch = Stopwatch.StartNew();

            IsBusy = true;

            var results = (await _inspector.FindIssuesAsync(_state, CancellationToken.None)).ToList();

            if (GroupByInspectionType)
            {
                results = results.OrderBy(o => o.Inspection.InspectionType)
                          .ThenBy(t => t.Inspection.Name)
                          .ThenBy(t => t.QualifiedSelection.QualifiedName.Name)
                          .ThenBy(t => t.QualifiedSelection.Selection.StartLine)
                          .ThenBy(t => t.QualifiedSelection.Selection.StartColumn)
                          .ToList();
            }
            else
            {
                results = results.OrderBy(o => o.QualifiedSelection.QualifiedName.Name)
                          .ThenBy(t => t.Inspection.Name)
                          .ThenBy(t => t.QualifiedSelection.Selection.StartLine)
                          .ThenBy(t => t.QualifiedSelection.Selection.StartColumn)
                          .ToList();
            }

            UiDispatcher.Invoke(() =>
            {
                Results = new ObservableCollection <ICodeInspectionResult>(results);

                CanRefresh   = true;
                IsBusy       = false;
                SelectedItem = null;
            });

            stopwatch.Stop();
            LogManager.GetCurrentClassLogger().Trace("Inspections loaded in {0}ms", stopwatch.ElapsedMilliseconds);
        }
        public void SetContextSelectionCaption(string caption, int contextReferenceCount)
        {
            var contextLabel = FindChildByTag(typeof(ContextSelectionLabelMenuItem).FullName) as ContextSelectionLabelMenuItem;

            if (contextLabel == null)
            {
                return;
            }

            var contextReferences = FindChildByTag(typeof(ReferenceCounterLabelMenuItem).FullName) as ReferenceCounterLabelMenuItem;

            if (contextReferences == null)
            {
                return;
            }

            UiDispatcher.Invoke(() =>
            {
                contextLabel.SetCaption(caption);
                contextReferences.SetCaption(contextReferenceCount);
            });
            Localize();
        }
Example #24
0
        public void Localize()
        {
            if (Item == null)
            {
                return;
            }

            foreach (var kvp in _items.Where(kv => kv.Key != null && kv.Value != null))
            {
                try
                {
                    var item = kvp;
                    UiDispatcher.Invoke(() =>
                    {
                        item.Value.Caption     = item.Key.Caption.Invoke();
                        item.Value.TooltipText = item.Key.ToolTipText.Invoke();
                    });
                }
                catch (Exception e)
                {
                    Logger.Error(e, $"Assignment of {kvp.Value.GetType().Name}.Caption or .TooltipText for {kvp.Key.GetType().Name} threw an exception.");
                }
            }
        }
Example #25
0
        private void AssetPairDiscoveryResultMessage(AssetPairDiscoveryResultMessage m)
        {
            if (!Equals(m.RequestRequestMessage.Pair, _pair) || m.RequestRequestMessage.Network != null)
            {
                return;
            }

            M.UnregisterD(this);

            if (m.IsFailed)
            {
                SetDataStatus("No providers found", false);
                return;
            }

            SetDataStatus("Initialising", true);

            var ctx = new OhlcResolutionContext()
            {
                AssetPairProviders = m.DiscoverFirst,
                Pair             = _pair,
                RequestFullDaily = true,
                StatusEntry      = (s) => UiDispatcher.Invoke(() => DataStatus = s)
            };

            _adapter = new OhlcDataAdapter(ctx);

            _allZooms.Add(OverviewZoom);

            ChartGroupViewModel = new ChartGroupViewModel(this, OverviewZoom)
            {
                ResolutionSelected = ReceiverDefaultResolution
            };

            QueueWork(InitDataThread);
        }
Example #26
0
 public bool SetTryParseResult(string res)
 {
     UiDispatcher?.Invoke(() => { TryParseResult.Add(res); }); return(true);
 }
Example #27
0
 /// <summary>
 /// Begins asynchronous parsing
 /// </summary>
 public void BeginParse()
 {
     // non-blocking call
     UiDispatcher.Invoke(() => _state.OnParseRequested(this));
 }
Example #28
0
 /// <summary>
 /// Invokes a <paramref name="action" /> on the <see cref="UiDispatcher" /> synchronously.
 /// </summary>
 /// <param name="action">The action to invoke on the UI thread.</param>
 public static void Invoke(Action action)
 {
     CheckDispatcher();
     UiDispatcher.Invoke(action);
 }