// リストを全消去する // リストの選択項目を削除する private void DeletePiecePictureAll(PiecePictureType ppt) { switch (ppt) { case PiecePictureType.Main: if (PiecePictureList1.Count == 0) { return; } { foreach (string name in PiecePictureList1) { piecePictureData.Remove(name); } PiecePictureList1.Clear(); PiecePictureIndex1.Value = -1; RedrawViewImage(); } break; case PiecePictureType.Support: if (PiecePictureList2.Count == 0) { return; } { foreach (string name in PiecePictureList2) { piecePictureData.Remove(name); } PiecePictureList2.Clear(); PiecePictureIndex2.Value = -1; RedrawViewImage(); } break; case PiecePictureType.Base: if (PiecePictureList3.Count == 0) { return; } { foreach (string name in PiecePictureList3) { piecePictureData.Remove(name); } PiecePictureList3.Clear(); PiecePictureIndex3.Value = -1; RedrawViewImage(); } break; } }
// コンストラクタ public MainViewModel(GetFileName funcGFN1, GetFileName funcGFN2) { // PreviewImageFlg = PreviewImage.Select(p => p != null).ToReadOnlyReactiveProperty(); // ShowImageDataFlg1.Subscribe(_ => RedrawViewImage()); ShowImageDataFlg2.Subscribe(_ => RedrawViewImage()); ShowImageDataFlg3.Subscribe(_ => RedrawViewImage()); // CreateFormationPictureCommand.Subscribe(_ => { var image = CreateFormationPicture(); if (image == null) { return; } string filePath = funcGFN2(); if (filePath != "") { if (System.IO.Path.GetExtension(filePath) != ".png") { filePath += ".png"; } image.Save(filePath, ImageFormat.Png); } }); DeleteDataAllCommand.Subscribe(_ => { var result = MessageBox.Show("リストの画像を全て消去しますか?", "編成まとめ隊", MessageBoxButtons.YesNo, MessageBoxType.Question); if (result == DialogResult.Yes) { piecePictureData.Clear(); PiecePictureList1.Clear(); PiecePictureList2.Clear(); PiecePictureList3.Clear(); RedrawViewImage(); } }); AddPiecePicture1Command.Subscribe(_ => { AddPiecePicture(funcGFN1(), PiecePictureType.Main); }); AddPiecePicture2Command.Subscribe(_ => { AddPiecePicture(funcGFN1(), PiecePictureType.Support); }); AddPiecePicture3Command.Subscribe(_ => { AddPiecePicture(funcGFN1(), PiecePictureType.Base); }); DeletePiecePicture1Command.Subscribe(_ => { DeletePiecePicture(PiecePictureType.Main); }); DeletePiecePicture2Command.Subscribe(_ => { DeletePiecePicture(PiecePictureType.Support); }); DeletePiecePicture3Command.Subscribe(_ => { DeletePiecePicture(PiecePictureType.Base); }); MoveUpPiecePicture1Command.Subscribe(_ => { MoveUpPiecePicture(PiecePictureType.Main); }); MoveUpPiecePicture2Command.Subscribe(_ => { MoveUpPiecePicture(PiecePictureType.Support); }); MoveUpPiecePicture3Command.Subscribe(_ => { MoveUpPiecePicture(PiecePictureType.Base); }); MoveDownPiecePicture1Command.Subscribe(_ => { MoveDownPiecePicture(PiecePictureType.Main); }); MoveDownPiecePicture2Command.Subscribe(_ => { MoveDownPiecePicture(PiecePictureType.Support); }); MoveDownPiecePicture3Command.Subscribe(_ => { MoveDownPiecePicture(PiecePictureType.Base); }); DeletePiecePictureAll1Command.Subscribe(_ => { DeletePiecePictureAll(PiecePictureType.Main); }); DeletePiecePictureAll2Command.Subscribe(_ => { DeletePiecePictureAll(PiecePictureType.Support); }); DeletePiecePictureAll3Command.Subscribe(_ => { DeletePiecePictureAll(PiecePictureType.Base); }); }
// リストの選択項目を削除する private void DeletePiecePicture(PiecePictureType ppt) { switch (ppt) { case PiecePictureType.Main: if (PiecePictureIndex1.Value < 0) { return; } { int selectedIndex = PiecePictureIndex1.Value; string temp = PiecePictureList1[selectedIndex]; PiecePictureList1.RemoveAt(selectedIndex); piecePictureData.Remove(temp); PiecePictureIndex1.Value = Math.Min(selectedIndex, PiecePictureList1.Count - 1); RedrawViewImage(); } break; case PiecePictureType.Support: if (PiecePictureIndex2.Value < 0) { return; } { int selectedIndex = PiecePictureIndex2.Value; string temp = PiecePictureList2[selectedIndex]; PiecePictureList2.RemoveAt(selectedIndex); piecePictureData.Remove(temp); PiecePictureIndex2.Value = Math.Min(selectedIndex, PiecePictureList2.Count - 1); RedrawViewImage(); } break; case PiecePictureType.Base: if (PiecePictureIndex3.Value < 0) { return; } { int selectedIndex = PiecePictureIndex3.Value; string temp = PiecePictureList3[selectedIndex]; PiecePictureList3.RemoveAt(selectedIndex); piecePictureData.Remove(temp); PiecePictureIndex3.Value = Math.Min(selectedIndex, PiecePictureList3.Count - 1); RedrawViewImage(); } break; } }
// 画像ファイルを追加する // ただし種別による選別は施す(当てはまらない画像データはインポートしないように設定) private void AddPiecePicture(string fileName, PiecePictureType ppt, bool redrawFlg = true) { if (fileName == "") { return; } switch (ppt) { case PiecePictureType.Main: if (PiecePictureList1.Count >= 12) { return; } break; case PiecePictureType.Support: if (PiecePictureList2.Count >= 12) { return; } break; case PiecePictureType.Base: if (PiecePictureList3.Count >= 3) { return; } break; } try { var image = new Bitmap(fileName); // if (image.Width != 800 || image.Height != 480) { return; } if (ppt != PiecePictureType.Base && !IsRefitScene(image)) { return; } if (ppt == PiecePictureType.Base && !IsBaseScene(image)) { return; } // string key = System.IO.Path.GetFileNameWithoutExtension(fileName); if (piecePictureData.ContainsKey(key)) { for (int i = 1; ; ++i) { string key2 = $"{key}_{i}"; if (!piecePictureData.ContainsKey(key2)) { key = key2; break; } } } piecePictureData[key] = image; switch (ppt) { case PiecePictureType.Main: PiecePictureList1.Add(key); break; case PiecePictureType.Support: PiecePictureList2.Add(key); break; case PiecePictureType.Base: PiecePictureList3.Add(key); break; } if (redrawFlg) { RedrawViewImage(); } } catch (Exception e) { Console.WriteLine(e.Message); } }