Пример #1
0
        protected override void OnStateChange()
        {
            if (State == State.SetDefaults)
            {
                Name                 = NinjaTrader.Custom.Resource.NinjaScriptSuperDomColumnVolume;
                Description          = NinjaTrader.Custom.Resource.NinjaScriptSuperDomColumnDescriptionVolume;
                Buys                 = new ConcurrentDictionary <double, long>();
                BackColor            = Application.Current.TryFindResource("brushPriceColumnBackground") as Brush;
                BarColor             = Application.Current.TryFindResource("brushVolumeColumnBackground") as Brush;
                BuyColor             = Brushes.DarkCyan;
                DefaultWidth         = 160;
                PreviousWidth        = -1;
                DisplayText          = false;
                DisplayType          = DisplayType.Volume;
                ForeColor            = Application.Current.TryFindResource("brushVolumeColumnForeground") as Brush;
                ImmutableBarColor    = Application.Current.TryFindResource("immutableBrushVolumeColumnBackground") as Brush;
                ImmutableForeColor   = Application.Current.TryFindResource("immutableBrushVolumeColumnForeground") as Brush;
                IsDataSeriesRequired = true;
                LastVolumes          = new ConcurrentDictionary <double, long>();
                SellColor            = Brushes.Crimson;
                Sells                = new ConcurrentDictionary <double, long>();
                VolumeType           = VolumeType.Standard;
            }
            else if (State == State.Configure)
            {
                if (UiWrapper != null && PresentationSource.FromVisual(UiWrapper) != null)
                {
                    Matrix m         = PresentationSource.FromVisual(UiWrapper).CompositionTarget.TransformToDevice;
                    double dpiFactor = 1 / m.M11;
                    gridPen      = new Pen(Application.Current.TryFindResource("BorderThinBrush") as Brush, 1 * dpiFactor);
                    halfPenWidth = gridPen.Thickness * 0.5;
                }

                if (SuperDom.Instrument != null && SuperDom.IsConnected)
                {
                    BarsPeriod bp = new BarsPeriod
                    {
                        MarketDataType = MarketDataType.Last,
                        BarsPeriodType = BarsPeriodType.Tick,
                        Value          = 1
                    };

                    SuperDom.Dispatcher.InvokeAsync(() => SuperDom.SetLoadingString());
                    clearLoadingSent = false;

                    if (BarsRequest != null)
                    {
                        BarsRequest.Update -= OnBarsUpdate;
                        BarsRequest         = null;
                    }

                    BarsRequest = new BarsRequest(SuperDom.Instrument,
                                                  Cbi.Connection.PlaybackConnection != null ? Cbi.Connection.PlaybackConnection.Now : Core.Globals.Now,
                                                  Cbi.Connection.PlaybackConnection != null ? Cbi.Connection.PlaybackConnection.Now : Core.Globals.Now);

                    BarsRequest.BarsPeriod   = bp;
                    BarsRequest.TradingHours = (TradingHoursSerializable.Length == 0 || TradingHours.Get(TradingHoursSerializable) == null) ? SuperDom.Instrument.MasterInstrument.TradingHours : TradingHours.Get(TradingHoursSerializable);
                    BarsRequest.Update      += OnBarsUpdate;

                    BarsRequest.Request((request, errorCode, errorMessage) =>
                    {
                        // Make sure this isn't a bars callback from another column instance
                        if (request != BarsRequest)
                        {
                            return;
                        }

                        lastMaxIndex    = 0;
                        maxVolume       = 0;
                        totalBuyVolume  = 0;
                        totalLastVolume = 0;
                        totalSellVolume = 0;
                        Sells.Clear();
                        Buys.Clear();
                        LastVolumes.Clear();

                        if (State >= NinjaTrader.NinjaScript.State.Terminated)
                        {
                            return;
                        }

                        if (errorCode == Cbi.ErrorCode.UserAbort)
                        {
                            if (State <= NinjaTrader.NinjaScript.State.Terminated)
                            {
                                if (SuperDom != null && !clearLoadingSent)
                                {
                                    SuperDom.Dispatcher.InvokeAsync(() => SuperDom.ClearLoadingString());
                                    clearLoadingSent = true;
                                }
                            }

                            request.Update -= OnBarsUpdate;
                            request.Dispose();
                            request = null;
                            return;
                        }

                        if (errorCode != Cbi.ErrorCode.NoError)
                        {
                            request.Update -= OnBarsUpdate;
                            request.Dispose();
                            request = null;
                            if (SuperDom != null && !clearLoadingSent)
                            {
                                SuperDom.Dispatcher.InvokeAsync(() => SuperDom.ClearLoadingString());
                                clearLoadingSent = true;
                            }
                        }
                        else if (errorCode == Cbi.ErrorCode.NoError)
                        {
                            try
                            {
                                SessionIterator superDomSessionIt = new SessionIterator(request.Bars);
                                bool includesEndTimeStamp         = request.Bars.BarsType.IncludesEndTimeStamp(false);
                                if (superDomSessionIt.IsInSession(Cbi.Connection.PlaybackConnection != null ? Cbi.Connection.PlaybackConnection.Now : Core.Globals.Now, includesEndTimeStamp, request.Bars.BarsType.IsIntraday))
                                {
                                    for (int i = 0; i < request.Bars.Count; i++)
                                    {
                                        DateTime time = request.Bars.BarsSeries.GetTime(i);
                                        if ((includesEndTimeStamp && time <= superDomSessionIt.ActualSessionBegin) || (!includesEndTimeStamp && time < superDomSessionIt.ActualSessionBegin))
                                        {
                                            continue;
                                        }

                                        double ask   = request.Bars.BarsSeries.GetAsk(i);
                                        double bid   = request.Bars.BarsSeries.GetBid(i);
                                        double close = request.Bars.BarsSeries.GetClose(i);
                                        long volume  = request.Bars.BarsSeries.GetVolume(i);

                                        if (ask != double.MinValue && close >= ask)
                                        {
                                            Buys.AddOrUpdate(close, volume, (price, oldVolume) => oldVolume + volume);
                                            totalBuyVolume += volume;
                                        }
                                        else if (bid != double.MinValue && close <= bid)
                                        {
                                            Sells.AddOrUpdate(close, volume, (price, oldVolume) => oldVolume + volume);
                                            totalSellVolume += volume;
                                        }

                                        long newVolume;
                                        LastVolumes.AddOrUpdate(close, newVolume = volume, (price, oldVolume) => newVolume = oldVolume + volume);
                                        totalLastVolume += volume;

                                        if (newVolume > maxVolume)
                                        {
                                            maxVolume = newVolume;
                                        }
                                    }

                                    lastMaxIndex = request.Bars.Count - 1;

                                    // Repaint the column on the SuperDOM
                                    OnPropertyChanged();
                                }
                            }
                            catch
                            {
                                if (State != State.Finalized)                                          // ignore error if Finalized
                                {
                                    throw;
                                }
                            }

                            if (SuperDom != null && !clearLoadingSent)
                            {
                                SuperDom.Dispatcher.InvokeAsync(() => SuperDom.ClearLoadingString());
                                clearLoadingSent = true;
                            }
                        }
                    });
                }
            }
            else if (State == State.Active)
            {
                if (!DisplayText)
                {
                    WeakEventManager <System.Windows.Controls.Panel, MouseEventArgs> .AddHandler(UiWrapper, "MouseMove", OnMouseMove);

                    WeakEventManager <System.Windows.Controls.Panel, MouseEventArgs> .AddHandler(UiWrapper, "MouseEnter", OnMouseEnter);

                    WeakEventManager <System.Windows.Controls.Panel, MouseEventArgs> .AddHandler(UiWrapper, "MouseLeave", OnMouseLeave);

                    mouseEventsSubscribed = true;
                }
            }
            else if (State == State.Terminated)
            {
                if (BarsRequest != null)
                {
                    BarsRequest.Update -= OnBarsUpdate;
                    BarsRequest.Dispose();
                }

                BarsRequest = null;

                if (SuperDom != null && !clearLoadingSent)
                {
                    SuperDom.Dispatcher.InvokeAsync(() => SuperDom.ClearLoadingString());
                    clearLoadingSent = true;
                }

                if (!DisplayText && mouseEventsSubscribed)
                {
                    WeakEventManager <System.Windows.Controls.Panel, MouseEventArgs> .RemoveHandler(UiWrapper, "MouseMove", OnMouseMove);

                    WeakEventManager <System.Windows.Controls.Panel, MouseEventArgs> .RemoveHandler(UiWrapper, "MouseEnter", OnMouseEnter);

                    WeakEventManager <System.Windows.Controls.Panel, MouseEventArgs> .RemoveHandler(UiWrapper, "MouseLeave", OnMouseLeave);

                    mouseEventsSubscribed = false;
                }

                lastMaxIndex    = 0;
                maxVolume       = 0;
                totalBuyVolume  = 0;
                totalLastVolume = 0;
                totalSellVolume = 0;
                Sells.Clear();
                Buys.Clear();
                LastVolumes.Clear();
            }
        }
