// запуск чата (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)); } }
public void Reset(ChatControlBackEnd engine) { allMessagesRichTextBox.Clear(); foreach (var message in messageHistory) { PostMessage(message.a, message.b, engine); } }
public void Initialize( Func<Account> getActualAccountData, Func<string> getUserLogin, Action<PerformerStat> investInPAMM, ITradeSharpServerTrade serverProxy, ChatControlBackEnd chat) { this.getActualAccountData = getActualAccountData; this.getUserLogin = getUserLogin; this.investInPAMM = investInPAMM; ServerProxy = serverProxy; Chat = chat; }
public void Initialize( Func <Account> getActualAccountData, Func <string> getUserLogin, Action <PerformerStat> investInPAMM, ITradeSharpServerTrade serverProxy, ChatControlBackEnd chat) { this.getActualAccountData = getActualAccountData; this.getUserLogin = getUserLogin; this.investInPAMM = investInPAMM; ServerProxy = serverProxy; Chat = chat; }
// остановка чата (ChatControlBackEnd) public void Stop() { try { engine.Stop(); StopControl(); engine = null; } catch (Exception ex) { Logger.Error("Ошибка остановки чата (ChatControl.Stop)", ex); } }
public RoomListForm(ChatControlBackEnd engine) { InitializeComponent(); roomFastGrid.Columns.Add(new FastColumn("IsBound", "*") { ImageList = imageList, ColumnMinWidth = 25, ColumnWidth = 25 }); roomFastGrid.Columns.Add(new FastColumn("Name", "Комната")); roomFastGrid.Columns.Add(new FastColumn("UserCount", "Пользователи") {ColumnWidth = 80}); roomFastGrid.Columns.Add(new FastColumn("Description", "Описание")); roomFastGrid.SelectionChanged += RoomFastGridSelectionChanged; roomFastGrid.UserHitCell += RoomFastGridUserHitCell; this.engine = engine; this.engine.RoomsReceived += RoomsReceived; UpdateRooms(); }
public RoomListForm(ChatControlBackEnd engine) { InitializeComponent(); roomFastGrid.Columns.Add(new FastColumn("IsBound", "*") { ImageList = imageList, ColumnMinWidth = 25, ColumnWidth = 25 }); roomFastGrid.Columns.Add(new FastColumn("Name", "Комната")); roomFastGrid.Columns.Add(new FastColumn("UserCount", "Пользователи") { ColumnWidth = 80 }); roomFastGrid.Columns.Add(new FastColumn("Description", "Описание")); roomFastGrid.SelectionChanged += RoomFastGridSelectionChanged; roomFastGrid.UserHitCell += RoomFastGridUserHitCell; this.engine = engine; this.engine.RoomsReceived += RoomsReceived; UpdateRooms(); }
public void AddMessage(Message message, ChatControlBackEnd engine, MessageStyle style = MessageStyle.None) { messageHistory.Add(new Cortege2 <Message, MessageStyle>(message, style)); PostMessage(message, style, engine); }
private void PostMessage(Message message, MessageStyle style, ChatControlBackEnd engine) { if (style == MessageStyle.Notify && !ChatSettings.Instance.ShowNotifications) { return; } var nickName = ""; var user = AllUsers.Instance.GetUser(message.Sender); if (user != null) { nickName = user.NickName + ": "; style = MessageStyle.Others; } if (message.Sender == ChatSettings.Instance.Id) // detect own { style = MessageStyle.Mine; } else // detect owner { var room = engine.GetActiveRooms().Find(r => r.Name == message.Room); if (room != null && message.Sender == room.Owner) { style = MessageStyle.Owner; } } var text = "[" + message.TimeStamp.ToString(ChatSettings.Instance.DateTimeFormat) + "] " + nickName + message.Text; var length = allMessagesRichTextBox.TextLength; allMessagesRichTextBox.AppendText(text + Environment.NewLine); if (style == MessageStyle.None) { return; } allMessagesRichTextBox.SelectionStart = length; allMessagesRichTextBox.SelectionLength = text.Length; switch (style) { case MessageStyle.Mine: allMessagesRichTextBox.SelectionColor = ChatSettings.Instance.OwnColor; allMessagesRichTextBox.SelectionFont = ChatSettings.Instance.OwnFont; break; case MessageStyle.Owner: allMessagesRichTextBox.SelectionColor = ChatSettings.Instance.OwnerColor; allMessagesRichTextBox.SelectionFont = ChatSettings.Instance.OwnerFont; break; case MessageStyle.Others: allMessagesRichTextBox.SelectionColor = ChatSettings.Instance.OthersColor; allMessagesRichTextBox.SelectionFont = ChatSettings.Instance.OthersFont; break; case MessageStyle.Error: allMessagesRichTextBox.SelectionColor = Color.DarkRed; allMessagesRichTextBox.SelectionFont = Font; break; case MessageStyle.Notify: allMessagesRichTextBox.SelectionColor = Color.Gray; allMessagesRichTextBox.SelectionFont = Font; break; } allMessagesRichTextBox.SelectionStart = allMessagesRichTextBox.TextLength; allMessagesRichTextBox.ScrollToCaret(); }
public void Initialize(Action closeHandler, TradeSharpServerTrade serverProxyAccount, Action<TradeSignalUpdate> signalUpdateSelected, Func<Account> getActualAccountData, Func<string> getUserLogin, Action<PerformerStat> investInPAMM, SavePerformersGridSelectedColumnsDel savePerformersGridSelectedColumns, LoadPerformersGridSelectedColumnsDel loadPerformersGridSelectedColumns, Func<ActionOnSignal> getActionOnSignal, Action<ActionOnSignal> setActionOnSignal, ChatControlBackEnd chat) { var gr = CreateGraphics(); this.closeHandler = closeHandler; this.chat = chat; AccountModel.Instance.Initialize(getActualAccountData, getUserLogin, investInPAMM, serverProxyAccount.proxy, chat); SubscriptionModel.Instance.getActionOnSignal = getActionOnSignal; SubscriptionModel.Instance.setActionOnSignal = setActionOnSignal; subscriptionGrid.ShowTopPortfolio += portfolio => { LoadPortfolioSubscribers(portfolio); Page = ActivePage.Performers; }; // strategies var criterias = PerformerCriteriaFunctionCollection.Instance.criterias; var criteriaTitles = criterias.Select(c => c.Description).ToList(); criteriaComboBox.Items.AddRange(criteriaTitles.Select(c => c as object).ToArray()); criteriaComboBox.DropDownWidth = criteriaTitles.Max(c => gr.MeasureString(c, Font).ToSize().Width); criteriaComboBox.Width = criteriaComboBox.DropDownWidth + SystemInformation.VerticalScrollBarWidth; var indexInCombo = countComboBox.Items.Cast<string>().IndexOf("50"); countComboBox.SelectedIndex = indexInCombo < 0 ? 0 : indexInCombo; sortOrderComboBox.Items.AddRange(EnumItem<PerformerSortOrder>.items.Cast<object>().ToArray()); SetupSortCombos(gr); criteriaComboBox.SelectedIndex = criterias.IndexOf(PerformerCriteriaFunctionCollection.Instance.SelectedFunction); //topFilterControl.SortOrder = sortOrderComboBox.SelectedIndex == 0 ? SortOrder.Ascending : SortOrder.Descending; topFilterControl.PerformerCriteriaFunctionCollectionChanged += OnPerformerCriteriaFunctionCollectionChanged; topFilterControl.PerformerCriteriaFunctionChanged += OnPerformerCriteriaFunctionChanged; topFilterControl.CollapseButtonClicked += CollapseTopFilterControlButtonClick; topFilterControl.RefreshButtonClicked += RefreshButtonClick; topFilterControl.CreatePortfolioButtonClicked += CreatePortfolioButtonClick; IsExtendedPanelVisible = false; performersWorker.DoWork += GetPerformers; performersWorker.RunWorkerCompleted += GetPerformersCompleted; performerFilterWorker.DoWork += GetPerformersByFilters; performerFilterWorker.RunWorkerCompleted += GetPerformersByFiltersCompleted; // 4 refresh button refreshButtonColors = new[] { refreshButton.BackColor, HslColor.AdjuctBrightness(refreshButton.BackColor, 0.9f), HslColor.AdjuctBrightness(refreshButton.BackColor, 0.85f), HslColor.AdjuctBrightness(refreshButton.BackColor, 0.8f), HslColor.AdjuctBrightness(refreshButton.BackColor, 0.85f), HslColor.AdjuctBrightness(refreshButton.BackColor, 0.9f), refreshButton.BackColor, HslColor.AdjuctBrightness(refreshButton.BackColor, 1.1f), HslColor.AdjuctBrightness(refreshButton.BackColor, 1.15f), HslColor.AdjuctBrightness(refreshButton.BackColor, 1.2f), HslColor.AdjuctBrightness(refreshButton.BackColor, 1.15f), HslColor.AdjuctBrightness(refreshButton.BackColor, 1.1f) }; topFilterControl.RefreshButtonEnabled = false; refreshButton.Enabled = false; performerGridCtrl.LoadPerformersGridSelectedColumns = loadPerformersGridSelectedColumns; performerGridCtrl.SavePerformersGridSelectedColumns = savePerformersGridSelectedColumns; performerGridCtrl.EnterRoomRequested += OnEnterRoomRequested; performerGridCtrl.PageTargeted += page => Page = page; performerGridCtrl.SetupGrid(); signalFastGrid.SignalUpdateSelected += signalUpdateSelected; // company top portfolios portfoliosWorker.DoWork += GetPortfoloios; portfoliosWorker.RunWorkerCompleted += GetPortfoloiosCompleted; // my top myPortfoliosWorker.DoWork += GetMyPortfolio; myPortfoliosWorker.RunWorkerCompleted += GetMyPortfolioCompleted; signalsToolStripMenuItem.CheckedChanged += ParametersContextMenuStripItemClicked; pammsToolStripMenuItem.CheckedChanged += ParametersContextMenuStripItemClicked; }
public void Reset(ChatControlBackEnd engine) { allMessagesRichTextBox.Clear(); foreach (var message in messageHistory) PostMessage(message.a, message.b, engine); }
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 void Initialize(Action closeHandler, TradeSharpServerTrade serverProxyAccount, Action <TradeSignalUpdate> signalUpdateSelected, Func <Account> getActualAccountData, Func <string> getUserLogin, Action <PerformerStat> investInPAMM, SavePerformersGridSelectedColumnsDel savePerformersGridSelectedColumns, LoadPerformersGridSelectedColumnsDel loadPerformersGridSelectedColumns, Func <ActionOnSignal> getActionOnSignal, Action <ActionOnSignal> setActionOnSignal, ChatControlBackEnd chat) { var gr = CreateGraphics(); this.closeHandler = closeHandler; this.chat = chat; AccountModel.Instance.Initialize(getActualAccountData, getUserLogin, investInPAMM, serverProxyAccount.proxy, chat); SubscriptionModel.Instance.getActionOnSignal = getActionOnSignal; SubscriptionModel.Instance.setActionOnSignal = setActionOnSignal; subscriptionGrid.ShowTopPortfolio += portfolio => { LoadPortfolioSubscribers(portfolio); Page = ActivePage.Performers; }; // strategies var criterias = PerformerCriteriaFunctionCollection.Instance.criterias; var criteriaTitles = criterias.Select(c => c.Description).ToList(); criteriaComboBox.Items.AddRange(criteriaTitles.Select(c => c as object).ToArray()); criteriaComboBox.DropDownWidth = criteriaTitles.Max(c => gr.MeasureString(c, Font).ToSize().Width); criteriaComboBox.Width = criteriaComboBox.DropDownWidth + SystemInformation.VerticalScrollBarWidth; var indexInCombo = countComboBox.Items.Cast <string>().IndexOf("50"); countComboBox.SelectedIndex = indexInCombo < 0 ? 0 : indexInCombo; sortOrderComboBox.Items.AddRange(EnumItem <PerformerSortOrder> .items.Cast <object>().ToArray()); SetupSortCombos(gr); criteriaComboBox.SelectedIndex = criterias.IndexOf(PerformerCriteriaFunctionCollection.Instance.SelectedFunction); //topFilterControl.SortOrder = sortOrderComboBox.SelectedIndex == 0 ? SortOrder.Ascending : SortOrder.Descending; topFilterControl.PerformerCriteriaFunctionCollectionChanged += OnPerformerCriteriaFunctionCollectionChanged; topFilterControl.PerformerCriteriaFunctionChanged += OnPerformerCriteriaFunctionChanged; topFilterControl.CollapseButtonClicked += CollapseTopFilterControlButtonClick; topFilterControl.RefreshButtonClicked += RefreshButtonClick; topFilterControl.CreatePortfolioButtonClicked += CreatePortfolioButtonClick; IsExtendedPanelVisible = false; performersWorker.DoWork += GetPerformers; performersWorker.RunWorkerCompleted += GetPerformersCompleted; performerFilterWorker.DoWork += GetPerformersByFilters; performerFilterWorker.RunWorkerCompleted += GetPerformersByFiltersCompleted; // 4 refresh button refreshButtonColors = new[] { refreshButton.BackColor, HslColor.AdjuctBrightness(refreshButton.BackColor, 0.9f), HslColor.AdjuctBrightness(refreshButton.BackColor, 0.85f), HslColor.AdjuctBrightness(refreshButton.BackColor, 0.8f), HslColor.AdjuctBrightness(refreshButton.BackColor, 0.85f), HslColor.AdjuctBrightness(refreshButton.BackColor, 0.9f), refreshButton.BackColor, HslColor.AdjuctBrightness(refreshButton.BackColor, 1.1f), HslColor.AdjuctBrightness(refreshButton.BackColor, 1.15f), HslColor.AdjuctBrightness(refreshButton.BackColor, 1.2f), HslColor.AdjuctBrightness(refreshButton.BackColor, 1.15f), HslColor.AdjuctBrightness(refreshButton.BackColor, 1.1f) }; topFilterControl.RefreshButtonEnabled = false; refreshButton.Enabled = false; performerGridCtrl.LoadPerformersGridSelectedColumns = loadPerformersGridSelectedColumns; performerGridCtrl.SavePerformersGridSelectedColumns = savePerformersGridSelectedColumns; performerGridCtrl.EnterRoomRequested += OnEnterRoomRequested; performerGridCtrl.PageTargeted += page => Page = page; performerGridCtrl.SetupGrid(); signalFastGrid.SignalUpdateSelected += signalUpdateSelected; // company top portfolios portfoliosWorker.DoWork += GetPortfoloios; portfoliosWorker.RunWorkerCompleted += GetPortfoloiosCompleted; // my top myPortfoliosWorker.DoWork += GetMyPortfolio; myPortfoliosWorker.RunWorkerCompleted += GetMyPortfolioCompleted; signalsToolStripMenuItem.CheckedChanged += ParametersContextMenuStripItemClicked; pammsToolStripMenuItem.CheckedChanged += ParametersContextMenuStripItemClicked; }
public void DataBind(List <PerformerStatEx> performerStats, ChatControlBackEnd chat) { var images = imgListChartMini.Images.Cast <Image>().ToList(); imgListChartMini.Images.Clear(); foreach (var img in images) { img.Dispose(); } var data = new List <PerformerStatEx>(); // UserScore вычисляется на сервере // RecalcUserScore(performerStats); var userInfoExSource = new UserInfoExCache(TradeSharpAccountStatistics.Instance.proxy); var usersInfoEx = userInfoExSource.GetUsersInfo(performerStats.Select(p => p.UserId).Distinct().ToList()); var rowColors = new[] { Color.Red, Color.ForestGreen, Color.Black }; var stringFormat = new StringFormat { Alignment = StringAlignment.Near, LineAlignment = StringAlignment.Center }; using (var font = new Font(Font.FontFamily, 7)) foreach (var performerStat in performerStats) { // создать картинку с графиком var bmp = new Bitmap(imgListChartMini.ImageSize.Width, imgListChartMini.ImageSize.Height); if (performerStat.Chart != null) { using (var gr = Graphics.FromImage(bmp)) { var leftValue = performerStat.AvgYearProfit; var leftText = string.Format("{0:f2}%", leftValue); var leftTextWidth = gr.MeasureString(leftText, font).ToSize().Width; var rightValue = performerStat.ProfitLastMonthsAbs; var rightText = rightValue.ToStringUniformMoneyFormat(false); var textWidth = leftTextWidth + gr.MeasureString(rightText, font).ToSize().Width; if (!ShowLabelsInMiniChart) { textWidth = 0; } PointF[] points; if (ChartBrush != null) { points = MiniChartPacker.MakePolygon(performerStat.Chart, imgListChartMini.ImageSize.Width - textWidth, imgListChartMini.ImageSize.Height, 1, 1); } else { points = MiniChartPacker.MakePolyline(performerStat.Chart, imgListChartMini.ImageSize.Width - textWidth, imgListChartMini.ImageSize.Height, 1, 1); } gr.SmoothingMode = SmoothingMode.AntiAlias; gr.TextRenderingHint = TextRenderingHint.AntiAliasGridFit; if (ShowLabelsInMiniChart) { for (var i = 0; i < points.Length; i++) { points[i] = new PointF(points[i].X + leftTextWidth, points[i].Y); } gr.DrawString(leftText, font, new SolidBrush(leftValue >= 0 ? rowColors[1] : rowColors[0]), 0, imgListChartMini.ImageSize.Height / 2, stringFormat); gr.DrawString(rightText, font, new SolidBrush(rightValue >= 0 ? rowColors[1] : rowColors[0]), imgListChartMini.ImageSize.Width - textWidth + leftTextWidth, imgListChartMini.ImageSize.Height / 2, stringFormat); } if (ChartBrush != null) { gr.FillPolygon(ChartBrush, points); } else { gr.DrawLines(ChartPen ?? new Pen(leftValue >= 0 ? rowColors[1] : rowColors[0], 2), points); } } } var item = new PerformerStatEx(performerStat) { ChartIndex = imgListChartMini.Images.Count }; imgListChartMini.Images.Add(bmp); imgListChartMini.Images.SetKeyName(item.ChartIndex, item.ChartIndex.ToString()); // создать фотку UserInfoEx userInfoEx = null; if (usersInfoEx != null) { userInfoEx = usersInfoEx.Find(ui => ui != null && ui.Id == performerStat.UserId); } if (userInfoEx != null && userInfoEx.AvatarSmall != null) { item.AvatarSmallIndex = imgListAvatar.Images.Count; imgListAvatar.Images.Add(userInfoEx.AvatarSmall); imgListAvatar.Images.SetKeyName(item.AvatarSmallIndex, item.AvatarSmallIndex.ToString()); } else { item.AvatarSmallIndex = -1; } data.Add(item); } grid.DataBind(data); grid.Invalidate(); if (this.chat != null) { this.chat.RoomsReceived -= RoomsReceived; } this.chat = chat; if (chat == null) { return; } chat.RoomsReceived += RoomsReceived; chat.GetRooms(); }
private void PostMessage(Message message, MessageStyle style, ChatControlBackEnd engine) { if (style == MessageStyle.Notify && !ChatSettings.Instance.ShowNotifications) return; var nickName = ""; var user = AllUsers.Instance.GetUser(message.Sender); if (user != null) { nickName = user.NickName + ": "; style = MessageStyle.Others; } if (message.Sender == ChatSettings.Instance.Id) // detect own style = MessageStyle.Mine; else // detect owner { var room = engine.GetActiveRooms().Find(r => r.Name == message.Room); if (room != null && message.Sender == room.Owner) style = MessageStyle.Owner; } var text = "[" + message.TimeStamp.ToString(ChatSettings.Instance.DateTimeFormat) + "] " + nickName + message.Text; var length = allMessagesRichTextBox.TextLength; allMessagesRichTextBox.AppendText(text + Environment.NewLine); if (style == MessageStyle.None) return; allMessagesRichTextBox.SelectionStart = length; allMessagesRichTextBox.SelectionLength = text.Length; switch (style) { case MessageStyle.Mine: allMessagesRichTextBox.SelectionColor = ChatSettings.Instance.OwnColor; allMessagesRichTextBox.SelectionFont = ChatSettings.Instance.OwnFont; break; case MessageStyle.Owner: allMessagesRichTextBox.SelectionColor = ChatSettings.Instance.OwnerColor; allMessagesRichTextBox.SelectionFont = ChatSettings.Instance.OwnerFont; break; case MessageStyle.Others: allMessagesRichTextBox.SelectionColor = ChatSettings.Instance.OthersColor; allMessagesRichTextBox.SelectionFont = ChatSettings.Instance.OthersFont; break; case MessageStyle.Error: allMessagesRichTextBox.SelectionColor = Color.DarkRed; allMessagesRichTextBox.SelectionFont = Font; break; case MessageStyle.Notify: allMessagesRichTextBox.SelectionColor = Color.Gray; allMessagesRichTextBox.SelectionFont = Font; break; } allMessagesRichTextBox.SelectionStart = allMessagesRichTextBox.TextLength; allMessagesRichTextBox.ScrollToCaret(); }
// запуск чата (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)); }
public void AddMessage(Message message, ChatControlBackEnd engine, MessageStyle style = MessageStyle.None) { messageHistory.Add(new Cortege2<Message, MessageStyle>(message, style)); PostMessage(message, style, engine); }