diff --git a/WrappersForEto.cs b/WrappersForEto.cs
index b161a2b..327b5b4 100644
--- a/WrappersForEto.cs
+++ b/WrappersForEto.cs
@@ -160,4 +160,10 @@ namespace apprepodbmgr.Eto
public string path { get; set; }
public BlockMediaType disk { get; set; }
}
+
+ class TargetOsEntry
+ {
+ public string name { get; set; }
+ public string version { get; set; }
+ }
}
\ No newline at end of file
diff --git a/dlgMetadata.xeto b/dlgMetadata.xeto
index b188687..0704faa 100644
--- a/dlgMetadata.xeto
+++ b/dlgMetadata.xeto
@@ -80,6 +80,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -191,27 +216,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/dlgMetadata.xeto.cs b/dlgMetadata.xeto.cs
index adbcb8d..4db2ce6 100644
--- a/dlgMetadata.xeto.cs
+++ b/dlgMetadata.xeto.cs
@@ -55,20 +55,19 @@ namespace apprepodbmgr.Eto
ObservableCollection lstDisks;
ObservableCollection lstFilesForMedia;
- ObservableCollection lstKeywords;
- ObservableCollection lstLanguages;
- ObservableCollection lstLanguageTypes;
- ObservableCollection lstSubcategories;
- ObservableCollection lstSystems;
+ ObservableCollection lstKeywords;
+ ObservableCollection lstLanguages;
+ ObservableCollection lstLanguageTypes;
+ ObservableCollection lstOses;
+ ObservableCollection lstSubcategories;
// TODO: Add the options to edit these fields
MagazineType[] magazines;
public CICMMetadataType Metadata;
- public bool Modified;
- PCIType[] pcis;
- RequiredOperatingSystemType[] requiredOses;
- bool stopped;
+ public bool Modified;
+ PCIType[] pcis;
+ bool stopped;
Thread thdDisc;
Thread thdDisk;
@@ -80,7 +79,7 @@ namespace apprepodbmgr.Eto
Modified = false;
- cmbReleaseType = new EnumDropDown();
+ cmbReleaseType = new EnumDropDown();
stkReleaseType.Items.Add(new StackLayoutItem {Control = cmbReleaseType, Expand = true});
lstKeywords = new ObservableCollection();
@@ -88,7 +87,7 @@ namespace apprepodbmgr.Eto
lstCategories = new ObservableCollection();
lstSubcategories = new ObservableCollection();
lstLanguages = new ObservableCollection();
- lstSystems = new ObservableCollection();
+ lstOses = new ObservableCollection();
lstArchitectures = new ObservableCollection();
lstDiscs = new ObservableCollection();
lstDisks = new ObservableCollection();
@@ -126,10 +125,15 @@ namespace apprepodbmgr.Eto
DataCell = new TextBoxCell {Binding = Binding.Property(r => r.str)},
HeaderText = "Language"
});
- treeSystems.Columns.Add(new GridColumn
+ treeOses.Columns.Add(new GridColumn
{
- DataCell = new TextBoxCell {Binding = Binding.Property(r => r.str)},
- HeaderText = "System"
+ DataCell = new TextBoxCell {Binding = Binding.Property(r => r.name)},
+ HeaderText = "Name"
+ });
+ treeOses.Columns.Add(new GridColumn
+ {
+ DataCell = new TextBoxCell {Binding = Binding.Property(r => r.version)},
+ HeaderText = "Version"
});
treeArchitectures.Columns.Add(new GridColumn
{
@@ -152,7 +156,7 @@ namespace apprepodbmgr.Eto
treeCategories.DataStore = lstCategories;
treeSubcategories.DataStore = lstSubcategories;
treeLanguages.DataStore = lstLanguages;
- treeSystems.DataStore = lstSystems;
+ treeOses.DataStore = lstOses;
treeArchitectures.DataStore = lstArchitectures;
treeDiscs.DataStore = lstDiscs;
treeDisks.DataStore = lstDisks;
@@ -162,7 +166,7 @@ namespace apprepodbmgr.Eto
treeCategories.AllowMultipleSelection = false;
treeSubcategories.AllowMultipleSelection = false;
treeLanguages.AllowMultipleSelection = false;
- treeSystems.AllowMultipleSelection = false;
+ treeOses.AllowMultipleSelection = false;
treeArchitectures.AllowMultipleSelection = false;
treeDiscs.AllowMultipleSelection = false;
treeDisks.AllowMultipleSelection = false;
@@ -229,28 +233,28 @@ namespace apprepodbmgr.Eto
foreach(string developer in Metadata.Developer)
{
if(!string.IsNullOrWhiteSpace(txtDeveloper.Text)) txtDeveloper.Text += ",";
- txtDeveloper.Text += developer;
+ txtDeveloper.Text += developer;
}
if(Metadata.Publisher != null)
foreach(string publisher in Metadata.Publisher)
{
if(!string.IsNullOrWhiteSpace(txtPublisher.Text)) txtPublisher.Text += ",";
- txtPublisher.Text += publisher;
+ txtPublisher.Text += publisher;
}
if(Metadata.Author != null)
foreach(string author in Metadata.Author)
{
if(!string.IsNullOrWhiteSpace(txtPublisher.Text)) txtPublisher.Text += ",";
- txtPublisher.Text += author;
+ txtPublisher.Text += author;
}
if(Metadata.Performer != null)
foreach(string performer in Metadata.Performer)
{
if(!string.IsNullOrWhiteSpace(txtPublisher.Text)) txtPublisher.Text += ",";
- txtPublisher.Text += performer;
+ txtPublisher.Text += performer;
}
txtName.Text = Metadata.Name;
@@ -289,9 +293,10 @@ namespace apprepodbmgr.Eto
lstLanguageTypes.Remove(language.ToString());
}
- if(Metadata.Systems != null)
- foreach(string system in Metadata.Systems)
- lstSystems.Add(new StringEntry {str = system});
+ if(Metadata.RequiredOperatingSystems != null)
+ foreach(RequiredOperatingSystemType reqos in Metadata.RequiredOperatingSystems)
+ foreach(string reqver in reqos.Version)
+ lstOses.Add(new TargetOsEntry {name = reqos.Name, version = reqver});
if(Metadata.Architectures != null)
foreach(ArchitecturesTypeArchitecture architecture in Metadata.Architectures)
@@ -304,7 +309,7 @@ namespace apprepodbmgr.Eto
foreach(OpticalDiscType disc in Metadata.OpticalDisc)
{
lstDiscs.Add(new DiscEntry {path = disc.Image.Value, disc = disc});
- List files = new List {disc.Image.Value};
+ List files = new List {disc.Image.Value};
if(disc.ADIP != null) files.Add(disc.ADIP.Image);
if(disc.ATIP != null) files.Add(disc.ATIP.Image);
if(disc.BCA != null) files.Add(disc.BCA.Image);
@@ -313,11 +318,11 @@ namespace apprepodbmgr.Eto
if(disc.DDS != null) files.Add(disc.DDS.Image);
if(disc.DMI != null) files.Add(disc.DMI.Image);
if(disc.LastRMD != null) files.Add(disc.LastRMD.Image);
- if(disc.LeadIn != null)
+ if(disc.LeadIn != null)
foreach(BorderType border in disc.LeadIn)
files.Add(border.Image);
if(disc.LeadInCdText != null) files.Add(disc.LeadInCdText.Image);
- if(disc.LeadOut != null)
+ if(disc.LeadOut != null)
foreach(BorderType border in disc.LeadOut)
files.Add(border.Image);
if(disc.MediaID != null) files.Add(disc.MediaID.Image);
@@ -339,12 +344,12 @@ namespace apprepodbmgr.Eto
foreach(BlockMediaType disk in Metadata.BlockMedia)
{
lstDisks.Add(new DiskEntry {path = disk.Image.Value, disk = disk});
- List files = new List {disk.Image.Value};
+ List files = new List {disk.Image.Value};
if(disk.ATA?.Identify != null) files.Add(disk.ATA.Identify.Image);
if(disk.MAM != null) files.Add(disk.MAM.Image);
if(disk.PCI?.ExpansionROM != null) files.Add(disk.PCI.ExpansionROM.Image.Value);
if(disk.PCMCIA?.CIS != null) files.Add(disk.PCMCIA.CIS.Image);
- if(disk.SCSI != null)
+ if(disk.SCSI != null)
{
if(disk.SCSI.Inquiry != null) files.Add(disk.SCSI.Inquiry.Image);
if(disk.SCSI.LogSense != null) files.Add(disk.SCSI.LogSense.Image);
@@ -372,7 +377,6 @@ namespace apprepodbmgr.Eto
magazines = Metadata.Magazine;
books = Metadata.Book;
- requiredOses = Metadata.RequiredOperatingSystems;
usermanuals = Metadata.UserManual;
adverts = Metadata.Advertisement;
linearmedias = Metadata.LinearMedia;
@@ -393,7 +397,7 @@ namespace apprepodbmgr.Eto
protected void OnBtnAddKeywordClicked(object sender, EventArgs e)
{
lstKeywords.Add(new StringEntry {str = txtNewKeyword.Text});
- txtNewKeyword.Text = "";
+ txtNewKeyword.Text = "";
}
protected void OnBtnRemoveKeywordClicked(object sender, EventArgs e)
@@ -431,13 +435,13 @@ namespace apprepodbmgr.Eto
protected void OnBtnAddCategoryClicked(object sender, EventArgs e)
{
lstCategories.Add(new StringEntry {str = txtNewCategory.Text});
- txtNewCategory.Text = "";
+ txtNewCategory.Text = "";
}
protected void OnBtnAddSubcategoryClicked(object sender, EventArgs e)
{
lstSubcategories.Add(new StringEntry {str = txtNewSubcategory.Text});
- txtNewSubcategory.Text = "";
+ txtNewSubcategory.Text = "";
}
protected void OnBtnRemoveSubcategoryClicked(object sender, EventArgs e)
@@ -483,20 +487,33 @@ namespace apprepodbmgr.Eto
FillLanguagesCombo();
}
- protected void OnBtnAddSystemClicked(object sender, EventArgs e)
+ protected void OnBtnAddNewOsClicked(object sender, EventArgs e)
{
- lstSystems.Add(new StringEntry {str = txtNewSystem.Text});
- txtNewSystem.Text = "";
+ if(string.IsNullOrWhiteSpace(txtNewOsName.Text))
+ {
+ MessageBox.Show("Operating system name cannot be empty.", MessageBoxType.Error);
+ return;
+ }
+
+ if(string.IsNullOrWhiteSpace(txtNewOsVersion.Text))
+ {
+ MessageBox.Show("Operating system version cannot be empty.", MessageBoxType.Error);
+ return;
+ }
+
+ lstOses.Add(new TargetOsEntry {name = txtNewOsName.Text, version = txtNewOsVersion.Text});
+ txtNewOsName.Text = "";
+ txtNewOsVersion.Text = "";
}
- protected void OnBtnClearSystemsClicked(object sender, EventArgs e)
+ protected void OnBtnClearOsesClicked(object sender, EventArgs e)
{
- lstSystems.Clear();
+ lstOses.Clear();
}
- protected void OnBtnRemoveSystemClicked(object sender, EventArgs e)
+ protected void OnBtnRemoveOsClicked(object sender, EventArgs e)
{
- if(treeSystems.SelectedItem != null) lstSystems.Remove((StringEntry)treeSystems.SelectedItem);
+ if(treeOses.SelectedItem != null) lstOses.Remove((TargetOsEntry)treeOses.SelectedItem);
}
protected void OnBtnAddArchitectureClicked(object sender, EventArgs e)
@@ -529,7 +546,7 @@ namespace apprepodbmgr.Eto
tabBarcodes.Visible = false;
tabCategories.Visible = false;
tabLanguages.Visible = false;
- tabSystems.Visible = false;
+ tabTargetOs.Visible = false;
tabArchitectures.Visible = false;
tabDisks.Visible = false;
prgAddDisc1.Visible = true;
@@ -616,7 +633,7 @@ namespace apprepodbmgr.Eto
tabBarcodes.Visible = true;
tabCategories.Visible = true;
tabLanguages.Visible = true;
- tabSystems.Visible = true;
+ tabTargetOs.Visible = true;
tabArchitectures.Visible = true;
tabDisks.Visible = true;
prgAddDisc1.Visible = false;
@@ -648,7 +665,7 @@ namespace apprepodbmgr.Eto
OpticalDiscType disc = Context.WorkingDisc;
lstDiscs.Add(new DiscEntry {path = Context.SelectedFile, disc = disc});
- List files = new List {disc.Image.Value};
+ List files = new List {disc.Image.Value};
if(disc.ADIP != null) files.Add(disc.ADIP.Image);
if(disc.ATIP != null) files.Add(disc.ATIP.Image);
if(disc.BCA != null) files.Add(disc.BCA.Image);
@@ -678,7 +695,7 @@ namespace apprepodbmgr.Eto
tabBarcodes.Visible = true;
tabCategories.Visible = true;
tabLanguages.Visible = true;
- tabSystems.Visible = true;
+ tabTargetOs.Visible = true;
tabArchitectures.Visible = true;
tabDisks.Visible = true;
prgAddDisc1.Visible = false;
@@ -724,7 +741,7 @@ namespace apprepodbmgr.Eto
tabBarcodes.Visible = false;
tabCategories.Visible = false;
tabLanguages.Visible = false;
- tabSystems.Visible = false;
+ tabTargetOs.Visible = false;
tabArchitectures.Visible = false;
tabDiscs.Visible = false;
prgAddDisk1.Visible = true;
@@ -811,7 +828,7 @@ namespace apprepodbmgr.Eto
tabBarcodes.Visible = true;
tabCategories.Visible = true;
tabLanguages.Visible = true;
- tabSystems.Visible = true;
+ tabTargetOs.Visible = true;
tabArchitectures.Visible = true;
tabDiscs.Visible = true;
prgAddDisk1.Visible = false;
@@ -843,12 +860,12 @@ namespace apprepodbmgr.Eto
BlockMediaType disk = Context.WorkingDisk;
lstDisks.Add(new DiskEntry {path = disk.Image.Value, disk = disk});
- List files = new List {disk.Image.Value};
+ List files = new List {disk.Image.Value};
if(disk.ATA?.Identify != null) files.Add(disk.ATA.Identify.Image);
if(disk.MAM != null) files.Add(disk.MAM.Image);
if(disk.PCI?.ExpansionROM != null) files.Add(disk.PCI.ExpansionROM.Image.Value);
if(disk.PCMCIA?.CIS != null) files.Add(disk.PCMCIA.CIS.Image);
- if(disk.SCSI != null)
+ if(disk.SCSI != null)
{
if(disk.SCSI.Inquiry != null) files.Add(disk.SCSI.Inquiry.Image);
if(disk.SCSI.LogSense != null) files.Add(disk.SCSI.LogSense.Image);
@@ -877,7 +894,7 @@ namespace apprepodbmgr.Eto
tabBarcodes.Visible = true;
tabCategories.Visible = true;
tabLanguages.Visible = true;
- tabSystems.Visible = true;
+ tabTargetOs.Visible = true;
tabArchitectures.Visible = true;
tabDiscs.Visible = true;
prgAddDisk1.Visible = false;
@@ -923,7 +940,7 @@ namespace apprepodbmgr.Eto
protected void OnBtnOKClicked(object sender, EventArgs e)
{
- Metadata = new CICMMetadataType();
+ Metadata = new CICMMetadataType();
List architectures = new List();
List barcodes = new List();
List disks = new List();
@@ -977,7 +994,31 @@ namespace apprepodbmgr.Eto
foreach(StringEntry entry in lstSubcategories) subcategories.Add(entry.str);
- foreach(StringEntry entry in lstSystems) systems.Add(entry.str);
+ if(lstOses.Count > 0)
+ {
+ Dictionary> osesDict = new Dictionary>();
+ foreach(TargetOsEntry entry in lstOses.OrderBy(t => t.name).ThenBy(t => t.version))
+ {
+ osesDict.TryGetValue(entry.name, out List versList);
+
+ if(versList == null) versList = new List();
+
+ if(versList.Contains(entry.version)) continue;
+
+ versList.Add(entry.version);
+ versList.Sort();
+ osesDict.Remove(entry.name);
+ osesDict.Add(entry.name, versList);
+ }
+
+ Metadata.RequiredOperatingSystems = osesDict
+ .OrderBy(t => t.Key)
+ .Select(entry => new RequiredOperatingSystemType
+ {
+ Name = entry.Key,
+ Version = entry.Value.ToArray()
+ }).ToArray();
+ }
if(architectures.Count > 0) Metadata.Architectures = architectures.ToArray();
if(barcodes.Count > 0) Metadata.Barcodes = barcodes.ToArray();
@@ -989,14 +1030,13 @@ namespace apprepodbmgr.Eto
if(subcategories.Count > 0) Metadata.Subcategories = subcategories.ToArray();
if(systems.Count > 0) Metadata.Systems = systems.ToArray();
- Metadata.Magazine = magazines;
- Metadata.Book = books;
- Metadata.RequiredOperatingSystems = requiredOses;
- Metadata.UserManual = usermanuals;
- Metadata.Advertisement = adverts;
- Metadata.LinearMedia = linearmedias;
- Metadata.PCICard = pcis;
- Metadata.AudioMedia = audiomedias;
+ Metadata.Magazine = magazines;
+ Metadata.Book = books;
+ Metadata.UserManual = usermanuals;
+ Metadata.Advertisement = adverts;
+ Metadata.LinearMedia = linearmedias;
+ Metadata.PCICard = pcis;
+ Metadata.AudioMedia = audiomedias;
Modified = true;
Close();
@@ -1069,9 +1109,10 @@ namespace apprepodbmgr.Eto
TabPage tabLanguages;
ComboBox cmbLanguages;
GridView treeLanguages;
- TabPage tabSystems;
- TextBox txtNewSystem;
- GridView treeSystems;
+ TabPage tabTargetOs;
+ TextBox txtNewOsName;
+ TextBox txtNewOsVersion;
+ GridView treeOses;
TabPage tabArchitectures;
ComboBox cmbArchitectures;
GridView treeArchitectures;