public RobotStateDialog(RobotFarm happyFarm)
     : this()
 {
     this.happyFarm = happyFarm;
     var robots = happyFarm.GetRobotsAsIs(); //GetRobotCopies();
     gridRobot.DataBind(robots);
 }
 public RobotStateDialog(RobotFarm happyFarm, string selectedrobotUniqueName)
     : this(happyFarm)
 {
     if (!string.IsNullOrEmpty(selectedrobotUniqueName))
     {
         var robot = gridRobot.rows.Select(r => (BaseRobot) r.ValueObject).FirstOrDefault(r =>
                                                                                          r.GetUniqueName() ==
                                                                                          selectedrobotUniqueName);
         if (robot != null)
             propertyGrid.SelectedObject = robot;
     }
 }
Example #3
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);
        }
 public RobotPortfolioForm(RobotFarm robotFarm, string robotUniqieName)
     : this(robotFarm)
 {
     robotToShowSettingsUniqueName = robotUniqieName; // robotFarm.GetRobotCopies().FirstOrDefault(r => r.GetUniqueName() == robotUniqieName);
 }
 public RobotPortfolioForm(RobotFarm robotFarm)
     : this()
 {
     this.robotFarm = robotFarm;
 }
Example #6
0
        /// <summary>
        /// обновление состояния кнопок и пунктов меню, связанных с роботами
        /// </summary>
        /// <param name="state"></param>
        private void UpdateRobotIconUnsafe(RobotFarm.RobotFarmState state)
        {
            var indexImage = state == RobotFarm.RobotFarmState.Started
                                 ? 12
                                 : state == RobotFarm.RobotFarmState.StartingUp
                                       ? 13
                                       : state == RobotFarm.RobotFarmState.Stopped
                                             ? 11
                                             : state == RobotFarm.RobotFarmState.Stopping ? 14 : 15;
            // проверяем есть ли кнопка на панели системных кнопок
            var pressedBtn = GetPressedCommonButton(SystemToolButton.RobotsStart);
            if (pressedBtn != null)
                pressedBtn.ImageIndex = indexImage;

            // кнопка "Запустить роботов" управляется из MainForm.ToolStripBtnClick + MainForm.ExecuteCommonButtonsCommand
            var checkBox = pressedBtn as CheckBox;
            if (checkBox != null)
                checkBox.Checked = state == RobotFarm.RobotFarmState.Started;

            // меняем доступность пунктов меню
            menuitemRobotPortfolio.Enabled = state == RobotFarm.RobotFarmState.Stopped;
            menuitemRobotState.Enabled = state == RobotFarm.RobotFarmState.Started;
            // также меняем соответствующие кнопки панели инструментов
            var btn = GetPressedCommonButton(SystemToolButton.RobotPortfolio);
            if (btn != null)
            {
                checkBox = btn as CheckBox;
                if (checkBox != null)
                    checkBox.Enabled = menuitemRobotPortfolio.Enabled;
            }
            btn = GetPressedCommonButton(SystemToolButton.RobotState);
            if (btn != null)
            {
                checkBox = btn as CheckBox;
                if (checkBox != null)
                    checkBox.Enabled = menuitemRobotState.Enabled;
            }
        }
Example #7
0
 /// <summary>
 /// изменилось состояние "фермы" роботов - обновить иконку кнопки запуска/останова
 /// </summary>        
 private void RobotFarmStateChanged(RobotFarm.RobotFarmState state)
 {
     var del = new RobotFarm.StateChangedDel(UpdateRobotIconUnsafe);
     BeginInvoke(del, state);
 }