Пример #1
0
        // запуск чата (ChatControlBackEnd)
        // arguments[0] содержит Id пользователя и перекрывает userId
        public void Start(int userId = 0, List <string> arguments = null)
        {
            if (engine == null)
            {
                engine = new ChatControlBackEnd();
                Initialize();
            }
            engine.Start();
            if (arguments != null && arguments.Count >= 1)
            {
                userId = arguments[0].ToInt(0);
            }
            if (userId != 0)
            {
                ChatSettings.Instance.Id = userId;
                if (ChatSettings.Instance.AutoLogin)
                {
                    engine.Login(userId);
                }
            }

            animationTimer.Tick    += OnAnimationTimerTicked;
            animationTimer.Interval = 500;
            animationTimer.Start();

            // 4 debug
            if (arguments != null && arguments.Count >= 3)
            {
                engine.StartSpam(arguments[1], arguments[2].ToInt(1000));
            }
        }
Пример #2
0
        public MainForm()
        {
            Instance = this;
            if (AppConfig.GetBooleanParam("SingleInstance", true))
            {
                var prc = Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName);

                if (prc.Length > 1)
                {
                    MessageBox.Show(Localizer.GetString("MessageTerminalAlreadyRunning"), Localizer.GetString("TitleWarning"));
                    Process.GetCurrentProcess().Kill();
                    return;
                }
            }

            // показать окно загрузки
            SplashScreen.ShowSplash(StartupStage.Started);

            InitializeComponent();

            Localizer.LocalizeControl(this);

            bookmarkStrip.ImgList = lstGlyph32;
            SetupMenuImages();
            try
            {
                MakeFormMdi();
                Candlechart.Core.PluginManager.Instance.Initialize();
                RobotCollection.Initialize();
                ScriptManager.Initialize();
                ScriptManager.Instance.scriptListIsUpdated += ActualizeScriptMenu;
                CheckAppFolders();
                Logger.Info("Старт терминала (" + ExecutablePath.ExecPath + ")");

                InitializeTooltips();
                InitializeToolButtons(ChartToolButtonStorage.Instance.selButtons, panelChartTools);
                InitializeToolButtons(ChartToolButtonStorage.Instance.selSystemButtons, panelCommonTools);
                InitializeSeriesSettings();
                BtnFlipPanelChartToolsClick(btnFlipPanelCommonTools, null);
                BookmarkStorage.Instance.BookmarkDeleted += InstanceOnBookmarkDeleted;

                // шаг 1 завершен - обновить статус
                SplashScreen.UpdateState(StartupStage.MakeInstrumentalPanels);

                UserSettings.Instance.LoadProperties();
                EventSoundPlayer.Instance.LoadSounds();
                robotFarm = new RobotFarm(UpdateTickersCacheForRobots);
                robotFarm.OnStateChanged += RobotFarmStateChanged;
                quoteReceiver = new TcpQuoteReceiver();
                quoteReceiver.OnQuotesReceived += OnQuotesReceived;
                quoteReceiver.OnNewsReceived += OnNewsReceived;
                NewsCache.Instance.ActualizationCompleted +=
                    newsCount =>
                    AddMessageToStatusPanelSafe(DateTime.Now,
                                                string.Format("{0} ({1})", Localizer.GetString("MessageNewsRead"), newsCount));
                Contract.Util.BL.QuoteStorage.Instance.LoadQuotes(string.Format("{0}\\lastquote.txt", ExecutablePath.ExecPath));
                DalSpot.Instance.SetFavoritesList(UserSettings.Instance.FavoriteTickers.ToArray());
                navPanelControl.SetupPages(UserSettings.Instance.NavPanelPages);
                navPanelControl.closePanelClicked += () => MenuitemNavPaneClick(this, EventArgs.Empty);
                //AccountStatus.Instance.ConnectionStatusIsUpdated += InstanceOnConnectionStatusIsUpdated;
                AccountStatus.Instance.ServerConnectionStatus =
                    DalSpot.Instance.ConnectionWasEstablished ? ServerConnectionStatus.Connected : ServerConnectionStatus.NotConnected;

                // шаг 2 завершен - обновить статус
                SplashScreen.UpdateState(StartupStage.MakeQuoteStream);
                ResumeConnectionWithServer();

                // запуск чата
                ChatEngine = new ChatControlBackEnd();
                ChatEngine.Start();
                SetupChat();

                // шаг 3 завершен - обновить статус
                toolTipStatus.SetToolTip(lblConnectStatus, "");
                toolTipStatus.SetToolTip(connectionStatusImage, "");
                SplashScreen.UpdateState(StartupStage.MakeServerConnection);

                AccountStatus.Instance.OnAccountInfoUpdated += OnAccountInfoUpdated;
                AccountStatus.Instance.OnConnectionAborted += ResumeConnectionWithServer;
                AccountStatus.Instance.OnAuthenticationFailed += AuthenticationFailed;
                // вывести список открытых/закрытых за последнее время ордеров
                AccountStatus.Instance.OnAccountDataFirstReceived += ShowLast24HrOrders;
                autosaveFolder = AppConfig.GetStringParam("AutosaveFolder", "\\autosave");
                autosaveFolder = autosaveFolder.TrimEnd('\\');
                if (autosaveFolder.StartsWith("\\")) autosaveFolder = ExecutablePath.ExecPath + autosaveFolder;

                CrossChartDivergenciesSettingsWindow.GetChartsList += GetChartsList;
                printDocument.PrintPage += PrintDocumentPrintPage;
                serverProxyTrade.OnConnectionReestablished += ReviveFactory;
                SetupDragTargets();
            }
            catch (Exception ex)
            {
                Logger.Error("TradeSharp - ошибка инициализации ", ex);
                Close();
                return;
            }

            // шаг 4 завершен - обновить статус
            SplashScreen.UpdateState(StartupStage.FillDictionaries);

            // запуск процесса-планировщика
            threadSchedule = new Thread(ScheduleThreadRoutine);
            threadSchedule.Start();

            AppMessageFilter.ApplyDiffString(UserSettings.Instance.HotKeyList);
        }