From 9edd4bcba3fdf7fa815960015856c7fda426cae2 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Sat, 29 Apr 2017 07:04:03 +0100 Subject: [PATCH] Added support for reading, editing (basic) metadata, adding it to the DB, and compress and copy it as XML and JSON to the archived file. --- osrepodbmgr/ChangeLog | 19 + osrepodbmgr/Core.cs | 330 ++- osrepodbmgr/DBOps.cs | 20 +- osrepodbmgr/DicCore.cs | 46 + osrepodbmgr/MainWindow.cs | 134 ++ osrepodbmgr/Program.cs | 5 + osrepodbmgr/Schema.cs | 4 +- osrepodbmgr/dlgMetadata.cs | 1228 +++++++++++ osrepodbmgr/gtk-gui/MainWindow.cs | 31 +- osrepodbmgr/gtk-gui/generated.cs | 8 +- osrepodbmgr/gtk-gui/gui.stetic | 1854 ++++++++++++++++- osrepodbmgr/gtk-gui/osrepodbmgr.DicCore.cs | 10 + .../gtk-gui/osrepodbmgr.dlgMetadata.cs | 1673 +++++++++++++++ osrepodbmgr/osrepodbmgr.csproj | 3 + 14 files changed, 5341 insertions(+), 24 deletions(-) create mode 100644 osrepodbmgr/DicCore.cs create mode 100644 osrepodbmgr/dlgMetadata.cs create mode 100644 osrepodbmgr/gtk-gui/osrepodbmgr.DicCore.cs create mode 100644 osrepodbmgr/gtk-gui/osrepodbmgr.dlgMetadata.cs diff --git a/osrepodbmgr/ChangeLog b/osrepodbmgr/ChangeLog index 2c6b20e..db02c10 100644 --- a/osrepodbmgr/ChangeLog +++ b/osrepodbmgr/ChangeLog @@ -1,3 +1,22 @@ +2017-04-29 Natalia Portillo + + * Core.cs: + * DBOps.cs: + * Schema.cs: + * DicCore.cs: + * Program.cs: + * MainWindow.cs: + * dlgMetadata.cs: + * gtk-gui/gui.stetic: + * osrepodbmgr.csproj: + * gtk-gui/generated.cs: + * gtk-gui/MainWindow.cs: + * gtk-gui/osrepodbmgr.DicCore.cs: + * gtk-gui/osrepodbmgr.dlgMetadata.cs: + Added support for reading, editing (basic) metadata, adding + it to the DB, and compress and copy it as XML and JSON to + the archived file. + 2017-04-24 Natalia Portillo * osrepodbmgr.csproj: diff --git a/osrepodbmgr/Core.cs b/osrepodbmgr/Core.cs index c6189b8..213fcd0 100644 --- a/osrepodbmgr/Core.cs +++ b/osrepodbmgr/Core.cs @@ -29,13 +29,17 @@ using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; +using System.Linq; using System.Text; +using System.Xml; +using System.Xml.Serialization; using Ionic.Zip; using Newtonsoft.Json; +using Schemas; namespace osrepodbmgr { - public static class Core + public static partial class Core { // Sets a 128Kbyte buffer const long bufferSize = 131072; @@ -103,9 +107,232 @@ namespace osrepodbmgr try { MainClass.hashes = new Dictionary(); + List alreadyMetadata = new List(); + bool foundMetadata = false; + + // For metadata + List architectures = new List(); + List barcodes = new List(); + List disks = new List(); + List categories = new List(); + List keywords = new List(); + List languages = new List(); + List discs = new List(); + List subcategories = new List(); + List systems = new List(); + bool releaseDateSpecified = false; + DateTime releaseDate = DateTime.MinValue; + CICMMetadataTypeReleaseType releaseType = CICMMetadataTypeReleaseType.Retail; + bool releaseTypeSpecified = false; + List authors = new List(); + List developers = new List(); + List performers = new List(); + List publishers = new List(); + string metadataName = null; + string metadataPartNo = null; + string metadataSerial = null; + string metadataVersion = null; + + // End for metadata + long counter = 1; foreach(string file in MainClass.files) { + // An already known metadata file, skip it + if(alreadyMetadata.Contains(file)) + { + counter++; + continue; + } + + if(Path.GetExtension(file).ToLowerInvariant() == ".xml") + { + FileStream xrs = new FileStream(file, FileMode.Open, FileAccess.Read); + XmlReader xr = XmlReader.Create(xrs); + XmlSerializer xs = new XmlSerializer(typeof(CICMMetadataType)); + if(xs.CanDeserialize(xr)) + { + CICMMetadataType thisMetadata = (CICMMetadataType)xs.Deserialize(xr); + if(thisMetadata.Architectures != null) + architectures.AddRange(thisMetadata.Architectures); + if(thisMetadata.Barcodes != null) + barcodes.AddRange(thisMetadata.Barcodes); + if(thisMetadata.BlockMedia != null) + disks.AddRange(thisMetadata.BlockMedia); + if(thisMetadata.Categories != null) + categories.AddRange(thisMetadata.Categories); + if(thisMetadata.Keywords != null) + keywords.AddRange(thisMetadata.Keywords); + if(thisMetadata.Languages != null) + languages.AddRange(thisMetadata.Languages); + if(thisMetadata.OpticalDisc != null) + discs.AddRange(thisMetadata.OpticalDisc); + if(thisMetadata.Subcategories != null) + subcategories.AddRange(thisMetadata.Subcategories); + if(thisMetadata.Systems != null) + systems.AddRange(thisMetadata.Systems); + if(thisMetadata.Author != null) + authors.AddRange(thisMetadata.Author); + if(thisMetadata.Developer != null) + developers.AddRange(thisMetadata.Developer); + if(thisMetadata.Performer != null) + performers.AddRange(thisMetadata.Performer); + if(thisMetadata.Publisher != null) + publishers.AddRange(thisMetadata.Publisher); + if(string.IsNullOrWhiteSpace(metadataName) && !string.IsNullOrWhiteSpace(thisMetadata.Name)) + metadataName = thisMetadata.Name; + if(string.IsNullOrWhiteSpace(metadataPartNo) && !string.IsNullOrWhiteSpace(thisMetadata.PartNumber)) + metadataPartNo = thisMetadata.PartNumber; + if(string.IsNullOrWhiteSpace(metadataSerial) && !string.IsNullOrWhiteSpace(thisMetadata.SerialNumber)) + metadataSerial = thisMetadata.SerialNumber; + if(string.IsNullOrWhiteSpace(metadataVersion) && !string.IsNullOrWhiteSpace(thisMetadata.Version)) + metadataVersion = thisMetadata.Version; + if(thisMetadata.ReleaseDateSpecified) + { + if(thisMetadata.ReleaseDate > releaseDate) + { + releaseDateSpecified = true; + releaseDate = thisMetadata.ReleaseDate; + } + } + if(thisMetadata.ReleaseTypeSpecified) + { + releaseTypeSpecified = true; + releaseType = thisMetadata.ReleaseType; + } + + foundMetadata = true; + + string metadataFileWithoutExtension = Path.Combine(Path.GetDirectoryName(file), Path.GetFileNameWithoutExtension(file)); + alreadyMetadata.Add(metadataFileWithoutExtension + ".xml"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".xmL"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".xMl"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".xML"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".Xml"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".XmL"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".XMl"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".XML"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".json"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".jsoN"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".jsOn"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".jsON"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".jSon"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".jSoN"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".jSOn"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".jSON"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".Json"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".JsoN"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".JsOn"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".JsON"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".JSon"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".JSoN"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".JSOn"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".JSON"); + + xr.Close(); + xrs.Close(); + continue; + } + + xr.Close(); + xrs.Close(); + } + else if(Path.GetExtension(file).ToLowerInvariant() == ".json") + { + FileStream jrs = new FileStream(file, FileMode.Open, FileAccess.Read); + TextReader jr = new StreamReader(jrs); + JsonSerializer js = new JsonSerializer(); + + try + { + CICMMetadataType thisMetadata = (CICMMetadataType)js.Deserialize(jr, typeof(CICMMetadataType)); + if(thisMetadata.Architectures != null) + architectures.AddRange(thisMetadata.Architectures); + if(thisMetadata.Barcodes != null) + barcodes.AddRange(thisMetadata.Barcodes); + if(thisMetadata.BlockMedia != null) + disks.AddRange(thisMetadata.BlockMedia); + if(thisMetadata.Categories != null) + categories.AddRange(thisMetadata.Categories); + if(thisMetadata.Keywords != null) + keywords.AddRange(thisMetadata.Keywords); + if(thisMetadata.Languages != null) + languages.AddRange(thisMetadata.Languages); + if(thisMetadata.OpticalDisc != null) + discs.AddRange(thisMetadata.OpticalDisc); + if(thisMetadata.Subcategories != null) + subcategories.AddRange(thisMetadata.Subcategories); + if(thisMetadata.Systems != null) + systems.AddRange(thisMetadata.Systems); + if(thisMetadata.Author != null) + authors.AddRange(thisMetadata.Author); + if(thisMetadata.Developer != null) + developers.AddRange(thisMetadata.Developer); + if(thisMetadata.Performer != null) + performers.AddRange(thisMetadata.Performer); + if(thisMetadata.Publisher != null) + publishers.AddRange(thisMetadata.Publisher); + if(string.IsNullOrWhiteSpace(metadataName) && !string.IsNullOrWhiteSpace(thisMetadata.Name)) + metadataName = thisMetadata.Name; + if(string.IsNullOrWhiteSpace(metadataPartNo) && !string.IsNullOrWhiteSpace(thisMetadata.PartNumber)) + metadataPartNo = thisMetadata.PartNumber; + if(string.IsNullOrWhiteSpace(metadataSerial) && !string.IsNullOrWhiteSpace(thisMetadata.SerialNumber)) + metadataSerial = thisMetadata.SerialNumber; + if(string.IsNullOrWhiteSpace(metadataVersion) && !string.IsNullOrWhiteSpace(thisMetadata.Version)) + metadataVersion = thisMetadata.Version; + if(thisMetadata.ReleaseDateSpecified) + { + if(thisMetadata.ReleaseDate > releaseDate) + { + releaseDateSpecified = true; + releaseDate = thisMetadata.ReleaseDate; + } + } + if(thisMetadata.ReleaseTypeSpecified) + { + releaseTypeSpecified = true; + releaseType = thisMetadata.ReleaseType; + } + + foundMetadata = true; + + string metadataFileWithoutExtension = Path.Combine(Path.GetDirectoryName(file), Path.GetFileNameWithoutExtension(file)); + alreadyMetadata.Add(metadataFileWithoutExtension + ".xml"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".xmL"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".xMl"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".xML"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".Xml"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".XmL"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".XMl"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".XML"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".json"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".jsoN"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".jsOn"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".jsON"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".jSon"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".jSoN"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".jSOn"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".jSON"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".Json"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".JsoN"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".JsOn"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".JsON"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".JSon"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".JSoN"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".JSOn"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".JSON"); + + jr.Close(); + jrs.Close(); + continue; + } + catch + { + jr.Close(); + jrs.Close(); + } + } + string filesPath; FileInfo fi = new FileInfo(file); @@ -113,7 +340,7 @@ namespace osrepodbmgr filesPath = MainClass.tmpFolder; else filesPath = MainClass.path; - + string relpath = file.Substring(filesPath.Length + 1); if(UpdateProgress != null) UpdateProgress(string.Format("Hashing file {0} of {1}", counter, MainClass.files.Count), null, counter, MainClass.files.Count); @@ -164,6 +391,57 @@ namespace osrepodbmgr MainClass.hashes.Add(relpath, dbFile); counter++; } + + if(foundMetadata) + { + MainClass.metadata = new CICMMetadataType(); + if(architectures.Count > 0) + MainClass.metadata.Architectures = architectures.Distinct().ToArray(); + if(authors.Count > 0) + MainClass.metadata.Author = authors.Distinct().ToArray(); + // TODO: Check for uniqueness + if(barcodes.Count > 0) + MainClass.metadata.Barcodes = barcodes.ToArray(); + if(disks.Count > 0) + MainClass.metadata.BlockMedia = disks.ToArray(); + if(categories.Count > 0) + MainClass.metadata.Categories = categories.Distinct().ToArray(); + if(developers.Count > 0) + MainClass.metadata.Developer = developers.Distinct().ToArray(); + if(keywords.Count > 0) + MainClass.metadata.Keywords = keywords.Distinct().ToArray(); + if(languages.Count > 0) + MainClass.metadata.Languages = languages.Distinct().ToArray(); + MainClass.metadata.Name = metadataName; + if(discs.Count > 0) + MainClass.metadata.OpticalDisc = discs.ToArray(); + MainClass.metadata.PartNumber = metadataPartNo; + if(performers.Count > 0) + MainClass.metadata.Performer = performers.Distinct().ToArray(); + if(publishers.Count > 0) + MainClass.metadata.Publisher = publishers.Distinct().ToArray(); + if(releaseDateSpecified) + { + MainClass.metadata.ReleaseDate = releaseDate; + MainClass.metadata.ReleaseDateSpecified = true; + } + if(releaseTypeSpecified) + { + MainClass.metadata.ReleaseType = releaseType; + MainClass.metadata.ReleaseTypeSpecified = true; + } + MainClass.metadata.SerialNumber = metadataSerial; + if(subcategories.Count > 0) + MainClass.metadata.Subcategories = subcategories.Distinct().ToArray(); + if(systems.Count > 0) + MainClass.metadata.Systems = systems.Distinct().ToArray(); + MainClass.metadata.Version = metadataVersion; + + foreach(string metadataFile in alreadyMetadata) + MainClass.files.Remove(metadataFile); + } + else + MainClass.metadata = null; if(Finished != null) Finished(); } @@ -579,15 +857,49 @@ namespace osrepodbmgr ze.LastModified = fi.LastWriteTimeUtc; ze.FileName = file.Substring(filesPath.Length + 1); - //fs.Close(); - - if(file == "metadata.json") - File.Copy(file, Path.Combine(destinationFolder, destinationFile) + ".json"); - if(file == "metadata.xml") - File.Copy(file, Path.Combine(destinationFolder, destinationFile) + ".xml"); counter++; } + if(MainClass.metadata != null) + { + MemoryStream xms = new MemoryStream(); + XmlSerializer xs = new XmlSerializer(typeof(CICMMetadataType)); + xs.Serialize(xms, MainClass.metadata); + xms.Position = 0; + + ZipEntry zx = zf.AddEntry("metadata.xml", xms); + zx.AccessedTime = DateTime.UtcNow; + zx.Attributes = FileAttributes.Normal; + zx.CreationTime = zx.AccessedTime; + zx.EmitTimesInUnixFormatWhenSaving = true; + zx.LastModified = zx.AccessedTime; + zx.FileName = "metadata.xml"; + + JsonSerializer js = new JsonSerializer(); + js.Formatting = Newtonsoft.Json.Formatting.Indented; + js.NullValueHandling = NullValueHandling.Ignore; + MemoryStream jms = new MemoryStream(); + StreamWriter sw = new StreamWriter(jms, Encoding.UTF8, 1048576, true); + js.Serialize(sw, MainClass.metadata, typeof(CICMMetadataType)); + sw.Close(); + jms.Position = 0; + + ZipEntry zj = zf.AddEntry("metadata.json", jms); + zj.AccessedTime = DateTime.UtcNow; + zj.Attributes = FileAttributes.Normal; + zj.CreationTime = zx.AccessedTime; + zj.EmitTimesInUnixFormatWhenSaving = true; + zj.LastModified = zx.AccessedTime; + zj.FileName = "metadata.json"; + + FileStream xfs = new FileStream(Path.Combine(destinationFolder, destinationFile + ".xml"), FileMode.CreateNew, FileAccess.Write); + xms.CopyTo(xfs); + xfs.Close(); + FileStream jfs = new FileStream(Path.Combine(destinationFolder, destinationFile + ".json"), FileMode.CreateNew, FileAccess.Write); + jms.CopyTo(jfs); + jfs.Close(); + } + zipCounter = 0; zipCurrentEntryName = ""; zf.SaveProgress += Zf_SaveProgress; @@ -875,7 +1187,7 @@ namespace osrepodbmgr if(Finished != null) Finished(); - + MainClass.tmpFolder = tmpFolder; } catch(Exception ex) diff --git a/osrepodbmgr/DBOps.cs b/osrepodbmgr/DBOps.cs index 1a5f914..ae3fe79 100644 --- a/osrepodbmgr/DBOps.cs +++ b/osrepodbmgr/DBOps.cs @@ -49,6 +49,8 @@ namespace osrepodbmgr public bool source; public bool files; public bool netinstall; + public byte[] xml; + public byte[] json; } public struct DBFile @@ -106,6 +108,8 @@ namespace osrepodbmgr fEntry.source = bool.Parse(dRow["source"].ToString()); fEntry.files = bool.Parse(dRow["files"].ToString()); fEntry.netinstall = bool.Parse(dRow["netinstall"].ToString()); + fEntry.xml = (byte[])dRow["xml"]; + fEntry.json = (byte[])dRow["json"]; entries.Add(fEntry); } @@ -130,6 +134,8 @@ namespace osrepodbmgr IDbDataParameter param12 = dbcmd.CreateParameter(); IDbDataParameter param13 = dbcmd.CreateParameter(); IDbDataParameter param14 = dbcmd.CreateParameter(); + IDbDataParameter param15 = dbcmd.CreateParameter(); + IDbDataParameter param16 = dbcmd.CreateParameter(); param1.ParameterName = "@developer"; param2.ParameterName = "@product"; @@ -145,6 +151,8 @@ namespace osrepodbmgr param12.ParameterName = "@source"; param13.ParameterName = "@files"; param14.ParameterName = "@netinstall"; + param15.ParameterName = "@xml"; + param16.ParameterName = "@json"; param1.DbType = DbType.String; param2.DbType = DbType.String; @@ -159,6 +167,8 @@ namespace osrepodbmgr param12.DbType = DbType.Boolean; param13.DbType = DbType.Boolean; param14.DbType = DbType.Boolean; + param15.DbType = DbType.Object; + param16.DbType = DbType.Object; param1.Value = entry.developer; param2.Value = entry.product; @@ -174,6 +184,8 @@ namespace osrepodbmgr param12.Value = entry.source; param13.Value = entry.files; param14.Value = entry.netinstall; + param15.Value = entry.xml; + param16.Value = entry.json; dbcmd.Parameters.Add(param1); dbcmd.Parameters.Add(param2); @@ -189,6 +201,8 @@ namespace osrepodbmgr dbcmd.Parameters.Add(param12); dbcmd.Parameters.Add(param13); dbcmd.Parameters.Add(param14); + dbcmd.Parameters.Add(param15); + dbcmd.Parameters.Add(param16); return dbcmd; } @@ -199,8 +213,8 @@ namespace osrepodbmgr IDbTransaction trans = dbCon.BeginTransaction(); dbcmd.Transaction = trans; - const string sql = "INSERT INTO oses (developer, product, version, languages, architecture, machine, format, description, oem, upgrade, `update`, source, files, netinstall)" + - " VALUES (@developer, @product, @version, @languages, @architecture, @machine, @format, @description, @oem, @upgrade, @update, @source, @files, @netinstall)"; + const string sql = "INSERT INTO oses (developer, product, version, languages, architecture, machine, format, description, oem, upgrade, `update`, source, files, netinstall, xml, json)" + + " VALUES (@developer, @product, @version, @languages, @architecture, @machine, @format, @description, @oem, @upgrade, @update, @source, @files, @netinstall, @xml, @json)"; dbcmd.CommandText = sql; @@ -338,7 +352,7 @@ namespace osrepodbmgr dbcmd.Transaction = trans; string sql = string.Format("DROP TABLE IF EXISTS `os_{0}`;\n\n" + - "CREATE TABLE IF NOT EXISTS `os_{0}` (\n"+ + "CREATE TABLE IF NOT EXISTS `os_{0}` (\n" + " `id` INTEGER PRIMARY KEY AUTOINCREMENT,\n" + " `path` VARCHAR(8192) NOT NULL,\n" + " `sha256` VARCHAR(64) NOT NULL,\n\n" + diff --git a/osrepodbmgr/DicCore.cs b/osrepodbmgr/DicCore.cs new file mode 100644 index 0000000..a03825e --- /dev/null +++ b/osrepodbmgr/DicCore.cs @@ -0,0 +1,46 @@ +// +// Author: +// Natalia Portillo claunia@claunia.com +// +// Copyright (c) 2017, © Claunia.com +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in +// the documentation and/or other materials provided with the distribution. +// * Neither the name of the [ORGANIZATION] nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +namespace osrepodbmgr +{ + public static partial class Core + { + public static void AddDisc() + { + // TODO: Call DiscImageChef + if(Failed != null) + Failed("Not yet implemented"); + } + + public static void AddDisk() + { + // TODO: Call DiscImageChef + if(Failed != null) + Failed("Not yet implemented"); + } + } +} diff --git a/osrepodbmgr/MainWindow.cs b/osrepodbmgr/MainWindow.cs index cc4c7b3..f4b37e0 100644 --- a/osrepodbmgr/MainWindow.cs +++ b/osrepodbmgr/MainWindow.cs @@ -27,9 +27,13 @@ // using System; using System.Collections.Generic; +using System.IO; using System.Threading; +using System.Xml.Serialization; using Gtk; +using Newtonsoft.Json; using osrepodbmgr; +using Schemas; public partial class MainWindow : Window { @@ -363,6 +367,47 @@ public partial class MainWindow : Window chkUpgrade.Sensitive = true; chkNetinstall.Sensitive = true; chkSource.Sensitive = true; + + btnMetadata.Visible = true; + if(MainClass.metadata != null) + { + foreach(string developer in MainClass.metadata.Developer) + { + if(!string.IsNullOrWhiteSpace(txtDeveloper.Text)) + txtDeveloper.Text += ","; + txtDeveloper.Text += developer; + } + + if(!string.IsNullOrWhiteSpace(MainClass.metadata.Name)) + txtProduct.Text = MainClass.metadata.Name; + if(!string.IsNullOrWhiteSpace(MainClass.metadata.Version)) + txtVersion.Text = MainClass.metadata.Version; + + foreach(LanguagesTypeLanguage language in MainClass.metadata.Languages) + { + if(!string.IsNullOrWhiteSpace(txtLanguages.Text)) + txtLanguages.Text += ","; + txtLanguages.Text += language; + } + + foreach(ArchitecturesTypeArchitecture architecture in MainClass.metadata.Architectures) + { + if(!string.IsNullOrWhiteSpace(txtArchitecture.Text)) + txtArchitecture.Text += ","; + txtArchitecture.Text += architecture; + } + + foreach(string machine in MainClass.metadata.Systems) + { + if(!string.IsNullOrWhiteSpace(txtMachine.Text)) + txtMachine.Text += ","; + txtMachine.Text += machine; + } + + btnMetadata.ModifyBg(StateType.Normal, new Gdk.Color(0, 127, 0)); + } + else + btnMetadata.ModifyBg(StateType.Normal, new Gdk.Color(127, 0, 0)); }); } @@ -461,6 +506,9 @@ public partial class MainWindow : Window thdRemoveTemp = new Thread(Core.RemoveTempFolder); thdRemoveTemp.Start(); } + + btnMetadata.Visible = false; + MainClass.metadata = null; } public void UpdateProgress(string text, string inner, long current, long maximum) @@ -683,6 +731,24 @@ public partial class MainWindow : Window MainClass.dbInfo.update = chkUpdate.Active; MainClass.dbInfo.upgrade = chkUpgrade.Active; + if(MainClass.metadata != null) + { + MemoryStream ms = new MemoryStream(); + XmlSerializer xs = new XmlSerializer(typeof(CICMMetadataType)); + xs.Serialize(ms, MainClass.metadata); + MainClass.dbInfo.xml = ms.ToArray(); + JsonSerializer js = new JsonSerializer(); + ms = new MemoryStream(); + StreamWriter sw = new StreamWriter(ms); + js.Serialize(sw, MainClass.metadata, typeof(CICMMetadataType)); + MainClass.dbInfo.json = ms.ToArray(); + } + else + { + MainClass.dbInfo.xml = null; + MainClass.dbInfo.json = null; + } + thdAddFiles = new Thread(Core.AddFilesToDb); thdAddFiles.Start(); } @@ -1057,4 +1123,72 @@ public partial class MainWindow : Window thdFindFiles.Start(); }); } + + protected void OnBtnMetadataClicked(object sender, EventArgs e) + { + dlgMetadata _dlgMetadata = new dlgMetadata(); + _dlgMetadata.Metadata = MainClass.metadata; + _dlgMetadata.FillFields(); + + if(_dlgMetadata.Run() == (int)ResponseType.Accept) + { + MainClass.metadata = _dlgMetadata.Metadata; + + if(string.IsNullOrWhiteSpace(txtDeveloper.Text)) + { + foreach(string developer in MainClass.metadata.Developer) + { + if(!string.IsNullOrWhiteSpace(txtDeveloper.Text)) + txtDeveloper.Text += ","; + txtDeveloper.Text += developer; + } + } + + if(string.IsNullOrWhiteSpace(txtProduct.Text)) + { + if(!string.IsNullOrWhiteSpace(MainClass.metadata.Name)) + txtProduct.Text = MainClass.metadata.Name; + } + + if(string.IsNullOrWhiteSpace(txtVersion.Text)) + { + if(!string.IsNullOrWhiteSpace(MainClass.metadata.Version)) + txtVersion.Text = MainClass.metadata.Version; + } + + if(string.IsNullOrWhiteSpace(txtLanguages.Text)) + { + foreach(LanguagesTypeLanguage language in MainClass.metadata.Languages) + { + if(!string.IsNullOrWhiteSpace(txtLanguages.Text)) + txtLanguages.Text += ","; + txtLanguages.Text += language; + } + } + + if(string.IsNullOrWhiteSpace(txtArchitecture.Text)) + { + foreach(ArchitecturesTypeArchitecture architecture in MainClass.metadata.Architectures) + { + if(!string.IsNullOrWhiteSpace(txtArchitecture.Text)) + txtArchitecture.Text += ","; + txtArchitecture.Text += architecture; + } + } + + if(string.IsNullOrWhiteSpace(txtMachine.Text)) + { + foreach(string machine in MainClass.metadata.Systems) + { + if(!string.IsNullOrWhiteSpace(txtMachine.Text)) + txtMachine.Text += ","; + txtMachine.Text += machine; + } + } + + btnMetadata.ModifyBg(StateType.Normal, new Gdk.Color(0, 127, 0)); + } + + _dlgMetadata.Destroy(); + } } diff --git a/osrepodbmgr/Program.cs b/osrepodbmgr/Program.cs index 7f78325..b47029a 100644 --- a/osrepodbmgr/Program.cs +++ b/osrepodbmgr/Program.cs @@ -29,6 +29,7 @@ using System.Collections.Generic; using System.Diagnostics; using System.Threading; using Gtk; +using Schemas; namespace osrepodbmgr { @@ -46,6 +47,10 @@ namespace osrepodbmgr public static string archiveFormat; public static Process unarProcess; public static bool copyArchive; + public static string selectedFile; + public static OpticalDiscType workingDisc; + public static BlockMediaType workingDisk; + public static CICMMetadataType metadata; public static void Main(string[] args) { diff --git a/osrepodbmgr/Schema.cs b/osrepodbmgr/Schema.cs index ab749b8..ed4ebc2 100644 --- a/osrepodbmgr/Schema.cs +++ b/osrepodbmgr/Schema.cs @@ -58,7 +58,9 @@ namespace osrepodbmgr " `update` BOOLEAN NULL,\n" + " `source` BOOLEAN NULL,\n" + " `files` BOOLEAN NULL,\n" + - " `netinstall` BOOLEAN NULL);\n\n" + + " `netinstall` BOOLEAN NULL,\n" + + " `xml` BLOB NULL,\n" + + " `json` BLOB NULL);\n\n" + "CREATE UNIQUE INDEX `oses_id_UNIQUE` ON `oses` (`id` ASC);\n\n" + "CREATE INDEX `oses_developer_idx` ON `oses` (`developer` ASC);\n\n" + "CREATE INDEX `oses_product_idx` ON `oses` (`product` ASC);\n\n" + diff --git a/osrepodbmgr/dlgMetadata.cs b/osrepodbmgr/dlgMetadata.cs new file mode 100644 index 0000000..4a11b8a --- /dev/null +++ b/osrepodbmgr/dlgMetadata.cs @@ -0,0 +1,1228 @@ +// +// Author: +// Natalia Portillo claunia@claunia.com +// +// Copyright (c) 2017, © Claunia.com +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in +// the documentation and/or other materials provided with the distribution. +// * Neither the name of the [ORGANIZATION] nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +using System; +using System.Collections.Generic; +using System.Threading; +using Gtk; +using Schemas; + +namespace osrepodbmgr +{ + public partial class dlgMetadata : Dialog + { + public CICMMetadataType Metadata; + + ListStore lstKeywords; + ListStore lstBarcodes; + ListStore lstCategories; + ListStore lstSubcategories; + ListStore lstLanguages; + ListStore lstSystems; + ListStore lstArchitectures; + ListStore lstDiscs; + ListStore lstDisks; + + ListStore lstReleaseTypes; + ListStore lstBarcodeTypes; + ListStore lstLanguageTypes; + ListStore lstArchitecturesTypes; + ListStore lstFilesForDisc; + ListStore lstFilesForDisk; + + Thread thdDisc; + Thread thdDisk; + bool stopped; + + public dlgMetadata() + { + Build(); + + lstKeywords = new ListStore(typeof(string)); + lstBarcodes = new ListStore(typeof(string), typeof(string)); + lstCategories = new ListStore(typeof(string)); + lstSubcategories = new ListStore(typeof(string)); + lstLanguages = new ListStore(typeof(string)); + lstSystems = new ListStore(typeof(string)); + lstArchitectures = new ListStore(typeof(string)); + lstDiscs = new ListStore(typeof(string), typeof(OpticalDiscType)); + lstDisks = new ListStore(typeof(string), typeof(BlockMediaType)); + + CellRendererText keywordsCell = new CellRendererText(); + CellRendererText barcodesCell = new CellRendererText(); + CellRendererText barcodesTypeCell = new CellRendererText(); + CellRendererText categoriesCell = new CellRendererText(); + CellRendererText subcategoriesCell = new CellRendererText(); + CellRendererText languagesCell = new CellRendererText(); + CellRendererText systemsCell = new CellRendererText(); + CellRendererText architecturesCell = new CellRendererText(); + CellRendererText discsCell = new CellRendererText(); + CellRendererText disksCell = new CellRendererText(); + + TreeViewColumn keywordsColumn = new TreeViewColumn("Keyword", keywordsCell, "text", 0); + TreeViewColumn barcodesColumn = new TreeViewColumn("Barcode", barcodesCell, "text", 0); + TreeViewColumn barcodesTypeColumn = new TreeViewColumn("Type", barcodesTypeCell, "text", 1); + TreeViewColumn categoriesColumn = new TreeViewColumn("Category", categoriesCell, "text", 0); + TreeViewColumn subcategoriesColumn = new TreeViewColumn("Subcategory", subcategoriesCell, "text", 0); + TreeViewColumn languagesColumn = new TreeViewColumn("Language", languagesCell, "text", 0); + TreeViewColumn systemsColumn = new TreeViewColumn("System", systemsCell, "text", 0); + TreeViewColumn architecturesColumn = new TreeViewColumn("Architecture", architecturesCell, "text", 0); + TreeViewColumn discsColumn = new TreeViewColumn("File", discsCell, "text", 0); + TreeViewColumn disksColumn = new TreeViewColumn("File", disksCell, "text", 0); + + treeKeywords.Model = lstKeywords; + treeBarcodes.Model = lstBarcodes; + treeCategories.Model = lstCategories; + treeSubcategories.Model = lstSubcategories; + treeLanguages.Model = lstLanguages; + treeSystems.Model = lstSystems; + treeArchitectures.Model = lstArchitectures; + treeDiscs.Model = lstDiscs; + treeDisks.Model = lstDisks; + + treeKeywords.AppendColumn(keywordsColumn); + treeBarcodes.AppendColumn(barcodesColumn); + treeBarcodes.AppendColumn(barcodesTypeColumn); + treeCategories.AppendColumn(categoriesColumn); + treeSubcategories.AppendColumn(subcategoriesColumn); + treeLanguages.AppendColumn(languagesColumn); + treeSystems.AppendColumn(systemsColumn); + treeArchitectures.AppendColumn(architecturesColumn); + treeDiscs.AppendColumn(discsColumn); + treeDisks.AppendColumn(disksColumn); + + treeKeywords.Selection.Mode = SelectionMode.Single; + treeBarcodes.Selection.Mode = SelectionMode.Single; + treeCategories.Selection.Mode = SelectionMode.Single; + treeSubcategories.Selection.Mode = SelectionMode.Single; + treeLanguages.Selection.Mode = SelectionMode.Single; + treeSystems.Selection.Mode = SelectionMode.Single; + treeArchitectures.Selection.Mode = SelectionMode.Single; + treeDiscs.Selection.Mode = SelectionMode.Single; + treeDisks.Selection.Mode = SelectionMode.Single; + + CellRendererText textCell = new CellRendererText(); + + cmbReleaseType.Clear(); + lstReleaseTypes = new ListStore(typeof(string)); + cmbReleaseType.PackStart(textCell, true); + cmbReleaseType.AddAttribute(textCell, "text", 0); + cmbReleaseType.Model = lstReleaseTypes; + + cmbBarcodes.Clear(); + lstBarcodeTypes = new ListStore(typeof(string)); + cmbBarcodes.PackStart(textCell, true); + cmbBarcodes.AddAttribute(textCell, "text", 0); + cmbBarcodes.Model = lstBarcodeTypes; + + cmbLanguages.Clear(); + lstLanguageTypes = new ListStore(typeof(string)); + cmbLanguages.PackStart(textCell, true); + cmbLanguages.AddAttribute(textCell, "text", 0); + cmbLanguages.Model = lstLanguageTypes; + + cmbArchitectures.Clear(); + lstArchitecturesTypes = new ListStore(typeof(string)); + cmbArchitectures.PackStart(textCell, true); + cmbArchitectures.AddAttribute(textCell, "text", 0); + cmbArchitectures.Model = lstArchitecturesTypes; + + cmbFilesForNewDisc.Clear(); + lstFilesForDisc = new ListStore(typeof(string)); + cmbFilesForNewDisc.PackStart(textCell, true); + cmbFilesForNewDisc.AddAttribute(textCell, "text", 0); + cmbFilesForNewDisc.Model = lstFilesForDisc; + + cmbFilesForNewDisk.Clear(); + lstFilesForDisk = new ListStore(typeof(string)); + cmbFilesForNewDisk.PackStart(textCell, true); + cmbFilesForNewDisk.AddAttribute(textCell, "text", 0); + cmbFilesForNewDisk.Model = lstFilesForDisk; + + lstKeywords.SetSortColumnId(0, SortType.Ascending); + lstBarcodes.SetSortColumnId(0, SortType.Ascending); + lstCategories.SetSortColumnId(0, SortType.Ascending); + lstSubcategories.SetSortColumnId(0, SortType.Ascending); + lstLanguages.SetSortColumnId(0, SortType.Ascending); + lstSystems.SetSortColumnId(0, SortType.Ascending); + lstArchitectures.SetSortColumnId(0, SortType.Ascending); + lstDiscs.SetSortColumnId(0, SortType.Ascending); + lstDisks.SetSortColumnId(0, SortType.Ascending); + lstReleaseTypes.SetSortColumnId(0, SortType.Ascending); + lstBarcodeTypes.SetSortColumnId(0, SortType.Ascending); + lstLanguageTypes.SetSortColumnId(0, SortType.Ascending); + lstArchitecturesTypes.SetSortColumnId(0, SortType.Ascending); + lstFilesForDisc.SetSortColumnId(0, SortType.Ascending); + lstFilesForDisk.SetSortColumnId(0, SortType.Ascending); + + FillReleaseTypeCombo(); + FillBarcodeCombo(); + FillLanguagesCombo(); + FillArchitecturesCombo(); + FillFilesCombos(); + } + + void FillReleaseTypeCombo() + { + lstReleaseTypes.Clear(); + foreach(CICMMetadataTypeReleaseType type in Enum.GetValues(typeof(CICMMetadataTypeReleaseType))) + lstReleaseTypes.AppendValues(type.ToString()); + } + + void FillBarcodeCombo() + { + lstBarcodeTypes.Clear(); + foreach(BarcodeTypeType type in Enum.GetValues(typeof(BarcodeTypeType))) + lstBarcodeTypes.AppendValues(type.ToString()); + } + + void FillLanguagesCombo() + { + lstLanguageTypes.Clear(); + foreach(LanguagesTypeLanguage type in Enum.GetValues(typeof(LanguagesTypeLanguage))) + lstLanguageTypes.AppendValues(type.ToString()); + } + + void FillArchitecturesCombo() + { + lstArchitecturesTypes.Clear(); + foreach(ArchitecturesTypeArchitecture type in Enum.GetValues(typeof(ArchitecturesTypeArchitecture))) + lstArchitecturesTypes.AppendValues(type.ToString()); + } + + void FillFilesCombos() + { + foreach(KeyValuePair files in MainClass.hashes) + { + lstFilesForDisc.AppendValues(files.Key); + lstFilesForDisk.AppendValues(files.Key); + } + } + + void FillDiscCombos() + { + // TODO: Check that files are not already added as disks + lstFilesForDisc.Clear(); + foreach(KeyValuePair files in MainClass.hashes) + lstFilesForDisc.AppendValues(files.Key); + } + + void FillDiskCombos() + { + // TODO: Check that files are not already added as discs + lstFilesForDisk.Clear(); + foreach(KeyValuePair files in MainClass.hashes) + lstFilesForDisk.AppendValues(files.Key); + } + + public void FillFields() + { + if(Metadata == null) + return; + + if(Metadata.Developer != null) + { + foreach(string developer in Metadata.Developer) + { + if(!string.IsNullOrWhiteSpace(txtDeveloper.Text)) + txtDeveloper.Text += ","; + txtDeveloper.Text += developer; + } + } + + if(Metadata.Publisher != null) + { + foreach(string publisher in Metadata.Publisher) + { + if(!string.IsNullOrWhiteSpace(txtPublisher.Text)) + txtPublisher.Text += ","; + txtPublisher.Text += publisher; + } + } + + if(Metadata.Author != null) + { + foreach(string author in Metadata.Author) + { + if(!string.IsNullOrWhiteSpace(txtPublisher.Text)) + txtPublisher.Text += ","; + txtPublisher.Text += author; + } + } + + if(Metadata.Performer != null) + { + foreach(string performer in Metadata.Performer) + { + if(!string.IsNullOrWhiteSpace(txtPublisher.Text)) + txtPublisher.Text += ","; + txtPublisher.Text += performer; + } + } + + txtName.Text = Metadata.Name; + txtVersion.Text = Metadata.Version; + txtPartNumber.Text = Metadata.PartNumber; + txtSerialNumber.Text = Metadata.SerialNumber; + + if(Metadata.ReleaseTypeSpecified) + { + chkBoxUnknownReleaseType.Active = false; + cmbReleaseType.Sensitive = true; + TreeIter iter; + cmbReleaseType.Model.GetIterFirst(out iter); + do + { + if((string)cmbReleaseType.Model.GetValue(iter, 0) == Metadata.ReleaseType.ToString()) + { + cmbReleaseType.SetActiveIter(iter); + break; + } + } + while(cmbReleaseType.Model.IterNext(ref iter)); + } + + if(Metadata.ReleaseDateSpecified) + { + chkReleaseDate.Active = false; + cldReleaseDate.Sensitive = true; + cldReleaseDate.Date = Metadata.ReleaseDate; + } + + if(Metadata.Keywords != null) + { + foreach(string keyword in Metadata.Keywords) + lstKeywords.AppendValues(keyword); + } + if(Metadata.Categories != null) + { + foreach(string category in Metadata.Categories) + lstCategories.AppendValues(category); + } + if(Metadata.Subcategories != null) + { + foreach(string subcategory in Metadata.Subcategories) + lstSubcategories.AppendValues(subcategory); + } + + if(Metadata.Languages != null) + { + foreach(LanguagesTypeLanguage language in Metadata.Languages) + { + lstLanguages.AppendValues(language.ToString()); + TreeIter iter; + cmbLanguages.Model.GetIterFirst(out iter); + do + { + if((string)cmbLanguages.Model.GetValue(iter, 0) == language.ToString()) + { + lstLanguageTypes.Remove(ref iter); + break; + } + } + while(cmbLanguages.Model.IterNext(ref iter)); + } + } + + if(Metadata.Systems != null) + { + foreach(string system in Metadata.Systems) + lstSystems.AppendValues(system); + } + + if(Metadata.Architectures != null) + { + foreach(ArchitecturesTypeArchitecture architecture in Metadata.Architectures) + { + lstArchitectures.AppendValues(architecture.ToString()); + TreeIter iter; + cmbArchitectures.Model.GetIterFirst(out iter); + do + { + if((string)cmbArchitectures.Model.GetValue(iter, 0) == architecture.ToString()) + { + lstArchitecturesTypes.Remove(ref iter); + break; + } + } + while(cmbArchitectures.Model.IterNext(ref iter)); + } + } + + if(Metadata.OpticalDisc != null) + { + foreach(OpticalDiscType disc in Metadata.OpticalDisc) + { + lstDiscs.AppendValues(disc.Image.Value, disc); + List files = new List(); + files.Add(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); + if(disc.CMI != null) + files.Add(disc.CMI.Image); + if(disc.DCB != null) + files.Add(disc.DCB.Image); + 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) + { + foreach(BorderType border in disc.LeadIn) + files.Add(border.Image); + } + if(disc.LeadInCdText != null) + files.Add(disc.LeadInCdText.Image); + if(disc.LeadOut != null) + { + foreach(BorderType border in disc.LeadOut) + files.Add(border.Image); + } + if(disc.MediaID != null) + files.Add(disc.MediaID.Image); + if(disc.PAC != null) + files.Add(disc.PAC.Image); + if(disc.PFI != null) + files.Add(disc.PFI.Image); + if(disc.PFIR != null) + files.Add(disc.PFIR.Image); + if(disc.PMA != null) + files.Add(disc.PMA.Image); + if(disc.PRI != null) + files.Add(disc.PRI.Image); + if(disc.SAI != null) + files.Add(disc.SAI.Image); + if(disc.TOC != null) + files.Add(disc.TOC.Image); + if(disc.Track != null) + { + foreach(TrackType track in disc.Track) + files.Add(track.Image.Value); + } + + foreach(string file in files) + { + TreeIter iter; + cmbFilesForNewDisc.Model.GetIterFirst(out iter); + do + { + if((string)cmbFilesForNewDisc.Model.GetValue(iter, 0) == file) + { + cmbFilesForNewDisc.SetActiveIter(iter); + cmbFilesForNewDisc.RemoveText(cmbFilesForNewDisc.Active); + break; + } + } + while(cmbFilesForNewDisc.Model.IterNext(ref iter)); + + cmbFilesForNewDisk.Model.GetIterFirst(out iter); + do + { + if((string)cmbFilesForNewDisk.Model.GetValue(iter, 0) == file) + { + cmbFilesForNewDisk.SetActiveIter(iter); + cmbFilesForNewDisk.RemoveText(cmbFilesForNewDisk.Active); + break; + } + } + while(cmbFilesForNewDisk.Model.IterNext(ref iter)); + } + } + } + + if(Metadata.BlockMedia != null) + { + foreach(BlockMediaType disk in Metadata.BlockMedia) + { + lstDisks.AppendValues(disk.Image.Value, disk); + List files = new List(); + files.Add(disk.Image.Value); + if(disk.ATA != null && disk.ATA.Identify != null) + files.Add(disk.ATA.Identify.Image); + if(disk.MAM != null) + files.Add(disk.MAM.Image); + if(disk.PCI != null && disk.PCI.ExpansionROM != null) + files.Add(disk.PCI.ExpansionROM.Image.Value); + if(disk.PCMCIA != null && disk.PCMCIA.CIS != null) + files.Add(disk.PCMCIA.CIS.Image); + 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); + if(disk.SCSI.ModeSense != null) + files.Add(disk.SCSI.ModeSense.Image); + if(disk.SCSI.ModeSense10 != null) + files.Add(disk.SCSI.ModeSense10.Image); + foreach(EVPDType evpd in disk.SCSI.EVPD) + files.Add(evpd.Image); + } + if(disk.SecureDigital != null) + { + if(disk.SecureDigital.CID != null) + files.Add(disk.SecureDigital.CID.Image); + if(disk.SecureDigital.CSD != null) + files.Add(disk.SecureDigital.CSD.Image); + if(disk.SecureDigital.ExtendedCSD != null) + files.Add(disk.SecureDigital.ExtendedCSD.Image); + } + if(disk.TapeInformation != null) + { + foreach(TapePartitionType tapePart in disk.TapeInformation) + files.Add(tapePart.Image.Value); + } + if(disk.Track != null) + { + foreach(BlockTrackType track in disk.Track) + files.Add(track.Image.Value); + } + if(disk.USB != null && disk.USB.Descriptors != null) + files.Add(disk.USB.Descriptors.Image); + + foreach(string file in files) + { + TreeIter iter; + cmbFilesForNewDisc.Model.GetIterFirst(out iter); + do + { + if((string)cmbFilesForNewDisc.Model.GetValue(iter, 0) == file) + { + cmbFilesForNewDisc.SetActiveIter(iter); + cmbFilesForNewDisc.RemoveText(cmbFilesForNewDisc.Active); + break; + } + } + while(cmbFilesForNewDisc.Model.IterNext(ref iter)); + + cmbFilesForNewDisk.Model.GetIterFirst(out iter); + do + { + if((string)cmbFilesForNewDisk.Model.GetValue(iter, 0) == file) + { + cmbFilesForNewDisk.SetActiveIter(iter); + cmbFilesForNewDisk.RemoveText(cmbFilesForNewDisk.Active); + break; + } + } + while(cmbFilesForNewDisk.Model.IterNext(ref iter)); + } + } + } + } + + protected void OnChkBoxUnknownReleaseTypeToggled(object sender, EventArgs e) + { + cmbReleaseType.Sensitive = !chkBoxUnknownReleaseType.Active; + } + + protected void OnChkReleaseDateToggled(object sender, EventArgs e) + { + cldReleaseDate.Sensitive = chkReleaseDate.Active; + } + + protected void OnTxtAddKeywordClicked(object sender, EventArgs e) + { + lstKeywords.AppendValues(txtNewKeyword.Text); + txtNewKeyword.Text = ""; + } + + protected void OnBtnRemoveKeywordClicked(object sender, EventArgs e) + { + TreeIter selectedIter; + if(treeKeywords.Selection.GetSelected(out selectedIter)) + lstKeywords.Remove(ref selectedIter); + } + + protected void OnBtnClearKeywordsClicked(object sender, EventArgs e) + { + lstKeywords.Clear(); + } + + protected void OnBtnAddBarcodeClicked(object sender, EventArgs e) + { + TreeIter selectedIter; + if(cmbBarcodes.GetActiveIter(out selectedIter)) + { + lstBarcodes.AppendValues(txtNewBarcode.Text, (string)cmbBarcodes.Model.GetValue(selectedIter, 0)); + txtNewBarcode.Text = ""; + } + } + + protected void OnBtnClearBarcodesClicked(object sender, EventArgs e) + { + lstBarcodes.Clear(); + } + + protected void OnBtnRemoveBarcodeClicked(object sender, EventArgs e) + { + TreeIter selectedIter; + if(treeBarcodes.Selection.GetSelected(out selectedIter)) + lstBarcodes.Remove(ref selectedIter); + } + + protected void OnBtnAddCategoryClicked(object sender, EventArgs e) + { + lstCategories.AppendValues(txtNewCategory.Text); + txtNewCategory.Text = ""; + } + + protected void OnBtnAddSubcategoryClicked(object sender, EventArgs e) + { + lstSubcategories.AppendValues(txtNewSubcategory.Text); + txtNewSubcategory.Text = ""; + } + + protected void OnBtnRemoveSubcategoryClicked(object sender, EventArgs e) + { + TreeIter selectedIter; + if(treeSubcategories.Selection.GetSelected(out selectedIter)) + lstSubcategories.Remove(ref selectedIter); + } + + protected void OnBtnClearSubcategoriesClicked(object sender, EventArgs e) + { + lstSubcategories.Clear(); + } + + protected void OnBtnRemoveCategoryClicked(object sender, EventArgs e) + { + TreeIter selectedIter; + if(treeCategories.Selection.GetSelected(out selectedIter)) + lstCategories.Remove(ref selectedIter); + } + + protected void OnBtnClearCategoriesClicked(object sender, EventArgs e) + { + lstCategories.Clear(); + } + + protected void OnBtnAddLanguagesClicked(object sender, EventArgs e) + { + TreeIter selectedIter; + if(cmbLanguages.GetActiveIter(out selectedIter)) + { + lstLanguages.AppendValues((string)cmbLanguages.Model.GetValue(selectedIter, 0)); + cmbLanguages.SetActiveIter(selectedIter); + lstLanguageTypes.Remove(ref selectedIter); + } + } + + protected void OnBtnRemoveLanguageClicked(object sender, EventArgs e) + { + TreeIter selectedIter; + if(treeLanguages.Selection.GetSelected(out selectedIter)) + { + lstLanguageTypes.AppendValues((string)lstLanguages.GetValue(selectedIter, 0)); + lstLanguages.Remove(ref selectedIter); + } + } + + protected void OnBtnClearLanguagesClicked(object sender, EventArgs e) + { + lstLanguages.Clear(); + FillLanguagesCombo(); + } + + protected void OnBtnAddSystemClicked(object sender, EventArgs e) + { + lstSystems.AppendValues(txtNewSystem.Text); + txtNewSystem.Text = ""; + } + + protected void OnBtnClearSystemsClicked(object sender, EventArgs e) + { + lstSystems.Clear(); + } + + protected void OnBtnRemoveSystemsClicked(object sender, EventArgs e) + { + TreeIter selectedIter; + if(treeSystems.Selection.GetSelected(out selectedIter)) + lstSystems.Remove(ref selectedIter); + } + + protected void OnBtnAddArchitectureClicked(object sender, EventArgs e) + { + TreeIter selectedIter; + if(cmbArchitectures.GetActiveIter(out selectedIter)) + { + lstArchitectures.AppendValues((string)cmbArchitectures.Model.GetValue(selectedIter, 0)); + cmbArchitectures.SetActiveIter(selectedIter); + lstArchitecturesTypes.Remove(ref selectedIter); + } + } + + protected void OnBtnClearArchitecturesClicked(object sender, EventArgs e) + { + lstArchitectures.Clear(); + FillArchitecturesCombo(); + } + + protected void OnBtnRemoveArchitectureClicked(object sender, EventArgs e) + { + TreeIter selectedIter; + if(treeArchitectures.Selection.GetSelected(out selectedIter)) + { + lstArchitecturesTypes.AppendValues((string)lstArchitectures.GetValue(selectedIter, 0)); + lstArchitectures.Remove(ref selectedIter); + } + } + + protected void OnBtnAddDiscClicked(object sender, EventArgs e) + { + MainClass.selectedFile = cmbFilesForNewDisc.ActiveText; + notebook3.GetNthPage(0).Visible = false; + notebook3.GetNthPage(1).Visible = false; + notebook3.GetNthPage(2).Visible = false; + notebook3.GetNthPage(3).Visible = false; + notebook3.GetNthPage(4).Visible = false; + notebook3.GetNthPage(5).Visible = false; + notebook3.GetNthPage(6).Visible = false; + notebook3.GetNthPage(8).Visible = false; + prgAddDisc.Visible = true; + Core.Failed += OnDiscAddFailed; + Core.Finished += OnDiscAddFinished; + Core.UpdateProgress += UpdateDiscProgress; + MainClass.workingDisc = null; + btnStopAddDisc.Visible = true; + btnAddDisc.Visible = false; + btnRemoveDiscs.Visible = false; + thdDisc = new Thread(Core.AddDisc); + thdDisc.Start(); + } + + protected void OnBtnStopAddDiscClicked(object sender, EventArgs e) + { + if(thdDisc != null) + thdDisc.Abort(); + stopped = true; + OnDiscAddFailed(null); + } + + public void UpdateDiscProgress(string text, string inner, long current, long maximum) + { + Application.Invoke(delegate + { + prgAddDisc.Text = text + inner; + if(maximum > 0) + prgAddDisc.Fraction = current / (double)maximum; + else + prgAddDisc.Pulse(); + }); + } + + void OnDiscAddFailed(string text) + { + Application.Invoke(delegate + { + if(!stopped) + { + MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, text); + dlgMsg.Run(); + dlgMsg.Destroy(); + } + MainClass.selectedFile = ""; + notebook3.GetNthPage(0).Visible = true; + notebook3.GetNthPage(1).Visible = true; + notebook3.GetNthPage(2).Visible = true; + notebook3.GetNthPage(3).Visible = true; + notebook3.GetNthPage(4).Visible = true; + notebook3.GetNthPage(5).Visible = true; + notebook3.GetNthPage(6).Visible = true; + notebook3.GetNthPage(8).Visible = true; + prgAddDisc.Visible = true; + Core.Failed -= OnDiscAddFailed; + Core.Finished -= OnDiscAddFinished; + Core.UpdateProgress -= UpdateDiscProgress; + MainClass.workingDisc = null; + btnStopAddDisc.Visible = false; + btnAddDisc.Visible = true; + btnRemoveDiscs.Visible = true; + thdDisc = null; + }); + } + + void OnDiscAddFinished() + { + Application.Invoke(delegate + { + if(MainClass.workingDisc == null) + return; + + OpticalDiscType disc = MainClass.workingDisc; + + lstDiscs.AppendValues(MainClass.selectedFile, disc); + List files = new List(); + files.Add(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); + if(disc.CMI != null) + files.Add(disc.CMI.Image); + if(disc.DCB != null) + files.Add(disc.DCB.Image); + 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); + foreach(BorderType border in disc.LeadIn) + files.Add(border.Image); + if(disc.LeadInCdText != null) + files.Add(disc.LeadInCdText.Image); + foreach(BorderType border in disc.LeadOut) + files.Add(border.Image); + if(disc.MediaID != null) + files.Add(disc.MediaID.Image); + if(disc.PAC != null) + files.Add(disc.PAC.Image); + if(disc.PFI != null) + files.Add(disc.PFI.Image); + if(disc.PFIR != null) + files.Add(disc.PFIR.Image); + if(disc.PMA != null) + files.Add(disc.PMA.Image); + if(disc.PRI != null) + files.Add(disc.PRI.Image); + if(disc.SAI != null) + files.Add(disc.SAI.Image); + if(disc.TOC != null) + files.Add(disc.TOC.Image); + foreach(TrackType track in disc.Track) + files.Add(track.Image.Value); + + foreach(string file in files) + { + TreeIter iter; + cmbFilesForNewDisc.Model.GetIterFirst(out iter); + do + { + if((string)cmbFilesForNewDisc.Model.GetValue(iter, 0) == file) + { + cmbFilesForNewDisc.SetActiveIter(iter); + cmbFilesForNewDisc.RemoveText(cmbFilesForNewDisc.Active); + break; + } + } + while(cmbFilesForNewDisc.Model.IterNext(ref iter)); + + cmbFilesForNewDisk.Model.GetIterFirst(out iter); + do + { + if((string)cmbFilesForNewDisk.Model.GetValue(iter, 0) == file) + { + cmbFilesForNewDisk.SetActiveIter(iter); + cmbFilesForNewDisk.RemoveText(cmbFilesForNewDisk.Active); + break; + } + } + while(cmbFilesForNewDisk.Model.IterNext(ref iter)); + } + + MainClass.selectedFile = ""; + notebook3.GetNthPage(0).Visible = true; + notebook3.GetNthPage(1).Visible = true; + notebook3.GetNthPage(2).Visible = true; + notebook3.GetNthPage(3).Visible = true; + notebook3.GetNthPage(4).Visible = true; + notebook3.GetNthPage(5).Visible = true; + notebook3.GetNthPage(6).Visible = true; + notebook3.GetNthPage(8).Visible = true; + prgAddDisc.Visible = true; + Core.Failed -= OnDiscAddFailed; + Core.Finished -= OnDiscAddFinished; + Core.UpdateProgress -= UpdateDiscProgress; + MainClass.workingDisc = null; + btnStopAddDisc.Visible = false; + btnAddDisc.Visible = true; + btnRemoveDiscs.Visible = true; + thdDisc = null; + }); + } + + protected void OnBtnClearDiscsClicked(object sender, EventArgs e) + { + lstDiscs.Clear(); + FillDiscCombos(); + } + + protected void OnBtnRemoveDiscsClicked(object sender, EventArgs e) + { + TreeIter selectedIter; + if(treeDiscs.Selection.GetSelected(out selectedIter)) + { + cmbFilesForNewDisc.AppendText((string)lstDiscs.GetValue(selectedIter, 0)); + lstDiscs.Remove(ref selectedIter); + } + } + + protected void OnBtnAddDiskClicked(object sender, EventArgs e) + { + MainClass.selectedFile = cmbFilesForNewDisk.ActiveText; + notebook3.GetNthPage(0).Visible = false; + notebook3.GetNthPage(1).Visible = false; + notebook3.GetNthPage(2).Visible = false; + notebook3.GetNthPage(3).Visible = false; + notebook3.GetNthPage(4).Visible = false; + notebook3.GetNthPage(5).Visible = false; + notebook3.GetNthPage(6).Visible = false; + notebook3.GetNthPage(7).Visible = false; + prgAddDisk.Visible = true; + Core.Failed += OnDiskAddFailed; + Core.Finished += OnDiskAddFinished; + Core.UpdateProgress += UpdateDiskProgress; + MainClass.workingDisk = null; + btnStopAddDisk.Visible = true; + btnAddDisk.Visible = false; + btnRemoveDisk.Visible = false; + thdDisk = new Thread(Core.AddDisk); + thdDisk.Start(); + } + + protected void OnBtnStopAddDiskClicked(object sender, EventArgs e) + { + if(thdDisk != null) + thdDisk.Abort(); + stopped = true; + OnDiskAddFailed(null); + } + + public void UpdateDiskProgress(string text, string inner, long current, long maximum) + { + Application.Invoke(delegate + { + prgAddDisk.Text = text + inner; + if(maximum > 0) + prgAddDisk.Fraction = current / (double)maximum; + else + prgAddDisk.Pulse(); + }); + } + + void OnDiskAddFailed(string text) + { + Application.Invoke(delegate + { + if(!stopped) + { + MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, text); + dlgMsg.Run(); + dlgMsg.Destroy(); + } + MainClass.selectedFile = ""; + notebook3.GetNthPage(0).Visible = true; + notebook3.GetNthPage(1).Visible = true; + notebook3.GetNthPage(2).Visible = true; + notebook3.GetNthPage(3).Visible = true; + notebook3.GetNthPage(4).Visible = true; + notebook3.GetNthPage(5).Visible = true; + notebook3.GetNthPage(6).Visible = true; + notebook3.GetNthPage(7).Visible = true; + prgAddDisk.Visible = true; + Core.Failed -= OnDiskAddFailed; + Core.Finished -= OnDiskAddFinished; + Core.UpdateProgress -= UpdateDiskProgress; + MainClass.workingDisk = null; + btnStopAddDisk.Visible = false; + btnAddDisk.Visible = true; + btnRemoveDisk.Visible = true; + thdDisk = null; + }); + } + + void OnDiskAddFinished() + { + Application.Invoke(delegate + { + if(MainClass.workingDisk == null) + return; + + BlockMediaType disk = MainClass.workingDisk; + + lstDisks.AppendValues(disk.Image.Value, disk); + List files = new List(); + files.Add(disk.Image.Value); + if(disk.ATA != null && disk.ATA.Identify != null) + files.Add(disk.ATA.Identify.Image); + if(disk.MAM != null) + files.Add(disk.MAM.Image); + if(disk.PCI != null && disk.PCI.ExpansionROM != null) + files.Add(disk.PCI.ExpansionROM.Image.Value); + if(disk.PCMCIA != null && disk.PCMCIA.CIS != null) + files.Add(disk.PCMCIA.CIS.Image); + 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); + if(disk.SCSI.ModeSense != null) + files.Add(disk.SCSI.ModeSense.Image); + if(disk.SCSI.ModeSense10 != null) + files.Add(disk.SCSI.ModeSense10.Image); + foreach(EVPDType evpd in disk.SCSI.EVPD) + files.Add(evpd.Image); + } + if(disk.SecureDigital != null) + { + if(disk.SecureDigital.CID != null) + files.Add(disk.SecureDigital.CID.Image); + if(disk.SecureDigital.CSD != null) + files.Add(disk.SecureDigital.CSD.Image); + if(disk.SecureDigital.ExtendedCSD != null) + files.Add(disk.SecureDigital.ExtendedCSD.Image); + } + foreach(TapePartitionType tapePart in disk.TapeInformation) + files.Add(tapePart.Image.Value); + foreach(BlockTrackType track in disk.Track) + files.Add(track.Image.Value); + if(disk.USB != null && disk.USB.Descriptors != null) + files.Add(disk.USB.Descriptors.Image); + + foreach(string file in files) + { + TreeIter iter; + cmbFilesForNewDisc.Model.GetIterFirst(out iter); + do + { + if((string)cmbFilesForNewDisc.Model.GetValue(iter, 0) == file) + { + cmbFilesForNewDisc.SetActiveIter(iter); + cmbFilesForNewDisc.RemoveText(cmbFilesForNewDisc.Active); + break; + } + } + while(cmbFilesForNewDisc.Model.IterNext(ref iter)); + + cmbFilesForNewDisk.Model.GetIterFirst(out iter); + do + { + if((string)cmbFilesForNewDisk.Model.GetValue(iter, 0) == file) + { + cmbFilesForNewDisk.SetActiveIter(iter); + cmbFilesForNewDisk.RemoveText(cmbFilesForNewDisk.Active); + break; + } + } + while(cmbFilesForNewDisk.Model.IterNext(ref iter)); + } + + MainClass.selectedFile = ""; + notebook3.GetNthPage(0).Visible = true; + notebook3.GetNthPage(1).Visible = true; + notebook3.GetNthPage(2).Visible = true; + notebook3.GetNthPage(3).Visible = true; + notebook3.GetNthPage(4).Visible = true; + notebook3.GetNthPage(5).Visible = true; + notebook3.GetNthPage(6).Visible = true; + notebook3.GetNthPage(7).Visible = true; + prgAddDisk.Visible = true; + Core.Failed -= OnDiskAddFailed; + Core.Finished -= OnDiskAddFinished; + Core.UpdateProgress -= UpdateDiskProgress; + MainClass.workingDisk = null; + btnStopAddDisk.Visible = false; + btnAddDisk.Visible = true; + btnRemoveDisk.Visible = true; + thdDisk = null; + }); + } + + protected void OnBtnClearDisksClicked(object sender, EventArgs e) + { + lstDisks.Clear(); + FillDiskCombos(); + } + + protected void OnBtnRemoveDiskClicked(object sender, EventArgs e) + { + TreeIter selectedIter; + if(treeDisks.Selection.GetSelected(out selectedIter)) + { + cmbFilesForNewDisk.AppendText((string)lstDisks.GetValue(selectedIter, 0)); + lstDisks.Remove(ref selectedIter); + } + } + + protected void OnButtonOkClicked(object sender, EventArgs e) + { + Metadata = new CICMMetadataType(); + List architectures = new List(); + List barcodes = new List(); + List disks = new List(); + List categories = new List(); + List keywords = new List(); + List languages = new List(); + List discs = new List(); + List subcategories = new List(); + List systems = new List(); + + if(!string.IsNullOrEmpty(txtAuthor.Text)) + Metadata.Author = txtAuthor.Text.Split(','); + if(!string.IsNullOrEmpty(txtDeveloper.Text)) + Metadata.Developer = txtDeveloper.Text.Split(','); + if(!string.IsNullOrEmpty(txtAuthor.Text)) + Metadata.Name = txtName.Text; + if(!string.IsNullOrEmpty(txtAuthor.Text)) + Metadata.PartNumber = txtPartNumber.Text; + if(!string.IsNullOrEmpty(txtPerformer.Text)) + Metadata.Performer = txtPerformer.Text.Split(','); + if(!string.IsNullOrEmpty(txtPublisher.Text)) + Metadata.Publisher = txtPublisher.Text.Split(','); + if(!string.IsNullOrEmpty(txtSerialNumber.Text)) + Metadata.SerialNumber = txtSerialNumber.Text; + if(!string.IsNullOrEmpty(txtVersion.Text)) + Metadata.Version = txtVersion.Text; + if(!chkReleaseDate.Active) + { + Metadata.ReleaseDate = cldReleaseDate.Date; + Metadata.ReleaseDateSpecified = true; + } + if(!chkBoxUnknownReleaseType.Active) + { + Metadata.ReleaseType = (CICMMetadataTypeReleaseType)Enum.Parse(typeof(CICMMetadataTypeReleaseType), cmbReleaseType.ActiveText); + Metadata.ReleaseTypeSpecified = true; + } + + TreeIter iter; + + if(lstArchitectures.GetIterFirst(out iter)) + { + do + { + architectures.Add((ArchitecturesTypeArchitecture)Enum.Parse(typeof(ArchitecturesTypeArchitecture), (string)lstArchitectures.GetValue(iter, 0))); + } + while(lstArchitectures.IterNext(ref iter)); + } + + if(lstBarcodes.GetIterFirst(out iter)) + { + do + { + BarcodeType barcode = new BarcodeType(); + barcode.type = (BarcodeTypeType)Enum.Parse(typeof(BarcodeTypeType), (string)lstBarcodes.GetValue(iter, 1)); + barcode.Value = (string)lstBarcodes.GetValue(iter, 0); + barcodes.Add(barcode); + } + while(lstBarcodes.IterNext(ref iter)); + } + + if(lstDisks.GetIterFirst(out iter)) + { + do + { + disks.Add((BlockMediaType)lstDisks.GetValue(iter, 1)); + } + while(lstDisks.IterNext(ref iter)); + } + + if(lstCategories.GetIterFirst(out iter)) + { + do + { + categories.Add((string)lstCategories.GetValue(iter, 0)); + } + while(lstCategories.IterNext(ref iter)); + } + + if(lstKeywords.GetIterFirst(out iter)) + { + do + { + keywords.Add((string)lstKeywords.GetValue(iter, 0)); + } + while(lstKeywords.IterNext(ref iter)); + } + + if(lstLanguages.GetIterFirst(out iter)) + { + do + { + languages.Add((LanguagesTypeLanguage)Enum.Parse(typeof(LanguagesTypeLanguage), (string)lstLanguages.GetValue(iter, 0))); + } + while(lstLanguages.IterNext(ref iter)); + } + + if(lstDiscs.GetIterFirst(out iter)) + { + do + { + discs.Add((OpticalDiscType)lstDiscs.GetValue(iter, 1)); + } + while(lstDiscs.IterNext(ref iter)); + } + + if(lstSubcategories.GetIterFirst(out iter)) + { + do + { + subcategories.Add((string)lstSubcategories.GetValue(iter, 0)); + } + while(lstSubcategories.IterNext(ref iter)); + } + + if(lstSystems.GetIterFirst(out iter)) + { + do + { + systems.Add((string)lstSystems.GetValue(iter, 0)); + } + while(lstSystems.IterNext(ref iter)); + } + + if(architectures.Count > 0) + Metadata.Architectures = architectures.ToArray(); + if(barcodes.Count > 0) + Metadata.Barcodes = barcodes.ToArray(); + if(disks.Count > 0) + Metadata.BlockMedia = disks.ToArray(); + if(categories.Count > 0) + Metadata.Categories = categories.ToArray(); + if(keywords.Count > 0) + Metadata.Keywords = keywords.ToArray(); + if(languages.Count > 0) + Metadata.Languages = languages.ToArray(); + if(discs.Count > 0) + Metadata.OpticalDisc = discs.ToArray(); + if(subcategories.Count > 0) + Metadata.Subcategories = subcategories.ToArray(); + if(systems.Count > 0) + Metadata.Systems = systems.ToArray(); + } + } +} diff --git a/osrepodbmgr/gtk-gui/MainWindow.cs b/osrepodbmgr/gtk-gui/MainWindow.cs index cce320e..66bbf34 100644 --- a/osrepodbmgr/gtk-gui/MainWindow.cs +++ b/osrepodbmgr/gtk-gui/MainWindow.cs @@ -117,6 +117,8 @@ public partial class MainWindow private global::Gtk.Button btnStop; + private global::Gtk.Button btnMetadata; + protected virtual void Build() { global::Stetic.Gui.Initialize(this); @@ -670,17 +672,32 @@ public partial class MainWindow w59.Position = 8; w59.Expand = false; w59.Fill = false; + // Container child hbox1.Gtk.Box+BoxChild + this.btnMetadata = new global::Gtk.Button(); + this.btnMetadata.CanFocus = true; + this.btnMetadata.Name = "btnMetadata"; + this.btnMetadata.UseUnderline = true; + this.btnMetadata.Label = global::Mono.Unix.Catalog.GetString("Metadata"); + global::Gtk.Image w60 = new global::Gtk.Image(); + w60.Pixbuf = global::Stetic.IconLoader.LoadIcon(this, "gtk-properties", global::Gtk.IconSize.Menu); + this.btnMetadata.Image = w60; + this.hbox1.Add(this.btnMetadata); + global::Gtk.Box.BoxChild w61 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.btnMetadata])); + w61.PackType = ((global::Gtk.PackType)(1)); + w61.Position = 9; + w61.Expand = false; + w61.Fill = false; this.vbox1.Add(this.hbox1); - global::Gtk.Box.BoxChild w60 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.hbox1])); - w60.Position = 12; - w60.Expand = false; - w60.Fill = false; + global::Gtk.Box.BoxChild w62 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.hbox1])); + w62.Position = 12; + w62.Expand = false; + w62.Fill = false; this.Add(this.vbox1); - if ((this.Child != null)) + if((this.Child != null)) { this.Child.ShowAll(); } - this.DefaultWidth = 771; + this.DefaultWidth = 778; this.DefaultHeight = 544; this.lblProgress.Hide(); this.prgProgress.Hide(); @@ -690,8 +707,10 @@ public partial class MainWindow this.btnPack.Hide(); this.btnAdd.Hide(); this.btnStop.Hide(); + this.btnMetadata.Hide(); this.Show(); this.DeleteEvent += new global::Gtk.DeleteEventHandler(this.OnDeleteEvent); + this.btnMetadata.Clicked += new global::System.EventHandler(this.OnBtnMetadataClicked); this.btnStop.Clicked += new global::System.EventHandler(this.OnBtnStopClicked); this.btnFolder.Clicked += new global::System.EventHandler(this.OnBtnFolderClicked); this.btnArchive.Clicked += new global::System.EventHandler(this.OnBtnArchiveClicked); diff --git a/osrepodbmgr/gtk-gui/generated.cs b/osrepodbmgr/gtk-gui/generated.cs index 50283a9..f916e7a 100644 --- a/osrepodbmgr/gtk-gui/generated.cs +++ b/osrepodbmgr/gtk-gui/generated.cs @@ -8,7 +8,7 @@ namespace Stetic internal static void Initialize(Gtk.Widget iconRenderer) { - if ((Stetic.Gui.initialized == false)) + if((Stetic.Gui.initialized == false)) { Stetic.Gui.initialized = true; } @@ -20,7 +20,7 @@ namespace Stetic public static Gdk.Pixbuf LoadIcon(Gtk.Widget widget, string name, Gtk.IconSize size) { Gdk.Pixbuf res = widget.RenderIcon(name, size, null); - if ((res != null)) + if((res != null)) { return res; } @@ -32,9 +32,9 @@ namespace Stetic { return Gtk.IconTheme.Default.LoadIcon(name, sz, 0); } - catch (System.Exception) + catch(System.Exception) { - if ((name != "gtk-missing-image")) + if((name != "gtk-missing-image")) { return Stetic.IconLoader.LoadIcon(widget, "gtk-missing-image", size); } diff --git a/osrepodbmgr/gtk-gui/gui.stetic b/osrepodbmgr/gtk-gui/gui.stetic index 4769ed2..cdc60a7 100644 --- a/osrepodbmgr/gtk-gui/gui.stetic +++ b/osrepodbmgr/gtk-gui/gui.stetic @@ -7,7 +7,7 @@ - + OS Repository DB Manager CenterOnParent @@ -738,6 +738,25 @@ False + + + + False + True + TextAndIcon + stock:gtk-properties Menu + Metadata + True + + + + End + 9 + True + False + False + + 12 @@ -1204,4 +1223,1837 @@ QNX/QNX/20090229/source.zip + + + CenterOnParent + 2 + False + + + + 2 + + + + True + 0 + + + + 6 + + + + 6 + + + + Developer + + + 0 + True + False + False + + + + + + True + True + + + + 1 + True + + + + + 0 + True + False + False + + + + + + 6 + + + + Publisher + + + 0 + True + False + False + + + + + + True + True + + + + 1 + True + + + + + 1 + True + False + False + + + + + + 6 + + + + Author + + + 0 + True + False + False + + + + + + True + True + + + + 1 + True + + + + + 2 + True + False + False + + + + + + 6 + + + + Performer + + + 0 + True + False + False + + + + + + True + True + + + + 1 + True + + + + + 3 + True + False + False + + + + + + 6 + + + + Name + + + 0 + True + False + False + + + + + + True + True + + + + 1 + True + + + + + 4 + True + False + False + + + + + + 6 + + + + Version + + + 0 + True + False + False + + + + + + True + True + + + + 1 + True + + + + + 5 + True + False + False + + + + + + 6 + + + + Release type + + + 0 + True + False + False + + + + + + True + + + + 1 + True + False + False + + + + + + True + Unknown or unspecified + True + True + True + True + + + + 2 + True + + + + + 6 + True + False + False + + + + + + 6 + + + + 6 + + + + ReleaseDate + + + 0 + True + False + False + + + + + + True + Unknown or unreleased + True + True + True + True + + + + 1 + True + False + False + + + + + 0 + True + False + False + + + + + + False + True + 35 + + + 1 + True + False + False + + + + + 7 + True + False + False + + + + + + 6 + + + + Part number + + + 0 + True + False + False + + + + + + True + True + + + + 1 + True + + + + + 8 + True + False + False + + + + + + 6 + + + + Serial number + + + 0 + True + False + False + + + + + + True + True + + + + 1 + True + + + + + 9 + True + False + False + + + + + + + + General + + + tab + + + + + + 6 + + + + 6 + + + + New keyword: + + + 0 + True + False + False + + + + + + True + True + + + + 1 + True + + + + + + True + True + StockItem + gtk-add + + gtk-add + + + 2 + True + False + False + + + + + 0 + True + False + False + + + + + + In + + + + True + True + + + + + 1 + True + + + + + + 6 + + + + True + True + StockItem + gtk-remove + + gtk-remove + + + End + 0 + True + False + False + + + + + + True + True + StockItem + gtk-clear + + gtk-clear + + + End + 1 + True + False + False + + + + + 2 + True + False + False + + + + + 1 + + + + + + Keywords + + + tab + + + + + + 6 + + + + 6 + + + + New barcode: + + + 0 + True + False + False + + + + + + True + True + + + + 1 + True + + + + + + type + + + 2 + True + False + False + + + + + + True + + + + 3 + True + False + False + + + + + + True + True + StockItem + gtk-add + + gtk-add + + + 4 + True + False + False + + + + + 0 + True + False + False + + + + + + In + + + + True + True + + + + + 1 + True + + + + + + 6 + + + + True + True + StockItem + gtk-remove + + gtk-remove + + + End + 0 + True + False + False + + + + + + True + True + StockItem + gtk-clear + + gtk-clear + + + End + 1 + True + False + False + + + + + 2 + True + False + False + + + + + 2 + + + + + + Barcodes + + + tab + + + + + + 6 + + + + 6 + + + + Categories + + + 0 + True + False + False + + + + + + 6 + + + + New category: + + + 0 + True + False + False + + + + + + True + True + + + + 1 + True + + + + + + True + True + StockItem + gtk-add + + gtk-add + + + 2 + True + False + False + + + + + 1 + True + False + False + + + + + + In + + + + True + True + + + + + 2 + True + + + + + + 6 + + + + True + True + StockItem + gtk-remove + + gtk-remove + + + End + 0 + True + False + False + + + + + + True + True + StockItem + gtk-clear + + gtk-clear + + + End + 1 + True + False + False + + + + + 3 + True + False + False + + + + + 0 + True + False + False + + + + + + 6 + + + + Subcategories + + + 0 + True + False + False + + + + + + 6 + + + + New subcategory: + + + 0 + True + False + False + + + + + + True + True + + + + 1 + True + + + + + + True + True + StockItem + gtk-add + + gtk-add + + + 2 + True + False + False + + + + + 1 + True + False + False + + + + + + In + + + + True + True + + + + + 2 + True + + + + + + 6 + + + + True + True + StockItem + gtk-remove + + gtk-remove + + + End + 0 + True + False + False + + + + + + True + True + StockItem + gtk-clear + + gtk-clear + + + End + 1 + True + False + False + + + + + 3 + True + False + False + + + + + 1 + True + False + False + + + + + 3 + True + + + + + + Categories + + + tab + + + + + + 6 + + + + 6 + + + + New language: + + + 0 + True + False + False + + + + + + True + + + + 1 + True + False + False + + + + + + True + True + StockItem + gtk-add + + gtk-add + + + 2 + True + False + False + + + + + 0 + True + False + False + + + + + + In + + + + True + True + + + + + 1 + True + + + + + + 6 + + + + True + True + StockItem + gtk-remove + + gtk-remove + + + End + 0 + True + False + False + + + + + + True + True + StockItem + gtk-clear + + gtk-clear + + + End + 1 + True + False + False + + + + + 2 + True + False + False + + + + + 4 + + + + + + Languages + + + tab + + + + + + 6 + + + + 6 + + + + New system: + + + 0 + True + False + False + + + + + + True + True + + + + 1 + True + + + + + + True + True + StockItem + gtk-add + + gtk-add + + + 2 + True + False + False + + + + + 0 + True + False + False + + + + + + In + + + + True + True + + + + + 1 + True + + + + + + 6 + + + + True + True + StockItem + gtk-remove + + gtk-remove + + + End + 0 + True + False + False + + + + + + True + True + StockItem + gtk-clear + + gtk-clear + + + End + 1 + True + False + False + + + + + 2 + True + False + False + + + + + 5 + + + + + + Systems + + + tab + + + + + + 6 + + + + 6 + + + + New architectures: + + + 0 + True + False + False + + + + + + True + + + + 1 + True + False + False + + + + + + True + True + StockItem + gtk-add + + gtk-add + + + 2 + True + False + False + + + + + 0 + True + False + False + + + + + + In + + + + True + True + + + + + 1 + True + + + + + + 6 + + + + True + True + StockItem + gtk-remove + + gtk-remove + + + End + 0 + True + False + False + + + + + + True + True + StockItem + gtk-clear + + gtk-clear + + + End + 1 + True + False + False + + + + + 2 + True + False + False + + + + + 6 + + + + + + Architectures + + + tab + + + + + + 6 + + + + 6 + + + + Choose disc to add: + + + 0 + True + False + False + + + + + + True + + + + 1 + True + False + False + + + + + + True + True + StockItem + gtk-add + + gtk-add + + + 2 + True + False + False + + + + + 0 + True + False + False + + + + + + In + + + + True + True + + + + + 1 + True + + + + + + 6 + + + + True + True + StockItem + gtk-remove + + gtk-remove + + + End + 0 + True + False + False + + + + + + True + True + StockItem + gtk-clear + + gtk-clear + + + End + 1 + True + False + False + + + + + + False + True + True + StockItem + gtk-stop + + gtk-stop + + + End + 2 + True + False + False + + + + + 2 + True + False + False + + + + + + + + 3 + True + False + False + + + + + 7 + + + + + + Optical discs + + + tab + + + + + + 6 + + + + 6 + + + + Choose disk to add: + + + 0 + True + False + False + + + + + + True + + + + 1 + True + False + False + + + + + + True + True + StockItem + gtk-add + + gtk-add + + + 2 + True + False + False + + + + + 0 + True + False + False + + + + + + In + + + + True + True + + + + + 1 + True + + + + + + 6 + + + + True + True + StockItem + gtk-remove + + gtk-remove + + + End + 0 + True + False + False + + + + + + True + True + StockItem + gtk-clear + + gtk-clear + + + End + 1 + True + False + False + + + + + + True + True + StockItem + gtk-stop + + gtk-stop + + + End + 2 + True + False + False + + + + + 2 + True + False + False + + + + + + + + 3 + True + False + False + + + + + 8 + + + + + + Block disks + + + tab + + + + + 0 + True + + + + + + + + 10 + 5 + 2 + End + + + + True + True + True + StockItem + gtk-cancel + -6 + gtk-cancel + + + False + False + + + + + + True + True + True + StockItem + gtk-ok + -5 + + gtk-ok + + + 1 + False + False + + + + + \ No newline at end of file diff --git a/osrepodbmgr/gtk-gui/osrepodbmgr.DicCore.cs b/osrepodbmgr/gtk-gui/osrepodbmgr.DicCore.cs new file mode 100644 index 0000000..21a967a --- /dev/null +++ b/osrepodbmgr/gtk-gui/osrepodbmgr.DicCore.cs @@ -0,0 +1,10 @@ + +namespace osrepodbmgr +{ + public partial class DicCore + { + private void Build() + { + } + } +} diff --git a/osrepodbmgr/gtk-gui/osrepodbmgr.dlgMetadata.cs b/osrepodbmgr/gtk-gui/osrepodbmgr.dlgMetadata.cs new file mode 100644 index 0000000..4b768c7 --- /dev/null +++ b/osrepodbmgr/gtk-gui/osrepodbmgr.dlgMetadata.cs @@ -0,0 +1,1673 @@ + +// This file has been generated by the GUI designer. Do not modify. +namespace osrepodbmgr +{ + public partial class dlgMetadata + { + private global::Gtk.Notebook notebook3; + + private global::Gtk.VBox vbox3; + + private global::Gtk.HBox hbox1; + + private global::Gtk.Label lblDeveloper; + + private global::Gtk.Entry txtDeveloper; + + private global::Gtk.HBox hbox2; + + private global::Gtk.Label lblPublisher; + + private global::Gtk.Entry txtPublisher; + + private global::Gtk.HBox hbox3; + + private global::Gtk.Label lblAuthor; + + private global::Gtk.Entry txtAuthor; + + private global::Gtk.HBox hbox4; + + private global::Gtk.Label lblPerformer; + + private global::Gtk.Entry txtPerformer; + + private global::Gtk.HBox hbox5; + + private global::Gtk.Label lblName; + + private global::Gtk.Entry txtName; + + private global::Gtk.HBox hbox6; + + private global::Gtk.Label lblVersion; + + private global::Gtk.Entry txtVersion; + + private global::Gtk.HBox hbox7; + + private global::Gtk.Label lblReleaseType; + + private global::Gtk.ComboBox cmbReleaseType; + + private global::Gtk.CheckButton chkBoxUnknownReleaseType; + + private global::Gtk.HBox hbox8; + + private global::Gtk.VBox vbox13; + + private global::Gtk.Label lblReleaseDate; + + private global::Gtk.CheckButton chkReleaseDate; + + private global::Gtk.Calendar cldReleaseDate; + + private global::Gtk.HBox hbox9; + + private global::Gtk.Label lblPartNumber; + + private global::Gtk.Entry txtPartNumber; + + private global::Gtk.HBox hbox12; + + private global::Gtk.Label lblSerialNumber; + + private global::Gtk.Entry txtSerialNumber; + + private global::Gtk.Label label3; + + private global::Gtk.VBox vbox4; + + private global::Gtk.HBox hbox10; + + private global::Gtk.Label lblNewKeyword; + + private global::Gtk.Entry txtNewKeyword; + + private global::Gtk.Button txtAddKeyword; + + private global::Gtk.ScrolledWindow GtkScrolledWindow; + + private global::Gtk.TreeView treeKeywords; + + private global::Gtk.HBox hbox11; + + private global::Gtk.Button btnRemoveKeyword; + + private global::Gtk.Button btnClearKeywords; + + private global::Gtk.Label label9; + + private global::Gtk.VBox vbox5; + + private global::Gtk.HBox hbox14; + + private global::Gtk.Label lblNewBarcode; + + private global::Gtk.Entry txtNewBarcode; + + private global::Gtk.Label label24; + + private global::Gtk.ComboBox cmbBarcodes; + + private global::Gtk.Button btnAddBarcode; + + private global::Gtk.ScrolledWindow GtkScrolledWindow1; + + private global::Gtk.TreeView treeBarcodes; + + private global::Gtk.HBox hbox13; + + private global::Gtk.Button btnRemoveBarcode; + + private global::Gtk.Button btnClearBarcodes; + + private global::Gtk.Label label15; + + private global::Gtk.HBox hbox15; + + private global::Gtk.VBox vbox7; + + private global::Gtk.Label lblCategories; + + private global::Gtk.HBox hbox16; + + private global::Gtk.Label lblNewCategory; + + private global::Gtk.Entry txtNewCategory; + + private global::Gtk.Button btnAddCategory; + + private global::Gtk.ScrolledWindow GtkScrolledWindow3; + + private global::Gtk.TreeView treeCategories; + + private global::Gtk.HBox hbox19; + + private global::Gtk.Button btnRemoveCategory; + + private global::Gtk.Button btnClearCategories; + + private global::Gtk.VBox vbox6; + + private global::Gtk.Label lblSubcategories; + + private global::Gtk.HBox hbox17; + + private global::Gtk.Label lblNewSubcategory; + + private global::Gtk.Entry txtNewSubcategory; + + private global::Gtk.Button btnAddSubcategory; + + private global::Gtk.ScrolledWindow GtkScrolledWindow2; + + private global::Gtk.TreeView treeSubcategories; + + private global::Gtk.HBox hbox18; + + private global::Gtk.Button btnRemoveSubcategory; + + private global::Gtk.Button btnClearSubcategories; + + private global::Gtk.Label label18; + + private global::Gtk.VBox vbox8; + + private global::Gtk.HBox hbox21; + + private global::Gtk.Label lblNewLanguage; + + private global::Gtk.ComboBox cmbLanguages; + + private global::Gtk.Button btnAddLanguages; + + private global::Gtk.ScrolledWindow GtkScrolledWindow4; + + private global::Gtk.TreeView treeLanguages; + + private global::Gtk.HBox hbox20; + + private global::Gtk.Button btnRemoveLanguage; + + private global::Gtk.Button btnClearLanguages; + + private global::Gtk.Label label19; + + private global::Gtk.VBox vbox9; + + private global::Gtk.HBox hbox23; + + private global::Gtk.Label lblNewSystem; + + private global::Gtk.Entry txtNewSystem; + + private global::Gtk.Button btnAddSystem; + + private global::Gtk.ScrolledWindow GtkScrolledWindow7; + + private global::Gtk.TreeView treeSystems; + + private global::Gtk.HBox hbox22; + + private global::Gtk.Button btnRemoveSystems; + + private global::Gtk.Button btnClearSystems; + + private global::Gtk.Label label20; + + private global::Gtk.VBox vbox10; + + private global::Gtk.HBox hbox25; + + private global::Gtk.Label lblNewArchitecture; + + private global::Gtk.ComboBox cmbArchitectures; + + private global::Gtk.Button btnAddArchitecture; + + private global::Gtk.ScrolledWindow GtkScrolledWindow5; + + private global::Gtk.TreeView treeArchitectures; + + private global::Gtk.HBox hbox24; + + private global::Gtk.Button btnRemoveArchitecture; + + private global::Gtk.Button btnClearArchitectures; + + private global::Gtk.Label label21; + + private global::Gtk.VBox vbox11; + + private global::Gtk.HBox hbox27; + + private global::Gtk.Label lblNewDisc; + + private global::Gtk.ComboBox cmbFilesForNewDisc; + + private global::Gtk.Button btnAddDisc; + + private global::Gtk.ScrolledWindow GtkScrolledWindow6; + + private global::Gtk.TreeView treeDiscs; + + private global::Gtk.HBox hbox26; + + private global::Gtk.Button btnRemoveDiscs; + + private global::Gtk.Button btnClearDiscs; + + private global::Gtk.Button btnStopAddDisc; + + private global::Gtk.ProgressBar prgAddDisc; + + private global::Gtk.Label label22; + + private global::Gtk.VBox vbox12; + + private global::Gtk.HBox hbox29; + + private global::Gtk.Label lblNewDisk; + + private global::Gtk.ComboBox cmbFilesForNewDisk; + + private global::Gtk.Button btnAddDisk; + + private global::Gtk.ScrolledWindow GtkScrolledWindow8; + + private global::Gtk.TreeView treeDisks; + + private global::Gtk.HBox hbox28; + + private global::Gtk.Button btnRemoveDisk; + + private global::Gtk.Button btnClearDisks; + + private global::Gtk.Button btnStopAddDisk; + + private global::Gtk.ProgressBar prgAddDisk; + + private global::Gtk.Label label32; + + private global::Gtk.Button buttonCancel; + + private global::Gtk.Button buttonOk; + + protected virtual void Build() + { + global::Stetic.Gui.Initialize(this); + // Widget osrepodbmgr.dlgMetadata + this.Name = "osrepodbmgr.dlgMetadata"; + this.WindowPosition = ((global::Gtk.WindowPosition)(4)); + // Internal child osrepodbmgr.dlgMetadata.VBox + global::Gtk.VBox w1 = this.VBox; + w1.Name = "dialog1_VBox"; + w1.BorderWidth = ((uint)(2)); + // Container child dialog1_VBox.Gtk.Box+BoxChild + this.notebook3 = new global::Gtk.Notebook(); + this.notebook3.CanFocus = true; + this.notebook3.Name = "notebook3"; + this.notebook3.CurrentPage = 0; + // Container child notebook3.Gtk.Notebook+NotebookChild + this.vbox3 = new global::Gtk.VBox(); + this.vbox3.Name = "vbox3"; + this.vbox3.Spacing = 6; + // Container child vbox3.Gtk.Box+BoxChild + this.hbox1 = new global::Gtk.HBox(); + this.hbox1.Name = "hbox1"; + this.hbox1.Spacing = 6; + // Container child hbox1.Gtk.Box+BoxChild + this.lblDeveloper = new global::Gtk.Label(); + this.lblDeveloper.Name = "lblDeveloper"; + this.lblDeveloper.LabelProp = global::Mono.Unix.Catalog.GetString("Developer"); + this.hbox1.Add(this.lblDeveloper); + global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.lblDeveloper])); + w2.Position = 0; + w2.Expand = false; + w2.Fill = false; + // Container child hbox1.Gtk.Box+BoxChild + this.txtDeveloper = new global::Gtk.Entry(); + this.txtDeveloper.CanFocus = true; + this.txtDeveloper.Name = "txtDeveloper"; + this.txtDeveloper.IsEditable = true; + this.txtDeveloper.InvisibleChar = '●'; + this.hbox1.Add(this.txtDeveloper); + global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.txtDeveloper])); + w3.Position = 1; + this.vbox3.Add(this.hbox1); + global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.hbox1])); + w4.Position = 0; + w4.Expand = false; + w4.Fill = false; + // Container child vbox3.Gtk.Box+BoxChild + this.hbox2 = new global::Gtk.HBox(); + this.hbox2.Name = "hbox2"; + this.hbox2.Spacing = 6; + // Container child hbox2.Gtk.Box+BoxChild + this.lblPublisher = new global::Gtk.Label(); + this.lblPublisher.Name = "lblPublisher"; + this.lblPublisher.LabelProp = global::Mono.Unix.Catalog.GetString("Publisher"); + this.hbox2.Add(this.lblPublisher); + global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.lblPublisher])); + w5.Position = 0; + w5.Expand = false; + w5.Fill = false; + // Container child hbox2.Gtk.Box+BoxChild + this.txtPublisher = new global::Gtk.Entry(); + this.txtPublisher.CanFocus = true; + this.txtPublisher.Name = "txtPublisher"; + this.txtPublisher.IsEditable = true; + this.txtPublisher.InvisibleChar = '●'; + this.hbox2.Add(this.txtPublisher); + global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.txtPublisher])); + w6.Position = 1; + this.vbox3.Add(this.hbox2); + global::Gtk.Box.BoxChild w7 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.hbox2])); + w7.Position = 1; + w7.Expand = false; + w7.Fill = false; + // Container child vbox3.Gtk.Box+BoxChild + this.hbox3 = new global::Gtk.HBox(); + this.hbox3.Name = "hbox3"; + this.hbox3.Spacing = 6; + // Container child hbox3.Gtk.Box+BoxChild + this.lblAuthor = new global::Gtk.Label(); + this.lblAuthor.Name = "lblAuthor"; + this.lblAuthor.LabelProp = global::Mono.Unix.Catalog.GetString("Author"); + this.hbox3.Add(this.lblAuthor); + global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(this.hbox3[this.lblAuthor])); + w8.Position = 0; + w8.Expand = false; + w8.Fill = false; + // Container child hbox3.Gtk.Box+BoxChild + this.txtAuthor = new global::Gtk.Entry(); + this.txtAuthor.CanFocus = true; + this.txtAuthor.Name = "txtAuthor"; + this.txtAuthor.IsEditable = true; + this.txtAuthor.InvisibleChar = '●'; + this.hbox3.Add(this.txtAuthor); + global::Gtk.Box.BoxChild w9 = ((global::Gtk.Box.BoxChild)(this.hbox3[this.txtAuthor])); + w9.Position = 1; + this.vbox3.Add(this.hbox3); + global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.hbox3])); + w10.Position = 2; + w10.Expand = false; + w10.Fill = false; + // Container child vbox3.Gtk.Box+BoxChild + this.hbox4 = new global::Gtk.HBox(); + this.hbox4.Name = "hbox4"; + this.hbox4.Spacing = 6; + // Container child hbox4.Gtk.Box+BoxChild + this.lblPerformer = new global::Gtk.Label(); + this.lblPerformer.Name = "lblPerformer"; + this.lblPerformer.LabelProp = global::Mono.Unix.Catalog.GetString("Performer"); + this.hbox4.Add(this.lblPerformer); + global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.hbox4[this.lblPerformer])); + w11.Position = 0; + w11.Expand = false; + w11.Fill = false; + // Container child hbox4.Gtk.Box+BoxChild + this.txtPerformer = new global::Gtk.Entry(); + this.txtPerformer.CanFocus = true; + this.txtPerformer.Name = "txtPerformer"; + this.txtPerformer.IsEditable = true; + this.txtPerformer.InvisibleChar = '●'; + this.hbox4.Add(this.txtPerformer); + global::Gtk.Box.BoxChild w12 = ((global::Gtk.Box.BoxChild)(this.hbox4[this.txtPerformer])); + w12.Position = 1; + this.vbox3.Add(this.hbox4); + global::Gtk.Box.BoxChild w13 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.hbox4])); + w13.Position = 3; + w13.Expand = false; + w13.Fill = false; + // Container child vbox3.Gtk.Box+BoxChild + this.hbox5 = new global::Gtk.HBox(); + this.hbox5.Name = "hbox5"; + this.hbox5.Spacing = 6; + // Container child hbox5.Gtk.Box+BoxChild + this.lblName = new global::Gtk.Label(); + this.lblName.Name = "lblName"; + this.lblName.LabelProp = global::Mono.Unix.Catalog.GetString("Name"); + this.hbox5.Add(this.lblName); + global::Gtk.Box.BoxChild w14 = ((global::Gtk.Box.BoxChild)(this.hbox5[this.lblName])); + w14.Position = 0; + w14.Expand = false; + w14.Fill = false; + // Container child hbox5.Gtk.Box+BoxChild + this.txtName = new global::Gtk.Entry(); + this.txtName.CanFocus = true; + this.txtName.Name = "txtName"; + this.txtName.IsEditable = true; + this.txtName.InvisibleChar = '●'; + this.hbox5.Add(this.txtName); + global::Gtk.Box.BoxChild w15 = ((global::Gtk.Box.BoxChild)(this.hbox5[this.txtName])); + w15.Position = 1; + this.vbox3.Add(this.hbox5); + global::Gtk.Box.BoxChild w16 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.hbox5])); + w16.Position = 4; + w16.Expand = false; + w16.Fill = false; + // Container child vbox3.Gtk.Box+BoxChild + this.hbox6 = new global::Gtk.HBox(); + this.hbox6.Name = "hbox6"; + this.hbox6.Spacing = 6; + // Container child hbox6.Gtk.Box+BoxChild + this.lblVersion = new global::Gtk.Label(); + this.lblVersion.Name = "lblVersion"; + this.lblVersion.LabelProp = global::Mono.Unix.Catalog.GetString("Version"); + this.hbox6.Add(this.lblVersion); + global::Gtk.Box.BoxChild w17 = ((global::Gtk.Box.BoxChild)(this.hbox6[this.lblVersion])); + w17.Position = 0; + w17.Expand = false; + w17.Fill = false; + // Container child hbox6.Gtk.Box+BoxChild + this.txtVersion = new global::Gtk.Entry(); + this.txtVersion.CanFocus = true; + this.txtVersion.Name = "txtVersion"; + this.txtVersion.IsEditable = true; + this.txtVersion.InvisibleChar = '●'; + this.hbox6.Add(this.txtVersion); + global::Gtk.Box.BoxChild w18 = ((global::Gtk.Box.BoxChild)(this.hbox6[this.txtVersion])); + w18.Position = 1; + this.vbox3.Add(this.hbox6); + global::Gtk.Box.BoxChild w19 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.hbox6])); + w19.Position = 5; + w19.Expand = false; + w19.Fill = false; + // Container child vbox3.Gtk.Box+BoxChild + this.hbox7 = new global::Gtk.HBox(); + this.hbox7.Name = "hbox7"; + this.hbox7.Spacing = 6; + // Container child hbox7.Gtk.Box+BoxChild + this.lblReleaseType = new global::Gtk.Label(); + this.lblReleaseType.Name = "lblReleaseType"; + this.lblReleaseType.LabelProp = global::Mono.Unix.Catalog.GetString("Release type"); + this.hbox7.Add(this.lblReleaseType); + global::Gtk.Box.BoxChild w20 = ((global::Gtk.Box.BoxChild)(this.hbox7[this.lblReleaseType])); + w20.Position = 0; + w20.Expand = false; + w20.Fill = false; + // Container child hbox7.Gtk.Box+BoxChild + this.cmbReleaseType = global::Gtk.ComboBox.NewText(); + this.cmbReleaseType.Name = "cmbReleaseType"; + this.hbox7.Add(this.cmbReleaseType); + global::Gtk.Box.BoxChild w21 = ((global::Gtk.Box.BoxChild)(this.hbox7[this.cmbReleaseType])); + w21.Position = 1; + w21.Expand = false; + w21.Fill = false; + // Container child hbox7.Gtk.Box+BoxChild + this.chkBoxUnknownReleaseType = new global::Gtk.CheckButton(); + this.chkBoxUnknownReleaseType.CanFocus = true; + this.chkBoxUnknownReleaseType.Name = "chkBoxUnknownReleaseType"; + this.chkBoxUnknownReleaseType.Label = global::Mono.Unix.Catalog.GetString("Unknown or unspecified"); + this.chkBoxUnknownReleaseType.Active = true; + this.chkBoxUnknownReleaseType.DrawIndicator = true; + this.chkBoxUnknownReleaseType.UseUnderline = true; + this.hbox7.Add(this.chkBoxUnknownReleaseType); + global::Gtk.Box.BoxChild w22 = ((global::Gtk.Box.BoxChild)(this.hbox7[this.chkBoxUnknownReleaseType])); + w22.Position = 2; + this.vbox3.Add(this.hbox7); + global::Gtk.Box.BoxChild w23 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.hbox7])); + w23.Position = 6; + w23.Expand = false; + w23.Fill = false; + // Container child vbox3.Gtk.Box+BoxChild + this.hbox8 = new global::Gtk.HBox(); + this.hbox8.Name = "hbox8"; + this.hbox8.Spacing = 6; + // Container child hbox8.Gtk.Box+BoxChild + this.vbox13 = new global::Gtk.VBox(); + this.vbox13.Name = "vbox13"; + this.vbox13.Spacing = 6; + // Container child vbox13.Gtk.Box+BoxChild + this.lblReleaseDate = new global::Gtk.Label(); + this.lblReleaseDate.Name = "lblReleaseDate"; + this.lblReleaseDate.LabelProp = global::Mono.Unix.Catalog.GetString("ReleaseDate"); + this.vbox13.Add(this.lblReleaseDate); + global::Gtk.Box.BoxChild w24 = ((global::Gtk.Box.BoxChild)(this.vbox13[this.lblReleaseDate])); + w24.Position = 0; + w24.Expand = false; + w24.Fill = false; + // Container child vbox13.Gtk.Box+BoxChild + this.chkReleaseDate = new global::Gtk.CheckButton(); + this.chkReleaseDate.CanFocus = true; + this.chkReleaseDate.Name = "chkReleaseDate"; + this.chkReleaseDate.Label = global::Mono.Unix.Catalog.GetString("Unknown or unreleased"); + this.chkReleaseDate.Active = true; + this.chkReleaseDate.DrawIndicator = true; + this.chkReleaseDate.UseUnderline = true; + this.vbox13.Add(this.chkReleaseDate); + global::Gtk.Box.BoxChild w25 = ((global::Gtk.Box.BoxChild)(this.vbox13[this.chkReleaseDate])); + w25.Position = 1; + w25.Expand = false; + w25.Fill = false; + this.hbox8.Add(this.vbox13); + global::Gtk.Box.BoxChild w26 = ((global::Gtk.Box.BoxChild)(this.hbox8[this.vbox13])); + w26.Position = 0; + w26.Expand = false; + w26.Fill = false; + // Container child hbox8.Gtk.Box+BoxChild + this.cldReleaseDate = new global::Gtk.Calendar(); + this.cldReleaseDate.Sensitive = false; + this.cldReleaseDate.CanFocus = true; + this.cldReleaseDate.Name = "cldReleaseDate"; + this.cldReleaseDate.DisplayOptions = ((global::Gtk.CalendarDisplayOptions)(35)); + this.hbox8.Add(this.cldReleaseDate); + global::Gtk.Box.BoxChild w27 = ((global::Gtk.Box.BoxChild)(this.hbox8[this.cldReleaseDate])); + w27.Position = 1; + w27.Expand = false; + w27.Fill = false; + this.vbox3.Add(this.hbox8); + global::Gtk.Box.BoxChild w28 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.hbox8])); + w28.Position = 7; + w28.Expand = false; + w28.Fill = false; + // Container child vbox3.Gtk.Box+BoxChild + this.hbox9 = new global::Gtk.HBox(); + this.hbox9.Name = "hbox9"; + this.hbox9.Spacing = 6; + // Container child hbox9.Gtk.Box+BoxChild + this.lblPartNumber = new global::Gtk.Label(); + this.lblPartNumber.Name = "lblPartNumber"; + this.lblPartNumber.LabelProp = global::Mono.Unix.Catalog.GetString("Part number"); + this.hbox9.Add(this.lblPartNumber); + global::Gtk.Box.BoxChild w29 = ((global::Gtk.Box.BoxChild)(this.hbox9[this.lblPartNumber])); + w29.Position = 0; + w29.Expand = false; + w29.Fill = false; + // Container child hbox9.Gtk.Box+BoxChild + this.txtPartNumber = new global::Gtk.Entry(); + this.txtPartNumber.CanFocus = true; + this.txtPartNumber.Name = "txtPartNumber"; + this.txtPartNumber.IsEditable = true; + this.txtPartNumber.InvisibleChar = '●'; + this.hbox9.Add(this.txtPartNumber); + global::Gtk.Box.BoxChild w30 = ((global::Gtk.Box.BoxChild)(this.hbox9[this.txtPartNumber])); + w30.Position = 1; + this.vbox3.Add(this.hbox9); + global::Gtk.Box.BoxChild w31 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.hbox9])); + w31.Position = 8; + w31.Expand = false; + w31.Fill = false; + // Container child vbox3.Gtk.Box+BoxChild + this.hbox12 = new global::Gtk.HBox(); + this.hbox12.Name = "hbox12"; + this.hbox12.Spacing = 6; + // Container child hbox12.Gtk.Box+BoxChild + this.lblSerialNumber = new global::Gtk.Label(); + this.lblSerialNumber.Name = "lblSerialNumber"; + this.lblSerialNumber.LabelProp = global::Mono.Unix.Catalog.GetString("Serial number"); + this.hbox12.Add(this.lblSerialNumber); + global::Gtk.Box.BoxChild w32 = ((global::Gtk.Box.BoxChild)(this.hbox12[this.lblSerialNumber])); + w32.Position = 0; + w32.Expand = false; + w32.Fill = false; + // Container child hbox12.Gtk.Box+BoxChild + this.txtSerialNumber = new global::Gtk.Entry(); + this.txtSerialNumber.CanFocus = true; + this.txtSerialNumber.Name = "txtSerialNumber"; + this.txtSerialNumber.IsEditable = true; + this.txtSerialNumber.InvisibleChar = '●'; + this.hbox12.Add(this.txtSerialNumber); + global::Gtk.Box.BoxChild w33 = ((global::Gtk.Box.BoxChild)(this.hbox12[this.txtSerialNumber])); + w33.Position = 1; + this.vbox3.Add(this.hbox12); + global::Gtk.Box.BoxChild w34 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.hbox12])); + w34.Position = 9; + w34.Expand = false; + w34.Fill = false; + this.notebook3.Add(this.vbox3); + // Notebook tab + this.label3 = new global::Gtk.Label(); + this.label3.Name = "label3"; + this.label3.LabelProp = global::Mono.Unix.Catalog.GetString("General"); + this.notebook3.SetTabLabel(this.vbox3, this.label3); + this.label3.ShowAll(); + // Container child notebook3.Gtk.Notebook+NotebookChild + this.vbox4 = new global::Gtk.VBox(); + this.vbox4.Name = "vbox4"; + this.vbox4.Spacing = 6; + // Container child vbox4.Gtk.Box+BoxChild + this.hbox10 = new global::Gtk.HBox(); + this.hbox10.Name = "hbox10"; + this.hbox10.Spacing = 6; + // Container child hbox10.Gtk.Box+BoxChild + this.lblNewKeyword = new global::Gtk.Label(); + this.lblNewKeyword.Name = "lblNewKeyword"; + this.lblNewKeyword.LabelProp = global::Mono.Unix.Catalog.GetString("New keyword:"); + this.hbox10.Add(this.lblNewKeyword); + global::Gtk.Box.BoxChild w36 = ((global::Gtk.Box.BoxChild)(this.hbox10[this.lblNewKeyword])); + w36.Position = 0; + w36.Expand = false; + w36.Fill = false; + // Container child hbox10.Gtk.Box+BoxChild + this.txtNewKeyword = new global::Gtk.Entry(); + this.txtNewKeyword.CanFocus = true; + this.txtNewKeyword.Name = "txtNewKeyword"; + this.txtNewKeyword.IsEditable = true; + this.txtNewKeyword.InvisibleChar = '●'; + this.hbox10.Add(this.txtNewKeyword); + global::Gtk.Box.BoxChild w37 = ((global::Gtk.Box.BoxChild)(this.hbox10[this.txtNewKeyword])); + w37.Position = 1; + // Container child hbox10.Gtk.Box+BoxChild + this.txtAddKeyword = new global::Gtk.Button(); + this.txtAddKeyword.CanFocus = true; + this.txtAddKeyword.Name = "txtAddKeyword"; + this.txtAddKeyword.UseStock = true; + this.txtAddKeyword.UseUnderline = true; + this.txtAddKeyword.Label = "gtk-add"; + this.hbox10.Add(this.txtAddKeyword); + global::Gtk.Box.BoxChild w38 = ((global::Gtk.Box.BoxChild)(this.hbox10[this.txtAddKeyword])); + w38.Position = 2; + w38.Expand = false; + w38.Fill = false; + this.vbox4.Add(this.hbox10); + global::Gtk.Box.BoxChild w39 = ((global::Gtk.Box.BoxChild)(this.vbox4[this.hbox10])); + w39.Position = 0; + w39.Expand = false; + w39.Fill = false; + // Container child vbox4.Gtk.Box+BoxChild + this.GtkScrolledWindow = new global::Gtk.ScrolledWindow(); + this.GtkScrolledWindow.Name = "GtkScrolledWindow"; + this.GtkScrolledWindow.ShadowType = ((global::Gtk.ShadowType)(1)); + // Container child GtkScrolledWindow.Gtk.Container+ContainerChild + this.treeKeywords = new global::Gtk.TreeView(); + this.treeKeywords.CanFocus = true; + this.treeKeywords.Name = "treeKeywords"; + this.GtkScrolledWindow.Add(this.treeKeywords); + this.vbox4.Add(this.GtkScrolledWindow); + global::Gtk.Box.BoxChild w41 = ((global::Gtk.Box.BoxChild)(this.vbox4[this.GtkScrolledWindow])); + w41.Position = 1; + // Container child vbox4.Gtk.Box+BoxChild + this.hbox11 = new global::Gtk.HBox(); + this.hbox11.Name = "hbox11"; + this.hbox11.Spacing = 6; + // Container child hbox11.Gtk.Box+BoxChild + this.btnRemoveKeyword = new global::Gtk.Button(); + this.btnRemoveKeyword.CanFocus = true; + this.btnRemoveKeyword.Name = "btnRemoveKeyword"; + this.btnRemoveKeyword.UseStock = true; + this.btnRemoveKeyword.UseUnderline = true; + this.btnRemoveKeyword.Label = "gtk-remove"; + this.hbox11.Add(this.btnRemoveKeyword); + global::Gtk.Box.BoxChild w42 = ((global::Gtk.Box.BoxChild)(this.hbox11[this.btnRemoveKeyword])); + w42.PackType = ((global::Gtk.PackType)(1)); + w42.Position = 0; + w42.Expand = false; + w42.Fill = false; + // Container child hbox11.Gtk.Box+BoxChild + this.btnClearKeywords = new global::Gtk.Button(); + this.btnClearKeywords.CanFocus = true; + this.btnClearKeywords.Name = "btnClearKeywords"; + this.btnClearKeywords.UseStock = true; + this.btnClearKeywords.UseUnderline = true; + this.btnClearKeywords.Label = "gtk-clear"; + this.hbox11.Add(this.btnClearKeywords); + global::Gtk.Box.BoxChild w43 = ((global::Gtk.Box.BoxChild)(this.hbox11[this.btnClearKeywords])); + w43.PackType = ((global::Gtk.PackType)(1)); + w43.Position = 1; + w43.Expand = false; + w43.Fill = false; + this.vbox4.Add(this.hbox11); + global::Gtk.Box.BoxChild w44 = ((global::Gtk.Box.BoxChild)(this.vbox4[this.hbox11])); + w44.Position = 2; + w44.Expand = false; + w44.Fill = false; + this.notebook3.Add(this.vbox4); + global::Gtk.Notebook.NotebookChild w45 = ((global::Gtk.Notebook.NotebookChild)(this.notebook3[this.vbox4])); + w45.Position = 1; + // Notebook tab + this.label9 = new global::Gtk.Label(); + this.label9.Name = "label9"; + this.label9.LabelProp = global::Mono.Unix.Catalog.GetString("Keywords"); + this.notebook3.SetTabLabel(this.vbox4, this.label9); + this.label9.ShowAll(); + // Container child notebook3.Gtk.Notebook+NotebookChild + this.vbox5 = new global::Gtk.VBox(); + this.vbox5.Name = "vbox5"; + this.vbox5.Spacing = 6; + // Container child vbox5.Gtk.Box+BoxChild + this.hbox14 = new global::Gtk.HBox(); + this.hbox14.Name = "hbox14"; + this.hbox14.Spacing = 6; + // Container child hbox14.Gtk.Box+BoxChild + this.lblNewBarcode = new global::Gtk.Label(); + this.lblNewBarcode.Name = "lblNewBarcode"; + this.lblNewBarcode.LabelProp = global::Mono.Unix.Catalog.GetString("New barcode:"); + this.hbox14.Add(this.lblNewBarcode); + global::Gtk.Box.BoxChild w46 = ((global::Gtk.Box.BoxChild)(this.hbox14[this.lblNewBarcode])); + w46.Position = 0; + w46.Expand = false; + w46.Fill = false; + // Container child hbox14.Gtk.Box+BoxChild + this.txtNewBarcode = new global::Gtk.Entry(); + this.txtNewBarcode.CanFocus = true; + this.txtNewBarcode.Name = "txtNewBarcode"; + this.txtNewBarcode.IsEditable = true; + this.txtNewBarcode.InvisibleChar = '●'; + this.hbox14.Add(this.txtNewBarcode); + global::Gtk.Box.BoxChild w47 = ((global::Gtk.Box.BoxChild)(this.hbox14[this.txtNewBarcode])); + w47.Position = 1; + // Container child hbox14.Gtk.Box+BoxChild + this.label24 = new global::Gtk.Label(); + this.label24.Name = "label24"; + this.label24.LabelProp = global::Mono.Unix.Catalog.GetString("type"); + this.hbox14.Add(this.label24); + global::Gtk.Box.BoxChild w48 = ((global::Gtk.Box.BoxChild)(this.hbox14[this.label24])); + w48.Position = 2; + w48.Expand = false; + w48.Fill = false; + // Container child hbox14.Gtk.Box+BoxChild + this.cmbBarcodes = global::Gtk.ComboBox.NewText(); + this.cmbBarcodes.Name = "cmbBarcodes"; + this.hbox14.Add(this.cmbBarcodes); + global::Gtk.Box.BoxChild w49 = ((global::Gtk.Box.BoxChild)(this.hbox14[this.cmbBarcodes])); + w49.Position = 3; + w49.Expand = false; + w49.Fill = false; + // Container child hbox14.Gtk.Box+BoxChild + this.btnAddBarcode = new global::Gtk.Button(); + this.btnAddBarcode.CanFocus = true; + this.btnAddBarcode.Name = "btnAddBarcode"; + this.btnAddBarcode.UseStock = true; + this.btnAddBarcode.UseUnderline = true; + this.btnAddBarcode.Label = "gtk-add"; + this.hbox14.Add(this.btnAddBarcode); + global::Gtk.Box.BoxChild w50 = ((global::Gtk.Box.BoxChild)(this.hbox14[this.btnAddBarcode])); + w50.Position = 4; + w50.Expand = false; + w50.Fill = false; + this.vbox5.Add(this.hbox14); + global::Gtk.Box.BoxChild w51 = ((global::Gtk.Box.BoxChild)(this.vbox5[this.hbox14])); + w51.Position = 0; + w51.Expand = false; + w51.Fill = false; + // Container child vbox5.Gtk.Box+BoxChild + this.GtkScrolledWindow1 = new global::Gtk.ScrolledWindow(); + this.GtkScrolledWindow1.Name = "GtkScrolledWindow1"; + this.GtkScrolledWindow1.ShadowType = ((global::Gtk.ShadowType)(1)); + // Container child GtkScrolledWindow1.Gtk.Container+ContainerChild + this.treeBarcodes = new global::Gtk.TreeView(); + this.treeBarcodes.CanFocus = true; + this.treeBarcodes.Name = "treeBarcodes"; + this.GtkScrolledWindow1.Add(this.treeBarcodes); + this.vbox5.Add(this.GtkScrolledWindow1); + global::Gtk.Box.BoxChild w53 = ((global::Gtk.Box.BoxChild)(this.vbox5[this.GtkScrolledWindow1])); + w53.Position = 1; + // Container child vbox5.Gtk.Box+BoxChild + this.hbox13 = new global::Gtk.HBox(); + this.hbox13.Name = "hbox13"; + this.hbox13.Spacing = 6; + // Container child hbox13.Gtk.Box+BoxChild + this.btnRemoveBarcode = new global::Gtk.Button(); + this.btnRemoveBarcode.CanFocus = true; + this.btnRemoveBarcode.Name = "btnRemoveBarcode"; + this.btnRemoveBarcode.UseStock = true; + this.btnRemoveBarcode.UseUnderline = true; + this.btnRemoveBarcode.Label = "gtk-remove"; + this.hbox13.Add(this.btnRemoveBarcode); + global::Gtk.Box.BoxChild w54 = ((global::Gtk.Box.BoxChild)(this.hbox13[this.btnRemoveBarcode])); + w54.PackType = ((global::Gtk.PackType)(1)); + w54.Position = 0; + w54.Expand = false; + w54.Fill = false; + // Container child hbox13.Gtk.Box+BoxChild + this.btnClearBarcodes = new global::Gtk.Button(); + this.btnClearBarcodes.CanFocus = true; + this.btnClearBarcodes.Name = "btnClearBarcodes"; + this.btnClearBarcodes.UseStock = true; + this.btnClearBarcodes.UseUnderline = true; + this.btnClearBarcodes.Label = "gtk-clear"; + this.hbox13.Add(this.btnClearBarcodes); + global::Gtk.Box.BoxChild w55 = ((global::Gtk.Box.BoxChild)(this.hbox13[this.btnClearBarcodes])); + w55.PackType = ((global::Gtk.PackType)(1)); + w55.Position = 1; + w55.Expand = false; + w55.Fill = false; + this.vbox5.Add(this.hbox13); + global::Gtk.Box.BoxChild w56 = ((global::Gtk.Box.BoxChild)(this.vbox5[this.hbox13])); + w56.Position = 2; + w56.Expand = false; + w56.Fill = false; + this.notebook3.Add(this.vbox5); + global::Gtk.Notebook.NotebookChild w57 = ((global::Gtk.Notebook.NotebookChild)(this.notebook3[this.vbox5])); + w57.Position = 2; + // Notebook tab + this.label15 = new global::Gtk.Label(); + this.label15.Name = "label15"; + this.label15.LabelProp = global::Mono.Unix.Catalog.GetString("Barcodes"); + this.notebook3.SetTabLabel(this.vbox5, this.label15); + this.label15.ShowAll(); + // Container child notebook3.Gtk.Notebook+NotebookChild + this.hbox15 = new global::Gtk.HBox(); + this.hbox15.Name = "hbox15"; + this.hbox15.Spacing = 6; + // Container child hbox15.Gtk.Box+BoxChild + this.vbox7 = new global::Gtk.VBox(); + this.vbox7.Name = "vbox7"; + this.vbox7.Spacing = 6; + // Container child vbox7.Gtk.Box+BoxChild + this.lblCategories = new global::Gtk.Label(); + this.lblCategories.Name = "lblCategories"; + this.lblCategories.LabelProp = global::Mono.Unix.Catalog.GetString("Categories"); + this.vbox7.Add(this.lblCategories); + global::Gtk.Box.BoxChild w58 = ((global::Gtk.Box.BoxChild)(this.vbox7[this.lblCategories])); + w58.Position = 0; + w58.Expand = false; + w58.Fill = false; + // Container child vbox7.Gtk.Box+BoxChild + this.hbox16 = new global::Gtk.HBox(); + this.hbox16.Name = "hbox16"; + this.hbox16.Spacing = 6; + // Container child hbox16.Gtk.Box+BoxChild + this.lblNewCategory = new global::Gtk.Label(); + this.lblNewCategory.Name = "lblNewCategory"; + this.lblNewCategory.LabelProp = global::Mono.Unix.Catalog.GetString("New category:"); + this.hbox16.Add(this.lblNewCategory); + global::Gtk.Box.BoxChild w59 = ((global::Gtk.Box.BoxChild)(this.hbox16[this.lblNewCategory])); + w59.Position = 0; + w59.Expand = false; + w59.Fill = false; + // Container child hbox16.Gtk.Box+BoxChild + this.txtNewCategory = new global::Gtk.Entry(); + this.txtNewCategory.CanFocus = true; + this.txtNewCategory.Name = "txtNewCategory"; + this.txtNewCategory.IsEditable = true; + this.txtNewCategory.InvisibleChar = '●'; + this.hbox16.Add(this.txtNewCategory); + global::Gtk.Box.BoxChild w60 = ((global::Gtk.Box.BoxChild)(this.hbox16[this.txtNewCategory])); + w60.Position = 1; + // Container child hbox16.Gtk.Box+BoxChild + this.btnAddCategory = new global::Gtk.Button(); + this.btnAddCategory.CanFocus = true; + this.btnAddCategory.Name = "btnAddCategory"; + this.btnAddCategory.UseStock = true; + this.btnAddCategory.UseUnderline = true; + this.btnAddCategory.Label = "gtk-add"; + this.hbox16.Add(this.btnAddCategory); + global::Gtk.Box.BoxChild w61 = ((global::Gtk.Box.BoxChild)(this.hbox16[this.btnAddCategory])); + w61.Position = 2; + w61.Expand = false; + w61.Fill = false; + this.vbox7.Add(this.hbox16); + global::Gtk.Box.BoxChild w62 = ((global::Gtk.Box.BoxChild)(this.vbox7[this.hbox16])); + w62.Position = 1; + w62.Expand = false; + w62.Fill = false; + // Container child vbox7.Gtk.Box+BoxChild + this.GtkScrolledWindow3 = new global::Gtk.ScrolledWindow(); + this.GtkScrolledWindow3.Name = "GtkScrolledWindow3"; + this.GtkScrolledWindow3.ShadowType = ((global::Gtk.ShadowType)(1)); + // Container child GtkScrolledWindow3.Gtk.Container+ContainerChild + this.treeCategories = new global::Gtk.TreeView(); + this.treeCategories.CanFocus = true; + this.treeCategories.Name = "treeCategories"; + this.GtkScrolledWindow3.Add(this.treeCategories); + this.vbox7.Add(this.GtkScrolledWindow3); + global::Gtk.Box.BoxChild w64 = ((global::Gtk.Box.BoxChild)(this.vbox7[this.GtkScrolledWindow3])); + w64.Position = 2; + // Container child vbox7.Gtk.Box+BoxChild + this.hbox19 = new global::Gtk.HBox(); + this.hbox19.Name = "hbox19"; + this.hbox19.Spacing = 6; + // Container child hbox19.Gtk.Box+BoxChild + this.btnRemoveCategory = new global::Gtk.Button(); + this.btnRemoveCategory.CanFocus = true; + this.btnRemoveCategory.Name = "btnRemoveCategory"; + this.btnRemoveCategory.UseStock = true; + this.btnRemoveCategory.UseUnderline = true; + this.btnRemoveCategory.Label = "gtk-remove"; + this.hbox19.Add(this.btnRemoveCategory); + global::Gtk.Box.BoxChild w65 = ((global::Gtk.Box.BoxChild)(this.hbox19[this.btnRemoveCategory])); + w65.PackType = ((global::Gtk.PackType)(1)); + w65.Position = 0; + w65.Expand = false; + w65.Fill = false; + // Container child hbox19.Gtk.Box+BoxChild + this.btnClearCategories = new global::Gtk.Button(); + this.btnClearCategories.CanFocus = true; + this.btnClearCategories.Name = "btnClearCategories"; + this.btnClearCategories.UseStock = true; + this.btnClearCategories.UseUnderline = true; + this.btnClearCategories.Label = "gtk-clear"; + this.hbox19.Add(this.btnClearCategories); + global::Gtk.Box.BoxChild w66 = ((global::Gtk.Box.BoxChild)(this.hbox19[this.btnClearCategories])); + w66.PackType = ((global::Gtk.PackType)(1)); + w66.Position = 1; + w66.Expand = false; + w66.Fill = false; + this.vbox7.Add(this.hbox19); + global::Gtk.Box.BoxChild w67 = ((global::Gtk.Box.BoxChild)(this.vbox7[this.hbox19])); + w67.Position = 3; + w67.Expand = false; + w67.Fill = false; + this.hbox15.Add(this.vbox7); + global::Gtk.Box.BoxChild w68 = ((global::Gtk.Box.BoxChild)(this.hbox15[this.vbox7])); + w68.Position = 0; + w68.Expand = false; + w68.Fill = false; + // Container child hbox15.Gtk.Box+BoxChild + this.vbox6 = new global::Gtk.VBox(); + this.vbox6.Name = "vbox6"; + this.vbox6.Spacing = 6; + // Container child vbox6.Gtk.Box+BoxChild + this.lblSubcategories = new global::Gtk.Label(); + this.lblSubcategories.Name = "lblSubcategories"; + this.lblSubcategories.LabelProp = global::Mono.Unix.Catalog.GetString("Subcategories"); + this.vbox6.Add(this.lblSubcategories); + global::Gtk.Box.BoxChild w69 = ((global::Gtk.Box.BoxChild)(this.vbox6[this.lblSubcategories])); + w69.Position = 0; + w69.Expand = false; + w69.Fill = false; + // Container child vbox6.Gtk.Box+BoxChild + this.hbox17 = new global::Gtk.HBox(); + this.hbox17.Name = "hbox17"; + this.hbox17.Spacing = 6; + // Container child hbox17.Gtk.Box+BoxChild + this.lblNewSubcategory = new global::Gtk.Label(); + this.lblNewSubcategory.Name = "lblNewSubcategory"; + this.lblNewSubcategory.LabelProp = global::Mono.Unix.Catalog.GetString("New subcategory:"); + this.hbox17.Add(this.lblNewSubcategory); + global::Gtk.Box.BoxChild w70 = ((global::Gtk.Box.BoxChild)(this.hbox17[this.lblNewSubcategory])); + w70.Position = 0; + w70.Expand = false; + w70.Fill = false; + // Container child hbox17.Gtk.Box+BoxChild + this.txtNewSubcategory = new global::Gtk.Entry(); + this.txtNewSubcategory.CanFocus = true; + this.txtNewSubcategory.Name = "txtNewSubcategory"; + this.txtNewSubcategory.IsEditable = true; + this.txtNewSubcategory.InvisibleChar = '●'; + this.hbox17.Add(this.txtNewSubcategory); + global::Gtk.Box.BoxChild w71 = ((global::Gtk.Box.BoxChild)(this.hbox17[this.txtNewSubcategory])); + w71.Position = 1; + // Container child hbox17.Gtk.Box+BoxChild + this.btnAddSubcategory = new global::Gtk.Button(); + this.btnAddSubcategory.CanFocus = true; + this.btnAddSubcategory.Name = "btnAddSubcategory"; + this.btnAddSubcategory.UseStock = true; + this.btnAddSubcategory.UseUnderline = true; + this.btnAddSubcategory.Label = "gtk-add"; + this.hbox17.Add(this.btnAddSubcategory); + global::Gtk.Box.BoxChild w72 = ((global::Gtk.Box.BoxChild)(this.hbox17[this.btnAddSubcategory])); + w72.Position = 2; + w72.Expand = false; + w72.Fill = false; + this.vbox6.Add(this.hbox17); + global::Gtk.Box.BoxChild w73 = ((global::Gtk.Box.BoxChild)(this.vbox6[this.hbox17])); + w73.Position = 1; + w73.Expand = false; + w73.Fill = false; + // Container child vbox6.Gtk.Box+BoxChild + this.GtkScrolledWindow2 = new global::Gtk.ScrolledWindow(); + this.GtkScrolledWindow2.Name = "GtkScrolledWindow2"; + this.GtkScrolledWindow2.ShadowType = ((global::Gtk.ShadowType)(1)); + // Container child GtkScrolledWindow2.Gtk.Container+ContainerChild + this.treeSubcategories = new global::Gtk.TreeView(); + this.treeSubcategories.CanFocus = true; + this.treeSubcategories.Name = "treeSubcategories"; + this.GtkScrolledWindow2.Add(this.treeSubcategories); + this.vbox6.Add(this.GtkScrolledWindow2); + global::Gtk.Box.BoxChild w75 = ((global::Gtk.Box.BoxChild)(this.vbox6[this.GtkScrolledWindow2])); + w75.Position = 2; + // Container child vbox6.Gtk.Box+BoxChild + this.hbox18 = new global::Gtk.HBox(); + this.hbox18.Name = "hbox18"; + this.hbox18.Spacing = 6; + // Container child hbox18.Gtk.Box+BoxChild + this.btnRemoveSubcategory = new global::Gtk.Button(); + this.btnRemoveSubcategory.CanFocus = true; + this.btnRemoveSubcategory.Name = "btnRemoveSubcategory"; + this.btnRemoveSubcategory.UseStock = true; + this.btnRemoveSubcategory.UseUnderline = true; + this.btnRemoveSubcategory.Label = "gtk-remove"; + this.hbox18.Add(this.btnRemoveSubcategory); + global::Gtk.Box.BoxChild w76 = ((global::Gtk.Box.BoxChild)(this.hbox18[this.btnRemoveSubcategory])); + w76.PackType = ((global::Gtk.PackType)(1)); + w76.Position = 0; + w76.Expand = false; + w76.Fill = false; + // Container child hbox18.Gtk.Box+BoxChild + this.btnClearSubcategories = new global::Gtk.Button(); + this.btnClearSubcategories.CanFocus = true; + this.btnClearSubcategories.Name = "btnClearSubcategories"; + this.btnClearSubcategories.UseStock = true; + this.btnClearSubcategories.UseUnderline = true; + this.btnClearSubcategories.Label = "gtk-clear"; + this.hbox18.Add(this.btnClearSubcategories); + global::Gtk.Box.BoxChild w77 = ((global::Gtk.Box.BoxChild)(this.hbox18[this.btnClearSubcategories])); + w77.PackType = ((global::Gtk.PackType)(1)); + w77.Position = 1; + w77.Expand = false; + w77.Fill = false; + this.vbox6.Add(this.hbox18); + global::Gtk.Box.BoxChild w78 = ((global::Gtk.Box.BoxChild)(this.vbox6[this.hbox18])); + w78.Position = 3; + w78.Expand = false; + w78.Fill = false; + this.hbox15.Add(this.vbox6); + global::Gtk.Box.BoxChild w79 = ((global::Gtk.Box.BoxChild)(this.hbox15[this.vbox6])); + w79.Position = 1; + w79.Expand = false; + w79.Fill = false; + this.notebook3.Add(this.hbox15); + global::Gtk.Notebook.NotebookChild w80 = ((global::Gtk.Notebook.NotebookChild)(this.notebook3[this.hbox15])); + w80.Position = 3; + w80.TabExpand = true; + // Notebook tab + this.label18 = new global::Gtk.Label(); + this.label18.Name = "label18"; + this.label18.LabelProp = global::Mono.Unix.Catalog.GetString("Categories"); + this.notebook3.SetTabLabel(this.hbox15, this.label18); + this.label18.ShowAll(); + // Container child notebook3.Gtk.Notebook+NotebookChild + this.vbox8 = new global::Gtk.VBox(); + this.vbox8.Name = "vbox8"; + this.vbox8.Spacing = 6; + // Container child vbox8.Gtk.Box+BoxChild + this.hbox21 = new global::Gtk.HBox(); + this.hbox21.Name = "hbox21"; + this.hbox21.Spacing = 6; + // Container child hbox21.Gtk.Box+BoxChild + this.lblNewLanguage = new global::Gtk.Label(); + this.lblNewLanguage.Name = "lblNewLanguage"; + this.lblNewLanguage.LabelProp = global::Mono.Unix.Catalog.GetString("New language:"); + this.hbox21.Add(this.lblNewLanguage); + global::Gtk.Box.BoxChild w81 = ((global::Gtk.Box.BoxChild)(this.hbox21[this.lblNewLanguage])); + w81.Position = 0; + w81.Expand = false; + w81.Fill = false; + // Container child hbox21.Gtk.Box+BoxChild + this.cmbLanguages = global::Gtk.ComboBox.NewText(); + this.cmbLanguages.Name = "cmbLanguages"; + this.hbox21.Add(this.cmbLanguages); + global::Gtk.Box.BoxChild w82 = ((global::Gtk.Box.BoxChild)(this.hbox21[this.cmbLanguages])); + w82.Position = 1; + w82.Expand = false; + w82.Fill = false; + // Container child hbox21.Gtk.Box+BoxChild + this.btnAddLanguages = new global::Gtk.Button(); + this.btnAddLanguages.CanFocus = true; + this.btnAddLanguages.Name = "btnAddLanguages"; + this.btnAddLanguages.UseStock = true; + this.btnAddLanguages.UseUnderline = true; + this.btnAddLanguages.Label = "gtk-add"; + this.hbox21.Add(this.btnAddLanguages); + global::Gtk.Box.BoxChild w83 = ((global::Gtk.Box.BoxChild)(this.hbox21[this.btnAddLanguages])); + w83.Position = 2; + w83.Expand = false; + w83.Fill = false; + this.vbox8.Add(this.hbox21); + global::Gtk.Box.BoxChild w84 = ((global::Gtk.Box.BoxChild)(this.vbox8[this.hbox21])); + w84.Position = 0; + w84.Expand = false; + w84.Fill = false; + // Container child vbox8.Gtk.Box+BoxChild + this.GtkScrolledWindow4 = new global::Gtk.ScrolledWindow(); + this.GtkScrolledWindow4.Name = "GtkScrolledWindow4"; + this.GtkScrolledWindow4.ShadowType = ((global::Gtk.ShadowType)(1)); + // Container child GtkScrolledWindow4.Gtk.Container+ContainerChild + this.treeLanguages = new global::Gtk.TreeView(); + this.treeLanguages.CanFocus = true; + this.treeLanguages.Name = "treeLanguages"; + this.GtkScrolledWindow4.Add(this.treeLanguages); + this.vbox8.Add(this.GtkScrolledWindow4); + global::Gtk.Box.BoxChild w86 = ((global::Gtk.Box.BoxChild)(this.vbox8[this.GtkScrolledWindow4])); + w86.Position = 1; + // Container child vbox8.Gtk.Box+BoxChild + this.hbox20 = new global::Gtk.HBox(); + this.hbox20.Name = "hbox20"; + this.hbox20.Spacing = 6; + // Container child hbox20.Gtk.Box+BoxChild + this.btnRemoveLanguage = new global::Gtk.Button(); + this.btnRemoveLanguage.CanFocus = true; + this.btnRemoveLanguage.Name = "btnRemoveLanguage"; + this.btnRemoveLanguage.UseStock = true; + this.btnRemoveLanguage.UseUnderline = true; + this.btnRemoveLanguage.Label = "gtk-remove"; + this.hbox20.Add(this.btnRemoveLanguage); + global::Gtk.Box.BoxChild w87 = ((global::Gtk.Box.BoxChild)(this.hbox20[this.btnRemoveLanguage])); + w87.PackType = ((global::Gtk.PackType)(1)); + w87.Position = 0; + w87.Expand = false; + w87.Fill = false; + // Container child hbox20.Gtk.Box+BoxChild + this.btnClearLanguages = new global::Gtk.Button(); + this.btnClearLanguages.CanFocus = true; + this.btnClearLanguages.Name = "btnClearLanguages"; + this.btnClearLanguages.UseStock = true; + this.btnClearLanguages.UseUnderline = true; + this.btnClearLanguages.Label = "gtk-clear"; + this.hbox20.Add(this.btnClearLanguages); + global::Gtk.Box.BoxChild w88 = ((global::Gtk.Box.BoxChild)(this.hbox20[this.btnClearLanguages])); + w88.PackType = ((global::Gtk.PackType)(1)); + w88.Position = 1; + w88.Expand = false; + w88.Fill = false; + this.vbox8.Add(this.hbox20); + global::Gtk.Box.BoxChild w89 = ((global::Gtk.Box.BoxChild)(this.vbox8[this.hbox20])); + w89.Position = 2; + w89.Expand = false; + w89.Fill = false; + this.notebook3.Add(this.vbox8); + global::Gtk.Notebook.NotebookChild w90 = ((global::Gtk.Notebook.NotebookChild)(this.notebook3[this.vbox8])); + w90.Position = 4; + // Notebook tab + this.label19 = new global::Gtk.Label(); + this.label19.Name = "label19"; + this.label19.LabelProp = global::Mono.Unix.Catalog.GetString("Languages"); + this.notebook3.SetTabLabel(this.vbox8, this.label19); + this.label19.ShowAll(); + // Container child notebook3.Gtk.Notebook+NotebookChild + this.vbox9 = new global::Gtk.VBox(); + this.vbox9.Name = "vbox9"; + this.vbox9.Spacing = 6; + // Container child vbox9.Gtk.Box+BoxChild + this.hbox23 = new global::Gtk.HBox(); + this.hbox23.Name = "hbox23"; + this.hbox23.Spacing = 6; + // Container child hbox23.Gtk.Box+BoxChild + this.lblNewSystem = new global::Gtk.Label(); + this.lblNewSystem.Name = "lblNewSystem"; + this.lblNewSystem.LabelProp = global::Mono.Unix.Catalog.GetString("New system:"); + this.hbox23.Add(this.lblNewSystem); + global::Gtk.Box.BoxChild w91 = ((global::Gtk.Box.BoxChild)(this.hbox23[this.lblNewSystem])); + w91.Position = 0; + w91.Expand = false; + w91.Fill = false; + // Container child hbox23.Gtk.Box+BoxChild + this.txtNewSystem = new global::Gtk.Entry(); + this.txtNewSystem.CanFocus = true; + this.txtNewSystem.Name = "txtNewSystem"; + this.txtNewSystem.IsEditable = true; + this.txtNewSystem.InvisibleChar = '●'; + this.hbox23.Add(this.txtNewSystem); + global::Gtk.Box.BoxChild w92 = ((global::Gtk.Box.BoxChild)(this.hbox23[this.txtNewSystem])); + w92.Position = 1; + // Container child hbox23.Gtk.Box+BoxChild + this.btnAddSystem = new global::Gtk.Button(); + this.btnAddSystem.CanFocus = true; + this.btnAddSystem.Name = "btnAddSystem"; + this.btnAddSystem.UseStock = true; + this.btnAddSystem.UseUnderline = true; + this.btnAddSystem.Label = "gtk-add"; + this.hbox23.Add(this.btnAddSystem); + global::Gtk.Box.BoxChild w93 = ((global::Gtk.Box.BoxChild)(this.hbox23[this.btnAddSystem])); + w93.Position = 2; + w93.Expand = false; + w93.Fill = false; + this.vbox9.Add(this.hbox23); + global::Gtk.Box.BoxChild w94 = ((global::Gtk.Box.BoxChild)(this.vbox9[this.hbox23])); + w94.Position = 0; + w94.Expand = false; + w94.Fill = false; + // Container child vbox9.Gtk.Box+BoxChild + this.GtkScrolledWindow7 = new global::Gtk.ScrolledWindow(); + this.GtkScrolledWindow7.Name = "GtkScrolledWindow7"; + this.GtkScrolledWindow7.ShadowType = ((global::Gtk.ShadowType)(1)); + // Container child GtkScrolledWindow7.Gtk.Container+ContainerChild + this.treeSystems = new global::Gtk.TreeView(); + this.treeSystems.CanFocus = true; + this.treeSystems.Name = "treeSystems"; + this.GtkScrolledWindow7.Add(this.treeSystems); + this.vbox9.Add(this.GtkScrolledWindow7); + global::Gtk.Box.BoxChild w96 = ((global::Gtk.Box.BoxChild)(this.vbox9[this.GtkScrolledWindow7])); + w96.Position = 1; + // Container child vbox9.Gtk.Box+BoxChild + this.hbox22 = new global::Gtk.HBox(); + this.hbox22.Name = "hbox22"; + this.hbox22.Spacing = 6; + // Container child hbox22.Gtk.Box+BoxChild + this.btnRemoveSystems = new global::Gtk.Button(); + this.btnRemoveSystems.CanFocus = true; + this.btnRemoveSystems.Name = "btnRemoveSystems"; + this.btnRemoveSystems.UseStock = true; + this.btnRemoveSystems.UseUnderline = true; + this.btnRemoveSystems.Label = "gtk-remove"; + this.hbox22.Add(this.btnRemoveSystems); + global::Gtk.Box.BoxChild w97 = ((global::Gtk.Box.BoxChild)(this.hbox22[this.btnRemoveSystems])); + w97.PackType = ((global::Gtk.PackType)(1)); + w97.Position = 0; + w97.Expand = false; + w97.Fill = false; + // Container child hbox22.Gtk.Box+BoxChild + this.btnClearSystems = new global::Gtk.Button(); + this.btnClearSystems.CanFocus = true; + this.btnClearSystems.Name = "btnClearSystems"; + this.btnClearSystems.UseStock = true; + this.btnClearSystems.UseUnderline = true; + this.btnClearSystems.Label = "gtk-clear"; + this.hbox22.Add(this.btnClearSystems); + global::Gtk.Box.BoxChild w98 = ((global::Gtk.Box.BoxChild)(this.hbox22[this.btnClearSystems])); + w98.PackType = ((global::Gtk.PackType)(1)); + w98.Position = 1; + w98.Expand = false; + w98.Fill = false; + this.vbox9.Add(this.hbox22); + global::Gtk.Box.BoxChild w99 = ((global::Gtk.Box.BoxChild)(this.vbox9[this.hbox22])); + w99.Position = 2; + w99.Expand = false; + w99.Fill = false; + this.notebook3.Add(this.vbox9); + global::Gtk.Notebook.NotebookChild w100 = ((global::Gtk.Notebook.NotebookChild)(this.notebook3[this.vbox9])); + w100.Position = 5; + // Notebook tab + this.label20 = new global::Gtk.Label(); + this.label20.Name = "label20"; + this.label20.LabelProp = global::Mono.Unix.Catalog.GetString("Systems"); + this.notebook3.SetTabLabel(this.vbox9, this.label20); + this.label20.ShowAll(); + // Container child notebook3.Gtk.Notebook+NotebookChild + this.vbox10 = new global::Gtk.VBox(); + this.vbox10.Name = "vbox10"; + this.vbox10.Spacing = 6; + // Container child vbox10.Gtk.Box+BoxChild + this.hbox25 = new global::Gtk.HBox(); + this.hbox25.Name = "hbox25"; + this.hbox25.Spacing = 6; + // Container child hbox25.Gtk.Box+BoxChild + this.lblNewArchitecture = new global::Gtk.Label(); + this.lblNewArchitecture.Name = "lblNewArchitecture"; + this.lblNewArchitecture.LabelProp = global::Mono.Unix.Catalog.GetString("New architectures:"); + this.hbox25.Add(this.lblNewArchitecture); + global::Gtk.Box.BoxChild w101 = ((global::Gtk.Box.BoxChild)(this.hbox25[this.lblNewArchitecture])); + w101.Position = 0; + w101.Expand = false; + w101.Fill = false; + // Container child hbox25.Gtk.Box+BoxChild + this.cmbArchitectures = global::Gtk.ComboBox.NewText(); + this.cmbArchitectures.Name = "cmbArchitectures"; + this.hbox25.Add(this.cmbArchitectures); + global::Gtk.Box.BoxChild w102 = ((global::Gtk.Box.BoxChild)(this.hbox25[this.cmbArchitectures])); + w102.Position = 1; + w102.Expand = false; + w102.Fill = false; + // Container child hbox25.Gtk.Box+BoxChild + this.btnAddArchitecture = new global::Gtk.Button(); + this.btnAddArchitecture.CanFocus = true; + this.btnAddArchitecture.Name = "btnAddArchitecture"; + this.btnAddArchitecture.UseStock = true; + this.btnAddArchitecture.UseUnderline = true; + this.btnAddArchitecture.Label = "gtk-add"; + this.hbox25.Add(this.btnAddArchitecture); + global::Gtk.Box.BoxChild w103 = ((global::Gtk.Box.BoxChild)(this.hbox25[this.btnAddArchitecture])); + w103.Position = 2; + w103.Expand = false; + w103.Fill = false; + this.vbox10.Add(this.hbox25); + global::Gtk.Box.BoxChild w104 = ((global::Gtk.Box.BoxChild)(this.vbox10[this.hbox25])); + w104.Position = 0; + w104.Expand = false; + w104.Fill = false; + // Container child vbox10.Gtk.Box+BoxChild + this.GtkScrolledWindow5 = new global::Gtk.ScrolledWindow(); + this.GtkScrolledWindow5.Name = "GtkScrolledWindow5"; + this.GtkScrolledWindow5.ShadowType = ((global::Gtk.ShadowType)(1)); + // Container child GtkScrolledWindow5.Gtk.Container+ContainerChild + this.treeArchitectures = new global::Gtk.TreeView(); + this.treeArchitectures.CanFocus = true; + this.treeArchitectures.Name = "treeArchitectures"; + this.GtkScrolledWindow5.Add(this.treeArchitectures); + this.vbox10.Add(this.GtkScrolledWindow5); + global::Gtk.Box.BoxChild w106 = ((global::Gtk.Box.BoxChild)(this.vbox10[this.GtkScrolledWindow5])); + w106.Position = 1; + // Container child vbox10.Gtk.Box+BoxChild + this.hbox24 = new global::Gtk.HBox(); + this.hbox24.Name = "hbox24"; + this.hbox24.Spacing = 6; + // Container child hbox24.Gtk.Box+BoxChild + this.btnRemoveArchitecture = new global::Gtk.Button(); + this.btnRemoveArchitecture.CanFocus = true; + this.btnRemoveArchitecture.Name = "btnRemoveArchitecture"; + this.btnRemoveArchitecture.UseStock = true; + this.btnRemoveArchitecture.UseUnderline = true; + this.btnRemoveArchitecture.Label = "gtk-remove"; + this.hbox24.Add(this.btnRemoveArchitecture); + global::Gtk.Box.BoxChild w107 = ((global::Gtk.Box.BoxChild)(this.hbox24[this.btnRemoveArchitecture])); + w107.PackType = ((global::Gtk.PackType)(1)); + w107.Position = 0; + w107.Expand = false; + w107.Fill = false; + // Container child hbox24.Gtk.Box+BoxChild + this.btnClearArchitectures = new global::Gtk.Button(); + this.btnClearArchitectures.CanFocus = true; + this.btnClearArchitectures.Name = "btnClearArchitectures"; + this.btnClearArchitectures.UseStock = true; + this.btnClearArchitectures.UseUnderline = true; + this.btnClearArchitectures.Label = "gtk-clear"; + this.hbox24.Add(this.btnClearArchitectures); + global::Gtk.Box.BoxChild w108 = ((global::Gtk.Box.BoxChild)(this.hbox24[this.btnClearArchitectures])); + w108.PackType = ((global::Gtk.PackType)(1)); + w108.Position = 1; + w108.Expand = false; + w108.Fill = false; + this.vbox10.Add(this.hbox24); + global::Gtk.Box.BoxChild w109 = ((global::Gtk.Box.BoxChild)(this.vbox10[this.hbox24])); + w109.Position = 2; + w109.Expand = false; + w109.Fill = false; + this.notebook3.Add(this.vbox10); + global::Gtk.Notebook.NotebookChild w110 = ((global::Gtk.Notebook.NotebookChild)(this.notebook3[this.vbox10])); + w110.Position = 6; + // Notebook tab + this.label21 = new global::Gtk.Label(); + this.label21.Name = "label21"; + this.label21.LabelProp = global::Mono.Unix.Catalog.GetString("Architectures"); + this.notebook3.SetTabLabel(this.vbox10, this.label21); + this.label21.ShowAll(); + // Container child notebook3.Gtk.Notebook+NotebookChild + this.vbox11 = new global::Gtk.VBox(); + this.vbox11.Name = "vbox11"; + this.vbox11.Spacing = 6; + // Container child vbox11.Gtk.Box+BoxChild + this.hbox27 = new global::Gtk.HBox(); + this.hbox27.Name = "hbox27"; + this.hbox27.Spacing = 6; + // Container child hbox27.Gtk.Box+BoxChild + this.lblNewDisc = new global::Gtk.Label(); + this.lblNewDisc.Name = "lblNewDisc"; + this.lblNewDisc.LabelProp = global::Mono.Unix.Catalog.GetString("Choose disc to add:"); + this.hbox27.Add(this.lblNewDisc); + global::Gtk.Box.BoxChild w111 = ((global::Gtk.Box.BoxChild)(this.hbox27[this.lblNewDisc])); + w111.Position = 0; + w111.Expand = false; + w111.Fill = false; + // Container child hbox27.Gtk.Box+BoxChild + this.cmbFilesForNewDisc = global::Gtk.ComboBox.NewText(); + this.cmbFilesForNewDisc.Name = "cmbFilesForNewDisc"; + this.hbox27.Add(this.cmbFilesForNewDisc); + global::Gtk.Box.BoxChild w112 = ((global::Gtk.Box.BoxChild)(this.hbox27[this.cmbFilesForNewDisc])); + w112.Position = 1; + w112.Expand = false; + w112.Fill = false; + // Container child hbox27.Gtk.Box+BoxChild + this.btnAddDisc = new global::Gtk.Button(); + this.btnAddDisc.CanFocus = true; + this.btnAddDisc.Name = "btnAddDisc"; + this.btnAddDisc.UseStock = true; + this.btnAddDisc.UseUnderline = true; + this.btnAddDisc.Label = "gtk-add"; + this.hbox27.Add(this.btnAddDisc); + global::Gtk.Box.BoxChild w113 = ((global::Gtk.Box.BoxChild)(this.hbox27[this.btnAddDisc])); + w113.Position = 2; + w113.Expand = false; + w113.Fill = false; + this.vbox11.Add(this.hbox27); + global::Gtk.Box.BoxChild w114 = ((global::Gtk.Box.BoxChild)(this.vbox11[this.hbox27])); + w114.Position = 0; + w114.Expand = false; + w114.Fill = false; + // Container child vbox11.Gtk.Box+BoxChild + this.GtkScrolledWindow6 = new global::Gtk.ScrolledWindow(); + this.GtkScrolledWindow6.Name = "GtkScrolledWindow6"; + this.GtkScrolledWindow6.ShadowType = ((global::Gtk.ShadowType)(1)); + // Container child GtkScrolledWindow6.Gtk.Container+ContainerChild + this.treeDiscs = new global::Gtk.TreeView(); + this.treeDiscs.CanFocus = true; + this.treeDiscs.Name = "treeDiscs"; + this.GtkScrolledWindow6.Add(this.treeDiscs); + this.vbox11.Add(this.GtkScrolledWindow6); + global::Gtk.Box.BoxChild w116 = ((global::Gtk.Box.BoxChild)(this.vbox11[this.GtkScrolledWindow6])); + w116.Position = 1; + // Container child vbox11.Gtk.Box+BoxChild + this.hbox26 = new global::Gtk.HBox(); + this.hbox26.Name = "hbox26"; + this.hbox26.Spacing = 6; + // Container child hbox26.Gtk.Box+BoxChild + this.btnRemoveDiscs = new global::Gtk.Button(); + this.btnRemoveDiscs.CanFocus = true; + this.btnRemoveDiscs.Name = "btnRemoveDiscs"; + this.btnRemoveDiscs.UseStock = true; + this.btnRemoveDiscs.UseUnderline = true; + this.btnRemoveDiscs.Label = "gtk-remove"; + this.hbox26.Add(this.btnRemoveDiscs); + global::Gtk.Box.BoxChild w117 = ((global::Gtk.Box.BoxChild)(this.hbox26[this.btnRemoveDiscs])); + w117.PackType = ((global::Gtk.PackType)(1)); + w117.Position = 0; + w117.Expand = false; + w117.Fill = false; + // Container child hbox26.Gtk.Box+BoxChild + this.btnClearDiscs = new global::Gtk.Button(); + this.btnClearDiscs.CanFocus = true; + this.btnClearDiscs.Name = "btnClearDiscs"; + this.btnClearDiscs.UseStock = true; + this.btnClearDiscs.UseUnderline = true; + this.btnClearDiscs.Label = "gtk-clear"; + this.hbox26.Add(this.btnClearDiscs); + global::Gtk.Box.BoxChild w118 = ((global::Gtk.Box.BoxChild)(this.hbox26[this.btnClearDiscs])); + w118.PackType = ((global::Gtk.PackType)(1)); + w118.Position = 1; + w118.Expand = false; + w118.Fill = false; + // Container child hbox26.Gtk.Box+BoxChild + this.btnStopAddDisc = new global::Gtk.Button(); + this.btnStopAddDisc.CanFocus = true; + this.btnStopAddDisc.Name = "btnStopAddDisc"; + this.btnStopAddDisc.UseStock = true; + this.btnStopAddDisc.UseUnderline = true; + this.btnStopAddDisc.Label = "gtk-stop"; + this.hbox26.Add(this.btnStopAddDisc); + global::Gtk.Box.BoxChild w119 = ((global::Gtk.Box.BoxChild)(this.hbox26[this.btnStopAddDisc])); + w119.PackType = ((global::Gtk.PackType)(1)); + w119.Position = 2; + w119.Expand = false; + w119.Fill = false; + this.vbox11.Add(this.hbox26); + global::Gtk.Box.BoxChild w120 = ((global::Gtk.Box.BoxChild)(this.vbox11[this.hbox26])); + w120.Position = 2; + w120.Expand = false; + w120.Fill = false; + // Container child vbox11.Gtk.Box+BoxChild + this.prgAddDisc = new global::Gtk.ProgressBar(); + this.prgAddDisc.Name = "prgAddDisc"; + this.vbox11.Add(this.prgAddDisc); + global::Gtk.Box.BoxChild w121 = ((global::Gtk.Box.BoxChild)(this.vbox11[this.prgAddDisc])); + w121.Position = 3; + w121.Expand = false; + w121.Fill = false; + this.notebook3.Add(this.vbox11); + global::Gtk.Notebook.NotebookChild w122 = ((global::Gtk.Notebook.NotebookChild)(this.notebook3[this.vbox11])); + w122.Position = 7; + // Notebook tab + this.label22 = new global::Gtk.Label(); + this.label22.Name = "label22"; + this.label22.LabelProp = global::Mono.Unix.Catalog.GetString("Optical discs"); + this.notebook3.SetTabLabel(this.vbox11, this.label22); + this.label22.ShowAll(); + // Container child notebook3.Gtk.Notebook+NotebookChild + this.vbox12 = new global::Gtk.VBox(); + this.vbox12.Name = "vbox12"; + this.vbox12.Spacing = 6; + // Container child vbox12.Gtk.Box+BoxChild + this.hbox29 = new global::Gtk.HBox(); + this.hbox29.Name = "hbox29"; + this.hbox29.Spacing = 6; + // Container child hbox29.Gtk.Box+BoxChild + this.lblNewDisk = new global::Gtk.Label(); + this.lblNewDisk.Name = "lblNewDisk"; + this.lblNewDisk.LabelProp = global::Mono.Unix.Catalog.GetString("Choose disk to add:"); + this.hbox29.Add(this.lblNewDisk); + global::Gtk.Box.BoxChild w123 = ((global::Gtk.Box.BoxChild)(this.hbox29[this.lblNewDisk])); + w123.Position = 0; + w123.Expand = false; + w123.Fill = false; + // Container child hbox29.Gtk.Box+BoxChild + this.cmbFilesForNewDisk = global::Gtk.ComboBox.NewText(); + this.cmbFilesForNewDisk.Name = "cmbFilesForNewDisk"; + this.hbox29.Add(this.cmbFilesForNewDisk); + global::Gtk.Box.BoxChild w124 = ((global::Gtk.Box.BoxChild)(this.hbox29[this.cmbFilesForNewDisk])); + w124.Position = 1; + w124.Expand = false; + w124.Fill = false; + // Container child hbox29.Gtk.Box+BoxChild + this.btnAddDisk = new global::Gtk.Button(); + this.btnAddDisk.CanFocus = true; + this.btnAddDisk.Name = "btnAddDisk"; + this.btnAddDisk.UseStock = true; + this.btnAddDisk.UseUnderline = true; + this.btnAddDisk.Label = "gtk-add"; + this.hbox29.Add(this.btnAddDisk); + global::Gtk.Box.BoxChild w125 = ((global::Gtk.Box.BoxChild)(this.hbox29[this.btnAddDisk])); + w125.Position = 2; + w125.Expand = false; + w125.Fill = false; + this.vbox12.Add(this.hbox29); + global::Gtk.Box.BoxChild w126 = ((global::Gtk.Box.BoxChild)(this.vbox12[this.hbox29])); + w126.Position = 0; + w126.Expand = false; + w126.Fill = false; + // Container child vbox12.Gtk.Box+BoxChild + this.GtkScrolledWindow8 = new global::Gtk.ScrolledWindow(); + this.GtkScrolledWindow8.Name = "GtkScrolledWindow8"; + this.GtkScrolledWindow8.ShadowType = ((global::Gtk.ShadowType)(1)); + // Container child GtkScrolledWindow8.Gtk.Container+ContainerChild + this.treeDisks = new global::Gtk.TreeView(); + this.treeDisks.CanFocus = true; + this.treeDisks.Name = "treeDisks"; + this.GtkScrolledWindow8.Add(this.treeDisks); + this.vbox12.Add(this.GtkScrolledWindow8); + global::Gtk.Box.BoxChild w128 = ((global::Gtk.Box.BoxChild)(this.vbox12[this.GtkScrolledWindow8])); + w128.Position = 1; + // Container child vbox12.Gtk.Box+BoxChild + this.hbox28 = new global::Gtk.HBox(); + this.hbox28.Name = "hbox28"; + this.hbox28.Spacing = 6; + // Container child hbox28.Gtk.Box+BoxChild + this.btnRemoveDisk = new global::Gtk.Button(); + this.btnRemoveDisk.CanFocus = true; + this.btnRemoveDisk.Name = "btnRemoveDisk"; + this.btnRemoveDisk.UseStock = true; + this.btnRemoveDisk.UseUnderline = true; + this.btnRemoveDisk.Label = "gtk-remove"; + this.hbox28.Add(this.btnRemoveDisk); + global::Gtk.Box.BoxChild w129 = ((global::Gtk.Box.BoxChild)(this.hbox28[this.btnRemoveDisk])); + w129.PackType = ((global::Gtk.PackType)(1)); + w129.Position = 0; + w129.Expand = false; + w129.Fill = false; + // Container child hbox28.Gtk.Box+BoxChild + this.btnClearDisks = new global::Gtk.Button(); + this.btnClearDisks.CanFocus = true; + this.btnClearDisks.Name = "btnClearDisks"; + this.btnClearDisks.UseStock = true; + this.btnClearDisks.UseUnderline = true; + this.btnClearDisks.Label = "gtk-clear"; + this.hbox28.Add(this.btnClearDisks); + global::Gtk.Box.BoxChild w130 = ((global::Gtk.Box.BoxChild)(this.hbox28[this.btnClearDisks])); + w130.PackType = ((global::Gtk.PackType)(1)); + w130.Position = 1; + w130.Expand = false; + w130.Fill = false; + // Container child hbox28.Gtk.Box+BoxChild + this.btnStopAddDisk = new global::Gtk.Button(); + this.btnStopAddDisk.CanFocus = true; + this.btnStopAddDisk.Name = "btnStopAddDisk"; + this.btnStopAddDisk.UseStock = true; + this.btnStopAddDisk.UseUnderline = true; + this.btnStopAddDisk.Label = "gtk-stop"; + this.hbox28.Add(this.btnStopAddDisk); + global::Gtk.Box.BoxChild w131 = ((global::Gtk.Box.BoxChild)(this.hbox28[this.btnStopAddDisk])); + w131.PackType = ((global::Gtk.PackType)(1)); + w131.Position = 2; + w131.Expand = false; + w131.Fill = false; + this.vbox12.Add(this.hbox28); + global::Gtk.Box.BoxChild w132 = ((global::Gtk.Box.BoxChild)(this.vbox12[this.hbox28])); + w132.Position = 2; + w132.Expand = false; + w132.Fill = false; + // Container child vbox12.Gtk.Box+BoxChild + this.prgAddDisk = new global::Gtk.ProgressBar(); + this.prgAddDisk.Name = "prgAddDisk"; + this.vbox12.Add(this.prgAddDisk); + global::Gtk.Box.BoxChild w133 = ((global::Gtk.Box.BoxChild)(this.vbox12[this.prgAddDisk])); + w133.Position = 3; + w133.Expand = false; + w133.Fill = false; + this.notebook3.Add(this.vbox12); + global::Gtk.Notebook.NotebookChild w134 = ((global::Gtk.Notebook.NotebookChild)(this.notebook3[this.vbox12])); + w134.Position = 8; + // Notebook tab + this.label32 = new global::Gtk.Label(); + this.label32.Name = "label32"; + this.label32.LabelProp = global::Mono.Unix.Catalog.GetString("Block disks"); + this.notebook3.SetTabLabel(this.vbox12, this.label32); + this.label32.ShowAll(); + w1.Add(this.notebook3); + global::Gtk.Box.BoxChild w135 = ((global::Gtk.Box.BoxChild)(w1[this.notebook3])); + w135.Position = 0; + // Internal child osrepodbmgr.dlgMetadata.ActionArea + global::Gtk.HButtonBox w136 = this.ActionArea; + w136.Name = "dialog1_ActionArea"; + w136.Spacing = 10; + w136.BorderWidth = ((uint)(5)); + w136.LayoutStyle = ((global::Gtk.ButtonBoxStyle)(4)); + // Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild + this.buttonCancel = new global::Gtk.Button(); + this.buttonCancel.CanDefault = true; + this.buttonCancel.CanFocus = true; + this.buttonCancel.Name = "buttonCancel"; + this.buttonCancel.UseStock = true; + this.buttonCancel.UseUnderline = true; + this.buttonCancel.Label = "gtk-cancel"; + this.AddActionWidget(this.buttonCancel, -6); + global::Gtk.ButtonBox.ButtonBoxChild w137 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w136[this.buttonCancel])); + w137.Expand = false; + w137.Fill = false; + // Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild + this.buttonOk = new global::Gtk.Button(); + this.buttonOk.CanDefault = true; + this.buttonOk.CanFocus = true; + this.buttonOk.Name = "buttonOk"; + this.buttonOk.UseStock = true; + this.buttonOk.UseUnderline = true; + this.buttonOk.Label = "gtk-ok"; + this.AddActionWidget(this.buttonOk, -5); + global::Gtk.ButtonBox.ButtonBoxChild w138 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w136[this.buttonOk])); + w138.Position = 1; + w138.Expand = false; + w138.Fill = false; + if((this.Child != null)) + { + this.Child.ShowAll(); + } + this.DefaultWidth = 909; + this.DefaultHeight = 533; + this.btnStopAddDisc.Hide(); + this.Show(); + this.chkBoxUnknownReleaseType.Toggled += new global::System.EventHandler(this.OnChkBoxUnknownReleaseTypeToggled); + this.chkReleaseDate.Toggled += new global::System.EventHandler(this.OnChkReleaseDateToggled); + this.txtAddKeyword.Clicked += new global::System.EventHandler(this.OnTxtAddKeywordClicked); + this.btnClearKeywords.Clicked += new global::System.EventHandler(this.OnBtnClearKeywordsClicked); + this.btnRemoveKeyword.Clicked += new global::System.EventHandler(this.OnBtnRemoveKeywordClicked); + this.btnAddBarcode.Clicked += new global::System.EventHandler(this.OnBtnAddBarcodeClicked); + this.btnClearBarcodes.Clicked += new global::System.EventHandler(this.OnBtnClearBarcodesClicked); + this.btnRemoveBarcode.Clicked += new global::System.EventHandler(this.OnBtnRemoveBarcodeClicked); + this.btnAddCategory.Clicked += new global::System.EventHandler(this.OnBtnAddCategoryClicked); + this.btnClearCategories.Clicked += new global::System.EventHandler(this.OnBtnClearCategoriesClicked); + this.btnRemoveCategory.Clicked += new global::System.EventHandler(this.OnBtnRemoveCategoryClicked); + this.btnAddSubcategory.Clicked += new global::System.EventHandler(this.OnBtnAddSubcategoryClicked); + this.btnClearSubcategories.Clicked += new global::System.EventHandler(this.OnBtnClearSubcategoriesClicked); + this.btnRemoveSubcategory.Clicked += new global::System.EventHandler(this.OnBtnRemoveSubcategoryClicked); + this.btnAddLanguages.Clicked += new global::System.EventHandler(this.OnBtnAddLanguagesClicked); + this.btnClearLanguages.Clicked += new global::System.EventHandler(this.OnBtnClearLanguagesClicked); + this.btnRemoveLanguage.Clicked += new global::System.EventHandler(this.OnBtnRemoveLanguageClicked); + this.btnAddSystem.Clicked += new global::System.EventHandler(this.OnBtnAddSystemClicked); + this.btnClearSystems.Clicked += new global::System.EventHandler(this.OnBtnClearSystemsClicked); + this.btnRemoveSystems.Clicked += new global::System.EventHandler(this.OnBtnRemoveSystemsClicked); + this.btnAddArchitecture.Clicked += new global::System.EventHandler(this.OnBtnAddArchitectureClicked); + this.btnClearArchitectures.Clicked += new global::System.EventHandler(this.OnBtnClearArchitecturesClicked); + this.btnRemoveArchitecture.Clicked += new global::System.EventHandler(this.OnBtnRemoveArchitectureClicked); + this.btnAddDisc.Clicked += new global::System.EventHandler(this.OnBtnAddDiscClicked); + this.btnStopAddDisc.Clicked += new global::System.EventHandler(this.OnBtnStopAddDiscClicked); + this.btnClearDiscs.Clicked += new global::System.EventHandler(this.OnBtnClearDiscsClicked); + this.btnRemoveDiscs.Clicked += new global::System.EventHandler(this.OnBtnRemoveDiscsClicked); + this.btnAddDisk.Clicked += new global::System.EventHandler(this.OnBtnAddDiskClicked); + this.btnStopAddDisk.Clicked += new global::System.EventHandler(this.OnBtnStopAddDiskClicked); + this.btnClearDisks.Clicked += new global::System.EventHandler(this.OnBtnClearDisksClicked); + this.btnRemoveDisk.Clicked += new global::System.EventHandler(this.OnBtnRemoveDiskClicked); + this.buttonOk.Clicked += new global::System.EventHandler(this.OnButtonOkClicked); + } + } +} diff --git a/osrepodbmgr/osrepodbmgr.csproj b/osrepodbmgr/osrepodbmgr.csproj index 69259ed..08e31d1 100644 --- a/osrepodbmgr/osrepodbmgr.csproj +++ b/osrepodbmgr/osrepodbmgr.csproj @@ -90,6 +90,9 @@ cicm.cs + + +