public DialogShipGroupColumnFilter(DataGridView target, ShipGroupData group) { InitializeComponent(); var rows = new LinkedList <DataGridViewRow>(); var row = new DataGridViewRow(); row.CreateCells(ColumnView); row.SetValues("(全て)", null, null, "-"); row.Cells[ColumnView_Width.Index].ReadOnly = true; rows.AddLast(row); foreach (var c in group.ViewColumns.Values.OrderBy(c => c.DisplayIndex)) { row = new DataGridViewRow(); row.CreateCells(ColumnView); row.SetValues(target.Columns[c.Name].HeaderText, c.Visible, c.AutoSize, c.Width); row.Cells[ColumnView_Width.Index].ValueType = typeof(int); row.Tag = c.Name; rows.AddLast(row); } ColumnView.Rows.AddRange(rows.ToArray()); ScrLkColumnCount.Minimum = 0; ScrLkColumnCount.Maximum = group.ViewColumns.Count; ScrLkColumnCount.Value = group.ScrollLockColumnCount; }
public DialogShipGroupSortOrder(DataGridView target, ShipGroupData group) { InitializeComponent(); var rows_enabled = new LinkedList <DataGridViewRow>(); var rows_disabled = new LinkedList <DataGridViewRow>(); var columns = target.Columns.Cast <DataGridViewColumn>(); var names = columns.Select(c => c.Name); if (group.SortOrder == null) { group.SortOrder = new List <KeyValuePair <string, ListSortDirection> >(); } foreach (var sort in group.SortOrder.Where(s => names.Contains(s.Key))) { var row = new DataGridViewRow(); row.CreateCells(EnabledView); row.SetValues(target.Columns[sort.Key].HeaderText, sort.Value); row.Cells[EnabledView_Name.Index].Tag = sort.Key; row.Tag = columns.FirstOrDefault(c => c.Name == sort.Key).DisplayIndex; rows_enabled.AddLast(row); } foreach (var name in columns.Where(c => c.SortMode != DataGridViewColumnSortMode.NotSortable && !group.SortOrder.Any(s => c.Name == s.Key)) .Select(c => c.Name)) { var row = new DataGridViewRow(); row.CreateCells(DisabledView); row.SetValues(target.Columns[name].HeaderText); row.Cells[DisabledView_Name.Index].Tag = name; row.Tag = columns.FirstOrDefault(c => c.Name == name).DisplayIndex; rows_disabled.AddLast(row); } EnabledView.Rows.AddRange(rows_enabled.ToArray()); DisabledView.Rows.AddRange(rows_disabled.ToArray()); AutoSortFlag.Checked = group.AutoSortEnabled; }
private void FormShipGroup_Load(object sender, EventArgs e) { ShipGroupManager groups = KCDatabase.Instance.ShipGroup; if (!groups.ShipGroups.ContainsKey(-1)) { var master = new ShipGroupData(-1); master.Name = "全所属艦"; master.ColumnFilter = Enumerable.Repeat <bool>(true, ShipView.Columns.Count).ToList(); master.ColumnWidth = ShipView.Columns.OfType <DataGridViewColumn>().Select(c => c.Width).ToList(); groups.ShipGroups.Add(master); } foreach (var g in groups.ShipGroups.Values) { TabPanel.Controls.Add(CreateTabLabel(g.GroupID)); } { int columnCount = ShipView.Columns.Count; for (int i = 0; i < columnCount; i++) { ShipView.Columns[i].Visible = false; } } ConfigurationChanged(); APIObserver o = APIObserver.Instance; o.APIList["api_port/port"].ResponseReceived += APIUpdated; o.APIList["api_get_member/ship2"].ResponseReceived += APIUpdated; Utility.Configuration.Instance.ConfigurationChanged += ConfigurationChanged; Icon = ResourceManager.ImageToIcon(ResourceManager.Instance.Icons.Images[(int)ResourceManager.IconContent.FormShipGroup]); }
private void MenuMember_AddToGroup_Click(object sender, EventArgs e) { using (var dialog = new DialogTextSelect("グループの選択", "追加するグループを選択してください:", KCDatabase.Instance.ShipGroup.ShipGroups.Values.Where(g => g.GroupID >= 0).ToArray())) { if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { ShipGroupData group = (ShipGroupData)dialog.SelectedItem; if (group != null && group.GroupID >= 0) { List <int> members = new List <int>(ShipView.Rows.GetRowCount(DataGridViewElementStates.Selected)); foreach (DataGridViewRow row in ShipView.SelectedRows.OfType <DataGridViewRow>().OrderBy(r => r.Tag)) { members.Add((int)row.Cells[ShipView_ID.Index].Value); } group.Members.AddRange(members); group.CheckMembers(); } } } }
private void MenuMember_ColumnFilter_Click(object sender, EventArgs e) { ShipGroupData group = SelectedTab != null ? KCDatabase.Instance.ShipGroup[(int)SelectedTab.Tag] : null; if (group == null) { MessageBox.Show("このグループは変更できません。", "エラー", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); return; } using (var dialog = new DialogShipGroupColumnFilter(ShipView)) { if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { bool[] checkedList = dialog.CheckedList; group.ColumnFilter = checkedList.ToList(); for (int i = 0; i < checkedList.Length; i++) { ShipView.Columns[i].Visible = checkedList[i]; } } } }
private void MenuMember_Delete_Click(object sender, EventArgs e) { ShipGroupData group = SelectedTab != null ? KCDatabase.Instance.ShipGroup[(int)SelectedTab.Tag] : null; if (group == null || group.GroupID < 0) { MessageBox.Show("このグループは変更できません。", "エラー", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); return; } List <int> list = new List <int>(ShipView.Rows.GetRowCount(DataGridViewElementStates.Selected)); foreach (DataGridViewRow row in ShipView.SelectedRows) { list.Add((int)row.Cells[ShipView_ID.Index].Value); ShipView.Rows.Remove(row); } if (group != null) { group.Members = group.Members.Except(list).ToList(); } }
private void MenuMember_CSVOutput_Click(object sender, EventArgs e) { IEnumerable <ShipData> ships; ImageLabel senderLabel = MenuGroup.SourceControl as ImageLabel; if (senderLabel == null) { ships = KCDatabase.Instance.Ships.Values; } else { ShipGroupData group = KCDatabase.Instance.ShipGroup[(int)senderLabel.Tag]; if (group != null && group.GroupID >= 0) { ships = group.MembersInstance; } else { ships = KCDatabase.Instance.Ships.Values; } } using (var dialog = new DialogShipGroupCSVOutput()) { if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { try { using (StreamWriter sw = new StreamWriter(dialog.OutputPath, false, Utility.Configuration.Config.Log.FileEncoding)) { string[] header = dialog.OutputFormat == DialogShipGroupCSVOutput.OutputFormatConstants.User ? ShipCSVHeaderUser : ShipCSVHeaderData; sw.WriteLine(string.Join(",", header)); string arg = string.Format("{{{0}}}", string.Join("},{", Enumerable.Range(0, header.Length))); foreach (ShipData ship in ships) { if (ship == null) { continue; } if (dialog.OutputFormat == DialogShipGroupCSVOutput.OutputFormatConstants.User) { sw.WriteLine(arg, ship.MasterID, ship.MasterShip.ShipTypeName, ship.MasterShip.NameWithClass, ship.Level, ship.ExpTotal, ship.ExpNext, ship.ExpNextRemodel, ship.HPCurrent, ship.HPMax, ship.Condition, ship.Fuel, ship.Ammo, GetEquipmentString(ship, 0), GetEquipmentString(ship, 1), GetEquipmentString(ship, 2), GetEquipmentString(ship, 3), GetEquipmentString(ship, 4), DateTimeHelper.ToTimeRemainString(DateTimeHelper.FromAPITimeSpan(ship.RepairTime)), ship.FirepowerBase, ship.FirepowerRemain, ship.TorpedoBase, ship.TorpedoRemain, ship.AABase, ship.AARemain, ship.ArmorBase, ship.ArmorRemain, ship.ASWBase, ship.EvasionBase, ship.LOSBase, ship.LuckBase, ship.LuckRemain, Constants.GetRange(ship.Range), ship.IsLocked ? "❤" : "-", ship.SallyArea); } else //data { sw.WriteLine(arg, ship.MasterID, ship.MasterShip.ShipType, ship.MasterShip.NameWithClass, ship.ShipID, ship.Level, ship.ExpTotal, ship.ExpNext, ship.ExpNextRemodel, ship.HPCurrent, ship.HPMax, ship.Condition, ship.Fuel, ship.Ammo, GetEquipmentOnlyString(ship, 0), //undone: IDにしたいけどよく考えたら強化値が反映されない GetEquipmentOnlyString(ship, 1), GetEquipmentOnlyString(ship, 2), GetEquipmentOnlyString(ship, 3), GetEquipmentOnlyString(ship, 4), ship.Aircraft[0], ship.Aircraft[1], ship.Aircraft[2], ship.Aircraft[3], ship.Aircraft[4], ship.RepairTime * 10000, ship.FirepowerBase, ship.FirepowerRemain, ship.TorpedoBase, ship.TorpedoRemain, ship.AABase, ship.AARemain, ship.ArmorBase, ship.ArmorRemain, ship.ASWBase, ship.EvasionBase, ship.LOSBase, ship.LuckBase, ship.LuckRemain, ship.Range, ship.IsLocked ? 1 : 0, ship.SallyArea ); } } } } catch (Exception ex) { Utility.ErrorReporter.SendErrorReport(ex, "艦船グループ CSVの出力に失敗しました。"); MessageBox.Show("艦船グループ CSVの出力に失敗しました。\r\n" + ex.Message, "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } }