diff --git a/.gitignore b/.gitignore index 0bc8230..8140ba2 100644 --- a/.gitignore +++ b/.gitignore @@ -27,3 +27,5 @@ obj/ [Rr]elease*/ _ReSharper*/ [Tt]est[Rr]esult* +DLL/SQLite.Designer.dll +DLL/SQLite.Designer.xml diff --git a/ChanSort.Api/Controller/ChlFileSerializer.cs b/ChanSort.Api/Controller/ChlFileSerializer.cs index 04b3bf4..b02ea17 100644 --- a/ChanSort.Api/Controller/ChlFileSerializer.cs +++ b/ChanSort.Api/Controller/ChlFileSerializer.cs @@ -25,7 +25,7 @@ namespace ChanSort.Api this.warnings.Remove(0, this.warnings.Length); foreach (var channel in this.channelList.Channels) - channel.NewProgramNr = 0; + channel.NewProgramNr = -1; using (var stream = new StreamReader(fileName, System.Text.Encoding.Default)) { @@ -80,7 +80,7 @@ namespace ChanSort.Api foreach(var channel in channels) { - if (channel.NewProgramNr != 0) + if (channel.NewProgramNr != -1) continue; ++found; if (found > 1) diff --git a/ChanSort.Api/Controller/CsvFileSerializer.cs b/ChanSort.Api/Controller/CsvFileSerializer.cs index 1b9e3f5..2daa0ca 100644 --- a/ChanSort.Api/Controller/CsvFileSerializer.cs +++ b/ChanSort.Api/Controller/CsvFileSerializer.cs @@ -74,7 +74,7 @@ namespace ChanSort.Api return; IEnumerable channels = FindChannels(channelList, name, uid); - var channel = channels == null ? null : channels.FirstOrDefault(c => c.NewProgramNr == 0); + var channel = channels == null ? null : channels.FirstOrDefault(c => c.NewProgramNr == -1); if (channel != null) { channel.NewProgramNr = programNr; @@ -138,7 +138,7 @@ namespace ChanSort.Api if (!this.clearedLists.Contains(channelList)) { foreach (var channel in channelList.Channels) - channel.NewProgramNr = 0; + channel.NewProgramNr = -1; this.clearedLists.Add(channelList); } return channelList; @@ -206,7 +206,7 @@ namespace ChanSort.Api { foreach (var channelList in dataRoot.ChannelLists) { - foreach (var channel in channelList.Channels.Where(ch => ch.NewProgramNr != 0).OrderBy(ch => ch.NewProgramNr)) + foreach (var channel in channelList.Channels.Where(ch => ch.NewProgramNr != -1).OrderBy(ch => ch.NewProgramNr)) { string line = string.Format("{0},{1},{2},{3},\"{4}\",{5},{6}", "", // past: channel.RecordIndex, diff --git a/ChanSort.Api/Controller/Editor.cs b/ChanSort.Api/Controller/Editor.cs index 192498e..31400b6 100644 --- a/ChanSort.Api/Controller/Editor.cs +++ b/ChanSort.Api/Controller/Editor.cs @@ -9,114 +9,11 @@ namespace ChanSort.Api public ChannelList ChannelList; private UnsortedChannelMode unsortedChannelMode; -#if false - #region LoadDvbViewerFiles() - private void LoadDvbViewerFiles() - { - List fileList; - Dictionary satPosition; - if (!LoadSatMappingFile(out satPosition, out fileList)) - return; - - foreach (var file in fileList) - { - try - { - string fullPath = Path.IsPathRooted(file) - ? file - : Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), file); - this.LoadDvbViewerChannelFile(fullPath, satPosition); - } - catch - { - } - } - } - #endregion - - #region LoadSatMappingFile() - private static bool LoadSatMappingFile(out Dictionary satPosition, out List fileList) - { - satPosition = null; - fileList = null; - string satMappingFile = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "sat-mapping.ini"); - if (!File.Exists(satMappingFile)) - return false; - - fileList = new List(); - satPosition = new Dictionary(); - string section = null; - using (var stream = new StreamReader(satMappingFile, Encoding.UTF8)) - { - string line; - while ((line = stream.ReadLine()) != null) - { - line = line.Trim(); - if (line.Length == 0 || line.StartsWith(";")) - continue; - if (line.StartsWith("[") && line.EndsWith("]")) - { - section = line; - continue; - } - if (section == "[Satellites]") - { - var parts = line.Split(new[] { '=' }, 2); - if (parts.Length == 2) - satPosition[parts[0].ToLower()] = parts[1].ToUpper(); - } - else if (section == "[DvbViewerChannelFiles]") - { - fileList.Set(line); - } - } - } - return true; - } - #endregion - - #region LoadDvbViewerChannelFile() - private void LoadDvbViewerChannelFile(string file, IDictionary satPosition) - { - string[] unencrypted = { "18", "19", "26", "146", "154" }; - - using (var stream = new StreamReader(file, Encoding.Default)) - { - string line; - bool first = true; - while ((line = stream.ReadLine()) != null) - { - if (first) - { - first = false; - continue; - } - var col = line.Split(new[] { '\t' }); - if (col.Length < 21) - continue; - - string satId; - if (!satPosition.TryGetValue(col[0].ToLower(), out satId)) - continue; - - StringBuilder uid = new StringBuilder(); - uid.Append("S").Append(satId).Append("-").Append(col[20]).Append("-").Append(col[18]).Append("-").Append(col[17]); - - ChannelInfo channel; - if (!TvChannelByUid.TryGetValue(uid.ToString(), out channel)) - continue; - channel.Encrypted = Array.IndexOf(unencrypted, col[19]) < 0; - } - } - } - #endregion -#endif - #region AddChannels() public ChannelInfo AddChannels(IList channels) { - int count = channels.Count(channel => channel.NewProgramNr == 0); + int count = channels.Count(channel => channel.NewProgramNr == -1); if (count == 0) return null; ChannelInfo lastInsertedChannel = null; @@ -124,20 +21,17 @@ namespace ChanSort.Api int relativeChannelNumber = 0; foreach(var channel in this.ChannelList.Channels.Where(c => c.NewProgramNr>=progNr).OrderBy(c=>c.NewProgramNr)) { - //if (channel.NewProgramNr != 0 && channel.NewProgramNr >= progNr) + int gap = count - (channel.NewProgramNr - progNr - relativeChannelNumber); + if (gap > 0) { - int gap = count - (channel.NewProgramNr - progNr - relativeChannelNumber); - if (gap > 0) - { - channel.NewProgramNr += gap; - ++relativeChannelNumber; - } + channel.NewProgramNr += gap; + ++relativeChannelNumber; } } foreach (var channel in channels) { - if (channel.NewProgramNr != 0) + if (channel.NewProgramNr != -1) { // TODO notify user continue; @@ -160,10 +54,10 @@ namespace ChanSort.Api if (channels.Count == 0) return; this.ChannelList.InsertProgramNumber = channels[0].NewProgramNr; - var orderedChannelList = this.ChannelList.Channels.Where(c => c.NewProgramNr > 0).OrderBy(c => c.NewProgramNr); + var orderedChannelList = this.ChannelList.Channels.Where(c => c.NewProgramNr != -1).OrderBy(c => c.NewProgramNr); foreach (var channel in channels) { - if (channel.NewProgramNr == 0) + if (channel.NewProgramNr == -1) continue; if (closeGap) { @@ -179,7 +73,7 @@ namespace ChanSort.Api } } } - channel.NewProgramNr = 0; + channel.NewProgramNr = -1; } this.DataRoot.NeedsSaving = true; @@ -193,7 +87,7 @@ namespace ChanSort.Api { if (channels.Count == 0) return; - if (up && channels[0].NewProgramNr < 2) + if (up && channels[0].NewProgramNr <= this.ChannelList.FirstProgramNumber) return; int delta = (up ? - 1 : +1); @@ -237,7 +131,7 @@ namespace ChanSort.Api { foreach (var channel in channels) { - if (slot != 0) + if (slot != -1) { var others = this.ChannelList.GetChannelByNewProgNr(slot); foreach (var other in others) @@ -295,7 +189,7 @@ namespace ChanSort.Api if (appChannel.RecordIndex < 0) continue; - if (appChannel.NewProgramNr <= 0 && mode == UnsortedChannelMode.MarkDeleted) + if (appChannel.NewProgramNr == -1 && mode == UnsortedChannelMode.MarkDeleted) continue; int progNr = GetNewProgramNr(appChannel, ref maxProgNr); @@ -308,7 +202,7 @@ namespace ChanSort.Api private string ChanSortCriteria(ChannelInfo channel) { // explicitly sorted - if (channel.NewProgramNr != 0) + if (channel.NewProgramNr != -1) return channel.NewProgramNr.ToString("d4"); // eventually hide unsorted channels @@ -334,9 +228,9 @@ namespace ChanSort.Api int prNr = appChannel.NewProgramNr; if (prNr > maxPrNr) maxPrNr = prNr; - if (prNr == 0) + if (prNr == -1) { - if (appChannel.OldProgramNr != 0 && this.unsortedChannelMode != UnsortedChannelMode.MarkDeleted) + if (appChannel.OldProgramNr != -1 && this.unsortedChannelMode != UnsortedChannelMode.MarkDeleted) prNr = ++maxPrNr; } return prNr; diff --git a/ChanSort.Api/Model/ChannelInfo.cs b/ChanSort.Api/Model/ChannelInfo.cs index 578272a..6987426 100644 --- a/ChanSort.Api/Model/ChannelInfo.cs +++ b/ChanSort.Api/Model/ChannelInfo.cs @@ -12,7 +12,7 @@ namespace ChanSort.Api public readonly List Duplicates = new List(); public virtual bool IsDeleted { get; set; } - public SignalSource SignalSource { get; protected set; } + public SignalSource SignalSource { get; set; } public int RecordIndex { get; set; } public int RecordOrder { get; set; } public int OldProgramNr { get; set; } @@ -43,7 +43,8 @@ namespace ChanSort.Api #region ctor() protected ChannelInfo() - { + { + this.NewProgramNr = -1; } /// @@ -54,6 +55,7 @@ namespace ChanSort.Api this.SignalSource = source; this.RecordIndex = index; this.RecordOrder = index; + this.NewProgramNr = -1; this.OldProgramNr = oldProgNr; this.Name = name; this.Encrypted = null; @@ -66,6 +68,7 @@ namespace ChanSort.Api { this.SignalSource = source; this.Uid = uid; + this.OldProgramNr = -1; this.NewProgramNr = newProgNr; this.Name = name; this.Encrypted = null; diff --git a/ChanSort.Api/Model/ChannelList.cs b/ChanSort.Api/Model/ChannelList.cs index cd9a4a2..279c385 100644 --- a/ChanSort.Api/Model/ChannelList.cs +++ b/ChanSort.Api/Model/ChannelList.cs @@ -19,6 +19,7 @@ namespace ChanSort.Api { this.source = source; this.ShortCaption = caption; + this.FirstProgramNumber = (source & SignalSource.Digital) != 0 ? 1 : 0; } public string ShortCaption { get; private set; } @@ -34,7 +35,7 @@ namespace ChanSort.Api get { string cap = this.ShortCaption; - int validChannelCount = this.Channels.Count(ch => ch.OldProgramNr != 0); + int validChannelCount = this.Channels.Count(ch => ch.OldProgramNr != -1); return cap + " (" + validChannelCount + ")"; } } @@ -44,10 +45,12 @@ namespace ChanSort.Api public int InsertProgramNumber { get { return this.Count == 0 ? 1 : this.insertProgramNr; } - set { this.insertProgramNr = Math.Max(1, value); } + set { this.insertProgramNr = Math.Max(this.FirstProgramNumber, value); } } #endregion + public int FirstProgramNumber { get; set; } + #region AddChannel() public string AddChannel(ChannelInfo ci) { @@ -63,7 +66,7 @@ namespace ChanSort.Api string warning2 = null; bool isDupeProgNr = false; - if (ci.OldProgramNr != 0) + if (ci.OldProgramNr != -1) { ChannelInfo other; this.channelByProgNr.TryGetValue(ci.OldProgramNr, out other); diff --git a/ChanSort.Loader.DbFile/ChanSort.Loader.DbFile.csproj b/ChanSort.Loader.DbFile/ChanSort.Loader.DbFile.csproj new file mode 100644 index 0000000..bf71496 --- /dev/null +++ b/ChanSort.Loader.DbFile/ChanSort.Loader.DbFile.csproj @@ -0,0 +1,93 @@ + + + + Debug + AnyCPU + 8.0.30703 + 2.0 + {F6F02792-07F1-48D5-9AF3-F945CA5E3931} + Library + Properties + ChanSort.Loader.DbFile + ChanSort.Loader.DbFile + v3.5 + + + 512 + + + true + full + false + ..\Debug\ + DEBUG;TRACE + prompt + 4 + x86 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + true + ..\Debug\ + DEBUG;TRACE + full + x86 + prompt + false + false + + + bin\x86\Release\ + TRACE + true + pdbonly + x86 + prompt + false + false + + + + ..\DLL\SQLite.Designer.dll + + + + + ..\DLL\System.Data.SQLite.dll + + + + + + + + + + + + + + + + + + {DCCFFA08-472B-4D17-BB90-8F513FC01392} + ChanSort.Api + + + + + \ No newline at end of file diff --git a/ChanSort.Loader.DbFile/DbSerializer.cs b/ChanSort.Loader.DbFile/DbSerializer.cs new file mode 100644 index 0000000..3343113 --- /dev/null +++ b/ChanSort.Loader.DbFile/DbSerializer.cs @@ -0,0 +1,276 @@ +using System; +using System.Collections.Generic; +using System.Data.SQLite; +using System.IO; +using System.Text; +using ChanSort.Api; + +namespace ChanSort.Loader.DbFile +{ + class DbSerializer : SerializerBase + { + private const int BITS_InUse = 0x10000; + private readonly ChannelList atvChannels = new ChannelList(SignalSource.AnalogCT | SignalSource.TvAndRadio, "Analog"); + private readonly ChannelList dtvChannels = new ChannelList(SignalSource.DvbCT | SignalSource.TvAndRadio, "DVB-C/T"); + private readonly ChannelList satChannels = new ChannelList(SignalSource.DvbS | SignalSource.TvAndRadio, "Satellite"); + + #region ctor() + public DbSerializer(string inputFile) : base(inputFile) + { + this.Features.ChannelNameEdit = true; + + this.DataRoot.AddChannelList(this.atvChannels); + this.DataRoot.AddChannelList(this.dtvChannels); + this.DataRoot.AddChannelList(this.satChannels); + } + #endregion + + #region DisplayName + public override string DisplayName { get { return "Toshiba *.db Loader"; } } + #endregion + + + #region Load() + public override void Load() + { + string sysDataConnString = "Data Source=" + Path.GetDirectoryName(Path.GetDirectoryName(this.FileName)) + + "\\dvb_type001\\dvbSysData.db"; + using (var sysDataConn = new SQLiteConnection(sysDataConnString)) + { + sysDataConn.Open(); + using (var cmd = sysDataConn.CreateCommand()) + { + this.ReadSatellites(cmd); + this.ReadTransponders(cmd); + } + } + + string channelConnString = "Data Source=" + this.FileName; + using (var channelConn = new SQLiteConnection(channelConnString)) + { + channelConn.Open(); + using (var cmd = channelConn.CreateCommand()) + { + this.ReadAnalogChannels(cmd); + this.ReadDtvChannels(cmd); + this.ReadSatChannels(cmd); + } + } + } + #endregion + + #region ReadSatellites() + private void ReadSatellites(SQLiteCommand cmd) + { + cmd.CommandText = "select distinct satellite_id, satellite_name, orbital_position, west_east_flag from satellite"; + using (var r = cmd.ExecuteReader()) + { + while (r.Read()) + { + Satellite sat = new Satellite(r.GetInt32(0)); + int pos = r.GetInt32(2); + sat.OrbitalPosition = string.Format("{0}.{1}{2}", pos / 10, pos % 10, r.GetInt32(3) == 1 ? "E" : "W"); + sat.Name = r.GetString(1) + " " + sat.OrbitalPosition; + this.DataRoot.AddSatellite(sat); + } + } + } + #endregion + + #region ReadTransponders() + private void ReadTransponders(SQLiteCommand cmd) + { + cmd.CommandText = "select satellite_id, frequency, polarization, symbol_rate, transponder_number from satellite"; + using (var r = cmd.ExecuteReader()) + { + while (r.Read()) + { + int satId = r.GetInt32(0); + int freq = r.GetInt32(1); + int id = satId * 1000000 + freq / 1000; + if (this.DataRoot.Transponder.TryGet(id) != null) + continue; + Transponder tp = new Transponder(id); + tp.FrequencyInMhz = (decimal)freq / 1000; + tp.Number = r.GetInt32(4); + tp.Polarity = r.GetInt32(2) == 0 ? 'H' : 'V'; + tp.Satellite = this.DataRoot.Satellites.TryGet(satId); + tp.SymbolRate = r.GetInt32(3) / 1000; + this.DataRoot.AddTransponder(tp.Satellite, tp); + } + } + } + #endregion + + + #region ReadAnalogChannels() + private void ReadAnalogChannels(SQLiteCommand cmd) + { + string[] fieldNames = {"channel_handle", "channel_number", "list_bits", "channel_label", "frequency"}; + var sql = this.GetQuery("EuroATVChanList", fieldNames); + var fields = this.GetFieldMap(fieldNames); + + cmd.CommandText = sql; + using (var r = cmd.ExecuteReader()) + { + while (r.Read()) + ReadAnalogChannel(r, fields); + } + } + + private void ReadAnalogChannel(SQLiteDataReader r, IDictionary field) + { + var bits = r.GetInt32(field["list_bits"]); + if ((bits & BITS_InUse) == 0) + return; + + ChannelInfo channel = new ChannelInfo(SignalSource.Analog|SignalSource.Tv, + r.GetInt32(field["channel_handle"]), + r.GetInt32(field["channel_number"]), + r.GetString(field["channel_label"])); + + channel.FreqInMhz = (decimal) r.GetInt32(field["frequency"])/1000000; + + this.DataRoot.AddChannel(this.atvChannels, channel); + } + #endregion + + #region ReadDtvChannels() + private void ReadDtvChannels(SQLiteCommand cmd) + { + this.ReadDigitalChannels(cmd, "EuroDTVChanList", SignalSource.DvbCT, this.dtvChannels); + } + #endregion + + #region ReadSatChannels() + private void ReadSatChannels(SQLiteCommand cmd) + { + this.ReadDigitalChannels(cmd, "EuroSATChanList", SignalSource.DvbS, this.satChannels); + } + #endregion + + #region ReadDigitalChannels() + private void ReadDigitalChannels(SQLiteCommand cmd, string table, SignalSource signalSource, ChannelList channels) + { + string[] fieldNames = { "channel_handle", "channel_number", "list_bits", "channel_label", "frequency", + "dvb_service_type", "onid", "tsid", "sid", "sat_id", "channel_order" }; + var sql = this.GetQuery(table, fieldNames); + var fields = this.GetFieldMap(fieldNames); + + cmd.CommandText = sql; + using (var r = cmd.ExecuteReader()) + { + while (r.Read()) + ReadDigitalChannel(r, fields, signalSource, channels); + } + } + #endregion + + #region ReadDigitalChannel() + private void ReadDigitalChannel(SQLiteDataReader r, IDictionary field, SignalSource signalSource, ChannelList channels) + { + var bits = r.GetInt32(field["list_bits"]); + if ((bits & BITS_InUse) == 0) + return; + + var name = r.GetString(field["channel_label"]); + string longName, shortName; + this.GetChannelNames(name, out longName, out shortName); + + ChannelInfo channel = new ChannelInfo(signalSource, + r.GetInt32(field["channel_handle"]), + r.GetInt32(field["channel_number"]), + longName); + channel.ShortName = shortName; + channel.RecordOrder = r.GetInt32(field["channel_order"]); + channel.FreqInMhz = (decimal)r.GetInt32(field["frequency"]) / 1000; + int serviceType = r.GetInt32(field["dvb_service_type"]); + if (serviceType == 1 || serviceType == 25) + channel.SignalSource |= SignalSource.Tv; + else if (serviceType == 2) + channel.SignalSource |= SignalSource.Radio; + channel.ServiceType = serviceType; + channel.OriginalNetworkId = r.GetInt32(field["onid"]); + channel.TransportStreamId = r.GetInt32(field["tsid"]); + channel.ServiceId = r.GetInt32(field["sid"]); + + if ((signalSource & SignalSource.Sat) != 0) + { + int satId = r.GetInt32(field["sat_id"]); + var sat = this.DataRoot.Satellites.TryGet(satId); + if (sat != null) + { + channel.Satellite = sat.Name; + channel.SatPosition = sat.OrbitalPosition; + int tpId = satId*1000000 + (int) channel.FreqInMhz; + var tp = this.DataRoot.Transponder.TryGet(tpId); + if (tp != null) + { + channel.SymbolRate = tp.SymbolRate; + } + } + } + this.DataRoot.AddChannel(channels, channel); + } + + #endregion + + #region GetQuery() + private string GetQuery(string table, string[] fieldNames) + { + string sql = "select "; + for (int i = 0; i < fieldNames.Length; i++) + { + if (i > 0) + sql += ","; + sql += fieldNames[i]; + } + sql += " from " + table; + return sql; + } + #endregion + + #region GetFieldMap() + private IDictionary GetFieldMap(string[] fieldNames) + { + Dictionary field = new Dictionary(); + for (int i = 0; i < fieldNames.Length; i++) + field[fieldNames[i]] = i; + return field; + } + #endregion + + #region GetChannelNames() + private void GetChannelNames(string name, out string longName, out string shortName) + { + StringBuilder sbLong = new StringBuilder(); + StringBuilder sbShort = new StringBuilder(); + + bool inShort = false; + foreach (char c in name) + { + if (c == 0x86) + inShort = true; + else if (c == 0x87) + inShort = false; + if (c >= 0x80 && c <= 0x9F) + continue; + + if (inShort) + sbShort.Append(c); + sbLong.Append(c); + } + + longName = sbLong.ToString(); + shortName = sbShort.ToString(); + } + #endregion + + + public override void Save(string tvOutputFile, string csvOutputFile) + { + throw new NotImplementedException(); + } + + } +} diff --git a/ChanSort.Loader.DbFile/DbSerializerPlugin.cs b/ChanSort.Loader.DbFile/DbSerializerPlugin.cs new file mode 100644 index 0000000..222c588 --- /dev/null +++ b/ChanSort.Loader.DbFile/DbSerializerPlugin.cs @@ -0,0 +1,15 @@ +using ChanSort.Api; + +namespace ChanSort.Loader.DbFile +{ + public class DbSerializerPlugin : ISerializerPlugin + { + public string PluginName { get { return "Toshiba chmgt.db"; } } + public string FileFilter { get { return "chmgt.db"; } } + + public SerializerBase CreateSerializer(string inputFile) + { + return new DbSerializer(inputFile); + } + } +} diff --git a/ChanSort.Loader.DbFile/Properties/AssemblyInfo.cs b/ChanSort.Loader.DbFile/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..d5a1f53 --- /dev/null +++ b/ChanSort.Loader.DbFile/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("ChanSort.Loader.DbFile")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("ChanSort.Loader.DbFile")] +[assembly: AssemblyCopyright("Copyright © 2013")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("172c8359-67a7-4728-8463-255a972aefc0")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/ChanSort.Loader.ScmFile/ChanSort.Loader.ScmFile.ini b/ChanSort.Loader.ScmFile/ChanSort.Loader.ScmFile.ini index b3cfcbd..21dd254 100644 --- a/ChanSort.Loader.ScmFile/ChanSort.Loader.ScmFile.ini +++ b/ChanSort.Loader.ScmFile/ChanSort.Loader.ScmFile.ini @@ -44,6 +44,18 @@ Favorites = 5 FavoriteNotSet = -1 +[Series:F] + SatDataBase.dat = 145 + TransponderDataBase.dat = 45 + PTC = 12 + map-AirA = 64 + map-AirD = 320 + map-CableD = 320 + map-SateD = 168 + map-AstraHDPlusD = 212 + Favorites = 5 + FavoriteNotSet = -1 + [Analog:28] ; map-AirA and map-CableA for B series offInUse = 0 diff --git a/ChanSort.Loader.ScmFile/ScmChannelBase.cs b/ChanSort.Loader.ScmFile/ScmChannelBase.cs index 1c539b9..967de57 100644 --- a/ChanSort.Loader.ScmFile/ScmChannelBase.cs +++ b/ChanSort.Loader.ScmFile/ScmChannelBase.cs @@ -117,7 +117,7 @@ namespace ChanSort.Loader.ScmFile } this.UpdateRawFavorites(); mapping.SetFlag(_Lock, this.Lock); - if (this.NewProgramNr == 0) + if (this.NewProgramNr == -1) mapping.SetFlag(_Deleted, true); this.UpdateChecksum(); diff --git a/ChanSort.Loader.ScmFile/ScmSerializer.cs b/ChanSort.Loader.ScmFile/ScmSerializer.cs index 88eec8d..825f1cf 100644 --- a/ChanSort.Loader.ScmFile/ScmSerializer.cs +++ b/ChanSort.Loader.ScmFile/ScmSerializer.cs @@ -165,6 +165,7 @@ namespace ChanSort.Loader.ScmFile DetectModelFromTranspoderDatabase(zip) }; + // note: E and F series use an identical format, so we only care about E here string validCandidates = "BCDE"; foreach (var candidateList in candidates) { @@ -364,7 +365,7 @@ namespace ChanSort.Loader.ScmFile for (int slotIndex = 0; slotIndex < count; slotIndex++) { DigitalChannel ci = new DigitalChannel(slotIndex, isCable, rawChannel, frequency, c.favoriteNotSetValue); - if (ci.OldProgramNr != 0) + if (ci.OldProgramNr != -1) this.DataRoot.AddChannel(list, ci); rawChannel.BaseOffset += entrySize; diff --git a/ChanSort.Loader.TllFile/TllChannelBase.cs b/ChanSort.Loader.TllFile/TllChannelBase.cs index 123f42c..6f9494e 100644 --- a/ChanSort.Loader.TllFile/TllChannelBase.cs +++ b/ChanSort.Loader.TllFile/TllChannelBase.cs @@ -88,8 +88,9 @@ namespace ChanSort.Loader.TllFile public override void UpdateRawData() { mapping.SetDataPtr(this.rawData, this.baseOffset); - mapping.SetWord(_ProgramNr, this.NewProgramNr | ((this.SignalSource & SignalSource.Radio) != 0 ? 0x4000 : 0)); - mapping.SetWord(_ProgramNr2, (mapping.GetWord(_ProgramNr2) & 0x0003) | (this.NewProgramNr << 2)); + int progNr = this.NewProgramNr == -1 ? 0 : this.NewProgramNr; + mapping.SetWord(_ProgramNr, progNr | ((this.SignalSource & SignalSource.Radio) != 0 ? 0x4000 : 0)); + mapping.SetWord(_ProgramNr2, (mapping.GetWord(_ProgramNr2) & 0x0003) | (progNr << 2)); if (this.IsNameModified) { mapping.SetString(_Name, this.Name, 40); @@ -101,7 +102,7 @@ namespace ChanSort.Loader.TllFile mapping.SetFlag(_Skip, this.Skip); mapping.SetFlag(_Lock, this.Lock); mapping.SetFlag(_Hide, this.Hidden); - if (this.NewProgramNr == 0) + if (this.NewProgramNr == -1) { mapping.SetFlag(_Deleted, true); mapping.SetByte("off"+_Moved, 0); //skip,lock,hide,moved diff --git a/ChanSort.Loader.TllFile/TllFileSerializer.cs b/ChanSort.Loader.TllFile/TllFileSerializer.cs index d3ed715..882c2cc 100644 --- a/ChanSort.Loader.TllFile/TllFileSerializer.cs +++ b/ChanSort.Loader.TllFile/TllFileSerializer.cs @@ -622,11 +622,11 @@ namespace ChanSort.Loader.TllFile { foreach (ChannelInfo channel in list.Channels) { - if (channel.NewProgramNr != 0) + if (channel.NewProgramNr != -1) { - if ((channel.SignalSource & SignalSource.Digital) == 0) + if ((channel.SignalSource & SignalSource.Analog) != 0) ++newAnalogChannelCount; - else if (channel.SignalSource != SignalSource.DvbS) + else if ((channel.SignalSource & SignalSource.DvbCT) != 0) ++newDvbctChannelCount; } channel.OldProgramNr = channel.NewProgramNr; diff --git a/ChanSort.sln b/ChanSort.sln index 32d61ea..2722500 100644 --- a/ChanSort.sln +++ b/ChanSort.sln @@ -20,6 +20,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test.Loader.TllFile", "Test EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ChanSort.Loader.ScmFile", "ChanSort.Loader.ScmFile\ChanSort.Loader.ScmFile.csproj", "{A1C9A98D-368A-44E8-9B7F-7EACA46C9EC5}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ChanSort.Loader.DbFile", "ChanSort.Loader.DbFile\ChanSort.Loader.DbFile.csproj", "{F6F02792-07F1-48D5-9AF3-F945CA5E3931}" +EndProject Global GlobalSection(TestCaseManagementSettings) = postSolution CategoryFile = ChanSort1.vsmdi @@ -67,6 +69,13 @@ Global {A1C9A98D-368A-44E8-9B7F-7EACA46C9EC5}.Release|Any CPU.ActiveCfg = Release|Any CPU {A1C9A98D-368A-44E8-9B7F-7EACA46C9EC5}.Release|Any CPU.Build.0 = Release|Any CPU {A1C9A98D-368A-44E8-9B7F-7EACA46C9EC5}.Release|x86.ActiveCfg = Release|Any CPU + {F6F02792-07F1-48D5-9AF3-F945CA5E3931}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F6F02792-07F1-48D5-9AF3-F945CA5E3931}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F6F02792-07F1-48D5-9AF3-F945CA5E3931}.Debug|x86.ActiveCfg = Debug|x86 + {F6F02792-07F1-48D5-9AF3-F945CA5E3931}.Debug|x86.Build.0 = Debug|x86 + {F6F02792-07F1-48D5-9AF3-F945CA5E3931}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F6F02792-07F1-48D5-9AF3-F945CA5E3931}.Release|Any CPU.Build.0 = Release|Any CPU + {F6F02792-07F1-48D5-9AF3-F945CA5E3931}.Release|x86.ActiveCfg = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/ChanSort/MainForm.Designer.cs b/ChanSort/MainForm.Designer.cs index ad756e4..c502333 100644 --- a/ChanSort/MainForm.Designer.cs +++ b/ChanSort/MainForm.Designer.cs @@ -45,7 +45,7 @@ this.lblHotkeyLeft = new DevExpress.XtraEditors.LabelControl(); this.pnlEditControls = new DevExpress.XtraEditors.PanelControl(); this.btnToggleLock = new DevExpress.XtraEditors.SimpleButton(); - this.globalImageCollection1 = new GlobalImageCollection(this.components); + this.globalImageCollection1 = new ChanSort.Ui.GlobalImageCollection(this.components); this.btnToggleFavE = new DevExpress.XtraEditors.SimpleButton(); this.btnToggleFavD = new DevExpress.XtraEditors.SimpleButton(); this.btnToggleFavC = new DevExpress.XtraEditors.SimpleButton(); @@ -153,6 +153,7 @@ this.tabChannelList = new DevExpress.XtraTab.XtraTabControl(); this.pageEmpty = new DevExpress.XtraTab.XtraTabPage(); this.mnuContext = new DevExpress.XtraBars.PopupMenu(this.components); + this.colOutServiceType = new DevExpress.XtraGrid.Columns.GridColumn(); ((System.ComponentModel.ISupportInitialize)(this.splitContainerControl1)).BeginInit(); this.splitContainerControl1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.grpOutputList)).BeginInit(); @@ -163,7 +164,6 @@ ((System.ComponentModel.ISupportInitialize)(this.repositoryItemCheckedComboBoxEdit1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pnlEditControls)).BeginInit(); this.pnlEditControls.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.globalImageCollection1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.grpInputList)).BeginInit(); this.grpInputList.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.gridRight)).BeginInit(); @@ -190,36 +190,25 @@ // resources.ApplyResources(this.splitContainerControl1, "splitContainerControl1"); this.splitContainerControl1.Name = "splitContainerControl1"; - resources.ApplyResources(this.splitContainerControl1.Panel1, "splitContainerControl1.Panel1"); this.splitContainerControl1.Panel1.Controls.Add(this.grpOutputList); - resources.ApplyResources(this.splitContainerControl1.Panel2, "splitContainerControl1.Panel2"); + resources.ApplyResources(this.splitContainerControl1.Panel1, "splitContainerControl1.Panel1"); this.splitContainerControl1.Panel2.Controls.Add(this.grpInputList); + resources.ApplyResources(this.splitContainerControl1.Panel2, "splitContainerControl1.Panel2"); this.splitContainerControl1.SplitterPosition = 343; // // grpOutputList // - resources.ApplyResources(this.grpOutputList, "grpOutputList"); this.grpOutputList.Controls.Add(this.gridLeft); this.grpOutputList.Controls.Add(this.lblHotkeyLeft); this.grpOutputList.Controls.Add(this.pnlEditControls); + resources.ApplyResources(this.grpOutputList, "grpOutputList"); this.grpOutputList.Name = "grpOutputList"; this.grpOutputList.Enter += new System.EventHandler(this.grpOutputList_Enter); // // gridLeft // - resources.ApplyResources(this.gridLeft, "gridLeft"); this.gridLeft.DataSource = this.dsChannels; - this.gridLeft.EmbeddedNavigator.AccessibleDescription = resources.GetString("gridLeft.EmbeddedNavigator.AccessibleDescription"); - this.gridLeft.EmbeddedNavigator.AccessibleName = resources.GetString("gridLeft.EmbeddedNavigator.AccessibleName"); - this.gridLeft.EmbeddedNavigator.AllowHtmlTextInToolTip = ((DevExpress.Utils.DefaultBoolean)(resources.GetObject("gridLeft.EmbeddedNavigator.AllowHtmlTextInToolTip"))); - this.gridLeft.EmbeddedNavigator.Anchor = ((System.Windows.Forms.AnchorStyles)(resources.GetObject("gridLeft.EmbeddedNavigator.Anchor"))); - this.gridLeft.EmbeddedNavigator.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("gridLeft.EmbeddedNavigator.BackgroundImage"))); - this.gridLeft.EmbeddedNavigator.BackgroundImageLayout = ((System.Windows.Forms.ImageLayout)(resources.GetObject("gridLeft.EmbeddedNavigator.BackgroundImageLayout"))); - this.gridLeft.EmbeddedNavigator.ImeMode = ((System.Windows.Forms.ImeMode)(resources.GetObject("gridLeft.EmbeddedNavigator.ImeMode"))); - this.gridLeft.EmbeddedNavigator.TextLocation = ((DevExpress.XtraEditors.NavigatorButtonsTextLocation)(resources.GetObject("gridLeft.EmbeddedNavigator.TextLocation"))); - this.gridLeft.EmbeddedNavigator.ToolTip = resources.GetString("gridLeft.EmbeddedNavigator.ToolTip"); - this.gridLeft.EmbeddedNavigator.ToolTipIconType = ((DevExpress.Utils.ToolTipIconType)(resources.GetObject("gridLeft.EmbeddedNavigator.ToolTipIconType"))); - this.gridLeft.EmbeddedNavigator.ToolTipTitle = resources.GetString("gridLeft.EmbeddedNavigator.ToolTipTitle"); + resources.ApplyResources(this.gridLeft, "gridLeft"); this.gridLeft.MainView = this.gviewLeft; this.gridLeft.Name = "gridLeft"; this.gridLeft.RepositoryItems.AddRange(new DevExpress.XtraEditors.Repository.RepositoryItem[] { @@ -234,14 +223,12 @@ // // gviewLeft // - this.gviewLeft.Appearance.HeaderPanel.GradientMode = ((System.Drawing.Drawing2D.LinearGradientMode)(resources.GetObject("gviewLeft.Appearance.HeaderPanel.GradientMode"))); - this.gviewLeft.Appearance.HeaderPanel.Image = ((System.Drawing.Image)(resources.GetObject("gviewLeft.Appearance.HeaderPanel.Image"))); this.gviewLeft.Appearance.HeaderPanel.Options.UseTextOptions = true; this.gviewLeft.Appearance.HeaderPanel.TextOptions.WordWrap = DevExpress.Utils.WordWrap.Wrap; - resources.ApplyResources(this.gviewLeft, "gviewLeft"); this.gviewLeft.ColumnPanelRowHeight = 35; this.gviewLeft.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { this.colIndex1, + this.colOutServiceType, this.colOutSlot, this.colOutName, this.colOutFav, @@ -308,15 +295,8 @@ new DevExpress.XtraEditors.Controls.EditorButton(((DevExpress.XtraEditors.Controls.ButtonPredefines)(resources.GetObject("repositoryItemCheckedComboBoxEdit1.Buttons"))))}); this.repositoryItemCheckedComboBoxEdit1.CloseUpKey = new DevExpress.Utils.KeyShortcut(System.Windows.Forms.Keys.F2); this.repositoryItemCheckedComboBoxEdit1.ForceUpdateEditValue = DevExpress.Utils.DefaultBoolean.True; - this.repositoryItemCheckedComboBoxEdit1.Mask.AutoComplete = ((DevExpress.XtraEditors.Mask.AutoCompleteType)(resources.GetObject("repositoryItemCheckedComboBoxEdit1.Mask.AutoComplete"))); - this.repositoryItemCheckedComboBoxEdit1.Mask.BeepOnError = ((bool)(resources.GetObject("repositoryItemCheckedComboBoxEdit1.Mask.BeepOnError"))); this.repositoryItemCheckedComboBoxEdit1.Mask.EditMask = resources.GetString("repositoryItemCheckedComboBoxEdit1.Mask.EditMask"); - this.repositoryItemCheckedComboBoxEdit1.Mask.IgnoreMaskBlank = ((bool)(resources.GetObject("repositoryItemCheckedComboBoxEdit1.Mask.IgnoreMaskBlank"))); this.repositoryItemCheckedComboBoxEdit1.Mask.MaskType = ((DevExpress.XtraEditors.Mask.MaskType)(resources.GetObject("repositoryItemCheckedComboBoxEdit1.Mask.MaskType"))); - this.repositoryItemCheckedComboBoxEdit1.Mask.PlaceHolder = ((char)(resources.GetObject("repositoryItemCheckedComboBoxEdit1.Mask.PlaceHolder"))); - this.repositoryItemCheckedComboBoxEdit1.Mask.SaveLiteral = ((bool)(resources.GetObject("repositoryItemCheckedComboBoxEdit1.Mask.SaveLiteral"))); - this.repositoryItemCheckedComboBoxEdit1.Mask.ShowPlaceHolders = ((bool)(resources.GetObject("repositoryItemCheckedComboBoxEdit1.Mask.ShowPlaceHolders"))); - this.repositoryItemCheckedComboBoxEdit1.Mask.UseMaskAsDisplayFormat = ((bool)(resources.GetObject("repositoryItemCheckedComboBoxEdit1.Mask.UseMaskAsDisplayFormat"))); this.repositoryItemCheckedComboBoxEdit1.Name = "repositoryItemCheckedComboBoxEdit1"; this.repositoryItemCheckedComboBoxEdit1.PopupSizeable = false; this.repositoryItemCheckedComboBoxEdit1.SelectAllItemVisible = false; @@ -344,7 +324,6 @@ // // pnlEditControls // - resources.ApplyResources(this.pnlEditControls, "pnlEditControls"); this.pnlEditControls.Controls.Add(this.btnToggleLock); this.pnlEditControls.Controls.Add(this.btnToggleFavE); this.pnlEditControls.Controls.Add(this.btnToggleFavD); @@ -356,124 +335,108 @@ this.pnlEditControls.Controls.Add(this.btnDown); this.pnlEditControls.Controls.Add(this.btnUp); this.pnlEditControls.Controls.Add(this.btnRemove); + resources.ApplyResources(this.pnlEditControls, "pnlEditControls"); this.pnlEditControls.Name = "pnlEditControls"; // // btnToggleLock // - resources.ApplyResources(this.btnToggleLock, "btnToggleLock"); this.btnToggleLock.ImageIndex = 15; this.btnToggleLock.ImageList = this.globalImageCollection1; + resources.ApplyResources(this.btnToggleLock, "btnToggleLock"); this.btnToggleLock.Name = "btnToggleLock"; this.btnToggleLock.Click += new System.EventHandler(this.btnToggleLock_Click); // - // globalImageCollection1 - // - this.globalImageCollection1.ParentControl = this; - // // btnToggleFavE // - resources.ApplyResources(this.btnToggleFavE, "btnToggleFavE"); this.btnToggleFavE.ImageList = this.globalImageCollection1; + resources.ApplyResources(this.btnToggleFavE, "btnToggleFavE"); this.btnToggleFavE.Name = "btnToggleFavE"; this.btnToggleFavE.Tag = ""; this.btnToggleFavE.Click += new System.EventHandler(this.btnToggleFav_Click); // // btnToggleFavD // - resources.ApplyResources(this.btnToggleFavD, "btnToggleFavD"); this.btnToggleFavD.ImageList = this.globalImageCollection1; + resources.ApplyResources(this.btnToggleFavD, "btnToggleFavD"); this.btnToggleFavD.Name = "btnToggleFavD"; this.btnToggleFavD.Click += new System.EventHandler(this.btnToggleFav_Click); // // btnToggleFavC // - resources.ApplyResources(this.btnToggleFavC, "btnToggleFavC"); this.btnToggleFavC.ImageList = this.globalImageCollection1; + resources.ApplyResources(this.btnToggleFavC, "btnToggleFavC"); this.btnToggleFavC.Name = "btnToggleFavC"; this.btnToggleFavC.Click += new System.EventHandler(this.btnToggleFav_Click); // // btnToggleFavB // - resources.ApplyResources(this.btnToggleFavB, "btnToggleFavB"); this.btnToggleFavB.ImageList = this.globalImageCollection1; + resources.ApplyResources(this.btnToggleFavB, "btnToggleFavB"); this.btnToggleFavB.Name = "btnToggleFavB"; this.btnToggleFavB.Click += new System.EventHandler(this.btnToggleFav_Click); // // btnToggleFavA // - resources.ApplyResources(this.btnToggleFavA, "btnToggleFavA"); this.btnToggleFavA.ImageList = this.globalImageCollection1; + resources.ApplyResources(this.btnToggleFavA, "btnToggleFavA"); this.btnToggleFavA.Name = "btnToggleFavA"; this.btnToggleFavA.Click += new System.EventHandler(this.btnToggleFav_Click); // // btnClearLeftFilter // - resources.ApplyResources(this.btnClearLeftFilter, "btnClearLeftFilter"); this.btnClearLeftFilter.Appearance.Font = ((System.Drawing.Font)(resources.GetObject("btnClearLeftFilter.Appearance.Font"))); - this.btnClearLeftFilter.Appearance.GradientMode = ((System.Drawing.Drawing2D.LinearGradientMode)(resources.GetObject("btnClearLeftFilter.Appearance.GradientMode"))); - this.btnClearLeftFilter.Appearance.Image = ((System.Drawing.Image)(resources.GetObject("btnClearLeftFilter.Appearance.Image"))); this.btnClearLeftFilter.Appearance.Options.UseFont = true; this.btnClearLeftFilter.ImageIndex = 28; this.btnClearLeftFilter.ImageList = this.globalImageCollection1; + resources.ApplyResources(this.btnClearLeftFilter, "btnClearLeftFilter"); this.btnClearLeftFilter.Name = "btnClearLeftFilter"; this.btnClearLeftFilter.Click += new System.EventHandler(this.btnClearLeftFilter_Click); // // btnRenum // - resources.ApplyResources(this.btnRenum, "btnRenum"); this.btnRenum.ImageIndex = 22; this.btnRenum.ImageList = this.globalImageCollection1; + resources.ApplyResources(this.btnRenum, "btnRenum"); this.btnRenum.Name = "btnRenum"; this.btnRenum.Click += new System.EventHandler(this.btnRenum_Click); // // btnDown // - resources.ApplyResources(this.btnDown, "btnDown"); this.btnDown.ImageIndex = 25; this.btnDown.ImageList = this.globalImageCollection1; + resources.ApplyResources(this.btnDown, "btnDown"); this.btnDown.Name = "btnDown"; this.btnDown.Click += new System.EventHandler(this.btnDown_Click); // // btnUp // - resources.ApplyResources(this.btnUp, "btnUp"); this.btnUp.ImageIndex = 24; this.btnUp.ImageList = this.globalImageCollection1; + resources.ApplyResources(this.btnUp, "btnUp"); this.btnUp.Name = "btnUp"; this.btnUp.Click += new System.EventHandler(this.btnUp_Click); // // btnRemove // - resources.ApplyResources(this.btnRemove, "btnRemove"); this.btnRemove.ImageIndex = 11; this.btnRemove.ImageList = this.globalImageCollection1; + resources.ApplyResources(this.btnRemove, "btnRemove"); this.btnRemove.Name = "btnRemove"; this.btnRemove.Click += new System.EventHandler(this.btnRemove_Click); // // grpInputList // - resources.ApplyResources(this.grpInputList, "grpInputList"); this.grpInputList.Controls.Add(this.gridRight); this.grpInputList.Controls.Add(this.lblHotkeyRight); this.grpInputList.Controls.Add(this.panelControl3); + resources.ApplyResources(this.grpInputList, "grpInputList"); this.grpInputList.Name = "grpInputList"; this.grpInputList.Enter += new System.EventHandler(this.grpInputList_Enter); // // gridRight // - resources.ApplyResources(this.gridRight, "gridRight"); this.gridRight.DataSource = this.dsChannels; - this.gridRight.EmbeddedNavigator.AccessibleDescription = resources.GetString("gridRight.EmbeddedNavigator.AccessibleDescription"); - this.gridRight.EmbeddedNavigator.AccessibleName = resources.GetString("gridRight.EmbeddedNavigator.AccessibleName"); - this.gridRight.EmbeddedNavigator.AllowHtmlTextInToolTip = ((DevExpress.Utils.DefaultBoolean)(resources.GetObject("gridRight.EmbeddedNavigator.AllowHtmlTextInToolTip"))); - this.gridRight.EmbeddedNavigator.Anchor = ((System.Windows.Forms.AnchorStyles)(resources.GetObject("gridRight.EmbeddedNavigator.Anchor"))); - this.gridRight.EmbeddedNavigator.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("gridRight.EmbeddedNavigator.BackgroundImage"))); - this.gridRight.EmbeddedNavigator.BackgroundImageLayout = ((System.Windows.Forms.ImageLayout)(resources.GetObject("gridRight.EmbeddedNavigator.BackgroundImageLayout"))); - this.gridRight.EmbeddedNavigator.ImeMode = ((System.Windows.Forms.ImeMode)(resources.GetObject("gridRight.EmbeddedNavigator.ImeMode"))); - this.gridRight.EmbeddedNavigator.TextLocation = ((DevExpress.XtraEditors.NavigatorButtonsTextLocation)(resources.GetObject("gridRight.EmbeddedNavigator.TextLocation"))); - this.gridRight.EmbeddedNavigator.ToolTip = resources.GetString("gridRight.EmbeddedNavigator.ToolTip"); - this.gridRight.EmbeddedNavigator.ToolTipIconType = ((DevExpress.Utils.ToolTipIconType)(resources.GetObject("gridRight.EmbeddedNavigator.ToolTipIconType"))); - this.gridRight.EmbeddedNavigator.ToolTipTitle = resources.GetString("gridRight.EmbeddedNavigator.ToolTipTitle"); + resources.ApplyResources(this.gridRight, "gridRight"); this.gridRight.MainView = this.gviewRight; this.gridRight.Name = "gridRight"; this.gridRight.RepositoryItems.AddRange(new DevExpress.XtraEditors.Repository.RepositoryItem[] { @@ -484,11 +447,8 @@ // // gviewRight // - this.gviewRight.Appearance.HeaderPanel.GradientMode = ((System.Drawing.Drawing2D.LinearGradientMode)(resources.GetObject("gviewRight.Appearance.HeaderPanel.GradientMode"))); - this.gviewRight.Appearance.HeaderPanel.Image = ((System.Drawing.Image)(resources.GetObject("gviewRight.Appearance.HeaderPanel.Image"))); this.gviewRight.Appearance.HeaderPanel.Options.UseTextOptions = true; this.gviewRight.Appearance.HeaderPanel.TextOptions.WordWrap = DevExpress.Utils.WordWrap.Wrap; - resources.ApplyResources(this.gviewRight, "gviewRight"); this.gviewRight.ColumnPanelRowHeight = 35; this.gviewRight.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { this.colIndex, @@ -592,15 +552,8 @@ new DevExpress.XtraEditors.Controls.EditorButton(((DevExpress.XtraEditors.Controls.ButtonPredefines)(resources.GetObject("repositoryItemCheckedComboBoxEdit2.Buttons"))))}); this.repositoryItemCheckedComboBoxEdit2.CloseUpKey = new DevExpress.Utils.KeyShortcut(System.Windows.Forms.Keys.F2); this.repositoryItemCheckedComboBoxEdit2.ForceUpdateEditValue = DevExpress.Utils.DefaultBoolean.True; - this.repositoryItemCheckedComboBoxEdit2.Mask.AutoComplete = ((DevExpress.XtraEditors.Mask.AutoCompleteType)(resources.GetObject("repositoryItemCheckedComboBoxEdit2.Mask.AutoComplete"))); - this.repositoryItemCheckedComboBoxEdit2.Mask.BeepOnError = ((bool)(resources.GetObject("repositoryItemCheckedComboBoxEdit2.Mask.BeepOnError"))); this.repositoryItemCheckedComboBoxEdit2.Mask.EditMask = resources.GetString("repositoryItemCheckedComboBoxEdit2.Mask.EditMask"); - this.repositoryItemCheckedComboBoxEdit2.Mask.IgnoreMaskBlank = ((bool)(resources.GetObject("repositoryItemCheckedComboBoxEdit2.Mask.IgnoreMaskBlank"))); this.repositoryItemCheckedComboBoxEdit2.Mask.MaskType = ((DevExpress.XtraEditors.Mask.MaskType)(resources.GetObject("repositoryItemCheckedComboBoxEdit2.Mask.MaskType"))); - this.repositoryItemCheckedComboBoxEdit2.Mask.PlaceHolder = ((char)(resources.GetObject("repositoryItemCheckedComboBoxEdit2.Mask.PlaceHolder"))); - this.repositoryItemCheckedComboBoxEdit2.Mask.SaveLiteral = ((bool)(resources.GetObject("repositoryItemCheckedComboBoxEdit2.Mask.SaveLiteral"))); - this.repositoryItemCheckedComboBoxEdit2.Mask.ShowPlaceHolders = ((bool)(resources.GetObject("repositoryItemCheckedComboBoxEdit2.Mask.ShowPlaceHolders"))); - this.repositoryItemCheckedComboBoxEdit2.Mask.UseMaskAsDisplayFormat = ((bool)(resources.GetObject("repositoryItemCheckedComboBoxEdit2.Mask.UseMaskAsDisplayFormat"))); this.repositoryItemCheckedComboBoxEdit2.Name = "repositoryItemCheckedComboBoxEdit2"; this.repositoryItemCheckedComboBoxEdit2.PopupSizeable = false; this.repositoryItemCheckedComboBoxEdit2.SelectAllItemVisible = false; @@ -679,10 +632,10 @@ // // colServiceTypeName // - resources.ApplyResources(this.colServiceTypeName, "colServiceTypeName"); this.colServiceTypeName.FieldName = "ServiceTypeName"; this.colServiceTypeName.Name = "colServiceTypeName"; this.colServiceTypeName.OptionsColumn.AllowEdit = false; + resources.ApplyResources(this.colServiceTypeName, "colServiceTypeName"); // // colSatellite // @@ -742,7 +695,6 @@ // // colDebug // - resources.ApplyResources(this.colDebug, "colDebug"); this.colDebug.FieldName = "Debug"; this.colDebug.Name = "colDebug"; this.colDebug.OptionsColumn.AllowEdit = false; @@ -762,10 +714,10 @@ // // panelControl3 // - resources.ApplyResources(this.panelControl3, "panelControl3"); this.panelControl3.Controls.Add(this.btnAddAll); this.panelControl3.Controls.Add(this.btnClearRightFilter); this.panelControl3.Controls.Add(this.btnAdd); + resources.ApplyResources(this.panelControl3, "panelControl3"); this.panelControl3.Name = "panelControl3"; // // btnAddAll @@ -776,21 +728,19 @@ // // btnClearRightFilter // - resources.ApplyResources(this.btnClearRightFilter, "btnClearRightFilter"); this.btnClearRightFilter.Appearance.Font = ((System.Drawing.Font)(resources.GetObject("btnClearRightFilter.Appearance.Font"))); - this.btnClearRightFilter.Appearance.GradientMode = ((System.Drawing.Drawing2D.LinearGradientMode)(resources.GetObject("btnClearRightFilter.Appearance.GradientMode"))); - this.btnClearRightFilter.Appearance.Image = ((System.Drawing.Image)(resources.GetObject("btnClearRightFilter.Appearance.Image"))); this.btnClearRightFilter.Appearance.Options.UseFont = true; this.btnClearRightFilter.ImageIndex = 28; this.btnClearRightFilter.ImageList = this.globalImageCollection1; + resources.ApplyResources(this.btnClearRightFilter, "btnClearRightFilter"); this.btnClearRightFilter.Name = "btnClearRightFilter"; this.btnClearRightFilter.Click += new System.EventHandler(this.btnClearRightFilter_Click); // // btnAdd // - resources.ApplyResources(this.btnAdd, "btnAdd"); this.btnAdd.ImageIndex = 26; this.btnAdd.ImageList = this.globalImageCollection1; + resources.ApplyResources(this.btnAdd, "btnAdd"); this.btnAdd.Name = "btnAdd"; this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click); // @@ -1185,8 +1135,8 @@ // // miEnglish // - resources.ApplyResources(this.miEnglish, "miEnglish"); this.miEnglish.ButtonStyle = DevExpress.XtraBars.BarButtonStyle.Check; + resources.ApplyResources(this.miEnglish, "miEnglish"); this.miEnglish.CategoryGuid = new System.Guid("870e935c-f3d9-4202-9c58-87966069155d"); this.miEnglish.Id = 2; this.miEnglish.ImageIndex = 0; @@ -1196,8 +1146,8 @@ // // miGerman // - resources.ApplyResources(this.miGerman, "miGerman"); this.miGerman.ButtonStyle = DevExpress.XtraBars.BarButtonStyle.Check; + resources.ApplyResources(this.miGerman, "miGerman"); this.miGerman.CategoryGuid = new System.Guid("870e935c-f3d9-4202-9c58-87966069155d"); this.miGerman.Id = 1; this.miGerman.ImageIndex = 1; @@ -1271,31 +1221,23 @@ // // barDockControlTop // - resources.ApplyResources(this.barDockControlTop, "barDockControlTop"); - this.barDockControlTop.Appearance.GradientMode = ((System.Drawing.Drawing2D.LinearGradientMode)(resources.GetObject("barDockControlTop.Appearance.GradientMode"))); - this.barDockControlTop.Appearance.Image = ((System.Drawing.Image)(resources.GetObject("barDockControlTop.Appearance.Image"))); this.barDockControlTop.CausesValidation = false; + resources.ApplyResources(this.barDockControlTop, "barDockControlTop"); // // barDockControlBottom // - resources.ApplyResources(this.barDockControlBottom, "barDockControlBottom"); - this.barDockControlBottom.Appearance.GradientMode = ((System.Drawing.Drawing2D.LinearGradientMode)(resources.GetObject("barDockControlBottom.Appearance.GradientMode"))); - this.barDockControlBottom.Appearance.Image = ((System.Drawing.Image)(resources.GetObject("barDockControlBottom.Appearance.Image"))); this.barDockControlBottom.CausesValidation = false; + resources.ApplyResources(this.barDockControlBottom, "barDockControlBottom"); // // barDockControlLeft // - resources.ApplyResources(this.barDockControlLeft, "barDockControlLeft"); - this.barDockControlLeft.Appearance.GradientMode = ((System.Drawing.Drawing2D.LinearGradientMode)(resources.GetObject("barDockControlLeft.Appearance.GradientMode"))); - this.barDockControlLeft.Appearance.Image = ((System.Drawing.Image)(resources.GetObject("barDockControlLeft.Appearance.Image"))); this.barDockControlLeft.CausesValidation = false; + resources.ApplyResources(this.barDockControlLeft, "barDockControlLeft"); // // barDockControlRight // - resources.ApplyResources(this.barDockControlRight, "barDockControlRight"); - this.barDockControlRight.Appearance.GradientMode = ((System.Drawing.Drawing2D.LinearGradientMode)(resources.GetObject("barDockControlRight.Appearance.GradientMode"))); - this.barDockControlRight.Appearance.Image = ((System.Drawing.Image)(resources.GetObject("barDockControlRight.Appearance.Image"))); this.barDockControlRight.CausesValidation = false; + resources.ApplyResources(this.barDockControlRight, "barDockControlRight"); // // miMoveUp // @@ -1324,22 +1266,10 @@ // resources.ApplyResources(this.txtSetSlot, "txtSetSlot"); this.txtSetSlot.Name = "txtSetSlot"; - this.txtSetSlot.Properties.AccessibleDescription = resources.GetString("txtSetSlot.Properties.AccessibleDescription"); - this.txtSetSlot.Properties.AccessibleName = resources.GetString("txtSetSlot.Properties.AccessibleName"); - this.txtSetSlot.Properties.AutoHeight = ((bool)(resources.GetObject("txtSetSlot.Properties.AutoHeight"))); this.txtSetSlot.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Controls.EditorButton(((DevExpress.XtraEditors.Controls.ButtonPredefines)(resources.GetObject("txtSetSlot.Properties.Buttons"))))}); - this.txtSetSlot.Properties.Mask.AutoComplete = ((DevExpress.XtraEditors.Mask.AutoCompleteType)(resources.GetObject("txtSetSlot.Properties.Mask.AutoComplete"))); - this.txtSetSlot.Properties.Mask.BeepOnError = ((bool)(resources.GetObject("txtSetSlot.Properties.Mask.BeepOnError"))); this.txtSetSlot.Properties.Mask.EditMask = resources.GetString("txtSetSlot.Properties.Mask.EditMask"); - this.txtSetSlot.Properties.Mask.IgnoreMaskBlank = ((bool)(resources.GetObject("txtSetSlot.Properties.Mask.IgnoreMaskBlank"))); this.txtSetSlot.Properties.Mask.MaskType = ((DevExpress.XtraEditors.Mask.MaskType)(resources.GetObject("txtSetSlot.Properties.Mask.MaskType"))); - this.txtSetSlot.Properties.Mask.PlaceHolder = ((char)(resources.GetObject("txtSetSlot.Properties.Mask.PlaceHolder"))); - this.txtSetSlot.Properties.Mask.SaveLiteral = ((bool)(resources.GetObject("txtSetSlot.Properties.Mask.SaveLiteral"))); - this.txtSetSlot.Properties.Mask.ShowPlaceHolders = ((bool)(resources.GetObject("txtSetSlot.Properties.Mask.ShowPlaceHolders"))); - this.txtSetSlot.Properties.Mask.UseMaskAsDisplayFormat = ((bool)(resources.GetObject("txtSetSlot.Properties.Mask.UseMaskAsDisplayFormat"))); - this.txtSetSlot.Properties.NullValuePrompt = resources.GetString("txtSetSlot.Properties.NullValuePrompt"); - this.txtSetSlot.Properties.NullValuePromptShowForEmptyValue = ((bool)(resources.GetObject("txtSetSlot.Properties.NullValuePromptShowForEmptyValue"))); this.txtSetSlot.ButtonClick += new DevExpress.XtraEditors.Controls.ButtonPressedEventHandler(this.txtSetSlot_ButtonClick); this.txtSetSlot.EditValueChanged += new System.EventHandler(this.txtSetSlot_EditValueChanged); this.txtSetSlot.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtSetSlot_KeyDown); @@ -1355,11 +1285,7 @@ this.picDonate.EditValue = global::ChanSort.Ui.Properties.Resources.Donate; this.picDonate.MenuManager = this.barManager1; this.picDonate.Name = "picDonate"; - this.picDonate.Properties.AccessibleDescription = resources.GetString("picDonate.Properties.AccessibleDescription"); - this.picDonate.Properties.AccessibleName = resources.GetString("picDonate.Properties.AccessibleName"); this.picDonate.Properties.Appearance.BackColor = ((System.Drawing.Color)(resources.GetObject("picDonate.Properties.Appearance.BackColor"))); - this.picDonate.Properties.Appearance.GradientMode = ((System.Drawing.Drawing2D.LinearGradientMode)(resources.GetObject("picDonate.Properties.Appearance.GradientMode"))); - this.picDonate.Properties.Appearance.Image = ((System.Drawing.Image)(resources.GetObject("picDonate.Properties.Appearance.Image"))); this.picDonate.Properties.Appearance.Options.UseBackColor = true; this.picDonate.Properties.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder; this.picDonate.Properties.PictureAlignment = System.Drawing.ContentAlignment.TopRight; @@ -1371,7 +1297,6 @@ // // grpTopPanel // - resources.ApplyResources(this.grpTopPanel, "grpTopPanel"); this.grpTopPanel.Controls.Add(this.rbInsertSwap); this.grpTopPanel.Controls.Add(this.rbInsertAfter); this.grpTopPanel.Controls.Add(this.rbInsertBefore); @@ -1382,6 +1307,7 @@ this.grpTopPanel.Controls.Add(this.tabChannelList); this.grpTopPanel.Controls.Add(this.labelControl11); this.grpTopPanel.Controls.Add(this.txtSetSlot); + resources.ApplyResources(this.grpTopPanel, "grpTopPanel"); this.grpTopPanel.Name = "grpTopPanel"; this.grpTopPanel.ShowCaption = false; // @@ -1390,18 +1316,10 @@ resources.ApplyResources(this.rbInsertSwap, "rbInsertSwap"); this.rbInsertSwap.MenuManager = this.barManager1; this.rbInsertSwap.Name = "rbInsertSwap"; - this.rbInsertSwap.Properties.AccessibleDescription = resources.GetString("rbInsertSwap.Properties.AccessibleDescription"); - this.rbInsertSwap.Properties.AccessibleName = resources.GetString("rbInsertSwap.Properties.AccessibleName"); - this.rbInsertSwap.Properties.Appearance.GradientMode = ((System.Drawing.Drawing2D.LinearGradientMode)(resources.GetObject("rbInsertSwap.Properties.Appearance.GradientMode"))); - this.rbInsertSwap.Properties.Appearance.Image = ((System.Drawing.Image)(resources.GetObject("rbInsertSwap.Properties.Appearance.Image"))); this.rbInsertSwap.Properties.Appearance.Options.UseTextOptions = true; this.rbInsertSwap.Properties.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far; - this.rbInsertSwap.Properties.AutoHeight = ((bool)(resources.GetObject("rbInsertSwap.Properties.AutoHeight"))); this.rbInsertSwap.Properties.Caption = resources.GetString("rbInsertSwap.Properties.Caption"); this.rbInsertSwap.Properties.CheckStyle = DevExpress.XtraEditors.Controls.CheckStyles.Radio; - this.rbInsertSwap.Properties.DisplayValueChecked = resources.GetString("rbInsertSwap.Properties.DisplayValueChecked"); - this.rbInsertSwap.Properties.DisplayValueGrayed = resources.GetString("rbInsertSwap.Properties.DisplayValueGrayed"); - this.rbInsertSwap.Properties.DisplayValueUnchecked = resources.GetString("rbInsertSwap.Properties.DisplayValueUnchecked"); this.rbInsertSwap.Properties.GlyphAlignment = ((DevExpress.Utils.HorzAlignment)(resources.GetObject("rbInsertSwap.Properties.GlyphAlignment"))); this.rbInsertSwap.Properties.RadioGroupIndex = 1; this.rbInsertSwap.TabStop = false; @@ -1412,14 +1330,8 @@ resources.ApplyResources(this.rbInsertAfter, "rbInsertAfter"); this.rbInsertAfter.MenuManager = this.barManager1; this.rbInsertAfter.Name = "rbInsertAfter"; - this.rbInsertAfter.Properties.AccessibleDescription = resources.GetString("rbInsertAfter.Properties.AccessibleDescription"); - this.rbInsertAfter.Properties.AccessibleName = resources.GetString("rbInsertAfter.Properties.AccessibleName"); - this.rbInsertAfter.Properties.AutoHeight = ((bool)(resources.GetObject("rbInsertAfter.Properties.AutoHeight"))); this.rbInsertAfter.Properties.Caption = resources.GetString("rbInsertAfter.Properties.Caption"); this.rbInsertAfter.Properties.CheckStyle = DevExpress.XtraEditors.Controls.CheckStyles.Radio; - this.rbInsertAfter.Properties.DisplayValueChecked = resources.GetString("rbInsertAfter.Properties.DisplayValueChecked"); - this.rbInsertAfter.Properties.DisplayValueGrayed = resources.GetString("rbInsertAfter.Properties.DisplayValueGrayed"); - this.rbInsertAfter.Properties.DisplayValueUnchecked = resources.GetString("rbInsertAfter.Properties.DisplayValueUnchecked"); this.rbInsertAfter.Properties.RadioGroupIndex = 1; this.rbInsertAfter.CheckedChanged += new System.EventHandler(this.rbInsertMode_CheckedChanged); // @@ -1428,14 +1340,8 @@ resources.ApplyResources(this.rbInsertBefore, "rbInsertBefore"); this.rbInsertBefore.MenuManager = this.barManager1; this.rbInsertBefore.Name = "rbInsertBefore"; - this.rbInsertBefore.Properties.AccessibleDescription = resources.GetString("rbInsertBefore.Properties.AccessibleDescription"); - this.rbInsertBefore.Properties.AccessibleName = resources.GetString("rbInsertBefore.Properties.AccessibleName"); - this.rbInsertBefore.Properties.AutoHeight = ((bool)(resources.GetObject("rbInsertBefore.Properties.AutoHeight"))); this.rbInsertBefore.Properties.Caption = resources.GetString("rbInsertBefore.Properties.Caption"); this.rbInsertBefore.Properties.CheckStyle = DevExpress.XtraEditors.Controls.CheckStyles.Radio; - this.rbInsertBefore.Properties.DisplayValueChecked = resources.GetString("rbInsertBefore.Properties.DisplayValueChecked"); - this.rbInsertBefore.Properties.DisplayValueGrayed = resources.GetString("rbInsertBefore.Properties.DisplayValueGrayed"); - this.rbInsertBefore.Properties.DisplayValueUnchecked = resources.GetString("rbInsertBefore.Properties.DisplayValueUnchecked"); this.rbInsertBefore.Properties.RadioGroupIndex = 1; this.rbInsertBefore.TabStop = false; this.rbInsertBefore.CheckedChanged += new System.EventHandler(this.rbInsertMode_CheckedChanged); @@ -1445,26 +1351,14 @@ resources.ApplyResources(this.cbCloseGap, "cbCloseGap"); this.cbCloseGap.MenuManager = this.barManager1; this.cbCloseGap.Name = "cbCloseGap"; - this.cbCloseGap.Properties.AccessibleDescription = resources.GetString("cbCloseGap.Properties.AccessibleDescription"); - this.cbCloseGap.Properties.AccessibleName = resources.GetString("cbCloseGap.Properties.AccessibleName"); - this.cbCloseGap.Properties.AutoHeight = ((bool)(resources.GetObject("cbCloseGap.Properties.AutoHeight"))); this.cbCloseGap.Properties.Caption = resources.GetString("cbCloseGap.Properties.Caption"); - this.cbCloseGap.Properties.DisplayValueChecked = resources.GetString("cbCloseGap.Properties.DisplayValueChecked"); - this.cbCloseGap.Properties.DisplayValueGrayed = resources.GetString("cbCloseGap.Properties.DisplayValueGrayed"); - this.cbCloseGap.Properties.DisplayValueUnchecked = resources.GetString("cbCloseGap.Properties.DisplayValueUnchecked"); // // cbAppendUnsortedChannels // resources.ApplyResources(this.cbAppendUnsortedChannels, "cbAppendUnsortedChannels"); this.cbAppendUnsortedChannels.MenuManager = this.barManager1; this.cbAppendUnsortedChannels.Name = "cbAppendUnsortedChannels"; - this.cbAppendUnsortedChannels.Properties.AccessibleDescription = resources.GetString("cbAppendUnsortedChannels.Properties.AccessibleDescription"); - this.cbAppendUnsortedChannels.Properties.AccessibleName = resources.GetString("cbAppendUnsortedChannels.Properties.AccessibleName"); - this.cbAppendUnsortedChannels.Properties.AutoHeight = ((bool)(resources.GetObject("cbAppendUnsortedChannels.Properties.AutoHeight"))); this.cbAppendUnsortedChannels.Properties.Caption = resources.GetString("cbAppendUnsortedChannels.Properties.Caption"); - this.cbAppendUnsortedChannels.Properties.DisplayValueChecked = resources.GetString("cbAppendUnsortedChannels.Properties.DisplayValueChecked"); - this.cbAppendUnsortedChannels.Properties.DisplayValueGrayed = resources.GetString("cbAppendUnsortedChannels.Properties.DisplayValueGrayed"); - this.cbAppendUnsortedChannels.Properties.DisplayValueUnchecked = resources.GetString("cbAppendUnsortedChannels.Properties.DisplayValueUnchecked"); // // tabChannelList // @@ -1477,8 +1371,8 @@ // // pageEmpty // - resources.ApplyResources(this.pageEmpty, "pageEmpty"); this.pageEmpty.Name = "pageEmpty"; + resources.ApplyResources(this.pageEmpty, "pageEmpty"); // // mnuContext // @@ -1500,6 +1394,13 @@ this.mnuContext.Manager = this.barManager1; this.mnuContext.Name = "mnuContext"; // + // colOutServiceType + // + resources.ApplyResources(this.colOutServiceType, "colOutServiceType"); + this.colOutServiceType.FieldName = "ServiceTypeName"; + this.colOutServiceType.Name = "colOutServiceType"; + this.colOutServiceType.OptionsColumn.AllowEdit = false; + // // MainForm // resources.ApplyResources(this, "$this"); @@ -1525,7 +1426,6 @@ ((System.ComponentModel.ISupportInitialize)(this.repositoryItemCheckedComboBoxEdit1)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pnlEditControls)).EndInit(); this.pnlEditControls.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.globalImageCollection1)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.grpInputList)).EndInit(); this.grpInputList.ResumeLayout(false); this.grpInputList.PerformLayout(); @@ -1676,6 +1576,7 @@ private DevExpress.XtraEditors.SimpleButton btnToggleFavB; private DevExpress.XtraEditors.SimpleButton btnToggleFavA; private DevExpress.XtraGrid.Columns.GridColumn colOutLock; + private DevExpress.XtraGrid.Columns.GridColumn colOutServiceType; private DevExpress.XtraSplashScreen.SplashScreenManager splashScreenManager1; } } diff --git a/ChanSort/MainForm.cs b/ChanSort/MainForm.cs index e45eb47..2157229 100644 --- a/ChanSort/MainForm.cs +++ b/ChanSort/MainForm.cs @@ -17,12 +17,13 @@ using DevExpress.XtraGrid; using DevExpress.XtraGrid.Columns; using DevExpress.XtraGrid.Views.Base; using DevExpress.XtraGrid.Views.Grid; +using DevExpress.XtraTab; namespace ChanSort.Ui { public partial class MainForm : XtraForm { - public const string AppVersion = "v2013-04-08"; + public const string AppVersion = "v2013-04-09"; #region enum EditMode private enum EditMode @@ -259,17 +260,21 @@ namespace ChanSort.Ui private void FillChannelListCombo() { this.tabChannelList.TabPages.Clear(); - bool firstNonEmpty = true; + XtraTabPage firstNonEmpty = null; foreach (var list in this.dataRoot.ChannelLists) { var tab = this.tabChannelList.TabPages.Add(list.Caption); tab.Tag = list; - if (firstNonEmpty && list.Count > 0) - { - tabChannelList.SelectedTabPage = tab; - firstNonEmpty = false; - } + if (firstNonEmpty == null && list.Count > 0) + firstNonEmpty = tab; } + + if (firstNonEmpty == null) + firstNonEmpty = tabChannelList.TabPages[0]; + if (firstNonEmpty == this.tabChannelList.SelectedTabPage) + this.ShowChannelList((ChannelList)firstNonEmpty.Tag); + else + this.tabChannelList.SelectedTabPage = firstNonEmpty; } #endregion @@ -314,9 +319,10 @@ namespace ChanSort.Ui return null; } string extension = (Path.GetExtension(inputFileName) ?? "").ToUpper(); + string upperFileName = Path.GetFileName(inputFileName).ToUpper(); foreach (var plugin in this.plugins) { - if ((plugin.FileFilter.ToUpper()+"|").Contains("*"+extension)) + if ((plugin.FileFilter.ToUpper()+"|").Contains("*"+extension) || plugin.FileFilter.ToUpper() == upperFileName) return plugin; } @@ -680,7 +686,7 @@ namespace ChanSort.Ui maxNr = Math.Max(maxNr, channel.NewProgramNr); foreach (var channel in this.currentChannelList.Channels) { - if (channel.NewProgramNr == 0 && !channel.IsDeleted) + if (channel.NewProgramNr == -1 && !channel.IsDeleted) channel.NewProgramNr = maxNr++; } this.gviewRight.EndDataUpdate(); @@ -875,7 +881,7 @@ namespace ChanSort.Ui { this.gviewLeft.BeginSort(); this.gviewLeft.ClearColumnsFilter(); - this.colOutSlot.FilterInfo = new ColumnFilterInfo("[NewProgramNr]<>0"); + this.colOutSlot.FilterInfo = new ColumnFilterInfo("[NewProgramNr]<>-1"); this.gviewLeft.EndSort(); } @@ -883,7 +889,7 @@ namespace ChanSort.Ui { this.gviewRight.BeginSort(); this.gviewRight.ClearColumnsFilter(); - this.colSlotOld.FilterInfo = new ColumnFilterInfo("[OldProgramNr]<>0"); + this.colSlotOld.FilterInfo = new ColumnFilterInfo("[OldProgramNr]<>-1"); this.gviewRight.EndSort(); } #endregion @@ -892,9 +898,9 @@ namespace ChanSort.Ui private void LoadInputGridLayout(SignalSource newSource) { string newLayout; - if ((newSource & SignalSource.Digital) == 0) + if ((newSource & SignalSource.Analog) != 0) newLayout = Settings.Default.InputGridLayoutAnalog; - else if (newSource == SignalSource.DvbS) + else if ((newSource & SignalSource.DvbS) != 0) newLayout = Settings.Default.InputGridLayoutDvbS; else newLayout = Settings.Default.InputGridLayoutDvbCT; @@ -1456,7 +1462,7 @@ namespace ChanSort.Ui if (e.Column == this.colSlotNew) { if (!(e.Value is int)) return; - if ((int) e.Value == 0) + if ((int) e.Value == -1) e.DisplayText = string.Empty; } else if (e.Column == this.colFavorites) @@ -1473,12 +1479,12 @@ namespace ChanSort.Ui { ChannelInfo channel = (ChannelInfo)this.gviewRight.GetRow(e.RowHandle); if (channel == null) return; - if (channel.OldProgramNr == 0) + if (channel.OldProgramNr == -1) { e.Appearance.ForeColor = Color.Red; e.Appearance.Options.UseForeColor = true; } - else if (channel.NewProgramNr != 0) + else if (channel.NewProgramNr != -1) { e.Appearance.ForeColor = Color.Gray; e.Appearance.Options.UseForeColor = true; @@ -1590,7 +1596,7 @@ namespace ChanSort.Ui { var channel = (ChannelInfo)this.gviewLeft.GetRow(e.RowHandle); if (channel == null) return; - if (channel.OldProgramNr == 0) + if (channel.OldProgramNr == -1) { e.Appearance.ForeColor = Color.Red; e.Appearance.Options.UseForeColor = true; diff --git a/ChanSort/MainForm.resx b/ChanSort/MainForm.resx index 1173a34..89edd26 100644 --- a/ChanSort/MainForm.resx +++ b/ChanSort/MainForm.resx @@ -117,397 +117,303 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - lblHotkeyLeft - - - - - - - 5 - - - 17 - - - miFavUnset - - - 2 - - - Program number for insert and set operations - - - $this - - - DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - colNetworkName - - - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - - - - DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - miEnglish - - - miRemove - - - DevExpress.XtraTab.XtraTabPage, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - True - - - defaultLookAndFeel1 + + Fill - - 66, 20 + + 0, 109 - - 339, 417 + + 361, 17 + + + Fill - - True - - - 0 - - - colName - - - 0, 0 - - - miFavSet - - - - - - - Bottom - - - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - - - - btnAddAll - - - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - + + 2, 54 Pr. index - - 0, 568 + + Service Type - + + True - - - - AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxMi4yLCBWZXJzaW9uPTEy - LjIuNi4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA - ACZEZXZFeHByZXNzLlh0cmFCYXJzLkJhck1hbmFnZXJDYXRlZ29yeQMAAAAETmFtZQRHdWlkB1Zpc2li - bGUBAwALU3lzdGVtLkd1aWQBAgAAAAYDAAAABEVkaXQE/P///wtTeXN0ZW0uR3VpZAsAAAACX2ECX2IC - X2MCX2QCX2UCX2YCX2cCX2gCX2kCX2oCX2sAAAAAAAAAAAAAAAgHBwICAgICAgICZMTu18lZRU+IqmAu - ZMgcwAEL - + + 0 - - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + 45 - - DevExpress.Utils.SharedImageCollection, DevExpress.Utils.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + New Pr# - - + + New program number - - + + True - + 1 - - 8 - - - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - 169, 24 - - - DevExpress.XtraGrid.Views.Grid.GridView, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - miSkipOff - - - &English - - - Right - - - Alle &Zeichensätze... - - - bar1 - - - &Language - - - gridRight - 50 - - pnlEditControls + + Channel name - - 182, 5 - - - colServiceId - - - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - 0, 109 - - - barDockControlTop - - - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - - None - - - - - - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - miMoveDown - - - colNetworkOperator - - - &Skip channel: on - - - grpOutputList - - - colServiceTypeName - - - colIndex - - - 23, 23 - - - 4 - - + True - - DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + 2 + + + 158 Favorites - - Erase all channel data + + False - - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + Combo - - 1474, 0 - - + - - Sor&t channels alphabetically - - - True - - - after - - - 5, 5 - - + RegEx - - Horizontal + + True - - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + 3 - - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - 19 - - - Default - - - &Lock channel: on - - - Order - - - System.Windows.Forms.BindingSource, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 311, 25 - - - Locked - - - globalImageCollection1 - - - Bottom, Left - - - gviewRight - - - miCharsetForm - - - 0 - - - DevExpress.XtraEditors.PictureEdit, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - + 55 - - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - &Quit - - - Tile - - - 45 - - - miSave - - - panelControl3 + + UID Lock - - miQuit + + Parental lock - - 8 + + True - - MainForm + + 4 - - 5 + + 35 + + + 339, 417 + + + 1 + + + gridLeft + + + DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + grpOutputList + + + 0 + + + Bottom + + + 2, 471 + + + 2, 2, 2, 2 + + + 302, 17 + + + 2 + + + F3: Filter | F4: List | -: move up | +: move down | Del: remove + + + lblHotkeyLeft + + + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + grpOutputList + + + 1 + + + 600, 17 + + + True + + + 6, 13 + + + 1474, 599 + + + 5, 24 + + + 475, 17 + + + &File + + + &Open TV data file... + + + &Reload + + + Restore backup + + + File &information... + + + &Save + + + Save &as... + + + Import reference list... + + + &Quit + + + &Edit + + + &Add channels + + + &Remove channels + + + Sor&t channels alphabetically + + + Re&number channels + + + Add to &Favorites + + + Favoriten setzen + + + Remove from Favorites + + + Favoriten entfernen + + + &Lock channel: on + + + Lock channel: off + + + &Skip channel: on + + + Skip channel: off + + + &Hide channel: on + + + Hide channel: off + + + TV-Set + + + Device setting... + + + Erase all channel data + + + &Settings + + + &Language + + + &English + + + &Deutsch + + + &Character set + + + Alle &Zeichensätze... ISO Zeichensätze - - 5 + + &Help - - False + + Wiki - - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + ChanSort website... - - swap + + &About ChanSort... - - grpInputList + + Tools - - - - - miGerman - - - >> - - - Transparent - - - Channel or transponder number - - - + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxMi4yLCBWZXJzaW9uPTEy + LjIuNi4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA + ACZEZXZFeHByZXNzLlh0cmFCYXJzLkJhck1hbmFnZXJDYXRlZ29yeQMAAAAETmFtZQRHdWlkB1Zpc2li + bGUBAwALU3lzdGVtLkd1aWQBAgAAAAYDAAAABEZpbGUE/P///wtTeXN0ZW0uR3VpZAsAAAACX2ECX2IC + X2MCX2QCX2UCX2YCX2cCX2gCX2kCX2oCX2sAAAAAAAAAAAAAAAgHBwICAgICAgICKaPJ5gsBeU2NTSFe + Xxl+0wEL + @@ -519,612 +425,15 @@ KphCYAEL - - 35 - - - - - - DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - 3 - - - True - - - DevExpress.XtraBars.BarDockControl, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - Tahoma, 8.25pt, style=Strikeout - - - - - - &Settings - - - True - - - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - _ - - - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - 207, 5 - - - grpTopPanel - - - 62, 13 - - - Panel1 - - - 34, 5 - - - grpTopPanel - - - 23, 23 - - - - - - 66, 23 - - - True - - - 40 - - - True - - - 0, 568 - - - 23, 23 - - - 0, 54 - - - 1474, 78 - - - DevExpress.XtraEditors.Repository.RepositoryItemCheckedComboBoxEdit, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - F5: Filter | F6: List | Enter: add - - - 0 - - - &Open TV data file... - - - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - Default - - - Old Pr# - - - pnlEditControls - - - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - Horizontal - - - True - - - 14 - - - - - - 2, 21 - - - 8 - - - mnuFavSet - - - colHidden - - - 5, 5 - - - 0 - - - True - - - miSaveAs - - - colIndex1 - - - 1122, 33 - - - True - - - Move down - - - Default - - - colShortName - - - colNetworkId - - - Fill - - - 10 - - - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - True - - - 0 - - - DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - 21 - - - colPolarity - - - DevExpress.XtraEditors.ButtonEdit, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - miAddChannel - - - miHideOff - - - Crypt - - - dsChannels - - - 6, 13 - - - colTransportStreamId - - - before - - - - - - - - - ChanSort website... - - - 4 - - - barManager1 - - - colLogicalIndex - - - 04/07/2013 16:22:20 - - - Audio PID - - - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - colChannelOrTransponder - - - DevExpress.XtraBars.BarListItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - 7 - - - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - panelControl3 - - - Hide - - - 1 - - - 1126, 490 - - - &Deutsch - - - True - - - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - No file loaded - - - - - - Save &as... - - - DevExpress.XtraBars.BarManager, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - True - - - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - 5 - - - colSlotOld - - - False - - - 121, 23 - - - 40 - - - grpOutputList - - - 40 - - - Symbol rate - - - grpTopPanel - - - True - - - - Default - - - Combo - - - TV-Set - - - - - - Chan/ Transp - - - DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - btnToggleFavB - - - - - - labelControl2 - - - 9 - - - Parental lock - - - Tools - - - False - - - 10 - - - 57 - - - 132, 5 - - - - - - miSort - - - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - 0 - - - Top - - - False - - - Default - - - colOutFav - - - 23, 23 - - - False - - - 80, 13 - - - $this - - - 1 - - - DevExpress.XtraBars.BarListItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - 4 - - - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - 2, 471 - - - New program number - - - - - - 2 - - - colSatellite - - - 11 - - - colVideoPid - - - False - - - 0 - - - mnuFavUnset - - - True - - - Reset filter - - - Top - - - 16 - - - Top, Left - - - miTvSettings - - - miFileInformation - - - 12 - - - 6 - - - 7 - - - miWiki - - - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - - - - 23, 23 - - - Channel name - - - 40 - - - 1-999 - - - 157, 5 - - - Service ID - - - Reset filter - - - DevExpress.LookAndFeel.DefaultLookAndFeel, DevExpress.Utils.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - btnClearLeftFilter - - - 44, 5 - - - grpTopPanel - - - DevExpress.XtraSplashScreen.SplashScreenManager, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - 6 - - - 50 - - - miFile - - - Lock channel: off - - - &About ChanSort... - - - 1 - - - colEncrypted - - - 1 - - - 23, 23 - - - 1474, 599 - - - $this - - - Append all currently unsorted channels at the end of the list - - - 5 - - - Close gap when moving/deleting a channel - - - 75, 19 - - - 9 - - - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - Skip - - - Tile - - - 45 - - - 14 + + + AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxMi4yLCBWZXJzaW9uPTEy + LjIuNi4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA + ACZEZXZFeHByZXNzLlh0cmFCYXJzLkJhck1hbmFnZXJDYXRlZ29yeQMAAAAETmFtZQRHdWlkB1Zpc2li + bGUBAwALU3lzdGVtLkd1aWQBAgAAAAYDAAAABEVkaXQE/P///wtTeXN0ZW0uR3VpZAsAAAACX2ECX2IC + X2MCX2QCX2UCX2YCX2cCX2gCX2kCX2oCX2sAAAAAAAAAAAAAAAgHBwICAgICAgICZMTu18lZRU+IqmAu + ZMgcwAEL + @@ -1136,1373 +445,1781 @@ WIeWYGkVXQEL - - Filter - - - 23, 23 - - - - - - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - Uid - - - 311, 4 - - - True - - - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - 0 - - - Short name - - - panelControl3 - - - 2 - - - - - - 40 - - - 40 - - - pnlEditControls - - - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - 322, 19 - - - 0 - - - &Remove channels - - - 18 - - - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - Horizontal - - - ±C - - - 88, 5 - - - &File - - - colOutSlot - - - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - Bottom - - - 5, 24 - - - _ - - - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - 5 - - - 23, 23 - - - ±B - - - Vertical - - - grpTopPanel - - - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - True - - - 3 - - - 2 - - - grpInputList - - - btnDown - - - 40 - - - 2, 54 - - - ChanSort {0} - Channel List Editor for LG and Samsung TVs - - - 302, 17 - - - 6 - - - UID - - - True - - - True - - - labelControl11 - - - 0 - - - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - rbInsertSwap - - - $this - - - miMoveUp - - - Tahoma, 8.25pt, style=Strikeout - - - True - - - pageEmpty - - - grpTopPanel - - - &Hide channel: on - - - 10 - - - - AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxMi4yLCBWZXJzaW9uPTEy - LjIuNi4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA - ACZEZXZFeHByZXNzLlh0cmFCYXJzLkJhck1hbmFnZXJDYXRlZ29yeQMAAAAETmFtZQRHdWlkB1Zpc2li - bGUBAwALU3lzdGVtLkd1aWQBAgAAAAYDAAAABEZpbGUE/P///wtTeXN0ZW0uR3VpZAsAAAACX2ECX2IC - X2MCX2QCX2UCX2YCX2cCX2gCX2kCX2oCX2sAAAAAAAAAAAAAAAgHBwICAgICAgICKaPJ5gsBeU2NTSFe - Xxl+0wEL - - - - True - - - - - - btnToggleFavC - - - DevExpress.XtraGrid.Views.Grid.GridView, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - 23, 23 - - - colAudioPid - - - Favoriten setzen - - - Fill - - - 158 - - - 2, 2, 2, 2 - - - True - - - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - 2 - - - True - - - 40 - - - 45 - - - 6 - - - $this - - - - - - 4 - - - True - - - Old program number - - - Insert mode: - - - 98, 5 - - - 45 - - - 2 - - - 2 - - - Horizontal - - - Device setting... - - - 1 - - - pnlEditControls - - - Encrypted - - - cbCloseGap - - - miRestoreOriginal - - - 0 - - - True - - - DevExpress.XtraEditors.Repository.RepositoryItemCheckedComboBoxEdit, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - tabChannelList - - - 15 - - - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - rbInsertAfter - - - 5 - - - miReload - - - splitContainerControl1.Panel2 - - - $this - - - barSubItem1 - - - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - False - - - ±A - - - True - - - Horizontal - - - True - - - pnlEditControls - - - Channel name - - - 0 - - - grpTopPanel - - - Add to &Favorites - - - Re&number channels - - - 23, 23 - - - 1474, 490 - - - True - - - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - tabChannelList - - - - - - 100 - - - pnlEditControls - - - barDockControlBottom - - - 232, 5 - - - cbAppendUnsortedChannels - - - pnlEditControls - - - Move selected channels up - - - 23, 23 - - - Satellite - - - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - Pr. index - - - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - v - - - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - miIsoCharSets - - - True - - - 40 - - - gviewLeft - - - RegEx - - - 2, 21 - - - Panel2 - - - - - - DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - grpTopPanel - - - repositoryItemCheckedComboBoxEdit2 - - - barDockControlLeft - - - Network Operator - - - 169, 8 - - - 0 - - - - - - DevExpress.XtraBars.BarDockControl, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - 3 - - - ±E - - - 55 - - - - - - - - - btnToggleLock - - - picDonate - - - 638, 22 - - - _ - - - colUid - - - ±D - - - DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - Auto-append unsorted channels when saving file - - - barSubItem2 - - - &Help - - - 2, 2, 2, 2 - - - 2 - - - - - - - - + Top - - btnToggleFavE - - - - - - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - 8 - - - DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - 1 - - - 343, 490 - - - - - - DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - Left - - - btnToggleFavA - - - DevExpress.XtraEditors.SplitContainerControl, DevExpress.Utils.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - groupControl1 - - - grpInputList - - - 632, 0 - - - OK - - - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - \d{1,4} - - - colLock - - - btnRenum - - - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - 9 - - - Combo - - - 1 - - - - - - Top, Left - - - DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - True - - - DevExpress.XtraBars.BarDockControl, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - True - - - Fill - - - - - - Inherit - - - Wiki - - - 166, 54 - - - splashScreenManager1 - - - gridLeft - - - New program number - - - 304, 5 - - - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - DevExpress.XtraBars.BarListItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - colFreqInMhz - - - Remove selected channels - - - - - - DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - ^ - - - mnuCharset - - - 75, 19 - - - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - 9 - - - 0 - - - 13 - - - miLockOn - - - btnAdd - - - DevExpress.XtraBars.BarDockControl, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - 0, 599 - - - barDockControlRight - - - True - - - Skip channel: off - - - Polarity - - - Horizontal - - - pnlEditControls - - - DevExpress.XtraTab.XtraTabControl, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - 0 - - - Renumber selected channels - - - &Character set - - - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - Favorites - - - 16, 16 - - - Favoriten entfernen - - - 77, 19 - - - grpTopPanel - - - - - - Video PID - - - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - 2, 54 - - - miEraseChannelData - - - 339, 33 - - - 1474, 31 - - - 12 - - - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - colServiceType - - - Center - - - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - splitContainerControl1.Panel1 - - - Horizontal - - - File &information... - - - 23, 23 - - - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - DevExpress.XtraBars.PopupMenu, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - << - - - - - - New Pr# - - - DevExpress.XtraBars.Bar, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - True - - - 1122, 417 - - - colOutLock - - - repositoryItemCheckedComboBoxEdit1 - - - 13 - - - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - When active, all channels after the current one will be automatically renumbered - - - 153, 17 - - - 0, 0 - - - 7 - - - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - - - - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - 180 - - - 3 - - - txtSetSlot - - - DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - 45 - - - 6 - - - miSkipOn - - - grpOutputList - - - 0 - - - miLockOff - - - 45 - - - 5 - - - miOpenReferenceFile - - - 20 - - - colSlotNew - - - DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - miAbout - - - Move up - - - 1296, 8 - - - 120 - - - 2 - - - 0, 31 - - - Fill - - - - - - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - DevExpress.XtraEditors.PanelControl, DevExpress.Utils.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - RegEx - - - True - - - Bottom - - - btnToggleFavD - - - rbInsertBefore - - - Set Pr#: - - - Inherit - - - - - - pnlEditControls - 0, 0 - - 8 - - - True - - - Import reference list... - - - False - - - - - - New Pr# - - - miRenum - - - Move selected channels down - - - 11 - - - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - &Edit - - - mnuOptions - 1474, 31 - - Restore backup + + barDockControlTop - - grpInputList + + DevExpress.XtraBars.BarDockControl, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - Sorted channels (.csv) + + $this - - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + 5 - - DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + Bottom - - Fill + + 0, 599 - - 15 + + 1474, 0 - - + + barDockControlBottom - - grpTopPanel + + DevExpress.XtraBars.BarDockControl, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - - - 7 - - - miOpen - - - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - Top - - - 0 - - - Center - - - btnRemove - - - 2, 471 - - - pnlEditControls - - - Service Typ - - - miHideOn - - - 1 - - - grpOutputList - - - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - Far - - - btnUp - - - DevExpress.XtraEditors.PanelControl, DevExpress.Utils.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - colUid1 - - - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - True - - - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - 2 - - - 3 - - - Top, Right - - - mnuHelp - - - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - Netzwerk (ONID) - - - Horizontal - - - colDebug - - - << Add all - - - &Save - - - - - - mnuContext - - - miOpenWebsite - - - All channels - - - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - Add selected channels - - - grpTopPanel - - - True - - - DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - 7, 8 - - - True - - - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - miEdit - - - - - - TS ID - - - splitContainerControl1 - - - F3: Filter | F4: List | -: move up | +: move down | Del: remove - - - colSkip - - - True - - - panelControl3 - - - Hide channel: off - - - &Reload - - - 2 - - - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - True - - - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - Freqency (MHz) - - - 10 - - - 1 - - - Horizontal - - - &Add channels - - - 257, 5 - - - DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - Network Name - - - - - - 1 - - - None - - - 2 - - - + + $this 4 - - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + Left - - 322, 19 + + 0, 31 - - True + + 0, 568 - - CenterScreen + + barDockControlLeft - - + + DevExpress.XtraBars.BarDockControl, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - 171, 5 + + $this - + + 2 + + + Right + + + 1474, 31 + + + 0, 568 + + + barDockControlRight + + + DevExpress.XtraBars.BarDockControl, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + $this + + + 3 + + + Move up + + + Move down + + + swap + + + + Far + + + 77, 19 + + + 10 + + + rbInsertSwap + + + DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + grpTopPanel + + 0 - - colFavorites - - - 9 - - - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - False - - - Transport Stream ID - - - colOutName - - - btnClearRightFilter - - + True 88, 24 - - pnlEditControls + + after - - DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + 75, 19 - - Horizontal + + 9 - + + rbInsertAfter + + + DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + grpTopPanel + + + 1 + + + 88, 5 + + + before + + + 75, 19 + + + 8 + + + rbInsertBefore + + + DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + grpTopPanel + + 2 - - pnlEditControls + + True - - 63, 5 + + 311, 25 - - lblHotkeyRight + + Close gap when moving/deleting a channel - + + 322, 19 + + + 7 + + + When active, all channels after the current one will be automatically renumbered + + + cbCloseGap + + + DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + grpTopPanel + + + 3 + + + True + + + 311, 4 + + + Auto-append unsorted channels when saving file + + + 322, 19 + + + 6 + + + cbAppendUnsortedChannels + + + DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + grpTopPanel + + + 4 + + + 7, 8 + + + 62, 13 + + + 2 + + + Insert mode: + + + labelControl2 + + + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + grpTopPanel + + + 5 + + + Top, Right + + + 1296, 8 + + + Transparent + + + 166, 54 + + + 0 + + + picDonate + + + DevExpress.XtraEditors.PictureEdit, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + grpTopPanel + + + 6 + + + Bottom, Left + + + 0, 54 + + + 632, 0 + + + No file loaded + + + pageEmpty + + + DevExpress.XtraTab.XtraTabPage, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + tabChannelList + + + 0 + + + 638, 22 + + + 5 + + + tabChannelList + + + DevExpress.XtraTab.XtraTabControl, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + grpTopPanel + + + 7 + + + Vertical + + + 169, 8 + + + 80, 13 + + + 0 + + + Set Pr#: + + + Program number for insert and set operations + + + labelControl11 + + + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + grpTopPanel + + + 8 + + + 169, 24 + + + OK + + + \d{1,4} + + + RegEx + + + 66, 20 + + + 1 + + + txtSetSlot + + + DevExpress.XtraEditors.ButtonEdit, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + grpTopPanel + + + 9 + + + Top + + 0, 31 - - Remove from Favorites + + 1474, 78 - - splitContainerControl1 + + 0 + + + groupControl1 + + + grpTopPanel + + + DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + $this + + + 1 + + + CenterScreen + + + ChanSort {0} - Channel List Editor for LG and Samsung TVs + + + dsChannels + + + System.Windows.Forms.BindingSource, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gviewLeft + + + DevExpress.XtraGrid.Views.Grid.GridView, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + colIndex1 + + + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + colOutSlot + + + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + colOutName + + + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + colOutFav + + + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + repositoryItemCheckedComboBoxEdit1 + + + DevExpress.XtraEditors.Repository.RepositoryItemCheckedComboBoxEdit, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + colUid1 + + + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + colOutLock + + + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + globalImageCollection1 + + + ChanSort.Ui.GlobalImageCollection, ChanSort, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + gviewRight + + + DevExpress.XtraGrid.Views.Grid.GridView, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + colIndex + + + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + colSlotOld + + + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + colSlotNew + + + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + colName + + + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + colShortName + + + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + colFavorites + + + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + repositoryItemCheckedComboBoxEdit2 + + + DevExpress.XtraEditors.Repository.RepositoryItemCheckedComboBoxEdit, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + colLock + + + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + colSkip + + + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + colHidden + + + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + colEncrypted + + + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + colChannelOrTransponder + + + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + colFreqInMhz + + + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + colServiceId + + + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + colVideoPid + + + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + colAudioPid + + + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + colServiceType + + + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + colServiceTypeName + + + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + colSatellite + + + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + colNetworkId + + + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + colTransportStreamId + + + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a colSymbolRate - + + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + colPolarity + + + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + colUid + + + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + colNetworkName + + + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + colNetworkOperator + + + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + colDebug + + + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + colLogicalIndex + + + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + barManager1 + + + DevExpress.XtraBars.BarManager, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + bar1 + + + DevExpress.XtraBars.Bar, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + miFile + + + DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + miOpen + + + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + miReload + + + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + miRestoreOriginal + + + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + miFileInformation + + + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + miSave + + + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + miSaveAs + + + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + miOpenReferenceFile + + + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + miQuit + + + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + miEdit + + + DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + miAddChannel + + + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + miRemove + + + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + miSort + + + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + miRenum + + + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + mnuFavSet + + + DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + miFavSet + + + DevExpress.XtraBars.BarListItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + mnuFavUnset + + + DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + miFavUnset + + + DevExpress.XtraBars.BarListItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + miLockOn + + + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + miLockOff + + + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + miSkipOn + + + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + miSkipOff + + + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + miHideOn + + + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + miHideOff + + + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + barSubItem2 + + + DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + miTvSettings + + + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + miEraseChannelData + + + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + mnuOptions + + + DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + barSubItem1 + + + DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + miEnglish + + + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + miGerman + + + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + mnuCharset + + + DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + miCharsetForm + + + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + miIsoCharSets + + + DevExpress.XtraBars.BarListItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + mnuHelp + + + DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + miWiki + + + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + miOpenWebsite + + + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + miAbout + + + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + miMoveUp + + + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + miMoveDown + + + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + defaultLookAndFeel1 + + + DevExpress.LookAndFeel.DefaultLookAndFeel, DevExpress.Utils.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + splashScreenManager1 + + + DevExpress.XtraSplashScreen.SplashScreenManager, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + mnuContext + + + DevExpress.XtraBars.PopupMenu, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + colOutServiceType + + + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + MainForm + + + DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + 04/08/2013 10:45:01 + + + 16, 16 + + + 257, 5 + + + 23, 23 + + + 15 + + + btnToggleLock + + + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + pnlEditControls + + + 0 + + + 232, 5 + + + 23, 23 + + + 14 + + + ±E + + + btnToggleFavE + + + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + pnlEditControls + + + 1 + + + 207, 5 + + + 23, 23 + + + 13 + + + ±D + + + btnToggleFavD + + + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + pnlEditControls + + + 2 + + + 182, 5 + + + 23, 23 + + + 12 + + + ±C + + + btnToggleFavC + + + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + pnlEditControls + + + 3 + + + 157, 5 + + + 23, 23 + + + 11 + + + ±B + + + btnToggleFavB + + + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + pnlEditControls + + + 4 + + + 132, 5 + + + 23, 23 + + + 10 + + + ±A + + + btnToggleFavA + + + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + pnlEditControls + + + 5 + + + Tahoma, 8.25pt, style=Strikeout + + + 304, 5 + + + 23, 23 + + + 9 + + + Reset filter + + + btnClearLeftFilter + + + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + pnlEditControls + + + 6 + + + 98, 5 + + + 23, 23 + + + 8 + + + 1-999 + + + Renumber selected channels + + + btnRenum + + + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + pnlEditControls + + + 7 + + + 34, 5 + + + 23, 23 + + + 6 + + + v + + + Move selected channels down + + + btnDown + + + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + pnlEditControls + + + 8 + + + 5, 5 + + + 23, 23 + + + 5 + + + ^ + + + Move selected channels up + + + btnUp + + + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + pnlEditControls + + + 9 + + + 63, 5 + + + 23, 23 + + + 2 + + + >> + + + Remove selected channels + + + btnRemove + + + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + pnlEditControls + + + 10 + + + Top + + + 2, 21 + + + 339, 33 + + + 0 + + + pnlEditControls + + + DevExpress.XtraEditors.PanelControl, DevExpress.Utils.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + grpOutputList + + + 2 + + + Fill + + + 0, 0 + + + 343, 490 + + + 0 + + + Sorted channels (.csv) + + + grpOutputList + + + DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + splitContainerControl1.Panel1 + + + 0 + + + Panel1 + + + Fill + + + 2, 54 + + + Pr. index + + + Old Pr# + + + Old program number + + True - - - 783, 17 - + + + 0 + + + 50 + + + New Pr# + + + New program number + + + True + + + 1 + + + 45 + + + Channel name + + + True + + + 2 + + + 180 + + + Short name + + + True + + + 3 + + + Favorites + + + False + + + Combo + + + + + + RegEx + + + True + + + 4 + + + 55 + + + Locked + + + True + + + 5 + + + 40 + + + Skip + + + True + + + 6 + + + 40 + + + Hide + + + True + + + 7 + + + 40 + + + Crypt + + + Encrypted + + + True + + + 8 + + + 40 + + + Chan/ Transp + + + Channel or transponder number + + + True + + + 11 + + + 45 + + + Freqency (MHz) + + + True + + + 10 + + + 57 + + + Service ID + + + True + + + 12 + + + 45 + + + Video PID + + + True + + + 13 + + + 40 + + + Audio PID + + + True + + + 14 + + + 40 + + + Service Typ + + + True + + + 15 + + + 45 + + + True + + + 9 + + + 45 + + + Satellite + + + True + + + 16 + + + 100 + + + Netzwerk (ONID) + + + True + + + 17 + + + 45 + + + TS ID + + + Transport Stream ID + + + True + + + 18 + + + 40 + + + Symbol rate + + + True + + + 19 + + + 40 + + + Polarity + + + 40 + + + Uid + + + 120 + + + Network Name + + + True + + + 20 + + + Network Operator + + + True + + + 21 + + + Order + + + 1122, 417 + + + 1 + + + gridRight + + + DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + grpInputList + + + 0 + + + Bottom + + + 2, 471 + + + 2, 2, 2, 2 + + + 153, 17 + + + 2 + + + F5: Filter | F6: List | Enter: add + + + lblHotkeyRight + + + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + grpInputList + + + 1 + + + 44, 5 + + + 121, 23 + + + 5 + + + << Add all + + + Append all currently unsorted channels at the end of the list + + + btnAddAll + + + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + panelControl3 + + + 0 + + + Tahoma, 8.25pt, style=Strikeout + + + 171, 5 + + + 66, 23 + + + 2 + + + Filter + + + Reset filter + + + btnClearRightFilter + + + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + panelControl3 + + + 1 + + + 5, 5 + + + 23, 23 + + + 4 + + + << + + + Add selected channels + + + btnAdd + + + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + panelControl3 + + + 2 + + + Top + + + 2, 21 + + + 1122, 33 + + + 0 + + + panelControl3 + + + DevExpress.XtraEditors.PanelControl, DevExpress.Utils.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + grpInputList + + + 2 + + + Fill + + + 0, 0 + + + 1126, 490 + + + 0 + + + All channels + + + grpInputList + + + DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + splitContainerControl1.Panel2 + + + 0 + + + Panel2 + + + 1474, 490 + + + 5 + + + splitContainerControl1 + + + splitContainerControl1 + + + DevExpress.XtraEditors.SplitContainerControl, DevExpress.Utils.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + $this + + + 0 + 194, 17 - - 361, 17 - - - 600, 17 - - - 475, 17 + + 781, 17 \ No newline at end of file diff --git a/ChanSort/UpdateCheck.cs b/ChanSort/UpdateCheck.cs index 446294a..6f406ca 100644 --- a/ChanSort/UpdateCheck.cs +++ b/ChanSort/UpdateCheck.cs @@ -1,5 +1,6 @@ using System.Net.Sockets; using System.Text; +using System.Threading; using ChanSort.Ui.Properties; using DevExpress.XtraEditors; @@ -11,40 +12,45 @@ namespace ChanSort.Ui public static void CheckForNewVersion() { - try - { - var check = new UpdateCheck(); - check.Check(); - } - catch - { - } + var check = new UpdateCheck(); + Thread thread = new Thread(check.Check); + thread.Start(); } private void Check() + { + try + { + var newVersion = this.GetLatestVersion(); + if (newVersion.CompareTo(MainForm.AppVersion.TrimStart('v')) > 0) + this.NotifyAboutNewVersion(newVersion); + } + catch { } + } + + private string GetLatestVersion() { // NOTE: tried using WebRequest class, but that causes massive timeout problems after program start (DLL loading/init?) + byte[] buffer = new byte[100000]; + int len; using (Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) { - sock.ReceiveTimeout = 1000; + sock.ReceiveTimeout = 5000; sock.Connect("sourceforge.net", 80); var request = Encoding.UTF8.GetBytes("GET /projects/chansort/ HTTP/1.1\r\nHost: sourceforge.net\r\n\r\n"); sock.Send(request); - byte[] buffer = new byte[100000]; - int len = sock.Receive(buffer); - var response = Encoding.ASCII.GetString(buffer, 0, len); - int start = response.IndexOf(SearchString); - if (start >= 0) - { - int end = response.IndexOf(".zip", start); - if (end == start + SearchString.Length + 10) - { - string newVersion = response.Substring(start + SearchString.Length, 10); - if (newVersion.CompareTo(MainForm.AppVersion.TrimStart('v')) > 0) - this.NotifyAboutNewVersion(newVersion); - } - } - } + len = sock.Receive(buffer); + } + + var response = Encoding.ASCII.GetString(buffer, 0, len); + int start = response.IndexOf(SearchString); + if (start >= 0) + { + int end = response.IndexOf(".zip", start); + if (end == start + SearchString.Length + 10) + return response.Substring(start + SearchString.Length, 10); + } + return string.Empty; } private void NotifyAboutNewVersion(string newVersion) diff --git a/DLL/System.Data.SQLite.dll b/DLL/System.Data.SQLite.dll new file mode 100644 index 0000000..970f07d Binary files /dev/null and b/DLL/System.Data.SQLite.dll differ diff --git a/DLL/System.Data.SQLite.xml b/DLL/System.Data.SQLite.xml new file mode 100644 index 0000000..65e9cf7 --- /dev/null +++ b/DLL/System.Data.SQLite.xml @@ -0,0 +1,5365 @@ + + + + System.Data.SQLite + + + + + This is the method signature for the SQLite core library logging callback + function for use with sqlite3_log() and the SQLITE_CONFIG_LOG. + + WARNING: This delegate is used more-or-less directly by native code, do + not modify its type signature. + + + The extra data associated with this message, if any. + + + The error code associated with this message. + + + The message string to be logged. + + + + + This class implements SQLiteBase completely, and is the guts of the code that interop's SQLite with .NET + + + + + This internal class provides the foundation of SQLite support. It defines all the abstract members needed to implement + a SQLite data provider, and inherits from SQLiteConvert which allows for simple translations of string to and from SQLite. + + + + + This base class provides datatype conversion services for the SQLite provider. + + + + + The format string for DateTime values when using the InvariantCulture or CurrentCulture formats. + + + + + The value for the Unix epoch (e.g. January 1, 1970 at midnight, in UTC). + + + + + The value of the OLE Automation epoch represented as a Julian day. + + + + + An array of ISO8601 datetime formats we support conversion from + + + + + The internal default format for UTC DateTime values when converting + to a string. + + + + + The internal default format for local DateTime values when converting + to a string. + + + + + An UTF-8 Encoding instance, so we can convert strings to and from UTF-8 + + + + + The default DateTime format for this instance + + + + + The default DateTimeKind for this instance. + + + + + Initializes the conversion class + + The default date/time format to use for this instance + The DateTimeKind to use. + + + + Converts a string to a UTF-8 encoded byte array sized to include a null-terminating character. + + The string to convert to UTF-8 + A byte array containing the converted string plus an extra 0 terminating byte at the end of the array. + + + + Convert a DateTime to a UTF-8 encoded, zero-terminated byte array. + + + This function is a convenience function, which first calls ToString() on the DateTime, and then calls ToUTF8() with the + string result. + + The DateTime to convert. + The UTF-8 encoded string, including a 0 terminating byte at the end of the array. + + + + Converts a UTF-8 encoded IntPtr of the specified length into a .NET string + + The pointer to the memory where the UTF-8 string is encoded + The number of bytes to decode + A string containing the translated character(s) + + + + Converts a UTF-8 encoded IntPtr of the specified length into a .NET string + + The pointer to the memory where the UTF-8 string is encoded + The number of bytes to decode + A string containing the translated character(s) + + + + Converts a string into a DateTime, using the current DateTimeFormat specified for the connection when it was opened. + + + Acceptable ISO8601 DateTime formats are: + + THHmmssK + THHmmK + HH:mm:ss.FFFFFFFK + HH:mm:ssK + HH:mmK + yyyy-MM-dd HH:mm:ss.FFFFFFFK + yyyy-MM-dd HH:mm:ssK + yyyy-MM-dd HH:mmK + yyyy-MM-ddTHH:mm:ss.FFFFFFFK + yyyy-MM-ddTHH:mmK + yyyy-MM-ddTHH:mm:ssK + yyyyMMddHHmmssK + yyyyMMddHHmmK + yyyyMMddTHHmmssFFFFFFFK + THHmmss + THHmm + HH:mm:ss.FFFFFFF + HH:mm:ss + HH:mm + yyyy-MM-dd HH:mm:ss.FFFFFFF + yyyy-MM-dd HH:mm:ss + yyyy-MM-dd HH:mm + yyyy-MM-ddTHH:mm:ss.FFFFFFF + yyyy-MM-ddTHH:mm + yyyy-MM-ddTHH:mm:ss + yyyyMMddHHmmss + yyyyMMddHHmm + yyyyMMddTHHmmssFFFFFFF + yyyy-MM-dd + yyyyMMdd + yy-MM-dd + + If the string cannot be matched to one of the above formats, an exception will be thrown. + + The string containing either a long integer number of 100-nanosecond units since + System.DateTime.MinValue, a Julian day double, an integer number of seconds since the Unix epoch, a + culture-independent formatted date and time string, a formatted date and time string in the current + culture, or an ISO8601-format string. + A DateTime value + + + + Converts a string into a DateTime, using the specified DateTimeFormat and DateTimeKind. + + + Acceptable ISO8601 DateTime formats are: + + THHmmssK + THHmmK + HH:mm:ss.FFFFFFFK + HH:mm:ssK + HH:mmK + yyyy-MM-dd HH:mm:ss.FFFFFFFK + yyyy-MM-dd HH:mm:ssK + yyyy-MM-dd HH:mmK + yyyy-MM-ddTHH:mm:ss.FFFFFFFK + yyyy-MM-ddTHH:mmK + yyyy-MM-ddTHH:mm:ssK + yyyyMMddHHmmssK + yyyyMMddHHmmK + yyyyMMddTHHmmssFFFFFFFK + THHmmss + THHmm + HH:mm:ss.FFFFFFF + HH:mm:ss + HH:mm + yyyy-MM-dd HH:mm:ss.FFFFFFF + yyyy-MM-dd HH:mm:ss + yyyy-MM-dd HH:mm + yyyy-MM-ddTHH:mm:ss.FFFFFFF + yyyy-MM-ddTHH:mm + yyyy-MM-ddTHH:mm:ss + yyyyMMddHHmmss + yyyyMMddHHmm + yyyyMMddTHHmmssFFFFFFF + yyyy-MM-dd + yyyyMMdd + yy-MM-dd + + If the string cannot be matched to one of the above formats, an exception will be thrown. + + The string containing either a long integer number of 100-nanosecond units since + System.DateTime.MinValue, a Julian day double, an integer number of seconds since the Unix epoch, a + culture-independent formatted date and time string, a formatted date and time string in the current + culture, or an ISO8601-format string. + The SQLiteDateFormats to use. + The DateTimeKind to use. + A DateTime value + + + + Converts a julianday value into a DateTime + + The value to convert + A .NET DateTime + + + + Converts a julianday value into a DateTime + + The value to convert + The DateTimeKind to use. + A .NET DateTime + + + + Converts a DateTime struct to a JulianDay double + + The DateTime to convert + The JulianDay value the Datetime represents + + + + Converts a DateTime struct to the whole number of seconds since the + Unix epoch. + + The DateTime to convert + The whole number of seconds since the Unix epoch + + + + Returns the default DateTime format string to use for the specified + DateTimeKind. + + The DateTimeKind to use. + + The default DateTime format string to use for the specified DateTimeKind. + + + + + Converts a DateTime to a string value, using the current DateTimeFormat specified for the connection when it was opened. + + The DateTime value to convert + Either a string containing the long integer number of 100-nanosecond units since System.DateTime.MinValue, a + Julian day double, an integer number of seconds since the Unix epoch, a culture-independent formatted date and time + string, a formatted date and time string in the current culture, or an ISO8601-format date/time string. + + + + Internal function to convert a UTF-8 encoded IntPtr of the specified length to a DateTime. + + + This is a convenience function, which first calls ToString() on the IntPtr to convert it to a string, then calls + ToDateTime() on the string to return a DateTime. + + A pointer to the UTF-8 encoded string + The length in bytes of the string + The parsed DateTime value + + + + Smart method of splitting a string. Skips quoted elements, removes the quotes. + + + This split function works somewhat like the String.Split() function in that it breaks apart a string into + pieces and returns the pieces as an array. The primary differences are: + + Only one character can be provided as a separator character + Quoted text inside the string is skipped over when searching for the separator, and the quotes are removed. + + Thus, if splitting the following string looking for a comma:
+ One,Two, "Three, Four", Five
+
+ The resulting array would contain
+ [0] One
+ [1] Two
+ [2] Three, Four
+ [3] Five
+
+ Note that the leading and trailing spaces were removed from each item during the split. +
+ Source string to split apart + Separator character + A string array of the split up elements +
+ + + Convert a value to true or false. + + A string or number representing true or false + + + + + Convert a string to true or false. + + A string representing true or false + + + "yes", "no", "y", "n", "0", "1", "on", "off" as well as Boolean.FalseString and Boolean.TrueString will all be + converted to a proper boolean value. + + + + + Determines the data type of a column in a statement + + The statement to retrieve information for + The column to retrieve type information on + The SQLiteType to receive the affinity for the given column + + + + Converts a SQLiteType to a .NET Type object + + The SQLiteType to convert + Returns a .NET Type object + + + + For a given intrinsic type, return a DbType + + The native type to convert + The corresponding (closest match) DbType + + + + Returns the ColumnSize for the given DbType + + The DbType to get the size of + + + + + Convert a DbType to a Type + + The DbType to convert from + The closest-match .NET type + + + + For a given type, return the closest-match SQLite TypeAffinity, which only understands a very limited subset of types. + + The type to evaluate + The SQLite type affinity for that type. + + + + For a given type name, return a closest-match .NET type + + The name of the type to match + The .NET DBType the text evaluates to. + + + + Sets the status of the memory usage tracking subsystem in the SQLite core library. By default, this is enabled. + If this is disabled, memory usage tracking will not be performed. This is not really a per-connection value, it is + global to the process. + + Non-zero to enable memory usage tracking, zero otherwise. + A standard SQLite return code (i.e. zero for success and non-zero for failure). + + + + Shutdown the SQLite engine so that it can be restarted with different config options. + We depend on auto initialization to recover. + + + + + Returns non-zero if a database connection is open. + + + + + + Opens a database. + + + Implementers should call SQLiteFunction.BindFunctions() and save the array after opening a connection + to bind all attributed user-defined functions and collating sequences to the new connection. + + The filename of the database to open. SQLite automatically creates it if it doesn't exist. + The flags associated with the parent connection object + The open flags to use when creating the connection + The maximum size of the pool for the given filename + If true, the connection can be pulled from the connection pool + + + + Closes the currently-open database. + + + After the database has been closed implemeters should call SQLiteFunction.UnbindFunctions() to deallocate all interop allocated + memory associated with the user-defined functions and collating sequences tied to the closed connection. + + Non-zero if the operation is allowed to throw exceptions, zero otherwise. + + + + Sets the busy timeout on the connection. SQLiteCommand will call this before executing any command. + + The number of milliseconds to wait before returning SQLITE_BUSY + + + + Returns the text of the last error issued by SQLite + + + + + + When pooling is enabled, force this connection to be disposed rather than returned to the pool + + + + + When pooling is enabled, returns the number of pool entries matching the current file name. + + The number of pool entries matching the current file name. + + + + Prepares a SQL statement for execution. + + The source connection preparing the command. Can be null for any caller except LINQ + The SQL command text to prepare + The previous statement in a multi-statement command, or null if no previous statement exists + The timeout to wait before aborting the prepare + The remainder of the statement that was not processed. Each call to prepare parses the + SQL up to to either the end of the text or to the first semi-colon delimiter. The remaining text is returned + here for a subsequent call to Prepare() until all the text has been processed. + Returns an initialized SQLiteStatement. + + + + Steps through a prepared statement. + + The SQLiteStatement to step through + True if a row was returned, False if not. + + + + Resets a prepared statement so it can be executed again. If the error returned is SQLITE_SCHEMA, + transparently attempt to rebuild the SQL statement and throw an error if that was not possible. + + The statement to reset + Returns -1 if the schema changed while resetting, 0 if the reset was sucessful or 6 (SQLITE_LOCKED) if the reset failed due to a lock + + + + Enables or disabled extension loading by SQLite. + + + True to enable loading of extensions, false to disable. + + + + + Loads a SQLite extension library from the named file. + + + The name of the dynamic link library file containing the extension. + + + The name of the exported function used to initialize the extension. + If null, the default "sqlite3_extension_init" will be used. + + + + + Enables or disabled extened result codes returned by SQLite + + true to enable extended result codes, false to disable. + + + + + Returns the numeric result code for the most recent failed SQLite API call + associated with the database connection. + + Result code + + + + Returns the extended numeric result code for the most recent failed SQLite API call + associated with the database connection. + + Extended result code + + + + Add a log message via the SQLite sqlite3_log interface. + + Error code to be logged with the message. + String to be logged. Unlike the SQLite sqlite3_log() + interface, this should be pre-formatted. Consider using the + String.Format() function. + + + + + Checks if the SQLite core library has been initialized in the current process. + + + Non-zero if the SQLite core library has been initialized in the current process, + zero otherwise. + + + + + Creates a new SQLite backup object based on the provided destination + database connection. The source database connection is the one + associated with this object. The source and destination database + connections cannot be the same. + + The destination database connection. + The destination database name. + The source database name. + The newly created backup object. + + + + Copies up to N pages from the source database to the destination + database associated with the specified backup object. + + The backup object to use. + + The number of pages to copy or negative to copy all remaining pages. + + + Set to true if the operation needs to be retried due to database + locking issues. + + + True if there are more pages to be copied, false otherwise. + + + + + Returns the number of pages remaining to be copied from the source + database to the destination database associated with the specified + backup object. + + The backup object to check. + The number of pages remaining to be copied. + + + + Returns the total number of pages in the source database associated + with the specified backup object. + + The backup object to check. + The total number of pages in the source database. + + + + Destroys the backup object, rolling back any backup that may be in + progess. + + The backup object to destroy. + + + + Returns the error message for the specified SQLite return code using + the internal static lookup table. + + The SQLite return code. + The error message or null if it cannot be found. + + + + Returns the error message for the specified SQLite return code using + the sqlite3_errstr() function, falling back to the internal lookup + table if necessary. + + The SQLite return code. + The error message or null if it cannot be found. + + + + Returns a string representing the active version of SQLite + + + + + Returns an integer representing the active version of SQLite + + + + + Returns the rowid of the most recent successful INSERT into the database from this connection. + + + + + Returns the number of changes the last executing insert/update caused. + + + + + Returns the amount of memory (in bytes) currently in use by the SQLite core library. This is not really a per-connection + value, it is global to the process. + + + + + Returns the maximum amount of memory (in bytes) used by the SQLite core library since the high-water mark was last reset. + This is not really a per-connection value, it is global to the process. + + + + + The opaque pointer returned to us by the sqlite provider + + + + + The user-defined functions registered on this connection + + + + + Shutdown the SQLite engine so that it can be restarted with different config options. + We depend on auto initialization to recover. + + Returns a result code + + + + Enables or disabled extension loading by SQLite. + + + True to enable loading of extensions, false to disable. + + + + + Loads a SQLite extension library from the named file. + + + The name of the dynamic link library file containing the extension. + + + The name of the exported function used to initialize the extension. + If null, the default "sqlite3_extension_init" will be used. + + + + Enables or disabled extended result codes returned by SQLite + + + Gets the last SQLite error code + + + Gets the last SQLite extended error code + + + Add a log message via the SQLite sqlite3_log interface. + + + + Allows the setting of a logging callback invoked by SQLite when a + log event occurs. Only one callback may be set. If NULL is passed, + the logging callback is unregistered. + + The callback function to invoke. + Returns a result code + + + + Creates a new SQLite backup object based on the provided destination + database connection. The source database connection is the one + associated with this object. The source and destination database + connections cannot be the same. + + The destination database connection. + The destination database name. + The source database name. + The newly created backup object. + + + + Copies up to N pages from the source database to the destination + database associated with the specified backup object. + + The backup object to use. + + The number of pages to copy, negative to copy all remaining pages. + + + Set to true if the operation needs to be retried due to database + locking issues; otherwise, set to false. + + + True if there are more pages to be copied, false otherwise. + + + + + Returns the number of pages remaining to be copied from the source + database to the destination database associated with the specified + backup object. + + The backup object to check. + The number of pages remaining to be copied. + + + + Returns the total number of pages in the source database associated + with the specified backup object. + + The backup object to check. + The total number of pages in the source database. + + + + Destroys the backup object, rolling back any backup that may be in + progess. + + The backup object to destroy. + + + + Determines if the SQLite core library has been initialized for the + current process. + + + A boolean indicating whether or not the SQLite core library has been + initialized for the current process. + + + + + Determines if the SQLite core library has been initialized for the + current process. + + + A boolean indicating whether or not the SQLite core library has been + initialized for the current process. + + + + + Helper function to retrieve a column of data from an active statement. + + The statement being step()'d through + The column index to retrieve + The type of data contained in the column. If Uninitialized, this function will retrieve the datatype information. + Returns the data in the column + + + + Alternate SQLite3 object, overriding many text behaviors to support UTF-16 (Unicode) + + + + + Overrides SQLiteConvert.ToString() to marshal UTF-16 strings instead of UTF-8 + + A pointer to a UTF-16 string + The length (IN BYTES) of the string + A .NET string + + + + Represents a single SQL backup in SQLite. + + + + + The underlying SQLite object this backup is bound to. + + + + + The actual backup handle. + + + + + The destination database for the backup. + + + + + The destination database name for the backup. + + + + + The source database for the backup. + + + + + The source database name for the backup. + + + + + The last result from the StepBackup method of the SQLite3 class. + This is used to determine if the call to the FinishBackup method of + the SQLite3 class should throw an exception when it receives a non-Ok + return code from the core SQLite library. + + + + + Initializes the backup. + + The base SQLite object. + The backup handle. + The destination database for the backup. + The destination database name for the backup. + The source database for the backup. + The source database name for the backup. + + + + Disposes and finalizes the backup. + + + + + The extra behavioral flags that can be applied to a connection. + + + + + No extra flags. + + + + + Enable logging of all SQL statements to be prepared. + + + + + Enable logging of all bound parameter types and raw values. + + + + + Enable logging of all bound parameter strongly typed values. + + + + + Enable logging of all exceptions caught from user-provided + managed code called from native code via delegates. + + + + + Enable logging of backup API errors. + + + + + Skip adding the extension functions provided by the native + interop assembly. + + + + + Enable all logging. + + + + + The default extra flags for new connections. + + + + + SQLite implementation of DbCommand. + + + + + The command text this command is based on + + + + + The connection the command is associated with + + + + + The version of the connection the command is associated with + + + + + Indicates whether or not a DataReader is active on the command. + + + + + The timeout for the command, kludged because SQLite doesn't support per-command timeout values + + + + + Designer support + + + + + Used by DbDataAdapter to determine updating behavior + + + + + The collection of parameters for the command + + + + + The SQL command text, broken into individual SQL statements as they are executed + + + + + Unprocessed SQL text that has not been executed + + + + + Transaction associated with this command + + + + + Constructs a new SQLiteCommand + + + Default constructor + + + + + Initializes the command with the given command text + + The SQL command text + + + + Initializes the command with the given SQL command text and attach the command to the specified + connection. + + The SQL command text + The connection to associate with the command + + + + Initializes the command and associates it with the specified connection. + + The connection to associate with the command + + + + Initializes a command with the given SQL, connection and transaction + + The SQL command text + The connection to associate with the command + The transaction the command should be associated with + + + + Disposes of the command and clears all member variables + + Whether or not the class is being explicitly or implicitly disposed + + + + Clears and destroys all statements currently prepared + + + + + Builds an array of prepared statements for each complete SQL statement in the command text + + + + + Not implemented + + + + + Forwards to the local CreateParameter() function + + + + + + Create a new parameter + + + + + + This function ensures there are no active readers, that we have a valid connection, + that the connection is open, that all statements are prepared and all parameters are assigned + in preparation for allocating a data reader. + + + + + Creates a new SQLiteDataReader to execute/iterate the array of SQLite prepared statements + + The behavior the data reader should adopt + Returns a SQLiteDataReader object + + + + Overrides the default behavior to return a SQLiteDataReader specialization class + + The flags to be associated with the reader + A SQLiteDataReader + + + + Overrides the default behavior of DbDataReader to return a specialized SQLiteDataReader class + + A SQLiteDataReader + + + + Called by the SQLiteDataReader when the data reader is closed. + + + + + Execute the command and return the number of rows inserted/updated affected by it. + + + + + + Execute the command and return the first column of the first row of the resultset + (if present), or null if no resultset was returned. + + The first column of the first row of the first resultset from the query + + + + Does nothing. Commands are prepared as they are executed the first time, and kept in prepared state afterwards. + + + + + Clones a command, including all its parameters + + A new SQLiteCommand with the same commandtext, connection and parameters + + + + The SQL command text associated with the command + + + + + The amount of time to wait for the connection to become available before erroring out + + + + + The type of the command. SQLite only supports CommandType.Text + + + + + The connection associated with this command + + + + + Forwards to the local Connection property + + + + + Returns the SQLiteParameterCollection for the given command + + + + + Forwards to the local Parameters property + + + + + The transaction associated with this command. SQLite only supports one transaction per connection, so this property forwards to the + command's underlying connection. + + + + + Forwards to the local Transaction property + + + + + Sets the method the SQLiteCommandBuilder uses to determine how to update inserted or updated rows in a DataTable. + + + + + Determines if the command is visible at design time. Defaults to True. + + + + + SQLite implementation of DbCommandBuilder. + + + + + Default constructor + + + + + Initializes the command builder and associates it with the specified data adapter. + + + + + + Minimal amount of parameter processing. Primarily sets the DbType for the parameter equal to the provider type in the schema + + The parameter to use in applying custom behaviors to a row + The row to apply the parameter to + The type of statement + Whether the application of the parameter is part of a WHERE clause + + + + Returns a valid named parameter + + The name of the parameter + Error + + + + Returns a named parameter for the given ordinal + + The i of the parameter + Error + + + + Returns a placeholder character for the specified parameter i. + + The index of the parameter to provide a placeholder for + Returns a named parameter + + + + Sets the handler for receiving row updating events. Used by the DbCommandBuilder to autogenerate SQL + statements that may not have previously been generated. + + A data adapter to receive events on. + + + + Returns the automatically-generated SQLite command to delete rows from the database + + + + + + Returns the automatically-generated SQLite command to delete rows from the database + + + + + + + Returns the automatically-generated SQLite command to update rows in the database + + + + + + Returns the automatically-generated SQLite command to update rows in the database + + + + + + + Returns the automatically-generated SQLite command to insert rows into the database + + + + + + Returns the automatically-generated SQLite command to insert rows into the database + + + + + + + Places brackets around an identifier + + The identifier to quote + The bracketed identifier + + + + Removes brackets around an identifier + + The quoted (bracketed) identifier + The undecorated identifier + + + + Override helper, which can help the base command builder choose the right keys for the given query + + + + + + + Gets/sets the DataAdapter for this CommandBuilder + + + + + Overridden to hide its property from the designer + + + + + Overridden to hide its property from the designer + + + + + Overridden to hide its property from the designer + + + + + Overridden to hide its property from the designer + + + + + Overridden to hide its property from the designer + + + + + Event data for connection event handlers. + + + + + The type of event being raised. + + + + + The associated with this event, if any. + + + + + The transaction associated with this event, if any. + + + + + The command associated with this event, if any. + + + + + Command or message text associated with this event, if any. + + + + + Extra data associated with this event, if any. + + + + + Constructs the object. + + The type of event being raised. + The base associated + with this event, if any. + The transaction associated with this event, if any. + The command associated with this event, if any. + The command or message text, if any. + The extra data, if any. + + + + Raised when an event pertaining to a connection occurs. + + The connection involved. + Extra information about the event. + + + + SQLite implentation of DbConnection. + + + The property can contain the following parameter(s), delimited with a semi-colon: + + + Parameter + Values + Required + Default + + + Data Source + This may be a file name, the string ":memory:", or any supported URI (starting with SQLite 3.7.7). + Y + + + + Version + 3 + N + 3 + + + UseUTF16Encoding + True
False
+ N + False +
+ + DateTimeFormat + + Ticks - Use the value of DateTime.Ticks.
+ ISO8601 - Use the ISO-8601 format. Uses the "yyyy-MM-dd HH:mm:ss.FFFFFFFK" format for UTC + DateTime values and "yyyy-MM-dd HH:mm:ss.FFFFFFF" format for local DateTime values).
+ JulianDay - The interval of time in days and fractions of a day since January 1, 4713 BC.
+ UnixEpoch - The whole number of seconds since the Unix epoch (January 1, 1970).
+ InvariantCulture - Any culture-independent string value that the .NET Framework can interpret as a valid DateTime.
+ CurrentCulture - Any string value that the .NET Framework can interpret as a valid DateTime using the current culture.
+ N + ISO8601 +
+ + DateTimeKind + Unspecified - Not specified as either UTC or local time.
Utc - The time represented is UTC.
Local - The time represented is local time.
+ N + Unspecified +
+ + BaseSchemaName + Some base data classes in the framework (e.g. those that build SQL queries dynamically) + assume that an ADO.NET provider cannot support an alternate catalog (i.e. database) without supporting + alternate schemas as well; however, SQLite does not fit into this model. Therefore, this value is used + as a placeholder and removed prior to preparing any SQL statements that may contain it. + N + sqlite_default_schema + + + BinaryGUID + True - Store GUID columns in binary form
False - Store GUID columns as text
+ N + True +
+ + Cache Size + {size in bytes} + N + 2000 + + + Synchronous + Normal - Normal file flushing behavior
Full - Full flushing after all writes
Off - Underlying OS flushes I/O's
+ N + Full +
+ + Page Size + {size in bytes} + N + 1024 + + + Password + {password} - Using this parameter requires that the CryptoAPI based codec be enabled at compile-time for both the native interop assembly and the core managed assemblies; otherwise, using this parameter may result in an exception being thrown when attempting to open the connection. + N + + + + Enlist + Y - Automatically enlist in distributed transactions
N - No automatic enlistment
+ N + Y +
+ + Pooling + True - Use connection pooling
False - Do not use connection pooling
+ N + False +
+ + FailIfMissing + True - Don't create the database if it does not exist, throw an error instead
False - Automatically create the database if it does not exist
+ N + False +
+ + Max Page Count + {size in pages} - Limits the maximum number of pages (limits the size) of the database + N + 0 + + + Legacy Format + True - Use the more compatible legacy 3.x database format
False - Use the newer 3.3x database format which compresses numbers more effectively
+ N + False +
+ + Default Timeout + {time in seconds}
The default command timeout
+ N + 30 +
+ + Journal Mode + Delete - Delete the journal file after a commit
Persist - Zero out and leave the journal file on disk after a commit
Off - Disable the rollback journal entirely
+ N + Delete +
+ + Read Only + True - Open the database for read only access
False - Open the database for normal read/write access
+ N + False +
+ + Max Pool Size + The maximum number of connections for the given connection string that can be in the connection pool + N + 100 + + + Default IsolationLevel + The default transaciton isolation level + N + Serializable + + + Foreign Keys + Enable foreign key constraints + N + False + + + Flags + Extra behavioral flags for the connection. See the enumeration for possible values. + N + Default + + + SetDefaults + + True - Apply the default connection settings to the opened database.
+ False - Skip applying the default connection settings to the opened database. +
+ N + True +
+ + ToFullPath + + True - Attempt to expand the data source file name to a fully qualified path before opening.
+ False - Skip attempting to expand the data source file name to a fully qualified path before opening. +
+ N + True +
+
+
+
+ + + The default "stub" (i.e. placeholder) base schema name to use when + returning column schema information. Used as the initial value of + the BaseSchemaName property. This should start with "sqlite_*" + because those names are reserved for use by SQLite (i.e. they cannot + be confused with the names of user objects). + + + + + Object used to synchronize access to the static instance data + for this class. + + + + + State of the current connection + + + + + The connection string + + + + + Nesting level of the transactions open on the connection + + + + + If set, then the connection is currently being disposed. + + + + + The default isolation level for new transactions + + + + + Whether or not the connection is enlisted in a distrubuted transaction + + + + + The base SQLite object to interop with + + + + + The database filename minus path and extension + + + + + Temporary password storage, emptied after the database has been opened + + + + + The "stub" (i.e. placeholder) base schema name to use when returning + column schema information. + + + + + The extra behavioral flags for this connection, if any. See the + enumeration for a list of + possible values. + + + + + Default command timeout + + + + + Non-zero if the built-in (i.e. framework provided) connection string + parser should be used when opening the connection. + + + + + Constructs a new SQLiteConnection object + + + Default constructor + + + + + Initializes the connection with the specified connection string. + + The connection string to use. + + + + Initializes the connection with the specified connection string. + + + The connection string to use on. + + + Non-zero to parse the connection string using the built-in (i.e. + framework provided) parser when opening the connection. + + + + + Clones the settings and connection string from an existing connection. If the existing connection is already open, this + function will open its own connection, enumerate any attached databases of the original connection, and automatically + attach to them. + + The connection to copy the settings from. + + + + Raises the event. + + + The connection associated with this event. + + + A that contains the event data. + + + + + Backs up the database, using the specified database connection as the + destination. + + The destination database connection. + The destination database name. + The source database name. + + The number of pages to copy or negative to copy all remaining pages. + + + The method to invoke between each step of the backup process. This + parameter may be null (i.e. no callbacks will be performed). + + + The number of milliseconds to sleep after encountering a locking error + during the backup process. A value less than zero means that no sleep + should be performed. + + + + + Creates a clone of the connection. All attached databases and user-defined functions are cloned. If the existing connection is open, the cloned connection + will also be opened. + + + + + + Creates a database file. This just creates a zero-byte file which SQLite + will turn into a database when the file is opened properly. + + The file to create + + + + Raises the state change event when the state of the connection changes + + The new connection state. If this is different + from the previous state, the event is + raised. + The event data created for the raised event, if + it was actually raised. + + + + OBSOLETE. Creates a new SQLiteTransaction if one isn't already active on the connection. + + This parameter is ignored. + When TRUE, SQLite defers obtaining a write lock until a write operation is requested. + When FALSE, a writelock is obtained immediately. The default is TRUE, but in a multi-threaded multi-writer + environment, one may instead choose to lock the database immediately to avoid any possible writer deadlock. + Returns a SQLiteTransaction object. + + + + OBSOLETE. Creates a new SQLiteTransaction if one isn't already active on the connection. + + When TRUE, SQLite defers obtaining a write lock until a write operation is requested. + When FALSE, a writelock is obtained immediately. The default is false, but in a multi-threaded multi-writer + environment, one may instead choose to lock the database immediately to avoid any possible writer deadlock. + Returns a SQLiteTransaction object. + + + + Creates a new if one isn't already active on the connection. + + Supported isolation levels are Serializable, ReadCommitted and Unspecified. + + Unspecified will use the default isolation level specified in the connection string. If no isolation level is specified in the + connection string, Serializable is used. + Serializable transactions are the default. In this mode, the engine gets an immediate lock on the database, and no other threads + may begin a transaction. Other threads may read from the database, but not write. + With a ReadCommitted isolation level, locks are deferred and elevated as needed. It is possible for multiple threads to start + a transaction in ReadCommitted mode, but if a thread attempts to commit a transaction while another thread + has a ReadCommitted lock, it may timeout or cause a deadlock on both threads until both threads' CommandTimeout's are reached. + + Returns a SQLiteTransaction object. + + + + Creates a new if one isn't already + active on the connection. + + Returns the new transaction object. + + + + Forwards to the local function + + Supported isolation levels are Unspecified, Serializable, and ReadCommitted + + + + + This method is not implemented; however, the + event will still be raised. + + + + + + When the database connection is closed, all commands linked to this connection are automatically reset. + + + + + Clears the connection pool associated with the connection. Any other active connections using the same database file + will be discarded instead of returned to the pool when they are closed. + + + + + + Clears all connection pools. Any active connections will be discarded instead of sent to the pool when they are closed. + + + + + Create a new and associate it with this connection. + + Returns a new command object already assigned to this connection. + + + + Forwards to the local function. + + + + + + Parses the connection string into component parts using the custom + connection string parser. + + The connection string to parse + An array of key-value pairs representing each parameter of the connection string + + + + Parses a connection string using the built-in (i.e. framework provided) + connection string parser class and returns the key/value pairs. An + exception may be thrown if the connection string is invalid or cannot be + parsed. When compiled for the .NET Compact Framework, the custom + connection string parser is always used instead because the framework + provided one is unavailable there. + + + The connection string to parse. + + + Non-zero to throw an exception if any connection string values are not of + the type. + + The list of key/value pairs. + + + + Manual distributed transaction enlistment support + + The distributed transaction to enlist in + + + + Looks for a key in the array of key/values of the parameter string. If not found, return the specified default value + + The list to look in + The key to find + The default value to return if the key is not found + The value corresponding to the specified key, or the default value if not found. + + + + Attempts to convert the string value to an enumerated value of the specified type. + + The enumerated type to convert the string value to. + The string value to be converted. + Non-zero to make the conversion case-insensitive. + The enumerated value upon success or null upon error. + + + + Enables or disabled extension loading. + + + True to enable loading of extensions, false to disable. + + + + + Loads a SQLite extension library from the named dynamic link library file. + + + The name of the dynamic link library file containing the extension. + + + + + Loads a SQLite extension library from the named dynamic link library file. + + + The name of the dynamic link library file containing the extension. + + + The name of the exported function used to initialize the extension. + If null, the default "sqlite3_extension_init" will be used. + + + + + Opens the connection using the parameters found in the . + + + + + Opens the connection using the parameters found in the and then returns it. + + The current connection object. + + + + This method causes any pending database operation to abort and return at + its earliest opportunity. This routine is typically called in response + to a user action such as pressing "Cancel" or Ctrl-C where the user wants + a long query operation to halt immediately. It is safe to call this + routine from any thread. However, it is not safe to call this routine + with a database connection that is closed or might close before this method + returns. + + + + + Sets the status of the memory usage tracking subsystem in the SQLite core library. By default, this is enabled. + If this is disabled, memory usage tracking will not be performed. This is not really a per-connection value, it is + global to the process. + + Non-zero to enable memory usage tracking, zero otherwise. + A standard SQLite return code (i.e. zero for success and non-zero for failure). + + + Passes a shutdown request off to SQLite. + + + Enables or disabled extended result codes returned by SQLite + + + Enables or disabled extended result codes returned by SQLite + + + Enables or disabled extended result codes returned by SQLite + + + Add a log message via the SQLite sqlite3_log interface. + + + Add a log message via the SQLite sqlite3_log interface. + + + + Change the password (or assign a password) to an open database. + + + No readers or writers may be active for this process. The database must already be open + and if it already was password protected, the existing password must already have been supplied. + + The new password to assign to the database + + + + Change the password (or assign a password) to an open database. + + + No readers or writers may be active for this process. The database must already be open + and if it already was password protected, the existing password must already have been supplied. + + The new password to assign to the database + + + + Sets the password for a password-protected database. A password-protected database is + unusable for any operation until the password has been set. + + The password for the database + + + + Sets the password for a password-protected database. A password-protected database is + unusable for any operation until the password has been set. + + The password for the database + + + + Queries or modifies the number of retries or the retry interval (in milliseconds) for + certain I/O operations that may fail due to anti-virus software. + + The number of times to retry the I/O operation. A negative value + will cause the current count to be queried and replace that negative value. + The number of milliseconds to wait before retrying the I/O + operation. This number is multiplied by the number of retry attempts so far to come + up with the final number of milliseconds to wait. A negative value will cause the + current interval to be queried and replace that negative value. + Zero for success, non-zero for error. + + + + Removes one set of surrounding single -OR- double quotes from the string + value and returns the resulting string value. If the string is null, empty, + or contains quotes that are not balanced, nothing is done and the original + string value will be returned. + + The string value to process. + + The string value, modified to remove one set of surrounding single -OR- + double quotes, if applicable. + + + + + Expand the filename of the data source, resolving the |DataDirectory| + macro as appropriate. + + The database filename to expand + + Non-zero if the returned file name should be converted to a full path + (except when using the .NET Compact Framework). + + The expanded path and filename of the filename + + + + The following commands are used to extract schema information out of the database. Valid schema types are: + + + MetaDataCollections + + + DataSourceInformation + + + Catalogs + + + Columns + + + ForeignKeys + + + Indexes + + + IndexColumns + + + Tables + + + Views + + + ViewColumns + + + + + Returns the MetaDataCollections schema + + A DataTable of the MetaDataCollections schema + + + + Returns schema information of the specified collection + + The schema collection to retrieve + A DataTable of the specified collection + + + + Retrieves schema information using the specified constraint(s) for the specified collection + + The collection to retrieve + The restrictions to impose + A DataTable of the specified collection + + + + Builds a MetaDataCollections schema datatable + + DataTable + + + + Builds a DataSourceInformation datatable + + DataTable + + + + Build a Columns schema + + The catalog (attached database) to query, can be null + The table to retrieve schema information for, must not be null + The column to retrieve schema information for, can be null + DataTable + + + + Returns index information for the given database and catalog + + The catalog (attached database) to query, can be null + The name of the index to retrieve information for, can be null + The table to retrieve index information for, can be null + DataTable + + + + Retrieves table schema information for the database and catalog + + The catalog (attached database) to retrieve tables on + The table to retrieve, can be null + The table type, can be null + DataTable + + + + Retrieves view schema information for the database + + The catalog (attached database) to retrieve views on + The view name, can be null + DataTable + + + + Retrieves catalog (attached databases) schema information for the database + + The catalog to retrieve, can be null + DataTable + + + + Returns the base column information for indexes in a database + + The catalog to retrieve indexes for (can be null) + The table to restrict index information by (can be null) + The index to restrict index information by (can be null) + The source column to restrict index information by (can be null) + A DataTable containing the results + + + + Returns detailed column information for a specified view + + The catalog to retrieve columns for (can be null) + The view to restrict column information by (can be null) + The source column to restrict column information by (can be null) + A DataTable containing the results + + + + Retrieves foreign key information from the specified set of filters + + An optional catalog to restrict results on + An optional table to restrict results on + An optional foreign key name to restrict results on + A DataTable with the results of the query + + + + Static variable to store the connection event handlers to call. + + + + + This event is raised whenever the database is opened or closed. + + + + + This event is raised when events related to the lifecycle of a + SQLiteConnection object occur. + + + + + Returns the number of pool entries for the file name associated with this connection. + + + + + The connection string containing the parameters for the connection + + + + + Parameter + Values + Required + Default + + + Data Source + This may be a file name, the string ":memory:", or any supported URI (starting with SQLite 3.7.7). + Y + + + + Version + 3 + N + 3 + + + UseUTF16Encoding + True
False
+ N + False +
+ + DateTimeFormat + + Ticks - Use the value of DateTime.Ticks.
+ ISO8601 - Use the ISO-8601 format. Uses the "yyyy-MM-dd HH:mm:ss.FFFFFFFK" format for UTC + DateTime values and "yyyy-MM-dd HH:mm:ss.FFFFFFF" format for local DateTime values).
+ JulianDay - The interval of time in days and fractions of a day since January 1, 4713 BC.
+ UnixEpoch - The whole number of seconds since the Unix epoch (January 1, 1970).
+ InvariantCulture - Any culture-independent string value that the .NET Framework can interpret as a valid DateTime.
+ CurrentCulture - Any string value that the .NET Framework can interpret as a valid DateTime using the current culture.
+ N + ISO8601 +
+ + DateTimeKind + Unspecified - Not specified as either UTC or local time.
Utc - The time represented is UTC.
Local - The time represented is local time.
+ N + Unspecified +
+ + BaseSchemaName + Some base data classes in the framework (e.g. those that build SQL queries dynamically) + assume that an ADO.NET provider cannot support an alternate catalog (i.e. database) without supporting + alternate schemas as well; however, SQLite does not fit into this model. Therefore, this value is used + as a placeholder and removed prior to preparing any SQL statements that may contain it. + N + sqlite_default_schema + + + BinaryGUID + True - Store GUID columns in binary form
False - Store GUID columns as text
+ N + True +
+ + Cache Size + {size in bytes} + N + 2000 + + + Synchronous + Normal - Normal file flushing behavior
Full - Full flushing after all writes
Off - Underlying OS flushes I/O's
+ N + Full +
+ + Page Size + {size in bytes} + N + 1024 + + + Password + {password} - Using this parameter requires that the CryptoAPI based codec be enabled at compile-time for both the native interop assembly and the core managed assemblies; otherwise, using this parameter may result in an exception being thrown when attempting to open the connection. + N + + + + Enlist + Y - Automatically enlist in distributed transactions
N - No automatic enlistment
+ N + Y +
+ + Pooling + True - Use connection pooling
False - Do not use connection pooling
+ N + False +
+ + FailIfMissing + True - Don't create the database if it does not exist, throw an error instead
False - Automatically create the database if it does not exist
+ N + False +
+ + Max Page Count + {size in pages} - Limits the maximum number of pages (limits the size) of the database + N + 0 + + + Legacy Format + True - Use the more compatible legacy 3.x database format
False - Use the newer 3.3x database format which compresses numbers more effectively
+ N + False +
+ + Default Timeout + {time in seconds}
The default command timeout
+ N + 30 +
+ + Journal Mode + Delete - Delete the journal file after a commit
Persist - Zero out and leave the journal file on disk after a commit
Off - Disable the rollback journal entirely
+ N + Delete +
+ + Read Only + True - Open the database for read only access
False - Open the database for normal read/write access
+ N + False +
+ + Max Pool Size + The maximum number of connections for the given connection string that can be in the connection pool + N + 100 + + + Default IsolationLevel + The default transaciton isolation level + N + Serializable + + + Foreign Keys + Enable foreign key constraints + N + False + + + Flags + Extra behavioral flags for the connection. See the enumeration for possible values. + N + Default + + + SetDefaults + + True - Apply the default connection settings to the opened database.
+ False - Skip applying the default connection settings to the opened database. +
+ N + True +
+ + ToFullPath + + True - Attempt to expand the data source file name to a fully qualified path before opening.
+ False - Skip attempting to expand the data source file name to a fully qualified path before opening. +
+ N + True +
+
+
+
+ + + Returns the data source file name without extension or path. + + + + + Returns the string "main". + + + + + Gets/sets the default command timeout for newly-created commands. This is especially useful for + commands used internally such as inside a SQLiteTransaction, where setting the timeout is not possible. + This can also be set in the ConnectionString with "Default Timeout" + + + + + Non-zero if the built-in (i.e. framework provided) connection string + parser should be used when opening the connection. + + + + + Gets/sets the extra behavioral flags for this connection. See the + enumeration for a list of + possible values. + + + + + Returns the version of the underlying SQLite database engine + + + + + Returns the rowid of the most recent successful INSERT into the database from this connection. + + + + + Returns the number of rows changed by the last INSERT, UPDATE, or DELETE statement executed on + this connection. + + + + + Returns the amount of memory (in bytes) currently in use by the SQLite core library. + + + + + Returns the maximum amount of memory (in bytes) used by the SQLite core library since the high-water mark was last reset. + + + + + Returns a string containing the define constants (i.e. compile-time + options) used to compile the core managed assembly, delimited with + spaces. + + + + + Returns the version of the underlying SQLite database engine + + + + + This method returns the string whose value is the same as the + SQLITE_SOURCE_ID C preprocessor macro used when compiling the + SQLite core library. + + + + + Returns the state of the connection. + + + + + This event is raised whenever SQLite makes an update/delete/insert into the database on + this connection. It only applies to the given connection. + + + + + This event is raised whenever SQLite is committing a transaction. + Return non-zero to trigger a rollback. + + + + + This event is raised whenever SQLite statement first begins executing on + this connection. It only applies to the given connection. + + + + + This event is raised whenever SQLite is rolling back a transaction. + + + + + Returns the instance. + + + + + The I/O file cache flushing behavior for the connection + + + + + Normal file flushing at critical sections of the code + + + + + Full file flushing after every write operation + + + + + Use the default operating system's file flushing, SQLite does not explicitly flush the file buffers after writing + + + + + Raised when a transaction is about to be committed. To roll back a transaction, set the + rollbackTrans boolean value to true. + + The connection committing the transaction + Event arguments on the transaction + + + + Raised when data is inserted, updated and deleted on a given connection + + The connection committing the transaction + The event parameters which triggered the event + + + + Raised when a statement first begins executing on a given connection + + The connection executing the statement + Event arguments of the trace + + + + Raised between each backup step. + + + The source database connection. + + + The source database name. + + + The destination database connection. + + + The destination database name. + + + The number of pages copied with each step. + + + The number of pages remaining to be copied. + + + The total number of pages in the source database. + + + Set to true if the operation needs to be retried due to database + locking issues; otherwise, set to false. + + + True to continue with the backup process or false to halt the backup + process, rolling back any changes that have been made so far. + + + + + Whenever an update event is triggered on a connection, this enum will indicate + exactly what type of operation is being performed. + + + + + A row is being deleted from the given database and table + + + + + A row is being inserted into the table. + + + + + A row is being updated in the table. + + + + + Passed during an Update callback, these event arguments detail the type of update operation being performed + on the given connection. + + + + + The name of the database being updated (usually "main" but can be any attached or temporary database) + + + + + The name of the table being updated + + + + + The type of update being performed (insert/update/delete) + + + + + The RowId affected by this update. + + + + + Event arguments raised when a transaction is being committed + + + + + Set to true to abort the transaction and trigger a rollback + + + + + Passed during an Trace callback, these event arguments contain the UTF-8 rendering of the SQL statement text + + + + + SQL statement text as the statement first begins executing + + + + + The connection pool object + + + + + The default version number new pools will get + + + + + The number of connections successfully opened from any pool. + This value is incremented by the Remove method. + + + + + The number of connections successfully closed from any pool. + This value is incremented by the Add method. + + + + + Counts the number of pool entries matching the specified file name. + + The file name to match or null to match all files. + The pool entry counts for each matching file. + The total number of connections successfully opened from any pool. + The total number of connections successfully closed from any pool. + The total number of pool entries for all matching files. + + + + Attempt to pull a pooled connection out of the queue for active duty + + The filename for a desired connection + The maximum size the connection pool for the filename can be + The pool version the returned connection will belong to + Returns NULL if no connections were available. Even if none are, the poolversion will still be a valid pool version + + + + Clears out all pooled connections and rev's up the default pool version to force all old active objects + not in the pool to get discarded rather than returned to their pools. + + + + + Clear a given pool for a given filename. Discards anything in the pool for the given file, and revs the pool + version so current active objects on the old version of the pool will get discarded rather than be returned to the pool. + + The filename of the pool to clear + + + + Return a connection to the pool for someone else to use. + + The filename of the pool to use + The connection handle to pool + The pool version the handle was created under + + If the version numbers don't match between the connection and the pool, then the handle is discarded. + + + + + We don't have to thread-lock anything in this function, because it's only called by other functions above + which already have a thread-safe lock. + + The queue to resize + If a function intends to add to the pool, this is true, which forces the resize + to take one more than it needs from the pool + + + + Keeps track of connections made on a specified file. The PoolVersion dictates whether old objects get + returned to the pool or discarded when no longer in use. + + + + + SQLite implementation of DbConnectionStringBuilder. + + + + + Properties of this class + + + + + Constructs a new instance of the class + + + Default constructor + + + + + Constructs a new instance of the class using the specified connection string. + + The connection string to parse + + + + Private initializer, which assigns the connection string and resets the builder + + The connection string to assign + + + + Helper function for retrieving values from the connectionstring + + The keyword to retrieve settings for + The resulting parameter value + Returns true if the value was found and returned + + + + Fallback method for MONO, which doesn't implement DbConnectionStringBuilder.GetProperties() + + The hashtable to fill with property descriptors + + + + Gets/Sets the default version of the SQLite engine to instantiate. Currently the only valid value is 3, indicating version 3 of the sqlite library. + + + + + Gets/Sets the synchronization mode (file flushing) of the connection string. Default is "Normal". + + + + + Gets/Sets the encoding for the connection string. The default is "False" which indicates UTF-8 encoding. + + + + + Gets/Sets whether or not to use connection pooling. The default is "False" + + + + + Gets/Sets whethor not to store GUID's in binary format. The default is True + which saves space in the database. + + + + + Gets/Sets the filename to open on the connection string. + + + + + An alternate to the data source property + + + + + An alternate to the data source property that uses the SQLite URI syntax. + + + + + Gets/sets the default command timeout for newly-created commands. This is especially useful for + commands used internally such as inside a SQLiteTransaction, where setting the timeout is not possible. + + + + + Determines whether or not the connection will automatically participate + in the current distributed transaction (if one exists) + + + + + If set to true, will throw an exception if the database specified in the connection + string does not exist. If false, the database will be created automatically. + + + + + If enabled, uses the legacy 3.xx format for maximum compatibility, but results in larger + database sizes. + + + + + When enabled, the database will be opened for read-only access and writing will be disabled. + + + + + Gets/sets the database encryption password + + + + + Gets/Sets the page size for the connection. + + + + + Gets/Sets the maximum number of pages the database may hold + + + + + Gets/Sets the cache size for the connection. + + + + + Gets/Sets the DateTime format for the connection. + + + + + Gets/Sets the DateTime kind for the connection. + + + + + Gets/Sets the placeholder base schema name used for + .NET Framework compatibility purposes. + + + + + Determines how SQLite handles the transaction journal file. + + + + + Sets the default isolation level for transactions on the connection. + + + + + If enabled, use foreign key constraints + + + + + Gets/Sets the extra behavioral flags. + + + + + If enabled, apply the default connection settings to opened databases. + + + + + If enabled, attempt to resolve the provided data source file name to a + full path before opening. + + + + + SQLite has very limited types, and is inherently text-based. The first 5 types below represent the sum of all types SQLite + understands. The DateTime extension to the spec is for internal use only. + + + + + Not used + + + + + All integers in SQLite default to Int64 + + + + + All floating point numbers in SQLite default to double + + + + + The default data type of SQLite is text + + + + + Typically blob types are only seen when returned from a function + + + + + Null types can be returned from functions + + + + + Used internally by this provider + + + + + Used internally + + + + + These are the event types associated with the + + delegate (and its corresponding event) and the + class. + + + + + Not used. + + + + + Not used. + + + + + The connection is being opened. + + + + + The connection string has been parsed. + + + + + The connection was opened. + + + + + The method was called on the + connection. + + + + + A transaction was created using the connection. + + + + + The connection was enlisted into a transaction. + + + + + A command was created using the connection. + + + + + The connection is being closed. + + + + + The connection was closed. + + + + + This implementation of SQLite for ADO.NET can process date/time fields in databases in only one of three formats. Ticks, ISO8601 + and JulianDay. + + + ISO8601 is more compatible, readable, fully-processable, but less accurate as it doesn't provide time down to fractions of a second. + JulianDay is the numeric format the SQLite uses internally and is arguably the most compatible with 3rd party tools. It is + not readable as text without post-processing. + Ticks less compatible with 3rd party tools that query the database, and renders the DateTime field unreadable as text without post-processing. + + The preferred order of choosing a datetime format is JulianDay, ISO8601, and then Ticks. Ticks is mainly present for legacy + code support. + + + + + Use the value of DateTime.Ticks. This value is not recommended and is not well supported with LINQ. + + + + + Use the ISO-8601 format. Uses the "yyyy-MM-dd HH:mm:ss.FFFFFFFK" format for UTC DateTime values and + "yyyy-MM-dd HH:mm:ss.FFFFFFF" format for local DateTime values). + + + + + The interval of time in days and fractions of a day since January 1, 4713 BC. + + + + + The whole number of seconds since the Unix epoch (January 1, 1970). + + + + + Any culture-independent string value that the .NET Framework can interpret as a valid DateTime. + + + + + Any string value that the .NET Framework can interpret as a valid DateTime using the current culture. + + + + + The default format for this provider. + + + + + This enum determines how SQLite treats its journal file. + + + By default SQLite will create and delete the journal file when needed during a transaction. + However, for some computers running certain filesystem monitoring tools, the rapid + creation and deletion of the journal file can cause those programs to fail, or to interfere with SQLite. + + If a program or virus scanner is interfering with SQLite's journal file, you may receive errors like "unable to open database file" + when starting a transaction. If this is happening, you may want to change the default journal mode to Persist. + + + + + The default mode, this causes SQLite to use the existing journaling mode for the database. + + + + + SQLite will create and destroy the journal file as-needed. + + + + + When this is set, SQLite will keep the journal file even after a transaction has completed. It's contents will be erased, + and the journal re-used as often as needed. If it is deleted, it will be recreated the next time it is needed. + + + + + This option disables the rollback journal entirely. Interrupted transactions or a program crash can cause database + corruption in this mode! + + + + + SQLite will truncate the journal file to zero-length instead of deleting it. + + + + + SQLite will store the journal in volatile RAM. This saves disk I/O but at the expense of database safety and integrity. + If the application using SQLite crashes in the middle of a transaction when the MEMORY journaling mode is set, then the + database file will very likely go corrupt. + + + + + SQLite uses a write-ahead log instead of a rollback journal to implement transactions. The WAL journaling mode is persistent; + after being set it stays in effect across multiple database connections and after closing and reopening the database. A database + in WAL journaling mode can only be accessed by SQLite version 3.7.0 or later. + + + + + Possible values for the "synchronous" database setting. This setting determines + how often the database engine calls the xSync method of the VFS. + + + + + Use the default "synchronous" database setting. Currently, this should be + the same as using the FULL mode. + + + + + The database engine continues without syncing as soon as it has handed + data off to the operating system. If the application running SQLite + crashes, the data will be safe, but the database might become corrupted + if the operating system crashes or the computer loses power before that + data has been written to the disk surface. + + + + + The database engine will still sync at the most critical moments, but + less often than in FULL mode. There is a very small (though non-zero) + chance that a power failure at just the wrong time could corrupt the + database in NORMAL mode. + + + + + The database engine will use the xSync method of the VFS to ensure that + all content is safely written to the disk surface prior to continuing. + This ensures that an operating system crash or power failure will not + corrupt the database. FULL synchronous is very safe, but it is also + slower. + + + + + Struct used internally to determine the datatype of a column in a resultset + + + + + The DbType of the column, or DbType.Object if it cannot be determined + + + + + The affinity of a column, used for expressions or when Type is DbType.Object + + + + + SQLite implementation of DbDataAdapter. + + + + + This class is just a shell around the DbDataAdapter. Nothing from DbDataAdapter is overridden here, just a few constructors are defined. + + + Default constructor. + + + + + Constructs a data adapter using the specified select command. + + The select command to associate with the adapter. + + + + Constructs a data adapter with the supplied select command text and associated with the specified connection. + + The select command text to associate with the data adapter. + The connection to associate with the select command. + + + + Constructs a data adapter with the specified select command text, and using the specified database connection string. + + The select command text to use to construct a select command. + A connection string suitable for passing to a new SQLiteConnection, which is associated with the select command. + + + + Raised by the underlying DbDataAdapter when a row is being updated + + The event's specifics + + + + Raised by DbDataAdapter after a row is updated + + The event's specifics + + + + Row updating event handler + + + + + Row updated event handler + + + + + Gets/sets the select command for this DataAdapter + + + + + Gets/sets the insert command for this DataAdapter + + + + + Gets/sets the update command for this DataAdapter + + + + + Gets/sets the delete command for this DataAdapter + + + + + SQLite implementation of DbDataReader. + + + + + Underlying command this reader is attached to + + + + + Index of the current statement in the command being processed + + + + + Current statement being Read() + + + + + State of the current statement being processed. + -1 = First Step() executed, so the first Read() will be ignored + 0 = Actively reading + 1 = Finished reading + 2 = Non-row-returning statement, no records + + + + + Number of records affected by the insert/update statements executed on the command + + + + + Count of fields (columns) in the row-returning statement currently being processed + + + + + Maps the field (column) names to their corresponding indexes within the results. + + + + + Datatypes of active fields (columns) in the current statement, used for type-restricting data + + + + + The behavior of the datareader + + + + + If set, then dispose of the command object when the reader is finished + + + + + If set, then raise an exception when the object is accessed after being disposed. + + + + + An array of rowid's for the active statement if CommandBehavior.KeyInfo is specified + + + + + Matches the version of the connection. + + + + + The "stub" (i.e. placeholder) base schema name to use when returning + column schema information. Matches the base schema name used by the + associated connection. + + + + + Internal constructor, initializes the datareader and sets up to begin executing statements + + The SQLiteCommand this data reader is for + The expected behavior of the data reader + + + + Dispose of all resources used by this datareader. + + + + + + Closes the datareader, potentially closing the connection as well if CommandBehavior.CloseConnection was specified. + + + + + Throw an error if the datareader is closed + + + + + Throw an error if a row is not loaded + + + + + Enumerator support + + Returns a DbEnumerator object. + + + + SQLite is inherently un-typed. All datatypes in SQLite are natively strings. The definition of the columns of a table + and the affinity of returned types are all we have to go on to type-restrict data in the reader. + + This function attempts to verify that the type of data being requested of a column matches the datatype of the column. In + the case of columns that are not backed into a table definition, we attempt to match up the affinity of a column (int, double, string or blob) + to a set of known types that closely match that affinity. It's not an exact science, but its the best we can do. + + + This function throws an InvalidTypeCast() exception if the requested type doesn't match the column's definition or affinity. + + The index of the column to type-check + The type we want to get out of the column + + + + Retrieves the column as a boolean value + + The index of the column to retrieve + bool + + + + Retrieves the column as a single byte value + + The index of the column to retrieve + byte + + + + Retrieves a column as an array of bytes (blob) + + The index of the column to retrieve + The zero-based index of where to begin reading the data + The buffer to write the bytes into + The zero-based index of where to begin writing into the array + The number of bytes to retrieve + The actual number of bytes written into the array + + To determine the number of bytes in the column, pass a null value for the buffer. The total length will be returned. + + + + + Returns the column as a single character + + The index of the column to retrieve + char + + + + Retrieves a column as an array of chars (blob) + + The index of the column to retrieve + The zero-based index of where to begin reading the data + The buffer to write the characters into + The zero-based index of where to begin writing into the array + The number of bytes to retrieve + The actual number of characters written into the array + + To determine the number of characters in the column, pass a null value for the buffer. The total length will be returned. + + + + + Retrieves the name of the back-end datatype of the column + + The index of the column to retrieve + string + + + + Retrieve the column as a date/time value + + The index of the column to retrieve + DateTime + + + + Retrieve the column as a decimal value + + The index of the column to retrieve + decimal + + + + Returns the column as a double + + The index of the column to retrieve + double + + + + Returns the .NET type of a given column + + The index of the column to retrieve + Type + + + + Returns a column as a float value + + The index of the column to retrieve + float + + + + Returns the column as a Guid + + The index of the column to retrieve + Guid + + + + Returns the column as a short + + The index of the column to retrieve + Int16 + + + + Retrieves the column as an int + + The index of the column to retrieve + Int32 + + + + Retrieves the column as a long + + The index of the column to retrieve + Int64 + + + + Retrieves the name of the column + + The index of the column to retrieve + string + + + + Retrieves the i of a column, given its name + + The name of the column to retrieve + The int i of the column + + + + Schema information in SQLite is difficult to map into .NET conventions, so a lot of work must be done + to gather the necessary information so it can be represented in an ADO.NET manner. + + Returns a DataTable containing the schema information for the active SELECT statement being processed. + + + + Retrieves the column as a string + + The index of the column to retrieve + string + + + + Retrieves the column as an object corresponding to the underlying datatype of the column + + The index of the column to retrieve + object + + + + Retreives the values of multiple columns, up to the size of the supplied array + + The array to fill with values from the columns in the current resultset + The number of columns retrieved + + + + Returns a collection containing all the column names and values for the + current row of data in the current resultset, if any. If there is no + current row or no current resultset, an exception may be thrown. + + + The collection containing the column name and value information for the + current row of data in the current resultset or null if this information + cannot be obtained. + + + + + Returns True if the specified column is null + + The index of the column to retrieve + True or False + + + + Moves to the next resultset in multiple row-returning SQL command. + + True if the command was successful and a new resultset is available, False otherwise. + + + + Retrieves the SQLiteType for a given column, and caches it to avoid repetetive interop calls. + + The index of the column to retrieve + A SQLiteType structure + + + + Reads the next row from the resultset + + True if a new row was successfully loaded and is ready for processing + + + + Not implemented. Returns 0 + + + + + Returns the number of columns in the current resultset + + + + + Returns the number of visible fields in the current resultset + + + + + Returns True if the resultset has rows that can be fetched + + + + + Returns True if the data reader is closed + + + + + Retrieve the count of records affected by an update/insert command. Only valid once the data reader is closed! + + + + + Indexer to retrieve data from a column given its name + + The name of the column to retrieve data for + The value contained in the column + + + + Indexer to retrieve data from a column given its i + + The index of the column to retrieve + The value contained in the column + + + + SQLite exception class. + + + + + Private constructor for use with serialization. + + + Holds the serialized object data about the exception being thrown. + + + Contains contextual information about the source or destination. + + + + + Public constructor for generating a SQLite exception given the error + code and message. + + + The SQLite return code to report. + + + Message text to go along with the return code message text. + + + + + Public constructor that uses the base class constructor for the error + message. + + Error message text. + + + + Public constructor that uses the default base class constructor. + + + + + Public constructor that uses the base class constructor for the error + message and inner exception. + + Error message text. + The original (inner) exception. + + + + Adds extra information to the serialized object data specific to this + class type. This is only used for serialization. + + + Holds the serialized object data about the exception being thrown. + + + Contains contextual information about the source or destination. + + + + + Returns the error message for the specified SQLite return code. + + The SQLite return code. + The error message or null if it cannot be found. + + + + Returns the composite error message based on the SQLite return code + and the optional detailed error message. + + The SQLite return code. + Optional detailed error message. + Error message text for the return code. + + + + Gets the associated SQLite return code for this exception as a + . This property returns the same + underlying value as the property. + + + + + Gets the associated SQLite return code for this exception as an + . For desktop versions of the .NET Framework, + this property overrides the property of the same name within the + + class. This property returns the same underlying value as the + property. + + + + + SQLite error codes. Actually, this enumeration represents a return code, + which may also indicate success in one of several ways (e.g. SQLITE_OK, + SQLITE_ROW, and SQLITE_DONE). Therefore, the name of this enumeration is + something of a misnomer. + + + + + Successful result + + + + + SQL error or missing database + + + + + Internal logic error in SQLite + + + + + Access permission denied + + + + + Callback routine requested an abort + + + + + The database file is locked + + + + + A table in the database is locked + + + + + A malloc() failed + + + + + Attempt to write a readonly database + + + + + Operation terminated by sqlite3_interrupt() + + + + + Some kind of disk I/O error occurred + + + + + The database disk image is malformed + + + + + Unknown opcode in sqlite3_file_control() + + + + + Insertion failed because database is full + + + + + Unable to open the database file + + + + + Database lock protocol error + + + + + Database is empty + + + + + The database schema changed + + + + + String or BLOB exceeds size limit + + + + + Abort due to constraint violation + + + + + Data type mismatch + + + + + Library used incorrectly + + + + + Uses OS features not supported on host + + + + + Authorization denied + + + + + Auxiliary database format error + + + + + 2nd parameter to sqlite3_bind out of range + + + + + File opened that is not a database file + + + + + sqlite3_step() has another row ready + + + + + sqlite3_step() has finished executing + + + + + SQLite implementation of . + + + SQLite implementation of . + + + + + Constructs a new instance. + + + + + Static instance member which returns an instanced class. + + + + + Creates and returns a new object. + + The new object. + + + + Creates and returns a new object. + + The new object. + + + + Creates and returns a new object. + + The new object. + + + + Creates and returns a new object. + + The new object. + + + + Creates and returns a new object. + + The new object. + + + + Creates and returns a new object. + + The new object. + + + + Will provide a object in .NET 3.5. + + The class or interface type to query for. + + + + + This event is raised whenever SQLite raises a logging event. + Note that this should be set as one of the first things in the + application. This event is provided for backward compatibility only. + New code should use the class instead. + + + + + This abstract class is designed to handle user-defined functions easily. An instance of the derived class is made for each + connection to the database. + + + Although there is one instance of a class derived from SQLiteFunction per database connection, the derived class has no access + to the underlying connection. This is necessary to deter implementers from thinking it would be a good idea to make database + calls during processing. + + It is important to distinguish between a per-connection instance, and a per-SQL statement context. One instance of this class + services all SQL statements being stepped through on that connection, and there can be many. One should never store per-statement + information in member variables of user-defined function classes. + + For aggregate functions, always create and store your per-statement data in the contextData object on the 1st step. This data will + be automatically freed for you (and Dispose() called if the item supports IDisposable) when the statement completes. + + + + + The error code used for logging exceptions caught in user-provided + code. + + + + + The base connection this function is attached to + + + + + Internal array used to keep track of aggregate function context data + + + + + The connection flags associated with this object (this should be the + same value as the flags associated with the parent connection object). + + + + + Holds a reference to the callback function for user functions + + + + + Holds a reference to the callbakc function for stepping in an aggregate function + + + + + Holds a reference to the callback function for finalizing an aggregate function + + + + + Holds a reference to the callback function for collation sequences + + + + + Current context of the current callback. Only valid during a callback + + + + + This static list contains all the user-defined functions declared using the proper attributes. + + + + + Internal constructor, initializes the function's internal variables. + + + + + Disposes of any active contextData variables that were not automatically cleaned up. Sometimes this can happen if + someone closes the connection while a DataReader is open. + + + + + Placeholder for a user-defined disposal routine + + True if the object is being disposed explicitly + + + + Scalar functions override this method to do their magic. + + + Parameters passed to functions have only an affinity for a certain data type, there is no underlying schema available + to force them into a certain type. Therefore the only types you will ever see as parameters are + DBNull.Value, Int64, Double, String or byte[] array. + + The arguments for the command to process + You may return most simple types as a return value, null or DBNull.Value to return null, DateTime, or + you may return an Exception-derived class if you wish to return an error to SQLite. Do not actually throw the error, + just return it! + + + + Aggregate functions override this method to do their magic. + + + Typically you'll be updating whatever you've placed in the contextData field and returning as quickly as possible. + + The arguments for the command to process + The 1-based step number. This is incrememted each time the step method is called. + A placeholder for implementers to store contextual data pertaining to the current context. + + + + Aggregate functions override this method to finish their aggregate processing. + + + If you implemented your aggregate function properly, + you've been recording and keeping track of your data in the contextData object provided, and now at this stage you should have + all the information you need in there to figure out what to return. + NOTE: It is possible to arrive here without receiving a previous call to Step(), in which case the contextData will + be null. This can happen when no rows were returned. You can either return null, or 0 or some other custom return value + if that is the case. + + Your own assigned contextData, provided for you so you can return your final results. + You may return most simple types as a return value, null or DBNull.Value to return null, DateTime, or + you may return an Exception-derived class if you wish to return an error to SQLite. Do not actually throw the error, + just return it! + + + + + User-defined collation sequences override this method to provide a custom string sorting algorithm. + + The first string to compare + The second strnig to compare + 1 if param1 is greater than param2, 0 if they are equal, or -1 if param1 is less than param2 + + + + Converts an IntPtr array of context arguments to an object array containing the resolved parameters the pointers point to. + + + Parameters passed to functions have only an affinity for a certain data type, there is no underlying schema available + to force them into a certain type. Therefore the only types you will ever see as parameters are + DBNull.Value, Int64, Double, String or byte[] array. + + The number of arguments + A pointer to the array of arguments + An object array of the arguments once they've been converted to .NET values + + + + Takes the return value from Invoke() and Final() and figures out how to return it to SQLite's context. + + The context the return value applies to + The parameter to return to SQLite + + + + Internal scalar callback function, which wraps the raw context pointer and calls the virtual Invoke() method. + WARNING: Must not throw exceptions. + + A raw context pointer + Number of arguments passed in + A pointer to the array of arguments + + + + Internal collation sequence function, which wraps up the raw string pointers and executes the Compare() virtual function. + WARNING: Must not throw exceptions. + + Not used + Length of the string pv1 + Pointer to the first string to compare + Length of the string pv2 + Pointer to the second string to compare + Returns -1 if the first string is less than the second. 0 if they are equal, or 1 if the first string is greater + than the second. Returns 0 if an exception is caught. + + + + Internal collation sequence function, which wraps up the raw string pointers and executes the Compare() virtual function. + WARNING: Must not throw exceptions. + + Not used + Length of the string pv1 + Pointer to the first string to compare + Length of the string pv2 + Pointer to the second string to compare + Returns -1 if the first string is less than the second. 0 if they are equal, or 1 if the first string is greater + than the second. Returns 0 if an exception is caught. + + + + The internal aggregate Step function callback, which wraps the raw context pointer and calls the virtual Step() method. + WARNING: Must not throw exceptions. + + + This function takes care of doing the lookups and getting the important information put together to call the Step() function. + That includes pulling out the user's contextData and updating it after the call is made. We use a sorted list for this so + binary searches can be done to find the data. + + A raw context pointer + Number of arguments passed in + A pointer to the array of arguments + + + + An internal aggregate Final function callback, which wraps the context pointer and calls the virtual Final() method. + WARNING: Must not throw exceptions. + + A raw context pointer + + + + Using reflection, enumerate all assemblies in the current appdomain looking for classes that + have a SQLiteFunctionAttribute attribute, and registering them accordingly. + + + + + Manual method of registering a function. The type must still have the SQLiteFunctionAttributes in order to work + properly, but this is a workaround for the Compact Framework where enumerating assemblies is not currently supported. + + The type of the function to register + + + + Called by SQLiteBase derived classes, this function binds all user-defined functions to a connection. + It is done this way so that all user-defined functions will access the database using the same encoding scheme + as the connection (UTF-8 or UTF-16). + + + The wrapper functions that interop with SQLite will create a unique cookie value, which internally is a pointer to + all the wrapped callback functions. The interop function uses it to map CDecl callbacks to StdCall callbacks. + + The base object on which the functions are to bind + The flags associated with the parent connection object + Returns an array of functions which the connection object should retain until the connection is closed. + + + + Returns a reference to the underlying connection's SQLiteConvert class, which can be used to convert + strings and DateTime's into the current connection's encoding schema. + + + + + Extends SQLiteFunction and allows an inherited class to obtain the collating sequence associated with a function call. + + + User-defined functions can call the GetCollationSequence() method in this class and use it to compare strings and char arrays. + + + + + Obtains the collating sequence in effect for the given function. + + + + + + The type of user-defined function to declare + + + + + Scalar functions are designed to be called and return a result immediately. Examples include ABS(), Upper(), Lower(), etc. + + + + + Aggregate functions are designed to accumulate data until the end of a call and then return a result gleaned from the accumulated data. + Examples include SUM(), COUNT(), AVG(), etc. + + + + + Collation sequences are used to sort textual data in a custom manner, and appear in an ORDER BY clause. Typically text in an ORDER BY is + sorted using a straight case-insensitive comparison function. Custom collating sequences can be used to alter the behavior of text sorting + in a user-defined manner. + + + + + An internal callback delegate declaration. + + Raw context pointer for the user function + Count of arguments to the function + A pointer to the array of argument pointers + + + + An internal final callback delegate declaration. + + Raw context pointer for the user function + + + + Internal callback delegate for implementing collation sequences + + Not used + Length of the string pv1 + Pointer to the first string to compare + Length of the string pv2 + Pointer to the second string to compare + Returns -1 if the first string is less than the second. 0 if they are equal, or 1 if the first string is greater + than the second. + + + + The type of collating sequence + + + + + The built-in BINARY collating sequence + + + + + The built-in NOCASE collating sequence + + + + + The built-in REVERSE collating sequence + + + + + A custom user-defined collating sequence + + + + + The encoding type the collation sequence uses + + + + + The collation sequence is UTF8 + + + + + The collation sequence is UTF16 little-endian + + + + + The collation sequence is UTF16 big-endian + + + + + A struct describing the collating sequence a function is executing in + + + + + The name of the collating sequence + + + + + The type of collating sequence + + + + + The text encoding of the collation sequence + + + + + Context of the function that requested the collating sequence + + + + + Calls the base collating sequence to compare two strings + + The first string to compare + The second string to compare + -1 if s1 is less than s2, 0 if s1 is equal to s2, and 1 if s1 is greater than s2 + + + + Calls the base collating sequence to compare two character arrays + + The first array to compare + The second array to compare + -1 if c1 is less than c2, 0 if c1 is equal to c2, and 1 if c1 is greater than c2 + + + + A simple custom attribute to enable us to easily find user-defined functions in + the loaded assemblies and initialize them in SQLite as connections are made. + + + + + Default constructor, initializes the internal variables for the function. + + + + + The function's name as it will be used in SQLite command text. + + + + + The number of arguments this function expects. -1 if the number of arguments is variable. + + + + + The type of function this implementation will be. + + + + + This class provides key info for a given SQLite statement. + + Providing key information for a given statement is non-trivial :( + + + + + + This function does all the nasty work at determining what keys need to be returned for + a given statement. + + + + + + + + Make sure all the subqueries are open and ready and sync'd with the current rowid + of the table they're supporting + + + + + Release any readers on any subqueries + + + + + Append all the columns we've added to the original query to the schema + + + + + + How many additional columns of keyinfo we're holding + + + + + Used to support CommandBehavior.KeyInfo + + + + + A single sub-query for a given table/database. + + + + + Event data for logging event handlers. + + + + + The error code. The type of this object value should be + or . + + + + + SQL statement text as the statement first begins executing + + + + + Extra data associated with this event, if any. + + + + + Constructs the object. + + Should be null. + + The error code. The type of this object value should be + or . + + The error message, if any. + The extra data, if any. + + + + Raised when a log event occurs. + + The current connection + Event arguments of the trace + + + + Manages the SQLite custom logging functionality and the associated + callback for the whole process. + + + + + Object used to synchronize access to the static instance data + for this class. + + + + + Member variable to store the AppDomain.DomainUnload event handler. + + + + + The default log event handler. + + + + + The log callback passed to native SQLite engine. This must live + as long as the SQLite library has a pointer to it. + + + + + The base SQLite object to interop with. + + + + + This will be non-zero if logging is currently enabled. + + + + + Initializes the SQLite logging facilities. + + + + + Handles the AppDomain being unloaded. + + Should be null. + The data associated with this event. + + + + Log a message to all the registered log event handlers without going + through the SQLite library. + + The message to be logged. + + + + Log a message to all the registered log event handlers without going + through the SQLite library. + + The SQLite error code. + The message to be logged. + + + + Log a message to all the registered log event handlers without going + through the SQLite library. + + The integer error code. + The message to be logged. + + + + Log a message to all the registered log event handlers without going + through the SQLite library. + + + The error code. The type of this object value should be + System.Int32 or SQLiteErrorCode. + + The message to be logged. + + + + Creates and initializes the default log event handler. + + + + + Adds the default log event handler to the list of handlers. + + + + + Removes the default log event handler from the list of handlers. + + + + + Internal proxy function that calls any registered application log + event handlers. + + WARNING: This method is used more-or-less directly by native code, + do not modify its type signature. + + + The extra data associated with this message, if any. + + + The error code associated with this message. + + + The message string to be logged. + + + + + Default logger. Currently, uses the Trace class (i.e. sends events + to the current trace listeners, if any). + + Should be null. + The data associated with this event. + + + + Member variable to store the application log handler to call. + + + + + This event is raised whenever SQLite raises a logging event. + Note that this should be set as one of the first things in the + application. + + + + + If this property is true, logging is enabled; otherwise, logging is + disabled. When logging is disabled, no logging events will fire. + + + + + MetaDataCollections specific to SQLite + + + + + Returns a list of databases attached to the connection + + + + + Returns column information for the specified table + + + + + Returns index information for the optionally-specified table + + + + + Returns base columns for the given index + + + + + Returns the tables in the given catalog + + + + + Returns user-defined views in the given catalog + + + + + Returns underlying column information on the given view + + + + + Returns foreign key information for the given catalog + + + + + Returns the triggers on the database + + + + + SQLite implementation of DbParameter. + + + + + The data type of the parameter + + + + + The version information for mapping the parameter + + + + + The value of the data in the parameter + + + + + The source column for the parameter + + + + + The column name + + + + + The data size, unused by SQLite + + + + + Default constructor + + + + + Constructs a named parameter given the specified parameter name + + The parameter name + + + + Constructs a named parameter given the specified parameter name and initial value + + The parameter name + The initial value of the parameter + + + + Constructs a named parameter of the specified type + + The parameter name + The datatype of the parameter + + + + Constructs a named parameter of the specified type and source column reference + + The parameter name + The data type + The source column + + + + Constructs a named parameter of the specified type, source column and row version + + The parameter name + The data type + The source column + The row version information + + + + Constructs an unnamed parameter of the specified data type + + The datatype of the parameter + + + + Constructs an unnamed parameter of the specified data type and sets the initial value + + The datatype of the parameter + The initial value of the parameter + + + + Constructs an unnamed parameter of the specified data type and source column + + The datatype of the parameter + The source column + + + + Constructs an unnamed parameter of the specified data type, source column and row version + + The data type + The source column + The row version information + + + + Constructs a named parameter of the specified type and size + + The parameter name + The data type + The size of the parameter + + + + Constructs a named parameter of the specified type, size and source column + + The name of the parameter + The data type + The size of the parameter + The source column + + + + Constructs a named parameter of the specified type, size, source column and row version + + The name of the parameter + The data type + The size of the parameter + The source column + The row version information + + + + Constructs a named parameter of the specified type, size, source column and row version + + The name of the parameter + The data type + The size of the parameter + Only input parameters are supported in SQLite + Ignored + Ignored + Ignored + The source column + The row version information + The initial value to assign the parameter + + + + Constructs a named parameter, yet another flavor + + The name of the parameter + The data type + The size of the parameter + Only input parameters are supported in SQLite + Ignored + Ignored + The source column + The row version information + Whether or not this parameter is for comparing NULL's + The intial value to assign the parameter + + + + Constructs an unnamed parameter of the specified type and size + + The data type + The size of the parameter + + + + Constructs an unnamed parameter of the specified type, size, and source column + + The data type + The size of the parameter + The source column + + + + Constructs an unnamed parameter of the specified type, size, source column and row version + + The data type + The size of the parameter + The source column + The row version information + + + + Resets the DbType of the parameter so it can be inferred from the value + + + + + Clones a parameter + + A new, unassociated SQLiteParameter + + + + Whether or not the parameter can contain a null value + + + + + Returns the datatype of the parameter + + + + + Supports only input parameters + + + + + Returns the parameter name + + + + + Returns the size of the parameter + + + + + Gets/sets the source column + + + + + Used by DbCommandBuilder to determine the mapping for nullable fields + + + + + Gets and sets the row version + + + + + Gets and sets the parameter value. If no datatype was specified, the datatype will assume the type from the value given. + + + + + SQLite implementation of DbParameterCollection. + + + + + The underlying command to which this collection belongs + + + + + The internal array of parameters in this collection + + + + + Determines whether or not all parameters have been bound to their statement(s) + + + + + Initializes the collection + + The command to which the collection belongs + + + + Retrieves an enumerator for the collection + + An enumerator for the underlying array + + + + Adds a parameter to the collection + + The parameter name + The data type + The size of the value + The source column + A SQLiteParameter object + + + + Adds a parameter to the collection + + The parameter name + The data type + The size of the value + A SQLiteParameter object + + + + Adds a parameter to the collection + + The parameter name + The data type + A SQLiteParameter object + + + + Adds a parameter to the collection + + The parameter to add + A zero-based index of where the parameter is located in the array + + + + Adds a parameter to the collection + + The parameter to add + A zero-based index of where the parameter is located in the array + + + + Adds a named/unnamed parameter and its value to the parameter collection. + + Name of the parameter, or null to indicate an unnamed parameter + The initial value of the parameter + Returns the SQLiteParameter object created during the call. + + + + Adds an array of parameters to the collection + + The array of parameters to add + + + + Adds an array of parameters to the collection + + The array of parameters to add + + + + Clears the array and resets the collection + + + + + Determines if the named parameter exists in the collection + + The name of the parameter to check + True if the parameter is in the collection + + + + Determines if the parameter exists in the collection + + The SQLiteParameter to check + True if the parameter is in the collection + + + + Not implemented + + + + + + + Retrieve a parameter by name from the collection + + The name of the parameter to fetch + A DbParameter object + + + + Retrieves a parameter by its index in the collection + + The index of the parameter to retrieve + A DbParameter object + + + + Returns the index of a parameter given its name + + The name of the parameter to find + -1 if not found, otherwise a zero-based index of the parameter + + + + Returns the index of a parameter + + The parameter to find + -1 if not found, otherwise a zero-based index of the parameter + + + + Inserts a parameter into the array at the specified location + + The zero-based index to insert the parameter at + The parameter to insert + + + + Removes a parameter from the collection + + The parameter to remove + + + + Removes a parameter from the collection given its name + + The name of the parameter to remove + + + + Removes a parameter from the collection given its index + + The zero-based parameter index to remove + + + + Re-assign the named parameter to a new parameter object + + The name of the parameter to replace + The new parameter + + + + Re-assign a parameter at the specified index + + The zero-based index of the parameter to replace + The new parameter + + + + Un-binds all parameters from their statements + + + + + This function attempts to map all parameters in the collection to all statements in a Command. + Since named parameters may span multiple statements, this function makes sure all statements are bound + to the same named parameter. Unnamed parameters are bound in sequence. + + + + + Returns true + + + + + Returns false + + + + + Returns false + + + + + Returns null + + + + + Returns a count of parameters in the collection + + + + + Overloaded to specialize the return value of the default indexer + + Name of the parameter to get/set + The specified named SQLite parameter + + + + Overloaded to specialize the return value of the default indexer + + The index of the parameter to get/set + The specified SQLite parameter + + + + Represents a single SQL statement in SQLite. + + + + + The underlying SQLite object this statement is bound to + + + + + The command text of this SQL statement + + + + + The actual statement pointer + + + + + An index from which unnamed parameters begin + + + + + Names of the parameters as SQLite understands them to be + + + + + Parameters for this statement + + + + + Command this statement belongs to (if any) + + + + + The flags associated with the parent connection object. + + + + + Initializes the statement and attempts to get all information about parameters in the statement + + The base SQLite object + The flags associated with the parent connection object + The statement + The command text for this statement + The previous command in a multi-statement command + + + + Disposes and finalizes the statement + + + + + If the underlying database connection is open, fetches the number of changed rows + resulting from the most recent query; otherwise, does nothing. + + + The number of changes when true is returned. + Undefined if false is returned. + + Non-zero if the number of changed rows was fetched. + + + + Called by SQLiteParameterCollection, this function determines if the specified parameter name belongs to + this statement, and if so, keeps a reference to the parameter so it can be bound later. + + The parameter name to map + The parameter to assign it + + + + Bind all parameters, making sure the caller didn't miss any + + + + + Attempts to convert an arbitrary object to the Boolean data type. + Null object values are converted to false. Throws a SQLiteException + upon failure. + + The object value to convert. + The format provider to use. + The converted boolean value. + + + + Perform the bind operation for an individual parameter + + The index of the parameter to bind + The parameter we're binding + + + + SQLite implementation of DbTransaction. + + + + + The connection to which this transaction is bound + + + + + Constructs the transaction object, binding it to the supplied connection + + The connection to open a transaction on + TRUE to defer the writelock, or FALSE to lock immediately + + + + Disposes the transaction. If it is currently active, any changes are rolled back. + + + + + Commits the current transaction. + + + + + Rolls back the active transaction. + + + + + Returns the underlying connection to which this transaction applies. + + + + + Forwards to the local Connection property + + + + + Gets the isolation level of the transaction. SQLite only supports Serializable transactions. + + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to <?xml version="1.0" standalone="yes"?> + <DocumentElement> + <DataTypes> + <TypeName>smallint</TypeName> + <ProviderDbType>10</ProviderDbType> + <ColumnSize>5</ColumnSize> + <DataType>System.Int16</DataType> + <CreateFormat>smallint</CreateFormat> + <IsAutoIncrementable>false</IsAutoIncrementable> + <IsCaseSensitive>false</IsCaseSensitive> + <IsFixedLength>true</IsFixedLength> + <IsFixedPrecisionScale>true</IsFixedPrecisionScale> + <IsLong>false</IsLong> + <IsNullable>true</ [rest of string was truncated]";. + + + + + Looks up a localized string similar to ALL,ALTER,AND,AS,AUTOINCREMENT,BETWEEN,BY,CASE,CHECK,COLLATE,COMMIT,CONSTRAINT,CREATE,CROSS,DEFAULT,DEFERRABLE,DELETE,DISTINCT,DROP,ELSE,ESCAPE,EXCEPT,FOREIGN,FROM,FULL,GROUP,HAVING,IN,INDEX,INNER,INSERT,INTERSECT,INTO,IS,ISNULL,JOIN,LEFT,LIMIT,NATURAL,NOT,NOTNULL,NULL,ON,OR,ORDER,OUTER,PRIMARY,REFERENCES,RIGHT,ROLLBACK,SELECT,SET,TABLE,THEN,TO,TRANSACTION,UNION,UNIQUE,UPDATE,USING,VALUES,WHEN,WHERE. + + + + + Looks up a localized string similar to <?xml version="1.0" encoding="utf-8" ?> + <DocumentElement> + <MetaDataCollections> + <CollectionName>MetaDataCollections</CollectionName> + <NumberOfRestrictions>0</NumberOfRestrictions> + <NumberOfIdentifierParts>0</NumberOfIdentifierParts> + </MetaDataCollections> + <MetaDataCollections> + <CollectionName>DataSourceInformation</CollectionName> + <NumberOfRestrictions>0</NumberOfRestrictions> + <NumberOfIdentifierParts>0</NumberOfIdentifierParts> + </MetaDataCollections> + <MetaDataC [rest of string was truncated]";. + + + + + The name of the environment variable containing the processor + architecture of the current process. + + + + + This is the P/Invoke method that wraps the native Win32 LoadLibrary + function. See the MSDN documentation for full details on what it + does. + + + The name of the executable library. + + + The native module handle upon success -OR- IntPtr.Zero on failure. + + + + + This lock is used to protect the static _SQLiteModule and + processorArchitecturePlatforms fields, below. + + + + + Stores the mappings between processor architecture names and platform + names. + + + + + The native module handle for the native SQLite library or the value + IntPtr.Zero. + + + + + For now, this method simply calls the Initialize method. + + + + + Attempts to initialize this class by pre-loading the native SQLite + library for the processor architecture of the current process. + + + + + Queries and returns the base directory of the current application + domain. + + + The base directory for the current application domain -OR- null if it + cannot be determined. + + + + + Determines if the dynamic link library file name requires a suffix + and adds it if necessary. + + + The original dynamic link library file name to inspect. + + + The dynamic link library file name, possibly modified to include an + extension. + + + + + Queries and returns the processor architecture of the current + process. + + + The processor architecture of the current process -OR- null if it + cannot be determined. Always returns an empty string when running on + the .NET Compact Framework. + + + + + Given the processor architecture, returns the name of the platform. + + + The processor architecture to be translated to a platform name. + + + The platform name for the specified processor architecture -OR- null + if it cannot be determined. + + + + + Attempts to load the native SQLite library based on the specified + directory and processor architecture. + + + The base directory to use, null for default (the base directory of + the current application domain). This directory should contain the + processor architecture specific sub-directories. + + + The requested processor architecture, null for default (the + processor architecture of the current process). This caller should + almost always specify null for this parameter. + + + The native module handle as returned by LoadLibrary -OR- IntPtr.Zero + if the loading fails for any reason. + + +
+
diff --git a/readme.txt b/readme.txt index df1cf6b..f9abd66 100644 --- a/readme.txt +++ b/readme.txt @@ -1,12 +1,14 @@ -Version v2013-04-07 ======================================================== +Version v2013-04-10a ======================================================== This is a maintenance release based on version v2013-04-05, which brought a refurbished user interface and fixes for various usability issues. +New: +- Added support for Toshiba *.db channel lists (read only so far) +- Allow Pr #0 for analog channels + Fixed: -- saving a .TLL file after loading a reference list which contained channels - that are no longer inside the .TLL caused an error during saving. - +- first channel list only got populated after switching between tabs The complete change log can be found at the end of this document @@ -90,6 +92,10 @@ OTHER DEALINGS IN THE SOFTWARE. Change log ==================================================================== +2013-04-08 +- Added support for Samsung F-Series. +- Added online check for updated program version + 2013-04-07 - FIX: saving a .TLL file after loading a reference list which contained channels that are no longer inside the .TLL caused an error during saving.