Lexicasius/WordGen/View/ManageSyllabaryForm.cs
Thoscellen 39783cd91e init
2020-05-16 17:45:13 +02:00

179 lines
5.3 KiB
C#

using WordGen.Model;
using WordGen.View.LocalizationString;
using System;
using System.Windows.Forms;
using System.Collections.Generic;
using System.IO;
namespace WordGen.View {
public partial class ManageSyllabaryForm : Form {
public ManageSyllabaryForm() {
InitializeComponent();
reloadListView();
}
private void reloadListView() {
LVSyllabary.Clear();
foreach (Syllabary aSillabary in SyllabaryWrapper.GetAll()) {
// add a ListViewItem with the Sillabary title and the 0th Icon index (specified in the ListView) in the ListView.
LVSyllabary.Items.Add(aSillabary.title, 0);
}
}
private void Bclose_Click(object sender, EventArgs e) {
this.Close();
this.Dispose();
}
private void LVsyllabary_SelectedIndexChanged(object sender, EventArgs e) {
if (LVSyllabary.SelectedItems.Count == 0) {
Bedit.Enabled = false;
Bdelete.Enabled = false;
Bduplicate.Enabled = false;
Bexport.Enabled = false;
} else if (LVSyllabary.SelectedItems.Count == 1) {
Bedit.Enabled = true;
Bdelete.Enabled = true;
Bduplicate.Enabled = true;
Bexport.Enabled = true;
} else {
Bedit.Enabled = false;
Bdelete.Enabled = true;
Bduplicate.Enabled = true;
Bexport.Enabled = false;
}
}
// Delete sullabary
private void Bdelete_Click(object sender, EventArgs e) {
LVSyllabary_DeleteSelectedItems();
}
private void LVSyllabary_KeyDown(object sender, KeyEventArgs e) {
if (e.KeyCode == Keys.Delete) {
LVSyllabary_DeleteSelectedItems();
}
}
private void LVSyllabary_DeleteSelectedItems() {
if (LVSyllabary.SelectedItems.Count == 0) {
return;
} else if (LVSyllabary.SelectedItems.Count == 1) {
// 1 item selected.
// We show a confirmation message box.
var result = MessageBox.Show(string.Format(Messages.ManageSyllabaireForm_ConfirmDelete1Item, LVSyllabary.SelectedItems[0].Text), Messages.ManageSyllabaireForm_ConfirmDelete1ItemTitle, MessageBoxButtons.YesNo, MessageBoxIcon.Question);
// If no, the deletion exits
if (result == DialogResult.No)
return;
} else {
// Multiple items selected.
var result = MessageBox.Show(string.Format(Messages.ManageSyllabaireForm_ConfirmDeleteManyItems, LVSyllabary.SelectedItems.Count), Messages.ManageSyllabaireForm_ConfirmDeleteManyItemsTitle, MessageBoxButtons.YesNo, MessageBoxIcon.Question);
// If no, the deletion exits
if (result == DialogResult.No)
return;
}
// Deletion
foreach (ListViewItem aSyllabary in LVSyllabary.SelectedItems) {
SyllabaryWrapper.Delete(aSyllabary.Text);
}
reloadListView();
}
private void LVSyllabary_DoubleClick(object sender, EventArgs e) {
if (LVSyllabary.SelectedItems.Count == 1) {
// Edit item
LVSullabary_EditItem();
} else if (LVSyllabary.SelectedItems.Count == 0) {
// New item
LVSyllabary_NewItem();
}
}
private void Bnew_Click(object sender, EventArgs e) {
LVSyllabary_NewItem();
}
private void LVSyllabary_NewItem() {
SyllabaryForm mySF = new SyllabaryForm();
if (mySF.ShowDialog() == DialogResult.OK) {
SyllabaryWrapper.Add(mySF.MySyllabaire);
reloadListView();
}
}
// Edit sullabary
private void Bedit_Click(object sender, EventArgs e) {
LVSullabary_EditItem();
}
private void LVSullabary_EditItem() {
Syllabary thisSyllabary = SyllabaryWrapper.Get(LVSyllabary.SelectedItems[0].Text);
SyllabaryForm mySF = new SyllabaryForm(thisSyllabary);
if (mySF.ShowDialog() == DialogResult.OK) {
SyllabaryWrapper.Replace(thisSyllabary.title, mySF.MySyllabaire);
reloadListView();
}
}
private void Bduplicate_Click(object sender, EventArgs e) {
foreach (ListViewItem lvItem in LVSyllabary.SelectedItems) {
// clone
Syllabary thisSyllabary = SyllabaryWrapper.Get(lvItem.Text);
Syllabary clonedSyllabary = (Syllabary)thisSyllabary.Clone();
SyllabaryWrapper.Add(clonedSyllabary);
}
// add on the list
reloadListView();
}
private void Bexport_Click(object sender, EventArgs e) {
SaveFileDialog sfd = new SaveFileDialog();
sfd.FileName = LVSyllabary.SelectedItems[0].Text;
sfd.Filter = "eXtensible Markup Language (*.xml)|*.xml";
if (sfd.ShowDialog() == DialogResult.OK) {
SyllabaryIoManager Siom = new SyllabaryIoManager();
Syllabary thisSyllabary = SyllabaryWrapper.Get(LVSyllabary.SelectedItems[0].Text);
Siom.saveSyllabary(thisSyllabary, sfd.FileName);
}
}
private void BexportAll_Click(object sender, EventArgs e) {
FolderBrowserDialog fbd = new FolderBrowserDialog();
if (fbd.ShowDialog() == DialogResult.OK) {
SyllabaryIoManager Siom = new SyllabaryIoManager();
foreach (Syllabary item in SyllabaryWrapper.GetAll()) {
Siom.saveSyllabary(item, Path.Combine(fbd.SelectedPath, item.title));
}
}
}
private void Bimport_Click(object sender, EventArgs e) {
OpenFileDialog ofd = new OpenFileDialog();
ofd.Multiselect = true;
ofd.Filter = "eXtensible Markup Language (*.xml)|*.xml";
if (ofd.ShowDialog() == DialogResult.OK) {
SyllabaryIoManager Siom = new SyllabaryIoManager();
foreach (string item in ofd.FileNames) {
Syllabary thisSyllabary = Siom.loadSyllabary(item);
SyllabaryWrapper.Add(thisSyllabary);
}
reloadListView();
}
}
private void ManageSyllabaryForm_Load(object sender, EventArgs e) {
}
}
}