Пример #2
0
 public static void AddChangedHandler(EventHandler <EventArgs> handler)
 {
     WeakEventManager <ProjectInfoService, EventArgs> .AddHandler(Instance, nameof(Changed), handler);
 }
Пример #3
0
        public void AddHandlerWithNullEventHandlerThrowsException()
        {
            var wem = new WeakEventManager();

            Assert.Throws <ArgumentNullException>(() => wem.AddEventHandler(null, "test"));
        }
 public FormularioPreciosViewModel()
 {
     initializeData();
     WeakEventManager <FormularioPreciosViewModel, PropertyChangedEventArgs> .AddHandler(this, "PropertyChanged", this_PropertyChanged);
 }
 public SyncStatusChildViewModel() : base()
 {
     WeakEventManager <SUPSyncListener, PropertyChangedEventArgs> .AddHandler(_listener, "PropertyChanged", SyncListener_PropertyChanged);
 }
Пример #6
0
        public void RemoveHandlerWithEmptyEventNameThrowsException()
        {
            var wem = new WeakEventManager();

            Assert.Throws <ArgumentNullException>(() => wem.RemoveEventHandler((sender, args) => { }, ""));
        }
Пример #7
0
 public void SubscribeWithWeakEventManager(EventSource source)
 {
     WeakEventManager <EventSource, SignalArgs> .AddHandler(source, nameof(source.Signal), Respond);
 }
