mirror of
https://github.com/PredatH0r/ChanSort.git
synced 2026-02-26 08:10:43 +01:00
- added support for Orsay .zip files which contain a Clone/map-AirD and other files similar to Samsung .scm
- Reference list dialog is now resizable - Grundig dvb\*_config.xml lists are now separated into TV and Radio lists with individual ordering - ability to load Grundig dvb\*\_config.xml files containing invalid XML characters (e.g. 0x10)
This commit is contained in:
@@ -166,10 +166,10 @@ namespace ChanSort.Api
|
||||
ZipFile.ExtractToDirectory(this.FileName, this.TempPath);
|
||||
}
|
||||
|
||||
protected void ZipToOutputFile(string tvOutputFile)
|
||||
protected void ZipToOutputFile(string tvOutputFile, bool compress = true)
|
||||
{
|
||||
File.Delete(tvOutputFile);
|
||||
ZipFile.CreateFromDirectory(this.TempPath, tvOutputFile);
|
||||
ZipFile.CreateFromDirectory(this.TempPath, tvOutputFile, compress ? CompressionLevel.Optimal : CompressionLevel.NoCompression, false);
|
||||
this.FileName = tvOutputFile;
|
||||
}
|
||||
#endregion
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
@@ -11,9 +12,12 @@ namespace ChanSort.Loader.Grundig
|
||||
{
|
||||
class Serializer : SerializerBase
|
||||
{
|
||||
private readonly ChannelList terrChannels = new ChannelList(SignalSource.Antenna, "Antenna");
|
||||
private readonly ChannelList cableChannels = new ChannelList(SignalSource.Cable, "Cable");
|
||||
private readonly ChannelList satChannels = new ChannelList(SignalSource.Sat, "Satellite");
|
||||
private readonly ChannelList terrChannels = new ChannelList(SignalSource.Antenna | SignalSource.TvAndData, "Antenna TV");
|
||||
private readonly ChannelList cableChannels = new ChannelList(SignalSource.Cable | SignalSource.TvAndData, "Cable TV");
|
||||
private readonly ChannelList satChannels = new ChannelList(SignalSource.Sat | SignalSource.TvAndData, "Satellite TV");
|
||||
private readonly ChannelList terrChannelsRadio = new ChannelList(SignalSource.Antenna | SignalSource.Radio, "Antenna Radio");
|
||||
private readonly ChannelList cableChannelsRadio = new ChannelList(SignalSource.Cable | SignalSource.Radio, "Cable Radio");
|
||||
private readonly ChannelList satChannelsRadio = new ChannelList(SignalSource.Sat | SignalSource.Radio, "Satellite Radio");
|
||||
|
||||
private readonly List<FileData> fileDataList = new List<FileData>();
|
||||
private readonly StringBuilder logMessages = new StringBuilder();
|
||||
@@ -37,6 +41,9 @@ namespace ChanSort.Loader.Grundig
|
||||
this.DataRoot.AddChannelList(this.terrChannels);
|
||||
this.DataRoot.AddChannelList(this.cableChannels);
|
||||
this.DataRoot.AddChannelList(this.satChannels);
|
||||
this.DataRoot.AddChannelList(this.terrChannelsRadio);
|
||||
this.DataRoot.AddChannelList(this.cableChannelsRadio);
|
||||
this.DataRoot.AddChannelList(this.satChannelsRadio);
|
||||
|
||||
foreach (var list in this.DataRoot.ChannelLists)
|
||||
{
|
||||
@@ -49,6 +56,8 @@ namespace ChanSort.Loader.Grundig
|
||||
|
||||
this.terrChannels.VisibleColumnFieldNames.Add(nameof(ChannelInfo.Source));
|
||||
this.cableChannels.VisibleColumnFieldNames.Add(nameof(ChannelInfo.Source));
|
||||
this.terrChannelsRadio.VisibleColumnFieldNames.Add(nameof(ChannelInfo.Source));
|
||||
this.cableChannelsRadio.VisibleColumnFieldNames.Add(nameof(ChannelInfo.Source));
|
||||
}
|
||||
#endregion
|
||||
|
||||
@@ -87,6 +96,18 @@ namespace ChanSort.Loader.Grundig
|
||||
fileData.path = fileName;
|
||||
fileData.hasBom = content.Length >= 3 && content[0] == 0xef && content[1] == 0xbb && content[2] == 0xbf;
|
||||
var textContent = Encoding.UTF8.GetString(content, fileData.hasBom ? 3 : 0, content.Length - (fileData.hasBom ? 3 : 0));
|
||||
|
||||
// some files contain unescaped characters like \x10, which causes XML parsing to fail
|
||||
var sb = new StringBuilder(textContent.Length);
|
||||
foreach (var ch in textContent)
|
||||
{
|
||||
if (ch < 32 && ch != '\n' && ch != '\r' && ch != '\t')
|
||||
sb.Append($"&#x{(int)ch:x2};");
|
||||
else
|
||||
sb.Append(ch);
|
||||
}
|
||||
textContent = sb.ToString();
|
||||
|
||||
fileData.newline = textContent.Contains("\r\n") ? "\r\n" : "\n";
|
||||
fileData.indent = textContent.Contains(" <");
|
||||
fileData.doc = new XmlDocument();
|
||||
@@ -217,7 +238,7 @@ namespace ChanSort.Loader.Grundig
|
||||
c.Source = type;
|
||||
c.Provider = provider;
|
||||
|
||||
var list = this.DataRoot.GetChannelList(src);
|
||||
var list = this.DataRoot.GetChannelList(c.SignalSource);
|
||||
this.DataRoot.AddChannel(list, c);
|
||||
++chanId;
|
||||
}
|
||||
@@ -241,6 +262,8 @@ namespace ChanSort.Loader.Grundig
|
||||
c.ServiceId = Int32.Parse(service.Attributes["sid"].InnerText);
|
||||
c.Encrypted = service.Attributes["ca"].InnerText == "1";
|
||||
c.IsDeleted = service.Attributes["del"].InnerText == "1";
|
||||
var typ = service.Attributes["typ"].InnerText;
|
||||
c.SignalSource |= typ == "1" ? SignalSource.Tv : typ == "2" ? SignalSource.Radio : SignalSource.Data;
|
||||
return c;
|
||||
}
|
||||
|
||||
@@ -314,7 +337,27 @@ namespace ChanSort.Loader.Grundig
|
||||
var xml = sw.ToString();
|
||||
|
||||
if (!file.indent)
|
||||
xml = xml.Replace("\" />", "\"/>");
|
||||
{
|
||||
xml = xml.Replace(" />", "/>");
|
||||
|
||||
// replace escaped characters with unescaped ones (invalid XML, but that's how Grundig does it)
|
||||
var sb = new StringBuilder(xml.Length);
|
||||
for (int i = 0, c = xml.Length - 5; i < c; i++)
|
||||
{
|
||||
if (xml[i] == '&' && xml[i + 1] == '#' && xml[i + 2] == 'x' && xml[i + 5] == ';')
|
||||
{
|
||||
sb.Append((char)int.Parse(xml.Substring(i + 3, 2), NumberStyles.HexNumber));
|
||||
i += 5;
|
||||
}
|
||||
else
|
||||
sb.Append(xml[i]);
|
||||
}
|
||||
|
||||
var trail = Math.Min(5, xml.Length);
|
||||
sb.Append(xml, xml.Length - trail, trail);
|
||||
xml = sb.ToString();
|
||||
}
|
||||
|
||||
var enc = new UTF8Encoding(file.hasBom, false);
|
||||
File.WriteAllText(file.path, xml, enc);
|
||||
}
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Xml;
|
||||
using System.Xml.Schema;
|
||||
using ChanSort.Api;
|
||||
@@ -13,11 +11,20 @@ namespace ChanSort.Loader.Panasonic
|
||||
{
|
||||
/*
|
||||
|
||||
Panasonic Android TVs (2020 and later) use the same unstandardized compressed .bin binary format as many Philips lists and some Sharp TVs.
|
||||
Additionally it exports a .xml file with very limited information that only includes channel numbers and channel names truncated at 8 characters.
|
||||
MediaTek based Android TVs (e.g. Panasonic 2020 and later, Nokia, ...) use the same unstandardized compressed .bin binary format as many
|
||||
Philips lists and some Sharp TVs.
|
||||
Additionally it exports a .xml file with very limited information that only includes channel numbers and channel names truncated at 8 bytes.
|
||||
|
||||
This truncation makes it impossible for a user to distinguish between channels that have longer names like "Sky Bundesliga ...", therefore
|
||||
this loader adds the "SvlId" as the ShortName. This SvlId is probably a "service list id" and refers to a a data record inside the .bin file.
|
||||
The truncation can also happen in the middle of a multi-type UTF-8 character sequence. Non-latin characters, including German umlauts or all
|
||||
cyrillic characters require 2 bytes/character, effectively reducing the channel name length to 4-8 characters.
|
||||
|
||||
Another severe issue with these files is that XML special characters in channel names are not escaped properly. Some preprocessing is required
|
||||
in order to guess if a "&" is meant as an & data value or an XML attribute. It's likely that < and > inside channel names have the same problem.
|
||||
|
||||
When the TV has channels from various sources, it is not possible to determine to which internal source a channel belongs, making sorting of
|
||||
sub-lists more or less impossible.
|
||||
|
||||
*/
|
||||
class XmlSerializer : SerializerBase
|
||||
|
||||
@@ -88,6 +88,7 @@
|
||||
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.IO.Compression" />
|
||||
<Reference Include="System.IO.Compression.FileSystem" />
|
||||
<Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System.IO;
|
||||
using System.IO.Compression;
|
||||
using ChanSort.Api;
|
||||
using ChanSort.Loader.Samsung.Scm;
|
||||
using ChanSort.Loader.Samsung.Zip;
|
||||
@@ -17,7 +18,20 @@ namespace ChanSort.Loader.Samsung
|
||||
if (ext == ".scm")
|
||||
return new ScmSerializer(inputFile);
|
||||
if (ext == ".zip")
|
||||
{
|
||||
// some Orsay TVs export a .zip file containing a Clone folder, which holds the same files as an .scm archive has in its root folder
|
||||
ZipArchiveEntry zipArchiveEntry = null;
|
||||
using (var stream = new FileStream(inputFile, FileMode.Open))
|
||||
{
|
||||
var zip = new ZipArchive(stream);
|
||||
zipArchiveEntry = zip.GetEntry("Clone/map-AirD");
|
||||
}
|
||||
if (zipArchiveEntry != null)
|
||||
return new ScmSerializer(inputFile, "Clone");
|
||||
|
||||
return new DbSerializer(inputFile);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,7 +38,8 @@ namespace ChanSort.Loader.Samsung.Scm
|
||||
private readonly Dictionary<int, decimal> avbcFrequency = new Dictionary<int, decimal>();
|
||||
private readonly Dictionary<int, decimal> dvbcFrequency = new Dictionary<int, decimal>();
|
||||
private readonly Dictionary<int, decimal> dvbtFrequency = new Dictionary<int, decimal>();
|
||||
|
||||
|
||||
private readonly string baseFolder;
|
||||
private byte[] avbtFileContent;
|
||||
private byte[] avbcFileContent;
|
||||
private byte[] avbxFileContent;
|
||||
@@ -57,8 +58,9 @@ namespace ChanSort.Loader.Samsung.Scm
|
||||
private Dictionary<int, string> serviceProviderNames;
|
||||
|
||||
#region ctor()
|
||||
public ScmSerializer(string inputFile) : base(inputFile)
|
||||
public ScmSerializer(string inputFile, string baseFolder = "") : base(inputFile)
|
||||
{
|
||||
this.baseFolder = baseFolder;
|
||||
this.ReadConfigurationFromIniFile();
|
||||
this.Features.ChannelNameEdit = ChannelNameEditMode.All;
|
||||
this.Features.DeleteMode = DeleteMode.FlagWithPrNr;
|
||||
@@ -113,27 +115,28 @@ namespace ChanSort.Loader.Samsung.Scm
|
||||
Features.FavoritesMode = c.SortedFavorites == FavoritesIndexMode.IndividuallySorted ? FavoritesMode.OrderedPerSource : FavoritesMode.Flags;
|
||||
Features.MaxFavoriteLists = c.numFavorites;
|
||||
|
||||
ReadAnalogFineTuning(this.TempPath);
|
||||
ReadAnalogChannels(this.TempPath, "map-AirA", this.avbtChannels, out this.avbtFileContent, this.avbtFrequency);
|
||||
ReadAnalogChannels(this.TempPath, "map-CableA", this.avbcChannels, out this.avbcFileContent, this.avbcFrequency);
|
||||
ReadAnalogChannels(this.TempPath, "map-AirCableMixedA", this.avbxChannels, out this.avbxFileContent, this.avbcFrequency);
|
||||
ReadDvbTransponderFrequenciesFromPtc(this.TempPath, "PTCAIR", this.dvbtFrequency);
|
||||
ReadDvbServiceProviders(this.TempPath);
|
||||
ReadDvbctChannels(this.TempPath, "map-AirD", this.dvbtChannels, out this.dvbtFileContent, this.dvbtFrequency);
|
||||
ReadDvbTransponderFrequenciesFromPtc(this.TempPath, "PTCCABLE", this.dvbcFrequency);
|
||||
ReadDvbctChannels(this.TempPath, "map-CableD", this.dvbcChannels, out this.dvbcFileContent, this.dvbcFrequency);
|
||||
ReadDvbctChannels(this.TempPath, "map-AirCableMixedD", this.dvbxChannels, out this.dvbxFileContent, this.dvbcFrequency);
|
||||
ReadDvbctChannels(this.TempPath, "map-CablePrime_D", this.primeChannels, out this.primeFileContent, this.dvbcFrequency);
|
||||
ReadDvbctChannels(this.TempPath, "map-FreesatD", this.freesatChannels, out this.freesatFileContent, this.dvbcFrequency);
|
||||
ReadDvbctChannels(this.TempPath, "map-TivusatD", this.tivusatChannels, out this.tivusatFileContent, this.dvbcFrequency);
|
||||
ReadDvbctChannels(this.TempPath, "map-CanalDigitalSatD", this.canalDigitalChannels, out this.canalDigitalFileContent, this.dvbcFrequency);
|
||||
ReadDvbctChannels(this.TempPath, "map-DigitalPlusD", this.digitalPlusChannels, out this.digitalPlusFileContent, this.dvbcFrequency);
|
||||
ReadSatellites(this.TempPath);
|
||||
ReadTransponder(this.TempPath, "UserTransponderDataBase.dat"); // read user data first so it has priority over overridden default transponsers
|
||||
ReadTransponder(this.TempPath, "TransponderDataBase.dat");
|
||||
ReadDvbsChannels(this.TempPath, "map-SateD", this.dvbsChannels, out this.dvbsFileContent, c.dvbsChannelLength);
|
||||
ReadDvbsChannels(this.TempPath, "map-CyfraPlusD", this.cyfraPlusChannels, out this.cyfraPlusFileContent, c.cyfraPlusChannelSize);
|
||||
ReadAstraHdPlusChannels(this.TempPath);
|
||||
var dataFolder = Path.Combine(this.TempPath, this.baseFolder);
|
||||
ReadAnalogFineTuning(dataFolder);
|
||||
ReadAnalogChannels(dataFolder, "map-AirA", this.avbtChannels, out this.avbtFileContent, this.avbtFrequency);
|
||||
ReadAnalogChannels(dataFolder, "map-CableA", this.avbcChannels, out this.avbcFileContent, this.avbcFrequency);
|
||||
ReadAnalogChannels(dataFolder, "map-AirCableMixedA", this.avbxChannels, out this.avbxFileContent, this.avbcFrequency);
|
||||
ReadDvbTransponderFrequenciesFromPtc(dataFolder, "PTCAIR", this.dvbtFrequency);
|
||||
ReadDvbServiceProviders(dataFolder);
|
||||
ReadDvbctChannels(dataFolder, "map-AirD", this.dvbtChannels, out this.dvbtFileContent, this.dvbtFrequency);
|
||||
ReadDvbTransponderFrequenciesFromPtc(dataFolder, "PTCCABLE", this.dvbcFrequency);
|
||||
ReadDvbctChannels(dataFolder, "map-CableD", this.dvbcChannels, out this.dvbcFileContent, this.dvbcFrequency);
|
||||
ReadDvbctChannels(dataFolder, "map-AirCableMixedD", this.dvbxChannels, out this.dvbxFileContent, this.dvbcFrequency);
|
||||
ReadDvbctChannels(dataFolder, "map-CablePrime_D", this.primeChannels, out this.primeFileContent, this.dvbcFrequency);
|
||||
ReadDvbctChannels(dataFolder, "map-FreesatD", this.freesatChannels, out this.freesatFileContent, this.dvbcFrequency);
|
||||
ReadDvbctChannels(dataFolder, "map-TivusatD", this.tivusatChannels, out this.tivusatFileContent, this.dvbcFrequency);
|
||||
ReadDvbctChannels(dataFolder, "map-CanalDigitalSatD", this.canalDigitalChannels, out this.canalDigitalFileContent, this.dvbcFrequency);
|
||||
ReadDvbctChannels(dataFolder, "map-DigitalPlusD", this.digitalPlusChannels, out this.digitalPlusFileContent, this.dvbcFrequency);
|
||||
ReadSatellites(dataFolder);
|
||||
ReadTransponder(dataFolder, "UserTransponderDataBase.dat"); // read user data first so it has priority over overridden default transponsers
|
||||
ReadTransponder(dataFolder, "TransponderDataBase.dat");
|
||||
ReadDvbsChannels(dataFolder, "map-SateD", this.dvbsChannels, out this.dvbsFileContent, c.dvbsChannelLength);
|
||||
ReadDvbsChannels(dataFolder, "map-CyfraPlusD", this.cyfraPlusChannels, out this.cyfraPlusFileContent, c.cyfraPlusChannelSize);
|
||||
ReadAstraHdPlusChannels(dataFolder);
|
||||
|
||||
|
||||
foreach (var list in this.DataRoot.ChannelLists)
|
||||
@@ -164,28 +167,42 @@ namespace ChanSort.Loader.Samsung.Scm
|
||||
#region DetectModelFromFileName()
|
||||
private bool DetectModelFromFileName()
|
||||
{
|
||||
string file = Path.GetFileName(this.FileName)??"";
|
||||
System.Text.RegularExpressions.Regex regex =
|
||||
new System.Text.RegularExpressions.Regex("channel_list_([A-Z]{2}[0-9]{2}|BD-)([A-Z])[0-9A-Z]+_([0-9]{4}).*\\.scm");
|
||||
var match = regex.Match(file);
|
||||
if (match.Success)
|
||||
string series = null;
|
||||
|
||||
// the known Orsay .zip files contain the same file format as the .scm E/F series
|
||||
if (Path.GetExtension(this.FileName).ToLower() == ".zip")
|
||||
series = "E";
|
||||
else
|
||||
{
|
||||
string series;
|
||||
switch (match.Groups[3].Value)
|
||||
// for Samsung .scm files the number in the file name is an indicator for the firmware/file format version
|
||||
string file = Path.GetFileName(this.FileName)??"";
|
||||
System.Text.RegularExpressions.Regex regex =
|
||||
new System.Text.RegularExpressions.Regex("channel_list_([A-Z]{2}[0-9]{2}|BD-)([A-Z])[0-9A-Z]+_([0-9]{4}).*\\.scm");
|
||||
var match = regex.Match(file);
|
||||
if (match.Success)
|
||||
{
|
||||
case "1001": series = "C"; break;
|
||||
case "1101": series = "D"; break;
|
||||
case "1201":
|
||||
//var letter = match.Groups[2].Value;
|
||||
// E, F, H and some J models use same file format
|
||||
series = "E";
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
switch (match.Groups[3].Value)
|
||||
{
|
||||
case "1001":
|
||||
series = "C";
|
||||
break;
|
||||
case "1101":
|
||||
series = "D";
|
||||
break;
|
||||
case "1201":
|
||||
//var letter = match.Groups[2].Value;
|
||||
// E, F, H and some J models use same file format
|
||||
series = "E";
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (this.modelConstants.TryGetValue("Series:" + series, out this.c))
|
||||
return true;
|
||||
}
|
||||
|
||||
if (series != null && this.modelConstants.TryGetValue("Series:" + series, out this.c))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
#endregion
|
||||
@@ -638,7 +655,7 @@ namespace ChanSort.Loader.Samsung.Scm
|
||||
#region Save()
|
||||
public override void Save(string tvOutputFile)
|
||||
{
|
||||
string zip = this.TempPath;
|
||||
var zip = Path.Combine(this.TempPath, this.baseFolder);
|
||||
this.SaveChannels(zip, "map-AirA", this.avbtChannels, this.avbtFileContent);
|
||||
this.SaveChannels(zip, "map-CableA", this.avbcChannels, this.avbcFileContent);
|
||||
this.SaveChannels(zip, "map-AirCableMixedA", this.avbxChannels, this.avbxFileContent);
|
||||
@@ -653,7 +670,7 @@ namespace ChanSort.Loader.Samsung.Scm
|
||||
this.SaveChannels(zip, "map-CanalDigitalSatD", this.canalDigitalChannels, this.canalDigitalFileContent);
|
||||
this.SaveChannels(zip, "map-DigitalPlusD", this.digitalPlusChannels, this.digitalPlusFileContent);
|
||||
this.SaveChannels(zip, "map-CyfraPlusD", this.cyfraPlusChannels, this.cyfraPlusFileContent);
|
||||
this.ZipToOutputFile(tvOutputFile);
|
||||
this.ZipToOutputFile(tvOutputFile, false);
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
DevExpress.XtraEditors.ButtonEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
DevExpress.XtraBars.BarManager, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
DevExpress.XtraEditors.ButtonEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
DevExpress.XtraEditors.PictureEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
DevExpress.XtraEditors.Repository.RepositoryItemTextEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
|
||||
33
source/ChanSort/ReferenceListForm.Designer.cs
generated
33
source/ChanSort/ReferenceListForm.Designer.cs
generated
@@ -36,6 +36,7 @@
|
||||
this.labelControl6 = new DevExpress.XtraEditors.LabelControl();
|
||||
this.comboPrNr = new DevExpress.XtraEditors.ComboBoxEdit();
|
||||
this.grpManual = new DevExpress.XtraEditors.GroupControl();
|
||||
this.cbData = new DevExpress.XtraEditors.CheckEdit();
|
||||
this.cbConsecutive = new DevExpress.XtraEditors.CheckEdit();
|
||||
this.cbIp = new DevExpress.XtraEditors.CheckEdit();
|
||||
this.cbSat = new DevExpress.XtraEditors.CheckEdit();
|
||||
@@ -56,7 +57,7 @@
|
||||
this.groupControl2 = new DevExpress.XtraEditors.GroupControl();
|
||||
this.labelControl10 = new DevExpress.XtraEditors.LabelControl();
|
||||
this.labelControl8 = new DevExpress.XtraEditors.LabelControl();
|
||||
this.cbData = new DevExpress.XtraEditors.CheckEdit();
|
||||
this.xtraScrollableControl1 = new DevExpress.XtraEditors.XtraScrollableControl();
|
||||
((System.ComponentModel.ISupportInitialize)(this.edFile.Properties)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.rbAuto.Properties)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.rbManual.Properties)).BeginInit();
|
||||
@@ -67,6 +68,7 @@
|
||||
((System.ComponentModel.ISupportInitialize)(this.comboPrNr.Properties)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.grpManual)).BeginInit();
|
||||
this.grpManual.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.cbData.Properties)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.cbConsecutive.Properties)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.cbIp.Properties)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.cbSat.Properties)).BeginInit();
|
||||
@@ -78,7 +80,7 @@
|
||||
this.groupControl1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.groupControl2)).BeginInit();
|
||||
this.groupControl2.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.cbData.Properties)).BeginInit();
|
||||
this.xtraScrollableControl1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// labelControl1
|
||||
@@ -222,6 +224,14 @@
|
||||
this.grpManual.Name = "grpManual";
|
||||
this.grpManual.ShowCaption = false;
|
||||
//
|
||||
// cbData
|
||||
//
|
||||
resources.ApplyResources(this.cbData, "cbData");
|
||||
this.cbData.Name = "cbData";
|
||||
this.cbData.Properties.AutoWidth = true;
|
||||
this.cbData.Properties.Caption = resources.GetString("cbData.Properties.Caption");
|
||||
this.cbData.TabStop = false;
|
||||
//
|
||||
// cbConsecutive
|
||||
//
|
||||
resources.ApplyResources(this.cbConsecutive, "cbConsecutive");
|
||||
@@ -361,24 +371,21 @@
|
||||
resources.ApplyResources(this.labelControl8, "labelControl8");
|
||||
this.labelControl8.Name = "labelControl8";
|
||||
//
|
||||
// cbData
|
||||
// xtraScrollableControl1
|
||||
//
|
||||
resources.ApplyResources(this.cbData, "cbData");
|
||||
this.cbData.Name = "cbData";
|
||||
this.cbData.Properties.AutoWidth = true;
|
||||
this.cbData.Properties.Caption = resources.GetString("checkEdit1.Properties.Caption");
|
||||
this.cbData.TabStop = false;
|
||||
resources.ApplyResources(this.xtraScrollableControl1, "xtraScrollableControl1");
|
||||
this.xtraScrollableControl1.Controls.Add(this.groupControl1);
|
||||
this.xtraScrollableControl1.Controls.Add(this.groupControl2);
|
||||
this.xtraScrollableControl1.Name = "xtraScrollableControl1";
|
||||
//
|
||||
// ReferenceListForm
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.CancelButton = this.btnClose;
|
||||
this.Controls.Add(this.groupControl2);
|
||||
this.Controls.Add(this.groupControl1);
|
||||
this.Controls.Add(this.xtraScrollableControl1);
|
||||
this.Controls.Add(this.btnClose);
|
||||
this.Controls.Add(this.btnOk);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "ReferenceListForm";
|
||||
@@ -393,6 +400,7 @@
|
||||
((System.ComponentModel.ISupportInitialize)(this.grpManual)).EndInit();
|
||||
this.grpManual.ResumeLayout(false);
|
||||
this.grpManual.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.cbData.Properties)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.cbConsecutive.Properties)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.cbIp.Properties)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.cbSat.Properties)).EndInit();
|
||||
@@ -406,7 +414,7 @@
|
||||
((System.ComponentModel.ISupportInitialize)(this.groupControl2)).EndInit();
|
||||
this.groupControl2.ResumeLayout(false);
|
||||
this.groupControl2.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.cbData.Properties)).EndInit();
|
||||
this.xtraScrollableControl1.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
@@ -449,5 +457,6 @@
|
||||
private DevExpress.XtraEditors.HyperlinkLabelControl linkWiki;
|
||||
private DevExpress.XtraEditors.CheckEdit cbConsecutive;
|
||||
private DevExpress.XtraEditors.CheckEdit cbData;
|
||||
private DevExpress.XtraEditors.XtraScrollableControl xtraScrollableControl1;
|
||||
}
|
||||
}
|
||||
@@ -159,7 +159,6 @@
|
||||
</data>
|
||||
<data name="edFile.Properties.Buttons1" xml:space="preserve">
|
||||
<value />
|
||||
<comment>@Invariant</comment>
|
||||
</data>
|
||||
<data name="edFile.Properties.Buttons2" type="System.Int32, mscorlib">
|
||||
<value>-1</value>
|
||||
@@ -243,7 +242,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
|
||||
<value>Automatically reorder all lists in the TV file</value>
|
||||
</data>
|
||||
<data name="rbAuto.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>221, 19</value>
|
||||
<value>222, 20</value>
|
||||
</data>
|
||||
<data name="rbAuto.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
@@ -270,7 +269,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
|
||||
<value>Advanced reordering</value>
|
||||
</data>
|
||||
<data name="rbManual.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>123, 19</value>
|
||||
<value>124, 20</value>
|
||||
</data>
|
||||
<data name="rbManual.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>2</value>
|
||||
@@ -390,7 +389,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
|
||||
<value>TV</value>
|
||||
</data>
|
||||
<data name="cbTv.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>34, 19</value>
|
||||
<value>33, 18</value>
|
||||
</data>
|
||||
<data name="cbTv.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>15</value>
|
||||
@@ -414,7 +413,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
|
||||
<value>Radio</value>
|
||||
</data>
|
||||
<data name="cbRadio.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>49, 19</value>
|
||||
<value>48, 18</value>
|
||||
</data>
|
||||
<data name="cbRadio.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>16</value>
|
||||
@@ -484,7 +483,6 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
|
||||
</data>
|
||||
<data name="comboPrNr.EditValue" xml:space="preserve">
|
||||
<value>1</value>
|
||||
<comment>@Invariant</comment>
|
||||
</data>
|
||||
<data name="comboPrNr.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>123, 134</value>
|
||||
@@ -494,31 +492,24 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
|
||||
</data>
|
||||
<data name="comboPrNr.Properties.Items" xml:space="preserve">
|
||||
<value>1</value>
|
||||
<comment>@Invariant</comment>
|
||||
</data>
|
||||
<data name="comboPrNr.Properties.Items1" xml:space="preserve">
|
||||
<value>100</value>
|
||||
<comment>@Invariant</comment>
|
||||
</data>
|
||||
<data name="comboPrNr.Properties.Items2" xml:space="preserve">
|
||||
<value>500</value>
|
||||
<comment>@Invariant</comment>
|
||||
</data>
|
||||
<data name="comboPrNr.Properties.Items3" xml:space="preserve">
|
||||
<value>1000</value>
|
||||
<comment>@Invariant</comment>
|
||||
</data>
|
||||
<data name="comboPrNr.Properties.Items4" xml:space="preserve">
|
||||
<value>2000</value>
|
||||
<comment>@Invariant</comment>
|
||||
</data>
|
||||
<data name="comboPrNr.Properties.Items5" xml:space="preserve">
|
||||
<value>5000</value>
|
||||
<comment>@Invariant</comment>
|
||||
</data>
|
||||
<data name="comboPrNr.Properties.Items6" xml:space="preserve">
|
||||
<value>7000</value>
|
||||
<comment>@Invariant</comment>
|
||||
</data>
|
||||
<data name="comboPrNr.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>140, 20</value>
|
||||
@@ -544,11 +535,11 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
|
||||
<data name="cbData.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>284, 109</value>
|
||||
</data>
|
||||
<data name="checkEdit1.Properties.Caption" xml:space="preserve">
|
||||
<data name="cbData.Properties.Caption" xml:space="preserve">
|
||||
<value>Data/Other</value>
|
||||
</data>
|
||||
<data name="cbData.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>77, 19</value>
|
||||
<value>76, 18</value>
|
||||
</data>
|
||||
<data name="cbData.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>17</value>
|
||||
@@ -572,7 +563,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
|
||||
<value>Use consecutive numbers (remove gaps from reference list Pr#)</value>
|
||||
</data>
|
||||
<data name="cbConsecutive.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>484, 19</value>
|
||||
<value>484, 18</value>
|
||||
</data>
|
||||
<data name="cbConsecutive.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>21</value>
|
||||
@@ -596,7 +587,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
|
||||
<value>IP (Network)</value>
|
||||
</data>
|
||||
<data name="cbIp.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>83, 19</value>
|
||||
<value>82, 18</value>
|
||||
</data>
|
||||
<data name="cbIp.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>10</value>
|
||||
@@ -620,7 +611,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
|
||||
<value>Satellite</value>
|
||||
</data>
|
||||
<data name="cbSat.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>60, 19</value>
|
||||
<value>59, 18</value>
|
||||
</data>
|
||||
<data name="cbSat.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>9</value>
|
||||
@@ -668,7 +659,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
|
||||
<value>Antenna</value>
|
||||
</data>
|
||||
<data name="cbAntenna.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>63, 19</value>
|
||||
<value>62, 18</value>
|
||||
</data>
|
||||
<data name="cbAntenna.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>7</value>
|
||||
@@ -692,7 +683,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
|
||||
<value>Cable</value>
|
||||
</data>
|
||||
<data name="cbCable.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>49, 19</value>
|
||||
<value>48, 18</value>
|
||||
</data>
|
||||
<data name="cbCable.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>8</value>
|
||||
@@ -740,7 +731,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
|
||||
<value>Analog</value>
|
||||
</data>
|
||||
<data name="cbAnalog.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>55, 19</value>
|
||||
<value>54, 18</value>
|
||||
</data>
|
||||
<data name="cbAnalog.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>12</value>
|
||||
@@ -764,7 +755,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
|
||||
<value>Digital</value>
|
||||
</data>
|
||||
<data name="cbDigital.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>51, 19</value>
|
||||
<value>50, 18</value>
|
||||
</data>
|
||||
<data name="cbDigital.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>13</value>
|
||||
@@ -792,7 +783,6 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
|
||||
</data>
|
||||
<data name="lblTargetInfo.Text" xml:space="preserve">
|
||||
<value> </value>
|
||||
<comment>@Invariant</comment>
|
||||
</data>
|
||||
<data name=">>lblTargetInfo.Name" xml:space="preserve">
|
||||
<value>lblTargetInfo</value>
|
||||
@@ -817,7 +807,6 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
|
||||
</data>
|
||||
<data name="lblSourceInfo.Text" xml:space="preserve">
|
||||
<value> </value>
|
||||
<comment>@Invariant</comment>
|
||||
</data>
|
||||
<data name=">>lblSourceInfo.Name" xml:space="preserve">
|
||||
<value>lblSourceInfo</value>
|
||||
@@ -913,7 +902,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
|
||||
<value>Bottom, Right</value>
|
||||
</data>
|
||||
<data name="btnOk.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>526, 662</value>
|
||||
<value>525, 662</value>
|
||||
</data>
|
||||
<data name="btnOk.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>88, 23</value>
|
||||
@@ -934,13 +923,13 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>btnOk.ZOrder" xml:space="preserve">
|
||||
<value>3</value>
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="btnClose.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Right</value>
|
||||
</data>
|
||||
<data name="btnClose.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>621, 662</value>
|
||||
<value>620, 662</value>
|
||||
</data>
|
||||
<data name="btnClose.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>88, 23</value>
|
||||
@@ -961,7 +950,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>btnClose.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="groupControl1.AppearanceCaption.Font" type="System.Drawing.Font, System.Drawing">
|
||||
<value>Tahoma, 12pt</value>
|
||||
@@ -991,7 +980,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="groupControl1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>12, 22</value>
|
||||
<value>12, 12</value>
|
||||
</data>
|
||||
<data name="groupControl1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>696, 142</value>
|
||||
@@ -1009,10 +998,10 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
|
||||
<value>DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>groupControl1.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
<value>xtraScrollableControl1</value>
|
||||
</data>
|
||||
<data name=">>groupControl1.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="groupControl2.AppearanceCaption.Font" type="System.Drawing.Font, System.Drawing">
|
||||
<value>Tahoma, 12pt</value>
|
||||
@@ -1074,7 +1063,7 @@ This step can be repeated as needed.</value>
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="groupControl2.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>12, 184</value>
|
||||
<value>12, 185</value>
|
||||
</data>
|
||||
<data name="groupControl2.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>696, 456</value>
|
||||
@@ -1092,9 +1081,33 @@ This step can be repeated as needed.</value>
|
||||
<value>DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>groupControl2.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
<value>xtraScrollableControl1</value>
|
||||
</data>
|
||||
<data name=">>groupControl2.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="xtraScrollableControl1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Bottom, Left, Right</value>
|
||||
</data>
|
||||
<data name="xtraScrollableControl1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 0</value>
|
||||
</data>
|
||||
<data name="xtraScrollableControl1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>708, 646</value>
|
||||
</data>
|
||||
<data name="xtraScrollableControl1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name=">>xtraScrollableControl1.Name" xml:space="preserve">
|
||||
<value>xtraScrollableControl1</value>
|
||||
</data>
|
||||
<data name=">>xtraScrollableControl1.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.XtraScrollableControl, DevExpress.Utils.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>xtraScrollableControl1.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>xtraScrollableControl1.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
@@ -1104,7 +1117,7 @@ This step can be repeated as needed.</value>
|
||||
<value>6, 13</value>
|
||||
</data>
|
||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||
<value>721, 697</value>
|
||||
<value>720, 697</value>
|
||||
</data>
|
||||
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
|
||||
<value>CenterParent</value>
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
ChanSort Change Log
|
||||
===================
|
||||
|
||||
2022-04-19
|
||||
- added support for Orsay .zip files which contain a Clone/map-AirD and other files similar to Samsung .scm
|
||||
- Reference list dialog is now resizable
|
||||
- Grundig dvb\*_config.xml lists are now separated into TV and Radio lists with individual ordering
|
||||
- ability to load Grundig dvb\*\_config.xml files containing invalid XML characters (e.g. 0x10)
|
||||
|
||||
2022-04-11
|
||||
- added ChangHong/Chiq L32H7N dtv_cmdb_2.bin format (4419 KB size)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user