private void GridUserHitCell(object sender, MouseEventArgs e, int rowIndex, FastColumn col) { var smb = (SymbolArchiveInfo)grid.rows[rowIndex].ValueObject; if (col.PropertyName == smb.Property(p => p.Selected) && e.Button == MouseButtons.Left) { smb.Selected = !smb.Selected; grid.UpdateRow(rowIndex, smb); grid.InvalidateCell(col, rowIndex); return; } if (col.PropertyName == smb.Property(p => p.IsFavorite) && e.Button == MouseButtons.Left) { // добавить иконку в список выбранных либо исключить из этого списка smb.IsFavorite = !smb.IsFavorite; grid.UpdateRow(rowIndex, smb); grid.InvalidateCell(col, rowIndex); var gridTickers = grid.rows.Select(r => ((SymbolArchiveInfo)r.ValueObject)); var favGridTickers = gridTickers.Where(t => t.IsFavorite).Select(t => t.Symbol).ToArray(); // сохранить изменения в UserSettings и в DalSpot DalSpot.Instance.SetFavoritesList(favGridTickers); UserSettings.Instance.FavoriteTickers = DalSpot.Instance.GetTickerNames(true).ToList(); UserSettings.Instance.SaveSettings(); } }
private void GridUserHitCell(object sender, MouseEventArgs e, int rowIndex, FastColumn col) { if (e.Button != MouseButtons.Left) { return; } var sets = (Contract.Entity.Subscription)grid.rows[rowIndex].ValueObject; selectedCategory = sets; // действие со счетом if (col.Tag == contextMenu || col.PropertyName == emptySubs.Property(s => s.Title)) { var pointTop = grid.GetCellCoords(col, rowIndex); contextMenu.Show(grid, pointTop); return; } // настроить торговлю if (col.PropertyName == emptySubs.Property(s => s.TradeAuto)) { EditTradeSettings(); } }
private void GridUserHitCell(object sender, MouseEventArgs e, int rowIndex, FastColumn col) { if (e.Button == MouseButtons.Left && e.Clicks > 1) { BtnEditClick(grid, e); return; } }
private void GridUserHitCell(object sender, MouseEventArgs e, int rowIndex, FastColumn col) { if (e.Button != MouseButtons.Left) { return; } var selPerformer = (PerformerStatEx)grid.rows[rowIndex].ValueObject; if (col.PropertyName == selPerformer.Property(t => t.IsSubscribed)) { PerformerStatistic.SubscribeOrUnsubscribe(selPerformer, true); if (PageTargeted != null) { PageTargeted(SubscriptionControl.ActivePage.Subscription); } } else if ((col.PropertyName == selPerformer.Property(t => t.TradeSignalTitle) || col.PropertyName == selPerformer.Property(t => t.ChartIndex) || col.PropertyName == selPerformer.Property(t => t.Login))) { var form = new SubscriberStatisticsForm(selPerformer); form.EnterRoomRequested += OnEnterRoomRequested; form.pageTargeted += p => { if (PageTargeted != null) { PageTargeted(p); } }; form.Show(this); } else if (col.PropertyName == selPerformer.Property(t => t.UserScore)) { //ChangeCriteria(); } else if (col.PropertyName == selPerformer.Property(t => t.Rooms)) { var performer = (PerformerStatEx)grid.rows[rowIndex].ValueObject; if (EnterRoomRequested != null && !string.IsNullOrEmpty(performer.Rooms)) { var rooms = performer.Rooms.Split(new[] { ", " }, StringSplitOptions.None); if (rooms.Length == 1) { EnterRoomRequested(rooms[0]); } else { var form = new ListSelectDialog(); form.Initialize(rooms.Select(o => o as object), "Выберите комнату чата:"); if (form.ShowDialog(this) == DialogResult.OK) { EnterRoomRequested(form.SelectedItem.ToString()); } } } } }
private void RoomFastGridSelectionChanged(MouseEventArgs e, int rowIndex, FastColumn col) { UpdateUi(); var room = GetRoom(); if (room == null) { return; } descriptionRichTextBox.Text = room.Description; }
private void GridCandlesSelectionChanged(MouseEventArgs e, int rowIndex, FastColumn col) { buttonCandleChange.Enabled = false; buttonCandleRemove.Enabled = false; var selectedRows = gridCandles.rows.Where(r => r.Selected).ToList(); if (selectedRows.Count != 0) { buttonCandleChange.Enabled = true; buttonCandleRemove.Enabled = ((BarSettings)(selectedRows[0].ValueObject)).IsUserDefined; } }
private void UserHitCell(object sender, MouseEventArgs mouseEventArgs, int rowIndex, FastColumn col) { if (tabControl.SelectedTab == null) { return; } var fastGrid = tabControl.SelectedTab.Controls[0] as FastGrid.FastGrid; if (fastGrid == null) { return; } // отображение описания var rowObject = (FastPropertyGridRow)fastGrid.rows[rowIndex].ValueObject; if (rowObject.Property == null) { return; } detailTextBox.SelectionFont = Font; detailTextBox.Text = rowObject.Title; var attrs = rowObject.Property.GetCustomAttributes(true); var descriptionAttribute = attrs.FirstOrDefault(a => a is LocalizedDescriptionAttribute) as DescriptionAttribute; if (descriptionAttribute == null) { descriptionAttribute = attrs.FirstOrDefault(a => a is DescriptionAttribute) as DescriptionAttribute; } if (descriptionAttribute != null) { detailTextBox.Text += Environment.NewLine + descriptionAttribute.Description; } detailTextBox.Select(0, rowObject.Title.Length); detailTextBox.SelectionFont = new Font(Font, FontStyle.Bold); // открытие редактора if (fastGrid.Columns.IndexOf(col) != 1) { return; } editingRowIndex = rowIndex; editingColumn = col; var editorAttribute = attrs.FirstOrDefault(a => a is EditorAttribute) as EditorAttribute; var editorType = editorAttribute != null ? ResolveAssemblyType(editorAttribute.EditorTypeName) : GetStandardEditorType(rowObject.Property.PropertyType); if (editorType == null) { OpenBaseEditor(rowObject.Property, fastGrid, rowIndex, col); return; } OpenSpecialEditor(editorType); }
private void GridUserHitCell(object sender, MouseEventArgs e, int rowIndex, FastColumn col) { var sets = (TradeSignalUpdate)grid.rows[rowIndex].ValueObject; if (col.PropertyName == sets.Property(p => p.CategoryName) && e.Button == MouseButtons.Left) { if (SignalUpdateSelected != null) { SignalUpdateSelected(sets); } } }
public PopupListBox(object originalValue, int rowIndex, FastColumn column, Type columnType, Action <FastColumn, int, object> onValueUpdated, Control parent) { this.rowIndex = rowIndex; this.onValueUpdated = onValueUpdated; this.parent = parent; this.column = column; // получить допустимые значения if (columnType == typeof(bool)) { values = new object[] { false, true } } ; else if (columnType.IsSubclassOf(typeof(Enum))) { values = Enum.GetValues(columnType).Cast <object>().ToArray(); } if (values == null) { return; } // сгенерировать массив строк для указанного типа var index = 0; foreach (var val in values) { if (val.Equals(originalValue)) { selectedIndex = index; } index++; string str; if (column.formatter != null) { str = column.formatter(val); } else if (columnType.IsSubclassOf(typeof(Enum))) { var resourceKey = "Enum" + columnType.Name + val; str = Localizer.HasKey(resourceKey) ? Localizer.GetString(resourceKey) : val.ToString(); } else { str = val.ToString(); } stringValues.Add(str); } }
private void GridUserHitCell(object sender, MouseEventArgs e, int rowIndex, FastColumn col) { if (rowIndex < 0 || rowIndex >= grid.rows.Count) { return; } if (e.Button == MouseButtons.Left && e.Clicks > 1) { DialogResult = DialogResult.OK; Close(); } //if (grid.rows[rowIndex].Selected) // grid.rows[rowIndex].Selected = false; }
// установка минимальной ширины колонки неперед (имеет смысл только для числовых данных), // исходя из необходимости хранить данные всего диапазона значений данной колонки; // такая установка исключает какие-либо иные установки ширины в дальнейшем; // исключена из SetupGrid private void DetermineColumnDisplaySettings(FastColumn col, PerformerStatField field, Graphics graphics) { // определить минимальную ширину колонки из размеров ее заголовка var font = grid.FontHeader ?? grid.Font; var textWd = (int)Math.Ceiling(graphics.MeasureString(col.Title, font).Width); // добавить ширину значка сортировки textWd += 8; col.ColumnMinWidth = textWd; // если колонка содержит число, задать ей соответствующую ширину фиксированной var prop = typeof(PerformerStatEx).GetProperties().FirstOrDefault(p => p.Name == field.PropertyName); if (prop == null) { return; } var propType = prop.PropertyType; var nulType = Nullable.GetUnderlyingType(propType); propType = nulType ?? propType; // для целочисленных if (propType == typeof(int) || propType == typeof(short) || propType == typeof(long) || propType == typeof(uint) || propType == typeof(ushort) || propType == typeof(ulong)) { var wd = (int)Math.Ceiling(graphics.MeasureString("-19 999 999", font).Width); col.ColumnWidth = Math.Max(wd, col.ColumnMinWidth); return; } // для вещественных if (propType == typeof(float) || propType == typeof(double) || propType == typeof(decimal)) { const double number = -9000500.25; var str = number.ToStringUniformMoneyFormat(); try { if (!string.IsNullOrEmpty(field.FormatString)) { str = number.ToString(field.FormatString); } } catch { } var wd = (int)Math.Ceiling(graphics.MeasureString(str, font).Width); col.ColumnWidth = Math.Max(wd, col.ColumnMinWidth); //return; } }
private void UpdateObject(FastColumn col, int rowIndex, object newValue) { if (tabControl.SelectedTab == null) { return; } var fastGrid = tabControl.SelectedTab.Controls[0] as FastGrid.FastGrid; if (fastGrid == null) { return; } // updating real object var rowObject = (FastPropertyGridRow)fastGrid.rows[rowIndex].ValueObject; var objProp = rowObject.Property; if (objProp == null) { return; } try { if (selectedObjects != null) { foreach (var chartObject in selectedObjects) { objProp.SetValue(chartObject, newValue, null); } } else if (selectedObject != null) { objProp.SetValue(selectedObject, newValue, null); } } catch { } // updating grid object RebuildSample(); var valueProp = rowObject.GetType().GetProperty(rowObject.Property(p => p.Value)); var stringProp = rowObject.GetType().GetProperty(rowObject.Property(p => p.StringValue)); valueProp.SetValue(rowObject, newValue, null); stringProp.SetValue(rowObject, GetStringValue(newValue, rowObject.Property), null); fastGrid.UpdateRow(rowIndex, rowObject); fastGrid.InvalidateRow(rowIndex); }
private void GridUserHitCell(object sender, MouseEventArgs e, int rowIndex, FastColumn col) { if (!col.IsHyperlinkStyleColumn || e.Button != MouseButtons.Left) { return; } SubscriptionSelected = col.Title == ColTitleSubscribe; SignalMakingSelected = col.Title == ColTitleMakeSingal; if (!SubscriptionSelected && !SignalMakingSelected) { return; } SelectedCategory = (PaidService)grid.rows[rowIndex].ValueObject; DialogResult = DialogResult.OK; }
/// <summary> /// Обработчик клика по строке /// </summary> private void GridUserHitCell(object sender, MouseEventArgs e, int rowIndex, FastColumn col) { if (e.Button == MouseButtons.Left) { var ticker = (TickerTag)gridAllTickers.rows[rowIndex].ValueObject; switch (col.PropertyName) { case "IsSelected": ticker.IsSelected = !ticker.IsSelected; break; case "IsFavorite": ticker.IsFavorite = !ticker.IsFavorite; break; } gridAllTickers.UpdateRow(rowIndex, ticker); gridAllTickers.InvalidateCell(col, rowIndex); } }
private void GridUserHitCell(object sender, MouseEventArgs e, int rowIndex, FastColumn col) { var tag = (SoundEventTag)grid.rows[rowIndex].ValueObject; // если выбрана иконка проигрывателя - играть файл if (col.PropertyName == tag.Property(p => p.ImageIndex)) { PlaySound(tag.FileName); return; } if (col.PropertyName == tag.Property(p => p.FileName)) { // предложить выбрать файл foreach (ToolStripMenuItem item in menuSound.Items) { item.Checked = item.Text == tag.FileName; } menuSound.Tag = rowIndex; menuSound.Show(grid, e.X, e.Y); return; } }
void GridUserHitCell(object sender, MouseEventArgs e, int rowIndex, FastColumn col) { var objHotKey = grid.rows[rowIndex].ValueObject as ApplicationMessageBinding; if (e.Button != MouseButtons.Left || objHotKey == null) { return; } if (col.PropertyName == objHotKey.Property(p => p.Key)) { var dlg = new HotKeySetForm(objHotKey); if (dlg.ShowDialog() != DialogResult.OK) { return; } grid.UpdateRow(rowIndex, objHotKey); grid.InvalidateRow(rowIndex); } else if (col.PropertyName == objHotKey.Property(p => p.Title)) { txtbxDescription.Text = objHotKey.ActionDescription; } }
private void GridPaymentOnUserHitCell(object sender, MouseEventArgs e, int rowIndex, FastColumn col) { var gridPayment = sender as FastGrid.FastGrid; if (gridPayment == null) { return; } if (e.Button != MouseButtons.Left) { return; } var transfer = (Transfer)gridPayment.rows[rowIndex].ValueObject; // показать подсказку по платежу - перевод на счет, платеж за услугу... // if (col.PropertyName == "Comment") if (col.PropertyName == transfer.Property(t => t.Comment)) { // подписка? if (transfer.Subscription.HasValue) { new ServiceDetailForm(transfer.Subscription.Value).ShowDialog(); return; } // перевод на торг. счет? // платеж в пользу кошелька? if (transfer.BalanceChange.HasValue || transfer.RefWallet.HasValue) { BalanceChange bc = null; PlatformUser us = null; try { TradeSharpWalletManager.Instance.proxy.GetTransferExtendedInfo( CurrentProtectedContext.Instance.MakeProtectedContext(), transfer.Id, out bc, out us); } catch (Exception ex) { Logger.Error("GetTransferExtendedInfo()", ex); } if (bc == null && us == null) { return; } if (UserSettings.Instance.GetAccountEventAction(AccountEventCode.WalletModified) == AccountEventAction.DoNothing) { return; } var text = bc != null ? string.Format("{0} счета {1}, {2} {3}", BalanceChange.GetSign(bc.ChangeType) > 0? "Пополнение" : "Списание со", bc.AccountID, bc.AmountDepo.ToStringUniformMoneyFormat(), walletCurrency /*bc.Currency*/) : string.Format("Платеж на кошелек пользователя, {0}", us.MakeFullName()); bool repeatNotification; NotificationBox.Show(text, "Операция выполнена", out repeatNotification); if (!repeatNotification) { UserSettings.Instance.SwitchAccountEventAction(AccountEventCode.WalletModified); UserSettings.Instance.SaveSettings(); } } } }
protected override void Dispose(bool disposing) { FastColumn.Dispose(); base.Dispose(disposing); }
private void GridDealsOnUserHitCell(object sender, MouseEventArgs e, int rowIndex, FastColumn col) { var order = (MarketOrder)gridDeals.rows[rowIndex].ValueObject; if (e.Button == MouseButtons.Left) { if (col.PropertyName == "Side") { // редактировать ордер if (order.ID == 0) { return; } chart.CallShowWindowEditMarketOrder(new MarketOrder { ID = order.ID }); } if (col.PropertyName == "Magic") { // если нажать Ctrl и кликнули в связанную группу ордеров - // открыть диалог связывания if ((ModifierKeys & Keys.Control) == Keys.Control) { if (order.Magic >= 0) { var orderIds = gridDeals.GetRowValues <MarketOrder>(false) .Where(o => o.Magic == order.Magic) .Select(o => o.ID) .ToList(); chart.CallEditMarketOrders(orderIds); return; } } // пометить ордер if (order.ID == 0 || gridDeals.rows.Count < 2) { return; } var isSelected = order.Magic == BoundSelectedMagic; order.Magic = !isSelected ? BoundSelectedMagic : order.PendingOrderID; gridDeals.UpdateRow(rowIndex, order); gridDeals.InvalidateRow(rowIndex); SetLinkButtonEnabled(); } } }
private void GridOnUserHitCell(object sender, MouseEventArgs e, int rowIndex, FastColumn col) { if (col.PropertyName == "Selected" && e.Button == MouseButtons.Left) { var obj = (GapsByTicker)(grid.rows[rowIndex].ValueObject); obj.Selected = !obj.Selected; grid.UpdateRow(rowIndex, obj); grid.InvalidateCell(col, rowIndex); return; } }
private void NewsFastGridUserHitCell(object sender, MouseEventArgs mouseEventArgs, int rowIndex, FastColumn col) { if (rowIndex < 0 || rowIndex >= newsFastGrid.rows.Count) { return; } if (col.PropertyName == "MatchCriteria") { DialogResult rst; var critStr = Dialogs.ShowInputDialog("Критерий сортировки", "критерий", true, "Наблюдений: 10, порог: 20 - 80 (%)", out rst); if (rst != DialogResult.OK) { return; } var numbers = critStr.ToIntArrayUniform(); if (numbers.Length != 3) { return; } foreach (var item in robotNewsStats) { var percent = item.FollowCountNumber; item.MatchCriteria = item.DeltaIndexes.Count >= numbers[0] && (percent <= numbers[1] || percent >= numbers[2]); } newsFastGrid.DataBind(robotNewsStats); newsFastGrid.Invalidate(); return; } var stat = (RobotNewsStat)newsFastGrid.rows[rowIndex].ValueObject; var series = indexFastChart.series[0]; //series.Name = stat.Title; series.points.Clear(); for (var i = 0; i < stat.DeltaIndexes.Count; i++) { series.points.Add(new FastSeriesPoint(i, Math.Abs(stat.DeltaIndexes[i]))); } indexFastChart.Invalidate(); }
/// <summary> /// открытие стандартного редактора в зависимости от типа свойства /// </summary> private void OpenBaseEditor(PropertyInfo property, FastGrid.FastGrid fastGrid, int rowIndex, FastColumn col) { var coords = fastGrid.GetCellCoords(col, rowIndex); var blankRow = new FastPropertyGridRow(); var cellValue = fastGrid.rows[rowIndex].cells[fastGrid.Columns.FindIndex(c => c.PropertyName == blankRow.Property(p => p.Value))].CellValue; var propType = property.PropertyType; if ((propType == typeof(bool) || propType.IsEnum)) { var pop = new PopupListBox(cellValue, rowIndex, col, propType, UpdateObject, fastGrid); pop.ShowOptions(coords.X, coords.Y); return; } if ((propType == typeof(string) || Converter.IsConvertable(propType))) { // редактор подставляется в FastGrid.PopupTextBox try { var pop = new PopupTextBox(cellValue, col.ResultedWidth, fastGrid.CellHeight, rowIndex, col, property, null); pop.OnValueUpdated += UpdateObject; pop.Show(fastGrid, coords); } catch (Exception ex) { Logger.Error("FastPropertyGrid.OpenBaseEditor", ex); } return; } }
private void GridOnUserHitCell(object sender, MouseEventArgs e, int rowIndex, FastColumn col) { if (col.PropertyName == "Title" && e.Button == MouseButtons.Left) { // вызвать скрипт сразу или дать перетащить его на график var scriptContainer = (ScriptContainer)grid.rows[rowIndex].ValueObject; var script = scriptContainer.script; // просто выполнить скрипт if (script.ScriptTarget == TerminalScript.TerminalScriptTarget.Терминал) { script.ActivateScript(false); //return; } } }
private void GridOnUserHitCell(object sender, MouseEventArgs e, int rowIndex, FastColumn col) { if (e.Clicks > 1 && e.Button == MouseButtons.Left) { // вызвать диалог торговли var tickerInfo = ((QuoteDataRecord)grid.rows[rowIndex].ValueObject).Title; new OrderDlg(tickerInfo).ShowDialog(); } }
private void RoomFastGridUserHitCell(object sender, MouseEventArgs e, int rowIndex, FastColumn col) { if (e.Clicks != 2) { return; } var room = GetRoom(); if (room == null) { return; } DialogResult = DialogResult.OK; }
private void GridTradeSettingsOnUserHitCell(object sender, MouseEventArgs e, int rowIndex, FastColumn col) { if (e.Button != MouseButtons.Left) { return; } var record = (GridImageRecord)gridTradeSettings.rows[rowIndex].ValueObject; // показать раздел справки if (col.Title == "?") { HelpManager.Instance.ShowHelp(HelpManager.KeyTradeSettings); return; } // изменить соотв. настройку if (col.PropertyName == record.Property(p => p.ImageIndex)) { if (record.BooleanValue.HasValue) { record.BooleanValue = !record.BooleanValue.Value; record.setValue(record.BooleanValue.Value); } gridTradeSettings.UpdateRow(rowIndex, record); gridTradeSettings.InvalidateRow(rowIndex); } }
private void GridEventsUserHitCell(object sender, MouseEventArgs e, int rowIndex, FastColumn col) { if (!col.IsHyperlinkStyleColumn) { return; } contextMenuAction.Tag = rowIndex; var sets = (AccountEventSettings)gridEvents.rows[rowIndex].ValueObject; foreach (ToolStripMenuItem item in contextMenuAction.Items) { item.Checked = sets.EventAction == (AccountEventAction)item.Tag; } contextMenuAction.Show(gridEvents, e.X, e.Y); }
private void GridAccountOnUserHitCell(object sender, MouseEventArgs e, int rowIndex, FastColumn col) { if (walletExplicitDetail == null || walletExplicitDetail.IsIncomplete) { return; } if (e.Button != MouseButtons.Left) { return; } // окно пополнения - снятия var accountShared = (AccountShared)gridAccount.rows[rowIndex].ValueObject; if (col.Tag != null && col.Tag is string) { if (col.Tag == ColumnTagDeposit || col.Tag == ColumnTagWithdraw) { var deposit = col.Tag == ColumnTagDeposit; var dlg = new WalletWithdrawForm(walletExplicitDetail.wallet, gridAccount.GetRowValues <AccountShared>(false).Select(a => a.Account).ToList(), accountShared.Account, deposit); if (dlg.ShowDialog() == DialogResult.OK) { if (dlg.TargetWithdrawal > 0) { WithdrawOrDepositFromAccount(accountShared.Account, dlg.TargetWithdrawal, true); } if (dlg.TargetDespoit > 0) { WithdrawOrDepositFromAccount(accountShared.Account, dlg.TargetDespoit, false); } } } } if (col.Tag != null && col.Tag is string) { if (col.Tag == ColumnTagChart) { new AccountShareHistoryForm(accountShared).ShowDialog(); } } }
private void GridCandlesUserHitCell(object sender, MouseEventArgs e, int rowIndex, FastColumn col) { if (e.Clicks == 2) { ButtonCandleChangeClick(this, null); } }
private void GridSubscriptionOnUserHitCell(object sender, MouseEventArgs ea, int rowIndex, FastColumn col) { var data = (Contract.Entity.Subscription)gridSubscription.rows[rowIndex].ValueObject; // показать детализацию услуги if (ea.Button == MouseButtons.Left && col.PropertyName == data.Property(p => p.PaidService) && col.Tag != null) { new ServiceDetailForm(data.Service).ShowDialog(); return; } // продлять / не продлять if (ea.Button == MouseButtons.Left && col.PropertyName == data.Property(p => p.RenewAuto) && col.Tag != null) { // показать предупреждение var confirm = data.RenewAuto ? "Отключить автоматическое продление подписки?\n" + DateTime.Now.Date.AddDays(1).ToString("dd MMM") + " в 00:00 подписка будет отключена. Продолжить?" : "Включить автоматическое продление подписки?\n" + DateTime.Now.Date.AddDays(1).ToString("dd MMM") + " в 00:00 подписка будет возобновлена. Продолжить?"; if (MessageBox.Show(confirm, "Подтвердите действие", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) { return; } // таки поменять флаг data.RenewAuto = !data.RenewAuto; UpdateOrRemoveSubscription(data, false); return; } // отписаться if (ea.Button == MouseButtons.Left && col.PropertyName == data.Property(p => p.PaidService)) { UpdateOrRemoveSubscription(data, true); return; } }