Пример #8
0
 public TrStringFormatConverter(string textId)
 {
     TextId = textId;
     WeakEventManager <Loc, CurrentLanguageChangedEventArgs> .AddHandler(Loc.Instance, nameof(Loc.Instance.CurrentLanguageChanged), CurrentLanguageChanged);
 }
Пример #9
0
 public OpenQueueView()
 {
     InitializeComponent();
     WeakEventManager <OpenQueueView, RoutedEventArgs>
     .AddHandler(this, "Loaded", OpenQueueView_Loaded);
 }
Пример #10
0
        public ImageSearchViewModel()
        {
            NrColumns = 4;

            SearchCommand = new AsyncCommand <int>(async(imageOffset) =>
            {
                try
                {
                    if (imageOffset == 0)
                    {
                        CurrentQuery = new ImageSearchQuery(this);
                    }

                    SearchCommand.IsExecutable = false;
                    await doSearch(CurrentQuery, imageOffset);
                }
                catch (Exception e)
                {
                    MessageBox.Show("Image search error\n\n" + e.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                }
                finally
                {
                    SearchCommand.IsExecutable = true;
                }
            });

            ViewCommand = new Command <SelectableMediaItem>((selectableItem) =>
            {
                ImageResultItem item = (ImageResultItem)selectableItem.Item;

                if (item.ImageInfo.ContentType.Equals("image/animatedgif"))
                {
                    Shell.ShellViewModel.navigateToVideoView(item);
                }
                else
                {
                    Shell.ShellViewModel.navigateToImageView(item);
                }
            });

            ViewSourceCommand = new Command <SelectableMediaItem>((selectableItem) =>
            {
                ImageResultItem item = (ImageResultItem)selectableItem.Item;

                Process.Start(item.ImageInfo.SourceUrl);
            });

            SelectAllCommand = new Command(() =>
            {
                MediaStateCollectionView.selectAll();
            }, false);

            DeselectAllCommand = new Command(() =>
            {
                MediaStateCollectionView.deselectAll();
            });

            CloseCommand = new Command(() =>
            {
                OnClosingRequest();
            });

            DownloadCommand = new AsyncCommand <SelectableMediaItem>(async(selectableItem) =>
            {
                List <MediaItem> items = MediaStateCollectionView.getSelectedItems();
                if (items.Count == 0)
                {
                    items.Add(selectableItem.Item);
                }

                String outputPath = null;

                switch (ImageSearchPlugin.Properties.Settings.Default.ImageSaveMode)
                {
                case MediaViewer.Infrastructure.Constants.SaveLocation.Current:
                    {
                        outputPath = MediaFileWatcher.Instance.Path;
                        break;
                    }

                case MediaViewer.Infrastructure.Constants.SaveLocation.Ask:
                    {
                        DirectoryPickerView directoryPicker = new DirectoryPickerView();
                        directoryPicker.DirectoryPickerViewModel.InfoString   = "Select Output Directory";
                        directoryPicker.DirectoryPickerViewModel.SelectedPath = MediaFileWatcher.Instance.Path;

                        if (directoryPicker.ShowDialog() == false)
                        {
                            return;
                        }

                        outputPath = directoryPicker.DirectoryPickerViewModel.SelectedPath;

                        break;
                    }

                case MediaViewer.Infrastructure.Constants.SaveLocation.Fixed:
                    {
                        outputPath = ImageSearchPlugin.Properties.Settings.Default.FixedDownloadPath;
                        break;
                    }

                default:
                    break;
                }

                CancellableOperationProgressView progressView = new CancellableOperationProgressView();
                DownloadProgressViewModel vm = new DownloadProgressViewModel();
                progressView.DataContext     = vm;

                progressView.Show();
                vm.OkCommand.IsExecutable     = false;
                vm.CancelCommand.IsExecutable = true;

                try
                {
                    await Task.Factory.StartNew(() =>
                    {
                        vm.startDownload(outputPath, items);
                    }, vm.CancellationToken);
                }
                catch (Exception)
                {
                }

                vm.OkCommand.IsExecutable     = true;
                vm.CancelCommand.IsExecutable = false;
            });

            SettingsViewModel = (ImageSearchSettingsViewModel)ServiceLocator.Current.GetInstance(typeof(ImageSearchSettingsViewModel));

            Size = new ListCollectionView(size);
            Size.MoveCurrentTo(Settings.Default.Size);
            SafeSearch = new ListCollectionView(safeSearch);
            SafeSearch.MoveCurrentTo(Settings.Default.SafeSearch);
            Layout = new ListCollectionView(layout);
            Layout.MoveCurrentTo(Settings.Default.Layout);
            Type = new ListCollectionView(type);
            Type.MoveCurrentTo(Settings.Default.Type);
            People = new ListCollectionView(people);
            People.MoveCurrentTo(Settings.Default.People);
            Color = new ListCollectionView(color);
            Color.MoveCurrentTo(Settings.Default.Color);

            GeoTag = new GeoTagCoordinatePair();

            MediaState = new MediaState();

            MediaStateCollectionView = new ImageResultCollectionView(MediaState);
            MediaStateCollectionView.MediaState.MediaStateType = MediaStateType.SearchResult;

            WeakEventManager <MediaLockedCollection, EventArgs> .AddHandler(MediaStateCollectionView.MediaState.UIMediaCollection, "IsLoadingChanged", mediaCollection_IsLoadingChanged);
        }
Пример #11
0
 public PutMessageView()
 {
     InitializeComponent();
     WeakEventManager <PutMessageView, RoutedEventArgs>
     .AddHandler(this, "Loaded", PutMessageView_Loaded);
 }
Пример #12
0
 public Window2(Button button)
 {
     WeakEventManager <Button, EventArgs>
     .AddHandler(button, "Clicked", ButtonOnClicked);
 }
Пример #13
0
 private void dettachEvents()
 {
     WeakEventManager <SUPModelBase <T>, PropertyChangedEventArgs> .RemoveHandler(this, "PropertyChanged", saveToSUPEntity);
 }
 public Window(Button button)
 {
     //button.Clicked += ButtonOnClicked;
     WeakEventManager <Button, EventArgs>
     .AddHandler(button, "Clicked", ButtonOnClicked);
 }
 public TrStringFormatMultiValuesConverter()
 {
     WeakEventManager <Loc, CurrentLanguageChangedEventArgs> .AddHandler(Loc.Instance, nameof(Loc.Instance.CurrentLanguageChanged), CurrentLanguageChanged);
 }
Пример #16
0
 public TestItemViewModel(TestItemViewModel parent, TestItem testItem)
     : base(parent, testItem, CreateViewModel)
 {
     Owner = (this.Crawl(p => p.Parent).LastOrDefault() ?? this) as TestSolutionViewModel;
     WeakEventManager <TestSolutionViewModel, EventArgs <TestItemViewModel> > .AddHandler(Owner, nameof(TestSolutionViewModel.AutoCoverTargetUpdated), OnAutoCoverTargetUpdated);
 }
        public void RemoveHandlerWithNullEventHandlerThrowsException()
        {
            var wem = new WeakEventManager();

            Assert.Throws <ArgumentNullException>(() => wem.RemoveEventHandler("test", null));
        }
Пример #18
0
 public UnloadedWeakEventListener(FrameworkElement source, BehaviorCollectionEx collection)
 {
     this.collection = collection;
     WeakEventManager <FrameworkElement, EventArgs> .AddHandler(source, "Unloaded", OnEvent);
 }
 public static void SubscribeLanguageChanged(this ILocalizationService localizationService,
                                             EventHandler <EventArgs> handler)
 {
     WeakEventManager <ILocalizationService, EventArgs> .AddHandler(localizationService,
                                                                    nameof(ILocalizationService.LanguageChanged), handler);
 }
        public override void Cleanup()
        {
            base.Cleanup();

            WeakEventManager <SUPSyncListener, PropertyChangedEventArgs> .RemoveHandler(_listener, "PropertyChanged", SyncListener_PropertyChanged);
        }
Пример #21
0
 /// <summary>
 /// Default Constructor
 /// </summary>
 public LocBinding()
 {
     WeakEventManager <Loc, CurrentLanguageChangedEventArgs> .AddHandler(Loc.Instance, nameof(Loc.Instance.CurrentLanguageChanged), CurrentLanguageChanged);
 }
Пример #22
0
 public TestEventSource()
 {
     _weakEventManager = new WeakEventManager();
 }
Пример #23
0
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="path">The path to the binding source property.</param>
        public LocBinding(PropertyPath path)
        {
            WeakEventManager <Loc, CurrentLanguageChangedEventArgs> .AddHandler(Loc.Instance, nameof(Loc.Instance.CurrentLanguageChanged), CurrentLanguageChanged);

            Path = path;
        }
Пример #24
0
        public void AddHandlerWithNullEventNameThrowsException()
        {
            var wem = new WeakEventManager();

            Assert.Throws <ArgumentNullException>(() => wem.AddEventHandler((sender, args) => { }, null));
        }
Пример #25
0
 public BindingProxy()
 {
     WeakEventManager <LanguageContext, EventArgs> .AddHandler(LanguageContext.Instance, nameof(LanguageContext.CultureChanged),
                                                               LanguageChanged);
 }
 public override void Cleanup()
 {
     base.Cleanup();
     WeakEventManager <FormularioPreciosViewModel, PropertyChangedEventArgs> .RemoveHandler(this, "PropertyChanged", this_PropertyChanged);
 }
Пример #27
0
        private static void Main(string[] args)
        {
            Console.WriteLine("------");
//
//            MailManager mm = new MailManager();
//
//            Fax fax = new Fax(mm);
//            CellPhone pager = new CellPhone(mm);
//
//            mm.SimulateArrivingMsg("Google", "Me", "CV", "how are you");
//
//            fax.Unregister(mm);
//
//            mm.SimulateArrivingMsg("Amdaris", "Me", "ID", "check your account");
            ///////////////////


//            // Construct a MailPublisher object
//            MailManager mm2 = new MailManager();
//
//            // Construct a Fax object
//            Fax fax2 = new Fax(mm2);
//
//            // Construct a CellPhone object
//            CellPhone phone2 = new CellPhone(mm2);
//
//            //Register weak events by WeakEventManager
//
//            WeakEventManager<MailManager, NewMailEventArgs>.
//                AddHandler(mm2, "SimulateArrivingMsg", fax2.FaxMsg);
//
//            //mm2.SimulateArrivingMsg("Google", "Me", "CV", "how are you");
//
//            //fax2.Unregister(mm2);
//
//            WeakEventManager<MailManager, NewMailEventArgs>.
//                AddHandler(mm2, "NewMail", phone2.PhoneMsg);
//
//
//            //mm2.SimulateArrivingMsg("Google", "Me", "CV", "how are you");
//
//            // Unregister weak event for the Fax object by WeakEventManager
//            WeakEventManager<MailManager, NewMailEventArgs>.RemoveHandler(mm2, "NewMail", fax2.FaxMsg);



            // Construct a MailPublisher object
            MailManager mm = new MailManager();

            // Construct a Fax object
            Fax fax = new Fax();

            // Construct a CellPhone object
            CellPhone phone = new CellPhone();

            //Register weak events by WeakEventManager  fax
            Console.WriteLine("========= fax.msg=============");
            WeakEventManager <MailManager, NewMailEventArgs> .
            AddHandler(mm, "NewMail", fax.FaxMsg);

            mm.SimulateArrivingMsg("Google", "Me", "CV", "how are you");
            Console.WriteLine("=============================");

            Console.WriteLine("========= fax.msg, phone.msg=============");
            WeakEventManager <MailManager, NewMailEventArgs> .
            AddHandler(mm, "NewMail", phone.PhoneMsg);


            mm.SimulateArrivingMsg("Amdaris", "Me", "ID", "check your account");
            Console.WriteLine("=============================");



            // Unregister weak event for the Fax object by WeakEventManager
            WeakEventManager <MailManager, NewMailEventArgs> .
            RemoveHandler(mm, "NewMail", fax.FaxMsg);

            WeakEventManager <MailManager, NewMailEventArgs> .
            RemoveHandler(mm, "NewMail", phone.PhoneMsg);



            Console.ReadKey();
        }
Пример #28
0
 public void AddHandler(EventHandler <EventArgs> handler)
 {
     WeakEventManager <ViewModel, EventArgs> .AddHandler(this, nameof(this.ViewChanged), handler);
 }
Пример #29
0
        protected override void OnStateChange()
        {
            if (State == NinjaTrader.NinjaScript.State.SetDefaults)
            {
                Name                 = NinjaTrader.Custom.Resource.NinjaScriptSuperDomColumnApq;
                Description          = NinjaTrader.Custom.Resource.NinjaScriptSuperDomColumnDescriptionApq;
                DefaultWidth         = 100;
                PreviousWidth        = -1;
                IsDataSeriesRequired = false;
                BackColor            = Application.Current.TryFindResource("brushPriceColumnBackground") as Brush;
                ForeColor            = Application.Current.TryFindResource("FontControlBrush") as SolidColorBrush;
                priceApqValues       = new ConcurrentDictionary <double, long>();
                priceToOrderApqMap   = new ConcurrentDictionary <double, ConcurrentDictionary <Cbi.Order, long> >();
            }
            else if (State == NinjaTrader.NinjaScript.State.Configure)
            {
                if (UiWrapper != null && PresentationSource.FromVisual(UiWrapper) != null)
                {
                    Matrix m         = PresentationSource.FromVisual(UiWrapper).CompositionTarget.TransformToDevice;
                    double dpiFactor = 1 / m.M11;
                    gridPen      = new Pen(Application.Current.TryFindResource("BorderThinBrush") as Brush, 1 * dpiFactor);
                    halfPenWidth = gridPen.Thickness * 0.5;
                }
            }
            else if (State == NinjaTrader.NinjaScript.State.Active)
            {
                if (!eventsSubscribed && SuperDom.MarketDepth != null)
                {
                    WeakEventManager <Data.MarketDepth <LadderRow>, Data.MarketDepthEventArgs> .AddHandler(SuperDom.MarketDepth, "Update", OnMarketDepthUpdate);

                    WeakEventManager <SuperDomViewModel, EventArgs> .AddHandler(SuperDom, "SelectedAccountChanged", OnSelectedAccountChanged);

                    WeakEventManager <SuperDomViewModel, EventArgs> .AddHandler(SuperDom, "SelectedAtmStrategyChanged", OnSelectedAtmStrategyChanged);

                    WeakEventManager <SuperDomViewModel, EventArgs> .AddHandler(SuperDom, "SelectedAtmStrategySelectionModeChanged", OnSelectedAtmStrategySelectionModeChanged);

                    eventsSubscribed = true;
                }

                justConnected = true;
            }
            else if (State == NinjaTrader.NinjaScript.State.Terminated)
            {
                if (SuperDom == null)
                {
                    return;
                }

                if (SuperDom.MarketDepth != null && eventsSubscribed)
                {
                    WeakEventManager <Data.MarketDepth <LadderRow>, Data.MarketDepthEventArgs> .RemoveHandler(SuperDom.MarketDepth, "Update", OnMarketDepthUpdate);

                    WeakEventManager <SuperDomViewModel, EventArgs> .RemoveHandler(SuperDom, "SelectedAccountChanged", OnSelectedAccountChanged);

                    WeakEventManager <SuperDomViewModel, EventArgs> .RemoveHandler(SuperDom, "SelectedAtmStrategyChanged", OnSelectedAtmStrategyChanged);

                    WeakEventManager <SuperDomViewModel, EventArgs> .RemoveHandler(SuperDom, "SelectedAtmStrategySelectionModeChanged", OnSelectedAtmStrategySelectionModeChanged);

                    eventsSubscribed = false;
                }
            }
        }
Пример #30
0
        private void Application_Startup(object sender, StartupEventArgs e)
        {
            try
            {
                // Set shutdown mode here (and reset further below) to enable showing custom dialogs (messageboxes)
                // durring start-up without shutting down application when the custom dialogs (messagebox) closes
                ShutdownMode = System.Windows.ShutdownMode.OnExplicitShutdown;
            }
            catch
            {
            }

            var settings   = GetService <ISettingsManager>(); // add the default themes
            var appearance = GetService <IAppearanceManager>();
            AppLifeCycleViewModel lifeCycle = null;

            try
            {
                lifeCycle = new AppLifeCycleViewModel();
                lifeCycle.LoadConfigOnAppStartup(settings, appearance);

                appearance.SetTheme(settings.Themes
                                    , settings.Options.GetOptionValue <string>("Appearance", "ThemeDisplayName")
                                    , ThemeViewModel.GetCurrentAccentColor(settings));

                // Construct Application ViewMOdel and mainWindow
                _appVM = new ViewModels.AppViewModel(lifeCycle);
                _appVM.SetSessionData(settings.SessionData);

                // Customize services specific items for this application
                // Program message box service for Modern UI (Metro Light and Dark)
                //                var msgBox = GetService<IMessageBoxService>();
                //                msgBox.Style = MsgBoxStyle.WPFThemed;
            }
            catch (Exception exp)
            {
                Debug.WriteLine(exp.Message);
            }

            try
            {
                var selectedLanguage = settings.Options.GetOptionValue <string>("Options", "LanguageSelected");

                Thread.CurrentThread.CurrentCulture   = new CultureInfo(selectedLanguage);
                Thread.CurrentThread.CurrentUICulture = new CultureInfo(selectedLanguage);
            }
            catch
            {
            }

            // Create the optional appearance viewmodel and apply
            // current settings to start-up with correct colors etc...
            ////var appearSettings = new AppearanceViewModel(settings.Themes);
            ////appearSettings.ApplyOptionsFromModel(settings.Options);

            // Initialize WPF theming and friends ...
            _appVM.InitForMainWindow(GetService <IAppearanceManager>()
                                     , settings.Options.GetOptionValue <string>("Appearance", "ThemeDisplayName"));

            Application.Current.MainWindow = _mainWindow = new MainWindow();
            MainWindow.DataContext         = _appVM;

            AppCore.CreateAppDataFolder();

            if (MainWindow != null && _appVM != null)
            {
                // and show it to the user ...
                //MainWindow.Loaded += MainWindow_Loaded;
                WeakEventManager <FrameworkElement, RoutedEventArgs>
                .AddHandler(MainWindow, "Loaded", MainWindow_Loaded);

                //MainWindow.Closing += OnClosing;
                WeakEventManager <Window, CancelEventArgs>
                .AddHandler(MainWindow, "Closing", OnClosing);

                // When the ViewModel asks to be closed, close the window.
                // Source: http://msdn.microsoft.com/en-us/magazine/dd419663.aspx
                WeakEventManager <Window, EventArgs>
                .AddHandler(MainWindow, "Closed", delegate
                {
                    // Save session data and close application
                    OnClosed(_appVM, _mainWindow);

                    var dispose = _appVM as IDisposable;
                    if (dispose != null)
                    {
                        dispose.Dispose();
                    }

                    _mainWindow.DataContext = null;
                    _appVM      = null;
                    _mainWindow = null;
                });

                ConstructMainWindowSession(_appVM, _mainWindow);
                MainWindow.Show();
            }
        }
Пример #31
-1
 public void RemoveHandlerShouldRemoveAddedHandler()
 {
     var target = new WeakEventManager<EventHandler, EventArgs>();
     EventHandler handler = DefaultAction.None;
     target.AddHandler( handler );
     Assert.True( target.RemoveHandler( handler ) );
 }
Пример #32
-1
 public void RaiseEventShouldInvokeAddedHandler()
 {   var raised = false;
     EventHandler handler = ( s, e ) => raised = true;
     var target = new WeakEventManager<EventHandler, EventArgs>();
     target.AddHandler( handler );
     target.RaiseEvent( this, EventArgs.Empty );
     Assert.True( raised );
 }
Пример #33
-1
 public void RemoveHandlerShouldNotRemoveUnaddedHandler()
 {
     var target = new WeakEventManager<EventHandler, EventArgs>();
     EventHandler handler1 = ( s, e ) =>
     {
     };
     EventHandler handler2 = ( s, e ) =>
     {
     };
     target.AddHandler( handler1 );
     Assert.False( target.RemoveHandler( handler2 ) );
 }