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(); }
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 = ""; }); }
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); } }
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(); }
private void BookmarkAllResponseMessage(BookmarkAllResponseMessage m) { UiDispatcher.Invoke(() => { _bookmarks.Clear(); foreach (var i in m.Bookmarks) { _bookmarks.Add(i); } }); }
/// <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(); } }
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; }); } }
private void ServiceChanged() { UiDispatcher.Invoke(delegate { Assets.Clear(); if (ServiceSelected != null) { M.SendAsync(new AssetNetworkRequestMessage(ServiceSelected?.Network)); } }); }
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"); }); } }
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(); }
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); }); }
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); }
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(); }); } }
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(); }
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; }); }
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); } }); }
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(); }
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(); }
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."); } } }
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); }
public bool SetTryParseResult(string res) { UiDispatcher?.Invoke(() => { TryParseResult.Add(res); }); return(true); }
/// <summary> /// Begins asynchronous parsing /// </summary> public void BeginParse() { // non-blocking call UiDispatcher.Invoke(() => _state.OnParseRequested(this)); }
/// <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); }