mirror of
https://github.com/PredatH0r/ChanSort.git
synced 2026-01-18 13:22:04 +01:00
initial import
This commit is contained in:
29
.gitignore
vendored
Normal file
29
.gitignore
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
|
||||
#ignore thumbnails created by windows
|
||||
Thumbs.db
|
||||
#Ignore files build by Visual Studio
|
||||
*.obj
|
||||
*.exe
|
||||
*.pdb
|
||||
*.user
|
||||
*.aps
|
||||
*.pch
|
||||
*.vspscc
|
||||
*_i.c
|
||||
*_p.c
|
||||
*.ncb
|
||||
*.suo
|
||||
*.tlb
|
||||
*.tlh
|
||||
*.bak
|
||||
*.cache
|
||||
*.ilk
|
||||
*.log
|
||||
[Bb]in
|
||||
[Dd]ebug*/
|
||||
*.lib
|
||||
*.sbr
|
||||
obj/
|
||||
[Rr]elease*/
|
||||
_ReSharper*/
|
||||
[Tt]est[Rr]esult*
|
||||
124
ChanSort.Api/ChanSort.Api.csproj
Normal file
124
ChanSort.Api/ChanSort.Api.csproj
Normal file
@@ -0,0 +1,124 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>8.0.30703</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{DCCFFA08-472B-4D17-BB90-8F513FC01392}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>ChanSort.Api</RootNamespace>
|
||||
<AssemblyName>ChanSort.Api</AssemblyName>
|
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<TargetFrameworkProfile>Client</TargetFrameworkProfile>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>..\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<CodeAnalysisIgnoreBuiltInRuleSets>true</CodeAnalysisIgnoreBuiltInRuleSets>
|
||||
<CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
|
||||
<OutputPath>bin\x86\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<CodeAnalysisIgnoreBuiltInRuleSets>true</CodeAnalysisIgnoreBuiltInRuleSets>
|
||||
<CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
|
||||
<CodeAnalysisFailOnMissingRules>false</CodeAnalysisFailOnMissingRules>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Controller\ChlFileSerializer.cs" />
|
||||
<Compile Include="Controller\CsvFileSerializer.cs" />
|
||||
<Compile Include="Controller\Editor.cs" />
|
||||
<Compile Include="Controller\ISerializerPlugin.cs" />
|
||||
<Compile Include="Model\ChannelList.cs" />
|
||||
<Compile Include="Model\Enums.cs" />
|
||||
<Compile Include="Model\LookupData.cs" />
|
||||
<Compile Include="Model\NetworkInfo.cs" />
|
||||
<Compile Include="Model\Satellite.cs" />
|
||||
<Compile Include="Model\Transponder.cs" />
|
||||
<Compile Include="Resources.de.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Resources.de.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Utils\ChannelMappingBase.cs" />
|
||||
<Compile Include="Utils\DataMapping.cs" />
|
||||
<Compile Include="Utils\Crc32.cs" />
|
||||
<Compile Include="Utils\CsvFile.cs" />
|
||||
<Compile Include="Utils\DvbChannelMappingBase.cs" />
|
||||
<Compile Include="Utils\DvbStringDecoder.cs" />
|
||||
<Compile Include="Utils\IniFile.cs" />
|
||||
<Compile Include="Model\ChannelInfo.cs" />
|
||||
<Compile Include="Controller\SerializerBase.cs" />
|
||||
<Compile Include="Model\DataRoot.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Utils\MappingPool.cs" />
|
||||
<Compile Include="Utils\Tools.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Lookup.csv">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Resources.de.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.de.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
98
ChanSort.Api/Controller/ChlFileSerializer.cs
Normal file
98
ChanSort.Api/Controller/ChlFileSerializer.cs
Normal file
@@ -0,0 +1,98 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
|
||||
namespace ChanSort.Api
|
||||
{
|
||||
/// <summary>
|
||||
/// Reader for SamToolBox reference lists (*.chl)
|
||||
/// The file has no header, each line represents a channel and fields are separated by semi-colon:
|
||||
/// Number;Channel Name[;Transponder Index]
|
||||
/// </summary>
|
||||
public class ChlFileSerializer
|
||||
{
|
||||
private static readonly char[] Separators = new[] { ';' };
|
||||
private readonly System.Text.StringBuilder warnings = new System.Text.StringBuilder();
|
||||
private int lineNumber;
|
||||
private DataRoot dataRoot;
|
||||
private ChannelList channelList;
|
||||
|
||||
#region Load()
|
||||
public string Load(string fileName, DataRoot root, ChannelList list)
|
||||
{
|
||||
this.lineNumber = 0;
|
||||
this.dataRoot = root;
|
||||
this.channelList = list;
|
||||
this.warnings.Remove(0, this.warnings.Length);
|
||||
|
||||
foreach (var channel in this.channelList.Channels)
|
||||
channel.NewProgramNr = 0;
|
||||
|
||||
using (var stream = new StreamReader(fileName, System.Text.Encoding.Default))
|
||||
{
|
||||
ReadChannelsFromStream(stream);
|
||||
}
|
||||
return this.warnings.ToString();
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ReadChannelsFromStream()
|
||||
|
||||
private void ReadChannelsFromStream(TextReader stream)
|
||||
{
|
||||
string line;
|
||||
while ((line = stream.ReadLine()) != null)
|
||||
{
|
||||
++lineNumber;
|
||||
ParseChannel(line);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region ParseChannel()
|
||||
|
||||
private void ParseChannel(string line)
|
||||
{
|
||||
var parts = line.Split(Separators);
|
||||
if (parts.Length < 2) return;
|
||||
int progNr;
|
||||
Transponder transponder = null;
|
||||
if (!int.TryParse(parts[0], out progNr)) return;
|
||||
if (parts.Length >= 3)
|
||||
{
|
||||
int transponderIndex;
|
||||
if (int.TryParse(parts[2], out transponderIndex))
|
||||
{
|
||||
transponder = this.dataRoot.Transponder.TryGet(transponderIndex);
|
||||
if (transponder == null)
|
||||
warnings.AppendFormat("Line #{0,4}: invalid transponder index {1}\r\n", this.lineNumber, transponderIndex);
|
||||
}
|
||||
}
|
||||
|
||||
string name = parts[1].Replace("\"", "");
|
||||
if (name.Trim().Length == 0)
|
||||
return;
|
||||
|
||||
int found = 0;
|
||||
var channels = channelList.GetChannelByName(name);
|
||||
if (transponder != null)
|
||||
channels = channels.Where(chan => chan.Transponder == transponder);
|
||||
|
||||
foreach(var channel in channels)
|
||||
{
|
||||
if (channel.NewProgramNr != 0)
|
||||
continue;
|
||||
++found;
|
||||
if (found > 1)
|
||||
break;
|
||||
channel.NewProgramNr = progNr;
|
||||
}
|
||||
|
||||
if (found == 0)
|
||||
this.warnings.AppendFormat("Line {0,4}: Pr# {1,4}, channel '{2}' could not be found\r\n", this.lineNumber, progNr, name);
|
||||
if (found > 1)
|
||||
this.warnings.AppendFormat("Line {0,4}: Pr# {1,4}, channel '{2}' found multiple times\r\n", this.lineNumber, progNr, name);
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
127
ChanSort.Api/Controller/CsvFileSerializer.cs
Normal file
127
ChanSort.Api/Controller/CsvFileSerializer.cs
Normal file
@@ -0,0 +1,127 @@
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
|
||||
namespace ChanSort.Api
|
||||
{
|
||||
public class CsvFileSerializer
|
||||
{
|
||||
private static readonly char[] Separators = new[] { ',', ';', '\t' };
|
||||
|
||||
#region Load()
|
||||
public void Load(string fileName, DataRoot dataRoot)
|
||||
{
|
||||
foreach (var list in dataRoot.ChannelLists)
|
||||
{
|
||||
foreach (var channel in list.Channels)
|
||||
channel.NewProgramNr = 0;
|
||||
}
|
||||
|
||||
using (var stream = new StreamReader(fileName))
|
||||
{
|
||||
ReadChannelsFromStream(stream, dataRoot);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ReadChannelsFromStream()
|
||||
|
||||
public static void ReadChannelsFromStream(TextReader stream, DataRoot dataRoot)
|
||||
{
|
||||
string line;
|
||||
while ((line = stream.ReadLine()) != null)
|
||||
{
|
||||
ParseChannel(line, dataRoot);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region ParseChannel()
|
||||
|
||||
private static void ParseChannel(string line, DataRoot dataRoot)
|
||||
{
|
||||
var parts = line.Split(Separators);
|
||||
if (parts.Length < 5) return;
|
||||
int index, slot, transportStreamId;
|
||||
if (!int.TryParse(parts[0], out index)) return;
|
||||
if (!int.TryParse(parts[1], out slot)) return;
|
||||
if (!int.TryParse(parts[2], out transportStreamId)) return;
|
||||
string uid = parts[3].Replace("\"", "");
|
||||
SignalSource signalSource;
|
||||
switch (uid[0])
|
||||
{
|
||||
case 'S': signalSource = SignalSource.DvbS; break;
|
||||
case 'C': signalSource = SignalSource.DvbCT; break;
|
||||
case 'A': signalSource = SignalSource.AnalogCT; break;
|
||||
case 'H': signalSource = SignalSource.HdPlusD; break;
|
||||
default: return;
|
||||
}
|
||||
var signalType = slot < 0x4000 ? SignalType.Tv : SignalType.Radio;
|
||||
var channelList = dataRoot.GetChannelList(signalSource, signalType, true);
|
||||
string name = parts[4].Replace("\"", "");
|
||||
IEnumerable<ChannelInfo> channels = FindChannels(channelList, name, uid);
|
||||
var channel = channels == null ? null : channels.FirstOrDefault(c => c.NewProgramNr == 0);
|
||||
if (channel != null)
|
||||
channel.NewProgramNr = slot & 0x3FFF;
|
||||
else
|
||||
{
|
||||
channel = new ChannelInfo(signalSource, signalType, uid, slot, name);
|
||||
channel.TransportStreamId = transportStreamId;
|
||||
channelList.AddChannel(channel);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region FindChannels()
|
||||
private static IEnumerable<ChannelInfo> FindChannels(ChannelList channelList, string name, string uid)
|
||||
{
|
||||
IList<ChannelInfo> list = channelList.GetChannelByName(name).ToList();
|
||||
if (list.Count == 1)
|
||||
return list;
|
||||
|
||||
string[] uidParts;
|
||||
if (uid.StartsWith("C") && (uidParts = uid.Split('-')).Length <= 4)
|
||||
{
|
||||
// older CSV files didn't use the Transponder as part of the UID, which is necessary
|
||||
// to distinguish between identical channels (onid,tsid,sid) received on multiple transponders
|
||||
// (e.g. from differnt regional DVB-T transmitters)
|
||||
int onid = int.Parse(uidParts[1]);
|
||||
int tsid = int.Parse(uidParts[2]);
|
||||
int sid = int.Parse(uidParts[3]);
|
||||
return channelList.Channels.Where(c =>
|
||||
c.OriginalNetworkId == onid &&
|
||||
c.TransportStreamId == tsid &&
|
||||
c.ServiceId == sid
|
||||
).ToList();
|
||||
}
|
||||
|
||||
var byUidList = channelList.GetChannelByUid(uid);
|
||||
return byUidList;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Save()
|
||||
public void Save(string fileName, DataRoot dataRoot, UnsortedChannelMode unsortedChannelMode)
|
||||
{
|
||||
using (StreamWriter stream = new StreamWriter(fileName))
|
||||
{
|
||||
foreach (var channelList in dataRoot.ChannelLists)
|
||||
{
|
||||
int radioMask = channelList.SignalType == SignalType.Radio ? 0x4000 : 0;
|
||||
foreach (var channel in channelList.Channels.Where(ch => ch.NewProgramNr != 0).OrderBy(ch => ch.NewProgramNr))
|
||||
{
|
||||
string line = string.Format("{0},{1},{2},{3},\"{4}\"",
|
||||
channel.RecordIndex,
|
||||
channel.NewProgramNr | radioMask,
|
||||
channel.TransportStreamId,
|
||||
channel.Uid,
|
||||
channel.Name);
|
||||
stream.WriteLine(line);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
276
ChanSort.Api/Controller/Editor.cs
Normal file
276
ChanSort.Api/Controller/Editor.cs
Normal file
@@ -0,0 +1,276 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace ChanSort.Api
|
||||
{
|
||||
public class Editor
|
||||
{
|
||||
public DataRoot DataRoot;
|
||||
public ChannelList ChannelList;
|
||||
|
||||
#if false
|
||||
#region LoadDvbViewerFiles()
|
||||
private void LoadDvbViewerFiles()
|
||||
{
|
||||
List<string> fileList;
|
||||
Dictionary<string, string> 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<string, string> satPosition, out List<string> 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<string>();
|
||||
satPosition = new Dictionary<string, string>();
|
||||
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<string, string> 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<ChannelInfo> channels)
|
||||
{
|
||||
int count = channels.Count(channel => channel.NewProgramNr == 0);
|
||||
if (count == 0) return null;
|
||||
|
||||
ChannelInfo lastInsertedChannel = null;
|
||||
int progNr = this.ChannelList.InsertProgramNumber;
|
||||
int relativeChannelNumber = 0;
|
||||
foreach(var channel in this.ChannelList.Channels)
|
||||
{
|
||||
if (channel.NewProgramNr != 0 && channel.NewProgramNr >= progNr)
|
||||
{
|
||||
int gap = count - (channel.NewProgramNr - progNr - relativeChannelNumber);
|
||||
if (gap <= 0)
|
||||
break;
|
||||
channel.NewProgramNr += gap;
|
||||
++relativeChannelNumber;
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var channel in channels)
|
||||
{
|
||||
if (channel.NewProgramNr != 0)
|
||||
{
|
||||
// TODO notify user
|
||||
continue;
|
||||
}
|
||||
|
||||
channel.NewProgramNr = progNr++;
|
||||
lastInsertedChannel = channel;
|
||||
}
|
||||
this.ChannelList.InsertProgramNumber += count;
|
||||
|
||||
this.DataRoot.NeedsSaving |= lastInsertedChannel != null;
|
||||
return lastInsertedChannel;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region RemoveChannels()
|
||||
|
||||
public void RemoveChannels(IList<ChannelInfo> channels)
|
||||
{
|
||||
if (channels.Count == 0) return;
|
||||
|
||||
this.ChannelList.InsertProgramNumber = channels[0].NewProgramNr;
|
||||
foreach (var channel in channels)
|
||||
{
|
||||
if (channel.NewProgramNr == 0)
|
||||
continue;
|
||||
int prevNr = channel.NewProgramNr;
|
||||
foreach (var channel2 in this.ChannelList.Channels)
|
||||
{
|
||||
if (channel2.NewProgramNr > channel.NewProgramNr)
|
||||
{
|
||||
if (prevNr != -1 && channel2.NewProgramNr != prevNr + 1) // don't pull down numbers after a gap
|
||||
break;
|
||||
prevNr = channel2.NewProgramNr;
|
||||
--channel2.NewProgramNr;
|
||||
}
|
||||
}
|
||||
channel.NewProgramNr = 0;
|
||||
}
|
||||
|
||||
this.DataRoot.NeedsSaving = true;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region MoveChannels()
|
||||
|
||||
public void MoveChannels(List<ChannelInfo> channels, bool up)
|
||||
{
|
||||
if (channels.Count == 0)
|
||||
return;
|
||||
if (up && channels[0].NewProgramNr < 2)
|
||||
return;
|
||||
|
||||
int delta = (up ? - 1 : +1);
|
||||
foreach (var channel in channels)
|
||||
{
|
||||
int newProgramNr = channel.NewProgramNr + delta;
|
||||
ChannelInfo channelAtNewProgramNr = this.ChannelList.Channels.FirstOrDefault(ch => ch.NewProgramNr == newProgramNr);
|
||||
if (channelAtNewProgramNr != null)
|
||||
channelAtNewProgramNr.NewProgramNr -= delta;
|
||||
channel.NewProgramNr += delta;
|
||||
}
|
||||
this.DataRoot.NeedsSaving = true;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region SortSelectedChannels(), ChannelComparerForSortingByName()
|
||||
public void SortSelectedChannels(List<ChannelInfo> selectedChannels)
|
||||
{
|
||||
if (selectedChannels.Count == 0) return;
|
||||
var sortedChannels = new List<ChannelInfo>(selectedChannels);
|
||||
sortedChannels.Sort(this.ChannelComparerForSortingByName);
|
||||
var programNumbers = selectedChannels.Select(ch => ch.NewProgramNr).ToList();
|
||||
for (int i = 0; i < sortedChannels.Count; i++)
|
||||
sortedChannels[i].NewProgramNr = programNumbers[i];
|
||||
|
||||
this.DataRoot.NeedsSaving = true;
|
||||
}
|
||||
|
||||
private int ChannelComparerForSortingByName(ChannelInfo channel1, ChannelInfo channel2)
|
||||
{
|
||||
return channel1.Name.CompareTo(channel2.Name);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region SetSlotNumber()
|
||||
public void SetSlotNumber(IList<ChannelInfo> channels, int slot, bool swap)
|
||||
{
|
||||
if (channels.Count == 0) return;
|
||||
if (swap)
|
||||
{
|
||||
foreach (var channel in channels)
|
||||
{
|
||||
if (slot != 0)
|
||||
{
|
||||
var others = this.ChannelList.GetChannelByNewProgNr(slot);
|
||||
foreach (var other in others)
|
||||
other.NewProgramNr = channel.NewProgramNr;
|
||||
}
|
||||
channel.NewProgramNr = slot++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.RemoveChannels(channels);
|
||||
this.ChannelList.InsertProgramNumber = slot;
|
||||
this.AddChannels(channels);
|
||||
}
|
||||
this.DataRoot.NeedsSaving = true;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region RenumberChannels()
|
||||
public void RenumberChannels(List<ChannelInfo> channels)
|
||||
{
|
||||
if (channels.Count == 0) return;
|
||||
int progNr = channels.Min(ch => ch.NewProgramNr);
|
||||
foreach(var channel in channels)
|
||||
{
|
||||
if (channel.NewProgramNr == progNr)
|
||||
{
|
||||
++progNr;
|
||||
continue;
|
||||
}
|
||||
|
||||
var list = new List<ChannelInfo>();
|
||||
list.Add(channel);
|
||||
this.RemoveChannels(list);
|
||||
this.ChannelList.InsertProgramNumber = progNr++;
|
||||
this.AddChannels(list);
|
||||
this.DataRoot.NeedsSaving = true;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
21
ChanSort.Api/Controller/ISerializerPlugin.cs
Normal file
21
ChanSort.Api/Controller/ISerializerPlugin.cs
Normal file
@@ -0,0 +1,21 @@
|
||||
namespace ChanSort.Api
|
||||
{
|
||||
public interface ISerializerPlugin
|
||||
{
|
||||
/// <summary>
|
||||
/// Name of the plugin, as displayed in the OpenFileDialog file-type selection combo box
|
||||
/// </summary>
|
||||
string PluginName { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Semicolon separated list of supported file types (e.g. "xxLM*.TTL;xxLV*.TTL")
|
||||
/// </summary>
|
||||
string FileFilter { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Create an object that can read/write the file
|
||||
/// </summary>
|
||||
/// <exception cref="System.IO.IOException">file is not of any supported type</exception>
|
||||
SerializerBase CreateSerializer(string inputFile);
|
||||
}
|
||||
}
|
||||
38
ChanSort.Api/Controller/SerializerBase.cs
Normal file
38
ChanSort.Api/Controller/SerializerBase.cs
Normal file
@@ -0,0 +1,38 @@
|
||||
using System.Text;
|
||||
|
||||
namespace ChanSort.Api
|
||||
{
|
||||
public abstract class SerializerBase
|
||||
{
|
||||
private Encoding defaultEncoding;
|
||||
|
||||
public string FileName { get; set; }
|
||||
public DataRoot DataRoot { get; protected set; }
|
||||
|
||||
protected SerializerBase(string inputFile)
|
||||
{
|
||||
this.FileName = inputFile;
|
||||
this.DataRoot = new DataRoot();
|
||||
this.defaultEncoding = Encoding.GetEncoding("iso-8859-9");
|
||||
}
|
||||
|
||||
public abstract string DisplayName { get; }
|
||||
public abstract void Load();
|
||||
public abstract void Save(string tvOutputFile, string csvOutputFile, UnsortedChannelMode unsortedChannelMode);
|
||||
|
||||
public virtual Encoding DefaultEncoding
|
||||
{
|
||||
get { return this.defaultEncoding; }
|
||||
set { this.defaultEncoding = value; }
|
||||
}
|
||||
|
||||
public bool SupportsEraseChannelData { get; protected set; }
|
||||
public virtual void EraseChannelData() { }
|
||||
|
||||
public virtual string GetFileInformation() { return ""; }
|
||||
|
||||
public virtual void ShowDeviceSettingsForm(object parentWindow) { }
|
||||
|
||||
public bool SupportsChannelNameEdit { get; protected set; }
|
||||
}
|
||||
}
|
||||
476
ChanSort.Api/Lookup.csv
Normal file
476
ChanSort.Api/Lookup.csv
Normal file
@@ -0,0 +1,476 @@
|
||||
ONID;Start;End;Name;Operator
|
||||
ONID;0x0000;0x0000;(Reserved);(Reserved)
|
||||
ONID;0x0001;0x0001;Société Européenne des Satellites;Société Européenne des Satellites
|
||||
ONID;0x0002;0x0002;Société Européenne des Satellites;Société Européenne des Satellites
|
||||
ONID;0x0003;0x0019;Société Européenne des Satellites;Société Européenne des Satellites
|
||||
ONID;0x001A;0x001A;Quiero Televisión ;Quiero Televisión
|
||||
ONID;0x001B;0x001B;RAI;RAI
|
||||
ONID;0x001C;0x001C;Hellas-Sat S.A.;Hellas-Sat S.A.
|
||||
ONID;0x001D;0x001D;TELECOM ITALIA MEDIA BROADCASTING SRL;TELECOM ITALIA MEDIA BROADCASTING SRL
|
||||
ONID;0x001F;0x001F;Europe Online Networks S.A ;Europe Online Networks S.A
|
||||
ONID;0x0020;0x0020;Société Européenne des Satellites;Société Européenne des Satellites
|
||||
ONID;0x0021;0x0021;Hispasat S.A .;Hispasat S.A .
|
||||
ONID;0x0022;0x0022;Hispasat S.A .;Hispasat S.A .
|
||||
ONID;0x0023;0x0023;Hispasat S.A .;Hispasat S.A .
|
||||
ONID;0x0024;0x0024;Hispasat S.A .;Hispasat S.A .
|
||||
ONID;0x0025;0x0025;Hispasat S.A .;Hispasat S.A .
|
||||
ONID;0x0026;0x0026;Hispasat S.A .;Hispasat S.A .
|
||||
ONID;0x0027;0x0027;Hispasat FSS;Hispasat FSS
|
||||
ONID;0x0028;0x0028;Hispasat DBS;Hispasat DBS
|
||||
ONID;0x0029;0x0029;Hispasat America;Hispasat America
|
||||
ONID;0x002A;0x002A;Päijät-Hämeen Puhelin Oyj;Päijät-Hämeen Puhelin Oyj
|
||||
ONID;0x002B;0x002B;Digita Oy;Digita Oy
|
||||
ONID;0x002E;0x002E;Xantic BU Broadband;Xantic BU Broadband
|
||||
ONID;0x002F;0x002F;TVNZ ;TVNZ
|
||||
ONID;0x0030;0x0030;Canal+ SA (for Intelsat 601-325°E);Canal+ SA (for Intelsat 601-325°E)
|
||||
ONID;0x0031;0x0031;Hispasat S.A.;Hispasat S.A.
|
||||
ONID;0x0032;0x0032;Hispasat S.A.;Hispasat S.A.
|
||||
ONID;0x0033;0x0033;Hispasat S.A.;Hispasat S.A.
|
||||
ONID;0x0034;0x0034;Hispasat S.A.;Hispasat S.A.
|
||||
ONID;0x0035;0x0035;NetHold IMS;NetHold IMS
|
||||
ONID;0x0036;0x0036;TV Cabo Portugal ;TV Cabo Portugal
|
||||
ONID;0x0037;0x0037;France Telecom, CNES and DGA;France Telecom, CNES and DGA
|
||||
ONID;0x0038;0x0038;Hellenic Telecommunications Organization S.A .;Hellenic Telecommunications Organization S.A .
|
||||
ONID;0x0039;0x0039;Broadcast Australia Pty.;Broadcast Australia Pty.
|
||||
ONID;0x003A;0x003A;GeoTelecom Satellite Services;GeoTelecom Satellite Services
|
||||
ONID;0x003B;0x003B;BBC;BBC
|
||||
ONID;0x003C;0x003C;KPN Broadcast Services;KPN Broadcast Services
|
||||
ONID;0x003D;0x003D;Skylogic Italia S.A.;Skylogic Italia S.A.
|
||||
ONID;0x003E;0x003E;Eutelsat S.A.;Eutelsat S.A.
|
||||
ONID;0x003F;0x003F;Eutelsat S.A.;Eutelsat S.A.
|
||||
ONID;0x0040;0x0040;Hrvatski Telekom d.d;Hrvatski Telekom d.d
|
||||
ONID;0x0041;0x0041;Mindport ;Mindport
|
||||
ONID;0x0042;0x0042;DTV haber ve Gorsel yayýncilik;DTV haber ve Gorsel yayýncilik
|
||||
ONID;0x0043;0x0043;arena Sport Rechte und Marketing GmbH;arena Sport Rechte und Marketing GmbH
|
||||
ONID;0x0044;0x0044;VisionTV LLC;VisionTV LLC
|
||||
ONID;0x0045;0x0045;SES-Sirius;SES-Sirius
|
||||
ONID;0x0046;0x0046;Telenor ;Telenor
|
||||
ONID;0x0047;0x0047;Telenor;Telenor
|
||||
ONID;0x0048;0x0048;STAR DIGITAL A.S .;STAR DIGITAL A.S .
|
||||
ONID;0x0049;0x0049;Sentech ;Sentech
|
||||
ONID;0x004A;0x004B;Rambouillet ES;Rambouillet ES
|
||||
ONID;0x004C;0x004C;Skylogic S.A.;Skylogic S.A.
|
||||
ONID;0x004D;0x004D;Skylogic S.A.;Skylogic S.A.
|
||||
ONID;0x004E;0x004F;Eutelsat S.A.;Eutelsat S.A.
|
||||
ONID;0x0050;0x0050;HRT – Croatian Radio and Television;HRT – Croatian Radio and Television
|
||||
ONID;0x0051;0x0051;Havas ;Havas
|
||||
ONID;0x0052;0x0052;StarGuide Digital Networks ;StarGuide Digital Networks
|
||||
ONID;0x0053;0x0053;PT Comunicações;PT Comunicações
|
||||
ONID;0x0054;0x0054;Teracom AB Satellite Services;Teracom AB Satellite Services
|
||||
ONID;0x0055;0x0055;NSAB (Teracom);NSAB (Teracom)
|
||||
ONID;0x0056;0x0056;Viasat Satellite Services AB;Viasat Satellite Services AB
|
||||
ONID;0x0058;0x0058;UBC Thailand ;UBC Thailand
|
||||
ONID;0x0059;0x0059;Bharat Business Channel Limited;Bharat Business Channel Limited
|
||||
ONID;0x005A;0x005A;ICO Satellite Services G.P.;ICO Satellite Services G.P.
|
||||
ONID;0x005B;0x005B;ZON;ZON
|
||||
ONID;0x005E;0x005E;NSAB ;NSAB
|
||||
ONID;0x005F;0x005F;NSAB ;NSAB
|
||||
ONID;0x0060;0x0060;Kabel Deutschland ;Kabel Deutschland
|
||||
ONID;0x0064;0x0064;T-Kábel;T-Kábel Magyarország Kft.
|
||||
ONID;0x0065;0x0065;France Telecom Orange;France Telecom Orange
|
||||
ONID;0x0066;0x0066;Zweites Deutsches Fernsehen - ZDF (cable contribution);Zweites Deutsches Fernsehen - ZDF
|
||||
ONID;0x0069;0x0069;Optus B3 156°E;Optus Communications
|
||||
ONID;0x0070;0x0070;BONUM1 36 Degrees East;NTV+
|
||||
ONID;0x0073;0x0073;PanAmSat 4 68.5°E;Pan American Satellite System
|
||||
ONID;0x007D;0x007D;Skylogic;Skylogic Italia
|
||||
ONID;0x007E;0x007F;Eutelsat Satellite System at 7°E;EUTELSAT – European Telecommunications Satellite Organization
|
||||
ONID;0x0085;0x0085;BetaTechnik;BetaTechnik
|
||||
ONID;0x0090;0x0090;National network;TDF
|
||||
ONID;0x009A;0x009B;Eutelsat satellite system at 9°East;Rambouillet ES
|
||||
ONID;0x009C;0x009D;Eutelsat satellite system at 9°East;Skylogic S.A.
|
||||
ONID;0x009E;0x009F;Eutelsat satellite system at 9°East;Eutelsat S.A.
|
||||
ONID;0x00A0;0x00A0;National Cable Network;News Datacom
|
||||
ONID;0x00A1;0x00A1;DigiSTAR;STAR Television Productions Ltd (HK) (NDS)
|
||||
ONID;0x00A2;0x00A2;Sky Entertainment Services;NetSat Serviços Ltda (Brazil), Innova S. de R. L. (Mexico) and Multicountry Partnership L. P. (NDS)
|
||||
ONID;0x00A3;0x00A3;NDS Director systems;Various (product only sold by Tandberg TV) (NDS)
|
||||
ONID;0x00A4;0x00A4;ISkyB;STAR Television Productions Ltd (HK) (NDS)
|
||||
ONID;0x00A5;0x00A5;Indovision;PT. Matahari Lintas Cakrawala (MLC) (NDS)
|
||||
ONID;0x00A6;0x00A6;ART;ART (NDS)
|
||||
ONID;0x00A7;0x00A7;Globecast;France Telecom (NDS)
|
||||
ONID;0x00A8;0x00A8;Foxtel;Foxtel (Australia) (NDS)
|
||||
ONID;0x00A9;0x00A9;Sky New Zealand;Sky Network Television Ltd (NDS)
|
||||
ONID;0x00AA;0x00AA;OTE;OTE (Greece) (NDS)
|
||||
ONID;0x00AB;0x00AB;Yes Satellite Services;DBS (Israel) (NDS)
|
||||
ONID;0x00AC;0x00AC;(NDS satellite services);(NDS to be allocated)
|
||||
ONID;0x00AD;0x00AD;SkyLife;Korea Digital Broadcasting
|
||||
ONID;0x00AE;0x00AF;(NDS satellite services);(NDS to be allocated)
|
||||
ONID;0x00B0;0x00B3;TPS;La Télévision Par Satellite
|
||||
ONID;0x00B4;0x00B4;Telesat 107.3°W;Telesat Canada
|
||||
ONID;0x00B5;0x00B5;Telesat 111.1°W;Telesat Canada
|
||||
ONID;0x00B6;0x00B6;Telstra Saturn;TelstraSaturn Limited
|
||||
ONID;0x00BA;0x00BA;Satellite Express – 6 (80°E);Satellite Express
|
||||
ONID;0x00C0;0x00CD;Canal +;Canal+
|
||||
ONID;0x00D0;0x00D0;CCTV;China Central Television (NDS)
|
||||
ONID;0x00D1;0x00D1;Galaxy;Galaxy Satellite Broadcasting, Hong Kong (NDS)
|
||||
ONID;0x00D2;0x00DF;(NDS satellite services);(NDS to be allocated)
|
||||
ONID;0x00EB;0x00EB;Eurovision Network;European Broadcasting Union
|
||||
ONID;0x0100;0x0100;ExpressVu;ExpressVu Inc.
|
||||
ONID;0x0101;0x0101;Bulsatcom AD;Bulsatcom AD
|
||||
ONID;0x0104;0x0104;MagtiSat;Magticom Ltd.
|
||||
ONID;0x010D;0x010D;Skylogic;Skylogic Italia
|
||||
ONID;0x010E;0x010F;Eutelsat Satellite System at 10°E;European Telecommunications Satellite Organization
|
||||
ONID;0x0110;0x0110;Mediaset;Mediaset
|
||||
ONID;0x011F;0x011F;visAvision Network;European Telecommunications Satellite Organization
|
||||
ONID;0x013D;0x013D;Skylogic;Skylogic Italia
|
||||
ONID;0x013E;0x013F;Eutelsat Satellite System 13°E;European Telecommunications Satellite Organization
|
||||
ONID;0x016D;0x016D;Skylogic;Skylogic Italia
|
||||
ONID;0x016E;0x016F;Eutelsat Satellite System at 16°E;European Telecommunications Satellite Organization
|
||||
ONID;0x0170;0x0170;Audio Visual Global Joint Stock Company;Audio Visual Global Joint Stock Company
|
||||
ONID;0x01F4;0x01F4;MediaKabel B.V;
|
||||
ONID;0x022D;0x022D;Skylogic;Skylogic Italia
|
||||
ONID;0x022E;0x022F;Eutelsat Satellite System at 21.5°E;EUTELSAT – European Telecommunications Satellite Organization
|
||||
ONID;0x026D;0x026D;Skylogic;Skylogic Italia
|
||||
ONID;0x026E;0x026F;Eutelsat Satellite System at 25.5°E;EUTELSAT – European Telecommunications Satellite Organization
|
||||
ONID;0x029D;0x029D;Skylogic;Skylogic Italia
|
||||
ONID;0x029E;0x029F;Eutelsat Satellite System at 29°E;European Telecommunications Satellite Organization
|
||||
ONID;0x02BE;0x02BE;ARABSAT;ARABSAT - Arab Satellite Communications Organization
|
||||
ONID;0x02C0;0x02C0;MTV Networks Europe;MTV Networks Europe
|
||||
ONID;0x033D;0x033D;Skylogic at 33°E;Skylogic Italia
|
||||
ONID;0x033E;0x033F;Eutelsat Satellite System at 33°E;Eutelsat
|
||||
ONID;0x034E;0x034E;IRIB;IRIB
|
||||
ONID;0x036D;0x036D;Skylogic;Skylogic Italia
|
||||
ONID;0x036E;0x036F;Eutelsat Satellite System at 36°E;European Telecommunications Satellite Organization
|
||||
ONID;0x03E8;0x03E8;Telia;Telia, Sweden
|
||||
ONID;0x045D;0x045F;Eutelsat satellite system at 15°West;Eutelsat S.A.
|
||||
ONID;0x047D;0x047D;Skylogic;Skylogic Italia
|
||||
ONID;0x047E;0x047F;Eutelsat Satellite System at 12.5°W;EUTELSAT – European Telecommunications Satellite Organization
|
||||
ONID;0x048D;0x048D;Skylogic;Skylogic Italia
|
||||
ONID;0x048E;0x048F;Eutelsat Satellite System at 48°E;European Telecommunications Satellite Organization
|
||||
ONID;0x049D;0x049F;Eutelsat satellite system at 11°West;Eutelsat S.A.
|
||||
ONID;0x0500;0x0500;Vinasat Center;Vinasat Center
|
||||
ONID;0x0510;0x0510;Almajd;Almajd Satellite Broadcasting FZ LLC
|
||||
ONID;0x052D;0x052D;Skylogic;Skylogic Italia
|
||||
ONID;0x052E;0x052F;Eutelsat Satellite System at 8°W;EUTELSAT – European Telecommunications Satellite Organization
|
||||
ONID;0x053D;0x053F;Eutelsat satellite system at 53°East;Eutelsat S.A.
|
||||
ONID;0x055D;0x055D;Skylogic at 5°W;Skylogic Italia
|
||||
ONID;0x055E;0x055F;Eutelsat Satellite System at 5°W;Eutelsat
|
||||
ONID;0x0600;0x0600;UPC Satellite;UPC
|
||||
ONID;0x0601;0x0601;UPC Cable;UPC
|
||||
ONID;0x0602;0x0602;Tevel;Tevel Cable (Israel )
|
||||
ONID;0x071D;0x071D;Skylogic at 70.5°E;Skylogic Italia
|
||||
ONID;0x071E;0x071F;Eutelsat Satellite System at 70.5°E;Eutelsat S.A.
|
||||
ONID;0x077D;0x077D;Skylogic Satellite System at 7°W;Skylogic Italia
|
||||
ONID;0x077E;0x077F;Eutelsat Satellite System at 7°W;Eutelsat S.A.
|
||||
ONID;0x0800;0x0801;Nilesat 101;Nilesat
|
||||
ONID;0x0880;0x0880;MEASAT 1, 91.5°E;MEASAT Broadcast Network Systems SDN. BHD. (Kuala Lumpur, Malaysia)
|
||||
ONID;0x0882;0x0882;MEASAT 2, 91.5°E;MEASAT Broadcast Network Systems SDN. BHD. (Kuala Lumpur, Malaysia)
|
||||
ONID;0x0883;0x0883;MEASAT 2, 148.0°E;Hsin Chi Broadcast Company Ltd .
|
||||
ONID;0x088F;0x088F;MEASAT 3;MEASAT Broadcast Network Systems SDN. BHD. (Kuala Lumpur, Malaysia)
|
||||
ONID;0x08A0;0x08A0;Mainland Television Limited;Mainland Television Limited
|
||||
ONID;0x0E26;0x0E26;IRIB;IRIB
|
||||
ONID;0x0FFF;0x0FFF;Optus Networks;Optus Networks
|
||||
ONID;0x1000;0x1000;Optus B3 156°E;Optus Communications
|
||||
ONID;0x1001;0x1001;DISH Network;Echostar Communications
|
||||
ONID;0x1002;0x1002;Dish Network 61.5 W;Echostar Communications
|
||||
ONID;0x1003;0x1003;Dish Network 83 W;Echostar Communications
|
||||
ONID;0x1004;0x1004;Dish Network 119 W;Echostar Communications
|
||||
ONID;0x1005;0x1005;Dish Network 121 W;Echostar Communications
|
||||
ONID;0x1006;0x1006;Dish Network 148 W;Echostar Communications
|
||||
ONID;0x1007;0x1007;Dish Network 175 W;Echostar Communications
|
||||
ONID;0x1008;0x100B;Dish Network W - Z;Echostar Communications
|
||||
ONID;0x1010;0x1010;ABC TV;Australian Broadcasting Corporation
|
||||
ONID;0x1011;0x1011;SBS;SBS Australia
|
||||
ONID;0x1012;0x1012;Nine Network Australia;Nine Network Australia
|
||||
ONID;0x1013;0x1013;Seven Network Australia;Seven Network Limited
|
||||
ONID;0x1014;0x1014;Network TEN Australia;Network TEN Limited
|
||||
ONID;0x1015;0x1015;WIN Television Australia;WIN Television Pty Ltd
|
||||
ONID;0x1016;0x1016;Prime Television Australia;Prime Television Limited
|
||||
ONID;0x1017;0x1017;Southern Cross Broadcasting Australia;Southern Cross Broadcasting (Australia) Limited
|
||||
ONID;0x1018;0x1018;Telecasters Australia;Telecasters Australia Limited
|
||||
ONID;0x1019;0x1019;NBN Australia;NBN Limited
|
||||
ONID;0x101A;0x101A;Imparja Television Australia;Imparja Television Australia
|
||||
ONID;0x101B;0x101F;(Reserved for Australian broadcaster);(Reserved for Australian broadcasters)
|
||||
ONID;0x1100;0x1100;GE Americom;GE American Communications
|
||||
ONID;0x1101;0x1101;MiTV Networks Broadcast Terrestrial Network - DVB-H;MiTV Networks Sdn Bhd Malaysia
|
||||
ONID;0x1102;0x1102;Dream Mobile TV;Philippines Multimedia System, Inc.
|
||||
ONID;0x1103;0x1103;PT MAC;PT. Mediatama Anugrah Citra
|
||||
ONID;0x1104;0x1104;Levira Mobile TV;Levira AS
|
||||
ONID;0x1105;0x1105;Mobision;Alsumaria TV
|
||||
ONID;0x1106;0x1106;Trenmobile;PT. Citra Karya Investasi
|
||||
ONID;0x1107;0x1107;VTC Mobile TV;VTC Mobile TV
|
||||
ONID;0x1700;0x1700;Echostar 2A;EchoStar Communications
|
||||
ONID;0x1701;0x1701;Echostar 2B;EchoStar Communications
|
||||
ONID;0x1702;0x1702;Echostar 2C;EchoStar Communications
|
||||
ONID;0x1703;0x1703;Echostar 2D;EchoStar Communications
|
||||
ONID;0x1704;0x1704;Echostar 2E;EchoStar Communications
|
||||
ONID;0x1705;0x1705;Echostar 2F;EchoStar Communications
|
||||
ONID;0x1706;0x1706;Echostar 2G;EchoStar Communications
|
||||
ONID;0x1707;0x1707;Echostar 2H;EchoStar Communications
|
||||
ONID;0x1708;0x1708;Echostar 2I;EchoStar Communications
|
||||
ONID;0x1709;0x1709;Echostar 2J;EchoStar Communications
|
||||
ONID;0x170A;0x170A;Echostar 2K;EchoStar Communications
|
||||
ONID;0x170B;0x170B;Echostar 2L;EchoStar Communications
|
||||
ONID;0x170C;0x170C;Echostar 2M;EchoStar Communications
|
||||
ONID;0x170D;0x170D;Echostar 2N;EchoStar Communications
|
||||
ONID;0x170E;0x170E;Echostar 2O;EchoStar Communications
|
||||
ONID;0x170F;0x170F;Echostar 2P;EchoStar Communications
|
||||
ONID;0x1710;0x1710;Echostar 2Q;EchoStar Communications
|
||||
ONID;0x1711;0x1711;Echostar 2R;EchoStar Communications
|
||||
ONID;0x1712;0x1712;Echostar 2S;EchoStar Communications
|
||||
ONID;0x1713;0x1713;Echostar 2T;EchoStar Communications
|
||||
ONID;0x1714;0x1714;Platforma HD;Platforma HD Ltd.
|
||||
ONID;0x1715;0x1715;Profit Group Terrestrial;Profit Group SpA
|
||||
ONID;0x1716;0x1716;JSC Mostelekom;JSC Mostelekom
|
||||
ONID;0x2000;0x2000;Thiacom 1 & 2 co-located 78.5°E;Shinawatra Satellite
|
||||
ONID;0x2014;0x2014;DTT - Andorran Digital Terrestrial Television;STA
|
||||
ONID;0x2024;0x2024;Australian Digital Terrestrial Television;Australian Broadcasting Authority
|
||||
ONID;0x2028;0x2028;Austrian Digital Terrestrial Television;ORS - Austrian Broadcasting Services
|
||||
ONID;0x2038;0x2038;Belgian Digital Terrestrial Television;BIPT
|
||||
ONID;0x209E;0x209E;Taiwanese Digital Terrestrial Television;Directorate General of Telecommunications
|
||||
ONID;0x20AA;0x20AA;Comision Nacional de Television de Colombia;Comision Nacional de Television de Colombia
|
||||
ONID;0x20BF;0x20BF;Croatian Post and Electronic Communications Agency (HAKOM);Croatian Post and Electronic Communications Agency (HAKOM)
|
||||
ONID;0x20C4;0x20C4;Office Of the Commissioner of Electronic Communications and Postal Regulation;Office Of the Commissioner of Electronic Communications and Postal Regulation
|
||||
ONID;0x20CB;0x20CB;Czech Republic Digital Terrestrial Television;Czech Digital Group
|
||||
ONID;0x20D0;0x20D0;Danish Digital Terrestrial Television;National Telecom Agency Denmark
|
||||
ONID;0x20E9;0x20E9;Estonian Digital Terrestrial Television;Estonian National Communications Board
|
||||
ONID;0x20F6;0x20F6;Finnish Digital Terrestrial Television;Telecommunicatoins Administratoin Centre, Finland
|
||||
ONID;0x20FA;0x20FA;French Digital Terrestrial Television;Conseil Superieur de l'AudioVisuel
|
||||
ONID;0x2114;0x2114;German Digital Terrestrial Television;IRT on behalf of the German DVB-T broadcasts
|
||||
ONID;0x2124;0x2124;Gibraltar Regulatory Authority;Gibraltar Regulatory Authority
|
||||
ONID;0x2168;0x2168;Digital Terrestrial Network of Indonesia;Ministry of Communication and Information Technology of the Republic of Indonesia
|
||||
ONID;0x2174;0x2174;Irish Digital Terrestrial Television;Irish Telecommunications Regulator
|
||||
ONID;0x2178;0x2178;Israeli Digital Terrestrial Television;BEZEQ (The Israel Telecommunication Corp Ltd .)
|
||||
ONID;0x217C;0x217C;Italian Digital Terrestrial Television;
|
||||
ONID;0x21AC;0x21AC;DTT - Latvian Digital Terrestrial Television;Electronic Communications Office
|
||||
ONID;0x21B8;0x21B8;DTT Lithuania;Communications Regulatory Authority
|
||||
ONID;0x21CA;0x21CA;Malaysian Technical Standards Forum Bhd (MTFSB);Malaysian Technical Standards Forum Bhd (MTFSB)
|
||||
ONID;0x2210;0x2210;Netherlands Digital Terrestrial Television;Nozema
|
||||
ONID;0x2213;0x2213;DTT for Country of Curacao;Bureau Telecommunicatie en Post
|
||||
ONID;0x222A;0x222A;DTT - New Zealand Digial Terrestrial Television;TVNZ on behalf of Freeview New Zealand
|
||||
ONID;0x2242;0x2242;Norwegian Digital Terrestrial Television;Norwegian Regulator
|
||||
ONID;0x224F;0x224F;Autoridad Nacional de los Servicios Públicos;Autoridad Nacional de los Servicios Públicos
|
||||
ONID;0x2260;0x2260;DTT - Philippines Digital Terrestrial Television;NTA (porivionally ABS-CBN)
|
||||
ONID;0x2268;0x2268;DTT Poland;Office of Electronic Communications
|
||||
ONID;0x2283;0x2283;DTT - Russian Federation;RTRN
|
||||
ONID;0x22B0;0x22B0;DTT - Serbia JP Emisiona Tehnika i Veze;JP Emisiona Tehnika i Veze
|
||||
ONID;0x22BE;0x22BE;Singapore Digital Terrestrial Television;Singapore Broadcasting Authority
|
||||
ONID;0x22BF;0x22BF;Telecommunications office of the Slovak republic;Telecommunications office of the Slovak republic
|
||||
ONID;0x22C1;0x22C1;DTT - Slovenian Digital Terrestrial Television;APEK
|
||||
ONID;0x22C6;0x22C6;DTT - South African Digital Terrestrial Television;South African Broadcasting Corporation Ltd. (SABC), pending formation of DZONGA
|
||||
ONID;0x22C7;0x22C7;DTT- Hungarian Digital Terrestrial Television;National Communications Authority, Hungary
|
||||
ONID;0x22C8;0x22C8;DTT- Portugal Digital Terrestrial Television;ANACOM- National Communications Authority
|
||||
ONID;0x22D4;0x22D4;Spanish Digital Terrestrial Television;“Spanish Broadcasting Regulator
|
||||
ONID;0x22F1;0x22F1;Swedish Digital Terrestrial Television;“Swedish Broadcasting Regulator ”
|
||||
ONID;0x22F4;0x22F4;Swiss Digital Terrestrial Television;OFCOM
|
||||
ONID;0x233A;0x233A;UK Digital Terrestrial Television;Independent Television Commission
|
||||
ONID;0x2B00;0x2B00;DTT – Sky New Zealand;Sky Network Television Limited
|
||||
ONID;0x3000;0x3000;PanAmSat 4 68.5°E;Pan American Satellite System
|
||||
ONID;0x5000;0x5000;Irdeto Mux System;Irdeto Test Laboratories
|
||||
ONID;0x616D;0x616D;BellSouth Entertainment;BellSouth Entertainment, Atlanta, GA, USA
|
||||
ONID;0x6600;0x6600;UPC Satellite;UPC
|
||||
ONID;0x6601;0x6601;UPC Cable;UPC
|
||||
ONID;0x6602;0x6602;Comcast Media Center;Comcast Media Center
|
||||
ONID;0xA011;0xA011;Sichuan Cable TV Network;Sichuan Cable TV Network (PRC)
|
||||
ONID;0xA012;0xA012;China Network Systems;STAR Koos Finance Company (Taiwan)
|
||||
ONID;0xA013;0xA013;Versatel;Versatel (Russia)
|
||||
ONID;0xA014;0xA014;Chongqing Cable;Chongqing Municipality, PRC
|
||||
ONID;0XA015;0XA015;Guizhou Cable;Guizhou Province, PRC
|
||||
ONID;0xA016;0xA016;Hathway Cable;Hathway Cable and Datacom, India
|
||||
ONID;0xA017;0xA017;RCN;Rogers Cable Network, USA
|
||||
ONID;0xA018;0xA040;(NDS satellite services);(NDS to be allocated)
|
||||
ONID;0xA401;0xA401;ARD;ARD-Sternpunkte
|
||||
ONID;0xA509;0xA509;Welho Cable Network Helsinki;Welho
|
||||
ONID;0xA600;0xA600;Madritel;Madritel (Spain)
|
||||
ONID;0xA602;0xA602;Tevel;Tevel (Israel) (NDS)
|
||||
ONID;0xA603;0xA603;Globo Cabo (to be recycled);Globo Cabo (Brazil) (NDS)
|
||||
ONID;0xA604;0xA604;Cablemas (to be recycled);Cablemas (Mexico) (NDS)
|
||||
ONID;0xA605;0xA605;INC National Cable Network;Information Network Centre of SARFT (PRC) (NDS)
|
||||
ONID;0xA606;0xA607;Pepcom GmbH;Pepcom GmbH
|
||||
ONID;0xA900;0xA900;M-net Telekommunikations GmbH;M-net Telekommunikations GmbH
|
||||
ONID;0xF000;0xF000;SMALL CABLE NETWORKS;(Small cable network network operators)
|
||||
ONID;0xF001;0xF001;Deutsche Telekom;Deutsche Telekom AG
|
||||
ONID;0xF010;0xF010;Telefónica Cable;Telefónica Cable SA
|
||||
ONID;0xF020;0xF020;Cable and Wireless Communication;Cable and Wireless Communications
|
||||
ONID;0xF100;0xF100;Casema;Casema N.V .
|
||||
ONID;0xF750;0xF750;Telewest Communications Cable Network;Telewest Communications Plc
|
||||
ONID;0xF751;0xF751;OMNE Communications;OMNE Communications Ltd.
|
||||
ONID;0xFBFC;0xFBFC;MATAV;MATAV (Israel ) (NDS)
|
||||
ONID;0xFBFD;0xFBFD;Com Hem ab;Com Hem ab
|
||||
ONID;0xFBFE;0xFBFE;TPS;La Télévision Par Satellite
|
||||
ONID;0xFBFF;0xFBFF;Sky Italia;Sky Italia Spa.
|
||||
ONID;0xFC10;0xFC10;Rhône Vision Cable;Rhône Vision Cable
|
||||
ONID;0xFC41;0xFC41;France Telecom Cable;France Telecom
|
||||
ONID;0xFD00;0xFD00;National Cable Network;Lyonnaise Communications
|
||||
ONID;0xFE00;0xFE00;TeleDenmark Cable TV;TeleDenmark
|
||||
ONID;0xFEC0;0xFEFF;Network Interface Modules;Common Interface
|
||||
ONID;0xFF00;0xFFFA;Private_temporary_use;ETSI
|
||||
|
||||
TRANSP;Number;MHz
|
||||
TRANSP;49;10714
|
||||
TRANSP;50;10729
|
||||
TRANSP;51;10744
|
||||
TRANSP;52;10758
|
||||
TRANSP;53;10773
|
||||
TRANSP;54;10788
|
||||
TRANSP;55;10803
|
||||
TRANSP;56;10818
|
||||
TRANSP;57;10832
|
||||
TRANSP;58;10847
|
||||
TRANSP;59;10862
|
||||
TRANSP;60;10876
|
||||
TRANSP;61;10891
|
||||
TRANSP;62;10906
|
||||
TRANSP;63;10921
|
||||
TRANSP;64;10936
|
||||
TRANSP;33;10964
|
||||
TRANSP;34;10979
|
||||
TRANSP;35;10994
|
||||
TRANSP;36;11009
|
||||
TRANSP;37;11023
|
||||
TRANSP;38;11038
|
||||
TRANSP;39;11053
|
||||
TRANSP;40;11067
|
||||
TRANSP;41;11082
|
||||
TRANSP;42;11097
|
||||
TRANSP;43;11112
|
||||
TRANSP;44;11127
|
||||
TRANSP;45;11141
|
||||
TRANSP;46;11156
|
||||
TRANSP;47;11171
|
||||
TRANSP;48;11186
|
||||
TRANSP;1;11214
|
||||
TRANSP;2;11229
|
||||
TRANSP;3;11244
|
||||
TRANSP;4;11258
|
||||
TRANSP;5;11273
|
||||
TRANSP;6;11288
|
||||
TRANSP;7;11303
|
||||
TRANSP;8;11318
|
||||
TRANSP;9;11332
|
||||
TRANSP;10;11347
|
||||
TRANSP;11;11362
|
||||
TRANSP;12;11376
|
||||
TRANSP;13;11391
|
||||
TRANSP;14;11406
|
||||
TRANSP;15;11421
|
||||
TRANSP;16;11436
|
||||
TRANSP;17;11464
|
||||
TRANSP;18;11479
|
||||
TRANSP;19;11494
|
||||
TRANSP;20;11509
|
||||
TRANSP;21;11523
|
||||
TRANSP;22;11538
|
||||
TRANSP;23;11553
|
||||
TRANSP;24;11568
|
||||
TRANSP;25;11582
|
||||
TRANSP;26;11597
|
||||
TRANSP;27;11612
|
||||
TRANSP;28;11627
|
||||
TRANSP;29;11641
|
||||
TRANSP;30;11656
|
||||
TRANSP;31;11671
|
||||
TRANSP;32;11686
|
||||
TRANSP;65;11720
|
||||
TRANSP;66;11739
|
||||
TRANSP;67;11758
|
||||
TRANSP;68;11778
|
||||
TRANSP;69;11798
|
||||
TRANSP;70;11817
|
||||
TRANSP;71;11836
|
||||
TRANSP;72;11856
|
||||
TRANSP;73;11876
|
||||
TRANSP;74;11895
|
||||
TRANSP;75;11914
|
||||
TRANSP;76;11934
|
||||
TRANSP;77;11954
|
||||
TRANSP;78;11973
|
||||
TRANSP;79;11992
|
||||
TRANSP;80;12012
|
||||
TRANSP;81;12032
|
||||
TRANSP;82;12051
|
||||
TRANSP;83;12070
|
||||
TRANSP;84;12090
|
||||
TRANSP;85;12110
|
||||
TRANSP;86;12129
|
||||
TRANSP;87;12148
|
||||
TRANSP;88;12168
|
||||
TRANSP;89;12188
|
||||
TRANSP;90;12207
|
||||
TRANSP;91;12226
|
||||
TRANSP;92;12246
|
||||
TRANSP;93;12266
|
||||
TRANSP;94;12285
|
||||
TRANSP;95;12304
|
||||
TRANSP;96;12324
|
||||
TRANSP;97;12344
|
||||
TRANSP;98;12363
|
||||
TRANSP;99;12382
|
||||
TRANSP;100;12402
|
||||
TRANSP;101;12422
|
||||
TRANSP;102;12441
|
||||
TRANSP;103;12460
|
||||
TRANSP;104;12480
|
||||
TRANSP;105;12515
|
||||
TRANSP;106;12522
|
||||
TRANSP;107;12545
|
||||
TRANSP;108;12552
|
||||
TRANSP;109;12574
|
||||
TRANSP;110;12581
|
||||
TRANSP;111;12604
|
||||
TRANSP;112;12610
|
||||
TRANSP;113;12633
|
||||
TRANSP;114;12640
|
||||
TRANSP;115;12663
|
||||
TRANSP;116;12670
|
||||
TRANSP;117;12692
|
||||
TRANSP;118;12699
|
||||
TRANSP;119;12722
|
||||
TRANSP;120;12728
|
||||
|
||||
SERVICETYPE;Number;Description
|
||||
SERVICETYPE;01;SD-TV
|
||||
SERVICETYPE;02;Radio
|
||||
SERVICETYPE;12;Daten/Test
|
||||
SERVICETYPE;25;HD-TV
|
||||
SERVICETYPE;211;Sky Select
|
||||
|
||||
DVBT;Channel;MHz
|
||||
DVBT;21;474
|
||||
DVBT;22;482
|
||||
DVBT;23;490
|
||||
DVBT;24;498
|
||||
DVBT;25;506
|
||||
DVBT;26;514
|
||||
DVBT;27;522
|
||||
DVBT;28;530
|
||||
DVBT;29;538
|
||||
DVBT;30;546
|
||||
DVBT;31;554
|
||||
DVBT;32;562
|
||||
DVBT;33;570
|
||||
DVBT;34;578
|
||||
DVBT;35;586
|
||||
DVBT;36;594
|
||||
DVBT;37;602
|
||||
DVBT;38;610
|
||||
DVBT;39;618
|
||||
DVBT;40;626
|
||||
DVBT;41;634
|
||||
DVBT;42;642
|
||||
DVBT;43;650
|
||||
DVBT;44;658
|
||||
DVBT;45;666
|
||||
DVBT;46;674
|
||||
DVBT;47;682
|
||||
DVBT;48;690
|
||||
DVBT;49;698
|
||||
DVBT;50;706
|
||||
DVBT;51;714
|
||||
DVBT;52;722
|
||||
DVBT;53;730
|
||||
DVBT;54;738
|
||||
DVBT;55;746
|
||||
DVBT;56;754
|
||||
DVBT;57;762
|
||||
DVBT;58;770
|
||||
DVBT;59;778
|
||||
DVBT;60;786
|
||||
DVBT;61;794
|
||||
DVBT;62;802
|
||||
DVBT;63;810
|
||||
DVBT;64;818
|
||||
DVBT;65;826
|
||||
DVBT;66;834
|
||||
DVBT;67;842
|
||||
DVBT;68;850
|
||||
DVBT;69;858
|
||||
|
205
ChanSort.Api/Model/ChannelInfo.cs
Normal file
205
ChanSort.Api/Model/ChannelInfo.cs
Normal file
@@ -0,0 +1,205 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace ChanSort.Api
|
||||
{
|
||||
public class ChannelInfo
|
||||
{
|
||||
private string uid;
|
||||
/// <summary>
|
||||
/// List of channels that have the same UID as this channel and were not added to the channel list directly
|
||||
/// </summary>
|
||||
public readonly List<ChannelInfo> Duplicates = new List<ChannelInfo>();
|
||||
|
||||
public SignalSource SignalSource { get; private set; }
|
||||
public SignalType SignalType { get; private set; }
|
||||
public int RecordIndex { get; set; }
|
||||
public int RecordOrder { get; set; }
|
||||
public int OldProgramNr { get; set; }
|
||||
public int NewProgramNr { get; set; }
|
||||
public string Name { get; set; }
|
||||
public string ShortName { get; set; }
|
||||
public Favorites Favorites { get; set; }
|
||||
public bool Skip { get; set; }
|
||||
public bool Lock { get; set; }
|
||||
public bool Hidden { get; set; }
|
||||
public bool? Encrypted { get; set; }
|
||||
public string ChannelOrTransponder { get; set; }
|
||||
public string Satellite { get; set; }
|
||||
public decimal FreqInMhz { get; set; }
|
||||
public char Polarity { get; set; }
|
||||
public int ServiceId { get; set; }
|
||||
public int VideoPid { get; set; }
|
||||
public int AudioPid { get; set; }
|
||||
public int OriginalNetworkId { get; set; }
|
||||
public int TransportStreamId { get; set; }
|
||||
public int SymbolRate { get; set; }
|
||||
public int ServiceType { get; set; }
|
||||
public string Debug { get; private set; }
|
||||
public string SatPosition { get; set; }
|
||||
public Transponder Transponder { get; set; }
|
||||
|
||||
public bool IsNameModified { get; set; }
|
||||
|
||||
#region ctor()
|
||||
/// <summary>
|
||||
/// Constructor for exiting TV channel
|
||||
/// </summary>
|
||||
public ChannelInfo(SignalSource source, SignalType type, int index, int oldProgNr, string name)
|
||||
{
|
||||
this.SignalSource = source;
|
||||
this.SignalType = type;
|
||||
this.RecordIndex = index;
|
||||
this.RecordOrder = index;
|
||||
this.OldProgramNr = oldProgNr;
|
||||
this.Name = name;
|
||||
this.Encrypted = null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Constructor for reference list channels which no longer exist in TV list
|
||||
/// </summary>
|
||||
/// <param name="source"></param>
|
||||
/// <param name="type"></param>
|
||||
/// <param name="uid"></param>
|
||||
/// <param name="newProgNr"></param>
|
||||
/// <param name="name"></param>
|
||||
public ChannelInfo(SignalSource source, SignalType type, string uid, int newProgNr, string name)
|
||||
{
|
||||
this.SignalSource = source;
|
||||
this.SignalType = type;
|
||||
this.Uid = uid;
|
||||
this.NewProgramNr = newProgNr;
|
||||
this.Name = name;
|
||||
this.Encrypted = null;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Uid
|
||||
public string Uid
|
||||
{
|
||||
get
|
||||
{
|
||||
if (this.uid == null)
|
||||
{
|
||||
if ((this.SignalSource & SignalSource.Digital) == 0)
|
||||
this.uid = "A-0-" + (int)(this.FreqInMhz*20) + "-0";
|
||||
else if (this.SignalSource == SignalSource.DvbS)
|
||||
this.uid = "S" + this.SatPosition + "-" + this.OriginalNetworkId + "-" + this.TransportStreamId + "-" + this.ServiceId;
|
||||
else if (this.SignalSource == SignalSource.HdPlusD)
|
||||
this.uid = "H" + this.OriginalNetworkId + "-" + this.ServiceId;
|
||||
else
|
||||
this.uid = "C-" + this.OriginalNetworkId + "-" + this.TransportStreamId + "-" + this.ServiceId + "-" + this.ChannelOrTransponder;
|
||||
}
|
||||
return this.uid;
|
||||
}
|
||||
set { this.uid = value; }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ToString(), Equals(), GetHashCode()
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return this.Name;
|
||||
}
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
//ChannelInfo that = obj as ChannelInfo;
|
||||
//return that != null && this.Uid == that.Uid && this.OldProgramNr == that.OldProgramNr;
|
||||
return ReferenceEquals(this, obj);
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return this.Uid.GetHashCode() + this.OldProgramNr;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region NetworkName, NetworkOperator
|
||||
public string NetworkName
|
||||
{
|
||||
get
|
||||
{
|
||||
var network = LookupData.Instance.GetNetwork(this.OriginalNetworkId);
|
||||
return network == null ? null : network.Name;
|
||||
}
|
||||
}
|
||||
|
||||
public string NetworkOperator
|
||||
{
|
||||
get
|
||||
{
|
||||
var network = LookupData.Instance.GetNetwork(this.OriginalNetworkId);
|
||||
return network == null ? null : network.Operator;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ServiceTypeName
|
||||
public string ServiceTypeName { get { return LookupData.Instance.GetServiceTypeDescription(this.ServiceType); } }
|
||||
#endregion
|
||||
|
||||
#region GetFavString()
|
||||
public static string GetFavString(Favorites favorites)
|
||||
{
|
||||
string sep = "";
|
||||
string text = "";
|
||||
foreach (Favorites favMask in Enum.GetValues(typeof(Favorites)))
|
||||
{
|
||||
if ((favorites & favMask) != 0)
|
||||
{
|
||||
text += sep + favMask.ToString();
|
||||
sep = ",";
|
||||
}
|
||||
}
|
||||
return text;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ParseFavString()
|
||||
public static Favorites ParseFavString(string value)
|
||||
{
|
||||
Favorites favMask = 0;
|
||||
foreach (Favorites fav in Enum.GetValues(typeof (Favorites)))
|
||||
{
|
||||
foreach (char c in value)
|
||||
{
|
||||
if (c == fav.ToString()[0])
|
||||
{
|
||||
favMask |= fav;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return favMask;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region AddDebug()
|
||||
public void AddDebug(byte val)
|
||||
{
|
||||
if (this.Debug == null)
|
||||
this.Debug = val.ToString("x2");
|
||||
else
|
||||
this.Debug += " " + val.ToString("x2");
|
||||
}
|
||||
|
||||
public void AddDebug(ushort val)
|
||||
{
|
||||
if (this.Debug == null)
|
||||
this.Debug = val.ToString("x2");
|
||||
else
|
||||
this.Debug += " " + val.ToString("x4");
|
||||
}
|
||||
|
||||
public unsafe void AddDebug(byte* ptr, int len)
|
||||
{
|
||||
for (int i = 0; i < len; i++)
|
||||
this.AddDebug(ptr[i]);
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
176
ChanSort.Api/Model/ChannelList.cs
Normal file
176
ChanSort.Api/Model/ChannelList.cs
Normal file
@@ -0,0 +1,176 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Linq;
|
||||
|
||||
namespace ChanSort.Api
|
||||
{
|
||||
public class ChannelList
|
||||
{
|
||||
private readonly SignalSource source;
|
||||
private readonly SignalType type;
|
||||
private readonly IList<ChannelInfo> channels = new List<ChannelInfo>();
|
||||
private readonly Dictionary<string, IList<ChannelInfo>> channelByUid = new Dictionary<string, IList<ChannelInfo>>();
|
||||
private readonly Dictionary<int, ChannelInfo> channelByProgNr = new Dictionary<int, ChannelInfo>();
|
||||
private readonly Dictionary<string, IList<ChannelInfo>> channelByName = new Dictionary<string, IList<ChannelInfo>>();
|
||||
private int insertProgramNr = 1;
|
||||
private int duplicateUidCount;
|
||||
private int duplicateProgNrCount;
|
||||
|
||||
public ChannelList(SignalSource source, SignalType type)
|
||||
{
|
||||
this.source = source;
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public SignalSource SignalSource { get { return this.source; } }
|
||||
public SignalType SignalType { get { return this.type; } }
|
||||
public IList<ChannelInfo> Channels { get { return this.channels; } }
|
||||
public int Count { get { return channels.Count; } }
|
||||
public int DuplicateUidCount { get { return duplicateUidCount; } }
|
||||
public int DuplicateProgNrCount { get { return duplicateProgNrCount; } }
|
||||
|
||||
#region ShortCaption
|
||||
public string ShortCaption
|
||||
{
|
||||
get
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
switch (this.source)
|
||||
{
|
||||
case SignalSource.AnalogC: sb.Append("Analog Cable"); break;
|
||||
case SignalSource.AnalogT: sb.Append("Analog Antenna"); break;
|
||||
case SignalSource.AnalogCT: sb.Append("Analog Cable/Antenna"); break;
|
||||
case SignalSource.DvbC: sb.Append("DVB-C"); break;
|
||||
case SignalSource.DvbT: sb.Append("DVB-T"); break;
|
||||
case SignalSource.DvbCT: sb.Append("DVB-C/T"); break;
|
||||
case SignalSource.DvbS: sb.Append("DVB-S"); break;
|
||||
case SignalSource.HdPlusD: sb.Append("Astra HD Plus"); break;
|
||||
default: sb.Append(this.source.ToString()); break;
|
||||
}
|
||||
switch (this.type)
|
||||
{
|
||||
case SignalType.Tv: sb.Append(" - TV"); break;
|
||||
case SignalType.Radio: sb.Append(" - Radio"); break;
|
||||
case SignalType.Mixed: break;
|
||||
default: sb.Append(this.type.ToString()); break;
|
||||
}
|
||||
return sb.ToString();
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Caption
|
||||
public string Caption
|
||||
{
|
||||
get
|
||||
{
|
||||
string cap = this.ShortCaption;
|
||||
int validChannelCount = this.Channels.Count(ch => ch.OldProgramNr != 0);
|
||||
return cap + " (" + validChannelCount + ")";
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region InsertProgramNumber
|
||||
public int InsertProgramNumber
|
||||
{
|
||||
get { return this.Count == 0 ? 1 : this.insertProgramNr; }
|
||||
set { this.insertProgramNr = Math.Max(1, value); }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region AddChannel()
|
||||
public string AddChannel(ChannelInfo ci)
|
||||
{
|
||||
IList<ChannelInfo> others;
|
||||
if (this.channelByUid.TryGetValue(ci.Uid, out others))
|
||||
{
|
||||
++duplicateUidCount;
|
||||
ChannelInfo twin = others.FirstOrDefault(c => c.OldProgramNr == ci.OldProgramNr);
|
||||
if (twin != null)
|
||||
{
|
||||
string warning = null;
|
||||
if (ci.OldProgramNr != 0)
|
||||
{
|
||||
warning = string.Format(Resources.ChannelList_AddChannel__DuplicateUid,
|
||||
this.ShortCaption, ci.Name, twin.RecordIndex, twin.OldProgramNr, ci.RecordIndex,
|
||||
ci.OldProgramNr);
|
||||
}
|
||||
twin.Duplicates.Add(ci);
|
||||
ci.OldProgramNr = 0;
|
||||
return warning;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
others = new List<ChannelInfo>();
|
||||
this.channelByUid.Add(ci.Uid, others);
|
||||
others.Add(ci);
|
||||
}
|
||||
|
||||
string warning2 = null;
|
||||
bool isDupeProgNr = false;
|
||||
if (ci.OldProgramNr != 0)
|
||||
{
|
||||
ChannelInfo other;
|
||||
this.channelByProgNr.TryGetValue(ci.OldProgramNr, out other);
|
||||
if (other != null)
|
||||
{
|
||||
warning2 = string.Format(Resources.ChannelList_ProgramNrAssignedToMultipleChannels,
|
||||
this.ShortCaption, ci.OldProgramNr, other.RecordIndex, other.Name, ci.RecordIndex, ci.Name);
|
||||
++duplicateProgNrCount;
|
||||
isDupeProgNr = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!isDupeProgNr)
|
||||
this.channelByProgNr[ci.OldProgramNr] = ci;
|
||||
|
||||
var lowerName = ci.Name.ToLower().Trim();
|
||||
var byNameList = this.channelByName.TryGet(lowerName);
|
||||
if (byNameList == null)
|
||||
{
|
||||
byNameList = new List<ChannelInfo>();
|
||||
this.channelByName[lowerName] = byNameList;
|
||||
}
|
||||
byNameList.Add(ci);
|
||||
|
||||
this.channels.Add(ci);
|
||||
|
||||
return warning2;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region GetChannelByUid()
|
||||
public IList<ChannelInfo> GetChannelByUid(string uid)
|
||||
{
|
||||
IList<ChannelInfo> channel;
|
||||
this.channelByUid.TryGetValue(uid, out channel);
|
||||
return channel ?? new List<ChannelInfo>(0);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ToString()
|
||||
public override string ToString()
|
||||
{
|
||||
return this.Caption;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region GetChannelByName()
|
||||
public IEnumerable<ChannelInfo> GetChannelByName(string name)
|
||||
{
|
||||
var hits = this.channelByName.TryGet(name.ToLower().Trim());
|
||||
return hits ?? new List<ChannelInfo>();
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region GetChannelByNewProgNr()
|
||||
public IList<ChannelInfo> GetChannelByNewProgNr(int newProgNr)
|
||||
{
|
||||
return this.channels.Where(c => c.NewProgramNr == newProgNr).ToList();
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
82
ChanSort.Api/Model/DataRoot.cs
Normal file
82
ChanSort.Api/Model/DataRoot.cs
Normal file
@@ -0,0 +1,82 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace ChanSort.Api
|
||||
{
|
||||
public class DataRoot
|
||||
{
|
||||
private readonly IDictionary<int, Satellite> satellites = new Dictionary<int, Satellite>();
|
||||
private readonly IDictionary<int, Transponder> transponder = new Dictionary<int, Transponder>();
|
||||
private readonly IList<ChannelList> channelLists = new List<ChannelList>();
|
||||
private readonly StringBuilder warnings = new StringBuilder();
|
||||
|
||||
public StringBuilder Warnings { get { return this.warnings; } }
|
||||
public IDictionary<int, Satellite> Satellites { get { return this.satellites; } }
|
||||
public IDictionary<int, Transponder> Transponder { get { return this.transponder; } }
|
||||
public ICollection<ChannelList> ChannelLists { get { return this.channelLists; } }
|
||||
public bool IsEmpty { get { return this.channelLists.Count == 0; } }
|
||||
public bool NeedsSaving { get; set; }
|
||||
public Favorites SupportedFavorites { get; set; }
|
||||
|
||||
public DataRoot()
|
||||
{
|
||||
this.SupportedFavorites = Favorites.A | Favorites.B | Favorites.C | Favorites.D;
|
||||
}
|
||||
|
||||
#region AddSatellite()
|
||||
public virtual void AddSatellite(Satellite satellite)
|
||||
{
|
||||
this.satellites.Add(satellite.Id, satellite);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region AddTransponder()
|
||||
public virtual void AddTransponder(Satellite sat, Transponder trans)
|
||||
{
|
||||
trans.Satellite = sat;
|
||||
if (this.transponder.ContainsKey(trans.Id))
|
||||
{
|
||||
this.warnings.AppendFormat("Duplicate transponder data record for satellite #{0} with id {1}\r\n", sat.Id, trans.Id);
|
||||
return;
|
||||
}
|
||||
sat.Transponder.Add(trans.Id, trans);
|
||||
this.transponder.Add(trans.Id, trans);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region AddChannelList()
|
||||
public virtual void AddChannelList(ChannelList list)
|
||||
{
|
||||
this.channelLists.Add(list);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region AddChannel()
|
||||
public virtual void AddChannel(ChannelList list, ChannelInfo channel)
|
||||
{
|
||||
string warning = list.AddChannel(channel);
|
||||
if (warning != null)
|
||||
this.Warnings.AppendLine(warning);
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
#region GetChannelList()
|
||||
public ChannelList GetChannelList(SignalSource signalSource, SignalType signalType, bool createIfNotExists)
|
||||
{
|
||||
foreach (var list in this.channelLists)
|
||||
{
|
||||
if ((list.SignalSource&SignalSource.Digital) != (signalSource&SignalSource.Digital)) // match digital/analog
|
||||
continue;
|
||||
if (((int)list.SignalSource & 0x0F & (int)signalSource) == 0) // match any of cable/terrestrial/satellite
|
||||
continue;
|
||||
if (list.SignalType == signalType || list.SignalType == SignalType.Mixed) // match radio/tv/any
|
||||
return list;
|
||||
}
|
||||
ChannelList newList = new ChannelList(signalSource, signalType);
|
||||
this.AddChannelList(newList);
|
||||
return newList;
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
36
ChanSort.Api/Model/Enums.cs
Normal file
36
ChanSort.Api/Model/Enums.cs
Normal file
@@ -0,0 +1,36 @@
|
||||
using System;
|
||||
|
||||
namespace ChanSort.Api
|
||||
{
|
||||
[Flags]
|
||||
public enum SignalSource
|
||||
{
|
||||
Analog = 0x00,
|
||||
Digital = 0x10,
|
||||
|
||||
Cable = 0x01,
|
||||
Antenna = 0x02,
|
||||
Sat = 0x04,
|
||||
HdPlus = 0x08,
|
||||
|
||||
AnalogC=Analog + Cable,
|
||||
AnalogT=Analog + Antenna,
|
||||
AnalogCT=Analog + Cable + Antenna,
|
||||
DvbC = Digital + Cable,
|
||||
DvbT= Digital + Antenna,
|
||||
DvbCT= Digital + Cable + Antenna,
|
||||
DvbS= Digital + Sat,
|
||||
HdPlusD = Digital + HdPlus
|
||||
}
|
||||
public enum SignalType { Tv, Radio, Mixed }
|
||||
|
||||
[Flags]
|
||||
public enum Favorites : byte { A = 0x01, B = 0x02, C = 0x04, D = 0x08, E = 0x10 }
|
||||
|
||||
public enum UnsortedChannelMode
|
||||
{
|
||||
AppendInOrder,
|
||||
AppendAlphabetically,
|
||||
Hide
|
||||
}
|
||||
}
|
||||
198
ChanSort.Api/Model/LookupData.cs
Normal file
198
ChanSort.Api/Model/LookupData.cs
Normal file
@@ -0,0 +1,198 @@
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
|
||||
namespace ChanSort.Api
|
||||
{
|
||||
public class LookupData
|
||||
{
|
||||
private readonly IDictionary<int, NetworkInfo> networks = new Dictionary<int, NetworkInfo>();
|
||||
private readonly IDictionary<int, int> transponderNrByFreqInMhz = new Dictionary<int, int>();
|
||||
private readonly IDictionary<int, int> transponderFreqInMhzByNr = new Dictionary<int, int>();
|
||||
private readonly IDictionary<int, string> serviceTypeDescriptions = new Dictionary<int, string>();
|
||||
private readonly IDictionary<int, int> dvbtFreqInMhzByTransponder = new Dictionary<int, int>();
|
||||
|
||||
public static readonly LookupData Instance = new LookupData();
|
||||
|
||||
private LookupData()
|
||||
{
|
||||
this.LoadDataFromCsvFile();
|
||||
}
|
||||
|
||||
#region GetNetwork()
|
||||
public NetworkInfo GetNetwork(int networkId)
|
||||
{
|
||||
NetworkInfo network;
|
||||
this.networks.TryGetValue((ushort)networkId, out network);
|
||||
return network;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region GetTransponderNumber(), GetTransponderFrequency()
|
||||
public int GetTransponderNumber(int frequencyInMhz)
|
||||
{
|
||||
int number;
|
||||
bool found = this.transponderNrByFreqInMhz.TryGetValue(frequencyInMhz, out number) ||
|
||||
this.transponderNrByFreqInMhz.TryGetValue(frequencyInMhz - 1, out number) ||
|
||||
this.transponderNrByFreqInMhz.TryGetValue(frequencyInMhz + 1, out number) ||
|
||||
this.transponderNrByFreqInMhz.TryGetValue(frequencyInMhz - 2, out number) ||
|
||||
this.transponderNrByFreqInMhz.TryGetValue(frequencyInMhz + 2, out number);
|
||||
return found ? number : 0;
|
||||
}
|
||||
|
||||
public int GetTransponderFrequency(int transponderNr)
|
||||
{
|
||||
return this.transponderNrByFreqInMhz.TryGet(transponderNr);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region GetDvbtTransponderFrequency()
|
||||
public int GetDvbtTransponderFrequency(int transponderNr)
|
||||
{
|
||||
return this.dvbtFreqInMhzByTransponder.TryGet(transponderNr);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region GetServiceTypeDescription()
|
||||
public string GetServiceTypeDescription(int serviceType)
|
||||
{
|
||||
string descr;
|
||||
this.serviceTypeDescriptions.TryGetValue(serviceType, out descr);
|
||||
return descr;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region LoadDataFromCsvFile()
|
||||
public void LoadDataFromCsvFile()
|
||||
{
|
||||
this.networks.Clear();
|
||||
this.transponderFreqInMhzByNr.Clear();
|
||||
this.transponderNrByFreqInMhz.Clear();
|
||||
this.serviceTypeDescriptions.Clear();
|
||||
this.dvbtFreqInMhzByTransponder.Clear();
|
||||
|
||||
string file = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "lookup.csv");
|
||||
if (!File.Exists(file))
|
||||
return;
|
||||
using (var reader = new StreamReader(file, System.Text.Encoding.UTF8))
|
||||
{
|
||||
string line;
|
||||
while ((line = reader.ReadLine()) != null)
|
||||
{
|
||||
var fields = CsvFile.Parse(line, ';');
|
||||
if (fields.Count == 0)
|
||||
continue;
|
||||
switch (fields[0].ToLower())
|
||||
{
|
||||
case "onid": this.ParseNetwork(fields); break;
|
||||
case "dvbt": this.ParseDvbtTransponder(fields); break;
|
||||
case "transp": this.ParseTransponder(fields); break;
|
||||
case "servicetype": this.ParseServiceType(fields); break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region AddNetwork()
|
||||
private void AddNetwork(NetworkInfo network)
|
||||
{
|
||||
this.networks[network.OriginalNetworkId] = network;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region AddTransponderMapping()
|
||||
private void AddTransponderMapping(int transponderNr, int frequencyInMhz)
|
||||
{
|
||||
this.transponderNrByFreqInMhz[frequencyInMhz] = transponderNr;
|
||||
this.transponderFreqInMhzByNr[transponderNr] = frequencyInMhz;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region AddDvbtTransponderMapping()
|
||||
private void AddDvbtTransponderMapping(int transponderNr, int frequencyInMhz)
|
||||
{
|
||||
this.dvbtFreqInMhzByTransponder[transponderNr] = frequencyInMhz;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region AddServiceType()
|
||||
public void AddServiceType(int serviceType, string description)
|
||||
{
|
||||
this.serviceTypeDescriptions[serviceType] = description;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ParseNetwork()
|
||||
private void ParseNetwork(IList<string> fields)
|
||||
{
|
||||
if (fields.Count < 3)
|
||||
return;
|
||||
int start = ParseNumber(fields[1]);
|
||||
int end = ParseNumber(fields[2]);
|
||||
if (start == 0 || end == 0 || start > end)
|
||||
return;
|
||||
for (int onid = start; onid <= end; onid++)
|
||||
{
|
||||
var network = new NetworkInfo();
|
||||
network.OriginalNetworkId = onid;
|
||||
if (fields.Count >= 4)
|
||||
network.Name = fields[3];
|
||||
if (fields.Count >= 5)
|
||||
network.Operator = fields[4];
|
||||
this.AddNetwork(network);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ParseNumber()
|
||||
private int ParseNumber(string nr)
|
||||
{
|
||||
int number;
|
||||
if (nr.StartsWith("0x"))
|
||||
int.TryParse(nr.Substring(2), System.Globalization.NumberStyles.HexNumber, System.Globalization.NumberFormatInfo.InvariantInfo, out number);
|
||||
else
|
||||
int.TryParse(nr, System.Globalization.NumberStyles.Integer, System.Globalization.NumberFormatInfo.InvariantInfo, out number);
|
||||
return number;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ParseTransponder()
|
||||
private void ParseTransponder(IList<string> fields)
|
||||
{
|
||||
if (fields.Count < 3)
|
||||
return;
|
||||
int nr, freq;
|
||||
int.TryParse(fields[1], out nr);
|
||||
int.TryParse(fields[2], out freq);
|
||||
if (nr == 0 || freq == 0)
|
||||
return;
|
||||
this.AddTransponderMapping(nr, freq);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ParseTransponder()
|
||||
private void ParseDvbtTransponder(IList<string> fields)
|
||||
{
|
||||
if (fields.Count < 3)
|
||||
return;
|
||||
int nr, freq;
|
||||
int.TryParse(fields[1], out nr);
|
||||
int.TryParse(fields[2], out freq);
|
||||
if (nr == 0 || freq == 0)
|
||||
return;
|
||||
this.AddDvbtTransponderMapping(nr, freq);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ParseServiceType()
|
||||
private void ParseServiceType(IList<string> fields)
|
||||
{
|
||||
if (fields.Count < 3) return;
|
||||
int serviceType = this.ParseNumber(fields[1]);
|
||||
if (serviceType <= 0) return;
|
||||
this.AddServiceType(serviceType, fields[2]);
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
9
ChanSort.Api/Model/NetworkInfo.cs
Normal file
9
ChanSort.Api/Model/NetworkInfo.cs
Normal file
@@ -0,0 +1,9 @@
|
||||
namespace ChanSort.Api
|
||||
{
|
||||
public class NetworkInfo
|
||||
{
|
||||
public int OriginalNetworkId { get; set; }
|
||||
public string Name { get; set; }
|
||||
public string Operator { get; set; }
|
||||
}
|
||||
}
|
||||
25
ChanSort.Api/Model/Satellite.cs
Normal file
25
ChanSort.Api/Model/Satellite.cs
Normal file
@@ -0,0 +1,25 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace ChanSort.Api
|
||||
{
|
||||
public class Satellite
|
||||
{
|
||||
private readonly int id;
|
||||
private readonly IDictionary<int, Transponder> transponder = new Dictionary<int, Transponder>();
|
||||
|
||||
public int Id { get { return this.id; } }
|
||||
public string Name { get; set; }
|
||||
public string OrbitalPosition { get; set; }
|
||||
public IDictionary<int, Transponder> Transponder { get { return this.transponder; } }
|
||||
|
||||
public Satellite(int id)
|
||||
{
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return Name;
|
||||
}
|
||||
}
|
||||
}
|
||||
22
ChanSort.Api/Model/Transponder.cs
Normal file
22
ChanSort.Api/Model/Transponder.cs
Normal file
@@ -0,0 +1,22 @@
|
||||
namespace ChanSort.Api
|
||||
{
|
||||
public class Transponder
|
||||
{
|
||||
private readonly int id;
|
||||
|
||||
public int Id { get { return id; } }
|
||||
public Satellite Satellite { get; set; }
|
||||
public decimal FrequencyInMhz { get; set; }
|
||||
public int Number { get; set; }
|
||||
public int SymbolRate { get; set; }
|
||||
public char Polarity { get; set; }
|
||||
public int OriginalNetworkId { get; set; }
|
||||
public int TransportStreamId { get; set; }
|
||||
|
||||
public Transponder(int id)
|
||||
{
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
36
ChanSort.Api/Properties/AssemblyInfo.cs
Normal file
36
ChanSort.Api/Properties/AssemblyInfo.cs
Normal file
@@ -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("API")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("API")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2012")]
|
||||
[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("5cd52683-ba04-4610-8435-ba409a37e08f")]
|
||||
|
||||
// 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")]
|
||||
81
ChanSort.Api/Resources.Designer.cs
generated
Normal file
81
ChanSort.Api/Resources.Designer.cs
generated
Normal file
@@ -0,0 +1,81 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.586
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace ChanSort.Api {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ChanSort.Api.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to {0}: Channel '{1}' has multiple data records: index {2}=Pr#{3} and index {4}=Pr#{5}.
|
||||
/// </summary>
|
||||
internal static string ChannelList_AddChannel__DuplicateUid {
|
||||
get {
|
||||
return ResourceManager.GetString("ChannelList_AddChannel__DuplicateUid", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to {0} Program #{1} is assigned to multiple channels: index {2}='{3}' and index {4}='{5}'.
|
||||
/// </summary>
|
||||
internal static string ChannelList_ProgramNrAssignedToMultipleChannels {
|
||||
get {
|
||||
return ResourceManager.GetString("ChannelList_ProgramNrAssignedToMultipleChannels", resourceCulture);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
0
ChanSort.Api/Resources.de.Designer.cs
generated
Normal file
0
ChanSort.Api/Resources.de.Designer.cs
generated
Normal file
126
ChanSort.Api/Resources.de.resx
Normal file
126
ChanSort.Api/Resources.de.resx
Normal file
@@ -0,0 +1,126 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="ChannelList_ProgramNrAssignedToMultipleChannels" xml:space="preserve">
|
||||
<value>{0} Program #{1} ist mehreren Sendern zugeordnet: Index {2}='{3}' und Index {4}='{5}'</value>
|
||||
</data>
|
||||
<data name="ChannelList_AddChannel__DuplicateUid" xml:space="preserve">
|
||||
<value>{0}: Sender '{1}' ist in mehreren Datensätzen enthalten: Index {2}=Pr#{3} und Index {4}=Pr#{5}</value>
|
||||
</data>
|
||||
</root>
|
||||
126
ChanSort.Api/Resources.resx
Normal file
126
ChanSort.Api/Resources.resx
Normal file
@@ -0,0 +1,126 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="ChannelList_ProgramNrAssignedToMultipleChannels" xml:space="preserve">
|
||||
<value>{0} Program #{1} is assigned to multiple channels: index {2}='{3}' and index {4}='{5}'</value>
|
||||
</data>
|
||||
<data name="ChannelList_AddChannel__DuplicateUid" xml:space="preserve">
|
||||
<value>{0}: Channel '{1}' has multiple data records: index {2}=Pr#{3} and index {4}=Pr#{5}</value>
|
||||
</data>
|
||||
</root>
|
||||
151
ChanSort.Api/Utils/ChannelMappingBase.cs
Normal file
151
ChanSort.Api/Utils/ChannelMappingBase.cs
Normal file
@@ -0,0 +1,151 @@
|
||||
using System.Text;
|
||||
|
||||
namespace ChanSort.Api
|
||||
{
|
||||
public unsafe class ChannelMappingBase : DataMapping
|
||||
{
|
||||
protected const string offInUse = "offInUse";
|
||||
protected const string maskInUse = "maskInUse";
|
||||
protected const string offProgramNr = "offProgramNr";
|
||||
protected const string offName = "offName";
|
||||
protected const string offNameLength = "offNameLength";
|
||||
protected const string lenName = "lenName";
|
||||
protected const string offSkip = "offSkip";
|
||||
protected const string maskSkip = "maskSkip";
|
||||
protected const string offLock = "offLock";
|
||||
protected const string maskLock = "maskLock";
|
||||
protected const string offLockSkipHide = "offHide";
|
||||
protected const string maskHide = "maskHide";
|
||||
protected const string offFavorites = "offFavorites";
|
||||
private const string offDeleted = "offDeleted";
|
||||
private const string maskDeleted = "maskDeleted";
|
||||
|
||||
#region ctor()
|
||||
public ChannelMappingBase(IniFile.Section settings, int length, Encoding stringEncoding) :
|
||||
base(settings, length, stringEncoding)
|
||||
{
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region InUse
|
||||
public virtual bool InUse
|
||||
{
|
||||
get
|
||||
{
|
||||
var val = this.GetOffsets(offInUse);
|
||||
return val.Length == 0 || this.GetFlag(offInUse, maskInUse);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ProgramNr
|
||||
public virtual ushort ProgramNr
|
||||
{
|
||||
get { return this.GetWord(offProgramNr); }
|
||||
set { this.SetWord(offProgramNr, value); }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region NameLength
|
||||
public virtual int NameLength
|
||||
{
|
||||
get
|
||||
{
|
||||
var off = this.GetOffsets(offNameLength);
|
||||
if (off.Length > 0)
|
||||
return this.GetWord(off[0]);
|
||||
return MaxNameLength;
|
||||
}
|
||||
set { this.SetByte(offNameLength, (byte) value); }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region MaxNameLength
|
||||
public virtual int MaxNameLength
|
||||
{
|
||||
get
|
||||
{
|
||||
var off = this.GetOffsets(lenName); // not an offset!
|
||||
return off.Length > 0 ? off[0] : 0;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Name
|
||||
public virtual string Name
|
||||
{
|
||||
get { return this.GetString(offName, this.NameLength); }
|
||||
// ReSharper disable ValueParameterNotUsed
|
||||
set { }
|
||||
// ReSharper restore ValueParameterNotUsed
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region NamePtr
|
||||
|
||||
public virtual byte* NamePtr
|
||||
{
|
||||
get { return this.DataPtr + this.GetOffsets(offName)[0]; }
|
||||
set
|
||||
{
|
||||
int maxLen = this.MaxNameLength - 1;
|
||||
if (maxLen == 0)
|
||||
maxLen = this.NameLength;
|
||||
foreach (int off in this.GetOffsets(offName))
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < maxLen && value[i] != 0; i++)
|
||||
this.DataPtr[off + i] = value[i];
|
||||
for (; i <= maxLen; i++)
|
||||
this.DataPtr[off + i] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ShortName
|
||||
public virtual string ShortName { get; set; }
|
||||
#endregion
|
||||
|
||||
#region Skip
|
||||
public virtual bool Skip
|
||||
{
|
||||
get { return this.GetFlag(offSkip, maskSkip); }
|
||||
set { this.SetFlag(offSkip, maskSkip, value); }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Lock
|
||||
public virtual bool Lock
|
||||
{
|
||||
get { return this.GetFlag(offLock, maskLock); }
|
||||
set { this.SetFlag(offLock, maskLock, value); }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Hide
|
||||
public virtual bool Hide
|
||||
{
|
||||
get { return this.GetFlag(offLockSkipHide, maskHide); }
|
||||
set { this.SetFlag(offLockSkipHide, maskHide, value); }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Favorites
|
||||
public virtual Favorites Favorites
|
||||
{
|
||||
get { return (Favorites) this.GetByte(offFavorites); }
|
||||
set { this.SetByte(offFavorites, (byte) value); }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region IsDeleted
|
||||
public virtual bool IsDeleted
|
||||
{
|
||||
get { return this.GetFlag(offDeleted, maskDeleted); }
|
||||
set { this.SetFlag(offDeleted, maskDeleted, value); }
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
||||
}
|
||||
60
ChanSort.Api/Utils/Crc32.cs
Normal file
60
ChanSort.Api/Utils/Crc32.cs
Normal file
@@ -0,0 +1,60 @@
|
||||
namespace ChanSort.Api
|
||||
{
|
||||
public static class Crc32
|
||||
{
|
||||
private const uint CrcMask = 0xFFFFFFFF;
|
||||
private const uint CrcPoly = 0xEDB88320;
|
||||
|
||||
private static readonly uint[] crc32Table;
|
||||
|
||||
static Crc32()
|
||||
{
|
||||
crc32Table = InitCrc32Table();
|
||||
}
|
||||
|
||||
#region InitCrc32Table()
|
||||
|
||||
private static uint[] InitCrc32Table()
|
||||
{
|
||||
var crcTable = new uint[256];
|
||||
for (uint i = 0; i < 256; i++)
|
||||
{
|
||||
uint r = i;
|
||||
for (uint j = 8; j > 0; j--)
|
||||
{
|
||||
if ((r & 1) == 1)
|
||||
r = ((r >> 1) ^ CrcPoly);
|
||||
else
|
||||
r >>= 1;
|
||||
}
|
||||
crcTable[i] = r;
|
||||
}
|
||||
return crcTable;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region CalcCrc32()
|
||||
public static unsafe uint CalcCrc32(byte* block, int length)
|
||||
{
|
||||
uint crc32 = CrcMask;
|
||||
for (int i = 0; i < length; i++)
|
||||
crc32 = crc32Table[(crc32 & 0xff) ^ block[i]] ^ (crc32 >> 8);
|
||||
return crc32;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Crack()
|
||||
public static unsafe int Crack(byte* block, int maxLen, uint checksum)
|
||||
{
|
||||
uint crc32 = CrcMask;
|
||||
for (int i = 0; i < maxLen; i++)
|
||||
{
|
||||
if (crc32 == checksum)
|
||||
return i;
|
||||
crc32 = crc32Table[(crc32 & 0xff) ^ block[i]] ^ (crc32 >> 8);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
44
ChanSort.Api/Utils/CsvFile.cs
Normal file
44
ChanSort.Api/Utils/CsvFile.cs
Normal file
@@ -0,0 +1,44 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace ChanSort.Api
|
||||
{
|
||||
public static class CsvFile
|
||||
{
|
||||
public static IList<string> Parse(string line, char separator)
|
||||
{
|
||||
if (line.EndsWith("\n")) line = line.Substring(0, line.Length - 1);
|
||||
if (line.EndsWith("\r")) line = line.Substring(0, line.Length - 1);
|
||||
|
||||
List<string> tokens = new List<string>();
|
||||
if (line.Length == 0)
|
||||
return tokens;
|
||||
|
||||
bool inQuote = false;
|
||||
StringBuilder token = new StringBuilder();
|
||||
for(int i = 0, len=line.Length; i<len; i++)
|
||||
{
|
||||
char ch = line[i];
|
||||
if (ch == separator && !inQuote)
|
||||
{
|
||||
tokens.Add(token.ToString());
|
||||
token.Remove(0, token.Length);
|
||||
continue;
|
||||
}
|
||||
if (ch == '"')
|
||||
{
|
||||
if (inQuote && i+1 < len && line[i+1] == '"')
|
||||
{
|
||||
token.Append('"');
|
||||
++i;
|
||||
continue;
|
||||
}
|
||||
inQuote = !inQuote;
|
||||
}
|
||||
token.Append(ch);
|
||||
}
|
||||
tokens.Add(token.ToString());
|
||||
return tokens;
|
||||
}
|
||||
}
|
||||
}
|
||||
204
ChanSort.Api/Utils/DataMapping.cs
Normal file
204
ChanSort.Api/Utils/DataMapping.cs
Normal file
@@ -0,0 +1,204 @@
|
||||
using System.Text;
|
||||
|
||||
namespace ChanSort.Api
|
||||
{
|
||||
public unsafe class DataMapping
|
||||
{
|
||||
protected readonly Encoding stringEncoding;
|
||||
protected readonly IniFile.Section settings;
|
||||
protected readonly int length;
|
||||
|
||||
#region ctor()
|
||||
public DataMapping(IniFile.Section settings, int structureLength, Encoding stringEncoding)
|
||||
{
|
||||
this.settings = settings;
|
||||
this.length = structureLength;
|
||||
this.stringEncoding = stringEncoding;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region DataPtr
|
||||
public byte* DataPtr { get; set; }
|
||||
#endregion
|
||||
|
||||
#region DataLength
|
||||
public int DataLength { get { return this.length; } }
|
||||
#endregion
|
||||
|
||||
#region Next()
|
||||
public void Next()
|
||||
{
|
||||
this.DataPtr += this.length;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region GetOffsets()
|
||||
protected int[] GetOffsets(string key)
|
||||
{
|
||||
return settings.GetIntList(key);
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
#region GetByte()
|
||||
public byte GetByte(int off)
|
||||
{
|
||||
return off < 0 ? (byte)0 : this.DataPtr[off];
|
||||
}
|
||||
|
||||
public byte GetByte(string key)
|
||||
{
|
||||
var offsets = settings.GetIntList(key);
|
||||
return offsets.Length > 0 ? this.GetByte(offsets[0]) : (byte)0;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region GetWord()
|
||||
public ushort GetWord(int off)
|
||||
{
|
||||
return off < 0 ? (ushort)0 : *(ushort*) (this.DataPtr + off);
|
||||
}
|
||||
|
||||
public ushort GetWord(string key)
|
||||
{
|
||||
var offsets = settings.GetIntList(key);
|
||||
return offsets.Length > 0 ? this.GetWord(offsets[0]) : (ushort)0;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region GetDword()
|
||||
public uint GetDword(int off)
|
||||
{
|
||||
return off < 0 ? 0 : *(uint*) (this.DataPtr + off);
|
||||
}
|
||||
|
||||
public uint GetDword(string key)
|
||||
{
|
||||
var offsets = settings.GetIntList(key);
|
||||
return offsets.Length > 0 ? this.GetDword(offsets[0]) : 0;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region GetFloat()
|
||||
public float GetFloat(int off)
|
||||
{
|
||||
return off < 0 ? 0 : *(float*) (this.DataPtr + off);
|
||||
}
|
||||
|
||||
public float GetFloat(string key)
|
||||
{
|
||||
var offsets = settings.GetIntList(key);
|
||||
return offsets.Length > 0 ? this.GetFloat(offsets[0]) : 0;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region GetFlag()
|
||||
public bool GetFlag(int offset, byte mask)
|
||||
{
|
||||
return offset >= 0 && (this.GetByte(offset) & mask) != 0;
|
||||
}
|
||||
|
||||
public bool GetFlag(string valueKey, string maskKey)
|
||||
{
|
||||
byte mask = (byte)settings.GetInt(maskKey);
|
||||
var offsets = settings.GetIntList(valueKey);
|
||||
return offsets.Length > 0 && this.GetFlag(offsets[0], mask);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region GetString()
|
||||
public string GetString(int offset, int maxByteLen)
|
||||
{
|
||||
if (offset < 0) return null;
|
||||
byte[] buffer = new byte[maxByteLen];
|
||||
for (int i = 0; i < maxByteLen; i++)
|
||||
buffer[i] = this.DataPtr[offset + i];
|
||||
return stringEncoding.GetString(buffer).TrimEnd('\0');
|
||||
}
|
||||
|
||||
public string GetString(string key, int maxLen)
|
||||
{
|
||||
var offsets = settings.GetIntList(key);
|
||||
return offsets.Length == 0 ? null : GetString(offsets[0], maxLen);
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
#region SetByte()
|
||||
public void SetByte(int off, byte value)
|
||||
{
|
||||
if (off >= 0)
|
||||
this.DataPtr[off] = value;
|
||||
}
|
||||
|
||||
public void SetByte(string key, byte value)
|
||||
{
|
||||
var offsets = settings.GetIntList(key);
|
||||
foreach(int offset in offsets)
|
||||
this.SetByte(offset, value);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region SetWord()
|
||||
public void SetWord(int off, int value)
|
||||
{
|
||||
if (off >= 0)
|
||||
*(ushort*) (this.DataPtr + off) = (ushort)value;
|
||||
}
|
||||
|
||||
public void SetWord(string key, int value)
|
||||
{
|
||||
var offsets = settings.GetIntList(key);
|
||||
foreach (int offset in offsets)
|
||||
this.SetWord(offset, value);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region SetDword()
|
||||
public void SetDword(int off, uint value)
|
||||
{
|
||||
if (off >= 0)
|
||||
*(uint*) (this.DataPtr + off) = value;
|
||||
}
|
||||
|
||||
public void SetDword(string key, uint value)
|
||||
{
|
||||
var offsets = settings.GetIntList(key);
|
||||
foreach (int offset in offsets)
|
||||
this.SetDword(offset, value);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region SetFloat()
|
||||
public void SetFloat(int off, float value)
|
||||
{
|
||||
if (off >= 0)
|
||||
*(float*)(this.DataPtr + off) = value;
|
||||
}
|
||||
|
||||
public void SetFloat(string key, float value)
|
||||
{
|
||||
var offsets = settings.GetIntList(key);
|
||||
foreach (int offset in offsets)
|
||||
this.SetFloat(offset, value);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region SetFlag()
|
||||
public void SetFlag(int offset, byte mask, bool set)
|
||||
{
|
||||
byte val = this.GetByte(offset);
|
||||
this.SetByte(offset, (byte)(set ? val | mask : val & ~mask));
|
||||
}
|
||||
|
||||
public void SetFlag(string valueKey, string maskKey, bool set)
|
||||
{
|
||||
byte mask = (byte)settings.GetInt(maskKey);
|
||||
var offsets = settings.GetIntList(valueKey);
|
||||
foreach (int offset in offsets)
|
||||
this.SetFlag(offset, mask, set);
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
||||
}
|
||||
125
ChanSort.Api/Utils/DvbChannelMappingBase.cs
Normal file
125
ChanSort.Api/Utils/DvbChannelMappingBase.cs
Normal file
@@ -0,0 +1,125 @@
|
||||
using System.Text;
|
||||
|
||||
namespace ChanSort.Api
|
||||
{
|
||||
public class DvbChannelMappingBase : ChannelMappingBase
|
||||
{
|
||||
protected const string offChannelTransponder = "offChannelTransponder";
|
||||
protected const string offPcrPid = "offPcrPid";
|
||||
protected const string offVideoPid = "offVideoPid";
|
||||
protected const string offAudioPid = "offAudioPid";
|
||||
protected const string offServiceId = "offServiceId";
|
||||
protected const string offOriginalNetworkId = "offOriginalNetworkId";
|
||||
protected const string offTransportStreamId = "offTransportStreamId";
|
||||
protected const string offServiceType = "offServiceType";
|
||||
protected const string offSymbolRate = "offSymbolRate";
|
||||
protected const string offEncrypted = "offEncrypted";
|
||||
protected const string maskEncrypted = "maskEncrypted";
|
||||
protected const string offShortName = "offShortName";
|
||||
protected const string offShortNameLength = "offShortNameLength";
|
||||
protected const string lenShortName = "lenShortName";
|
||||
|
||||
|
||||
#region ctor()
|
||||
public DvbChannelMappingBase(IniFile.Section settings, int dataLength, Encoding stringEncoding)
|
||||
: base(settings, dataLength, stringEncoding)
|
||||
{
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ChannelOrTransponder
|
||||
public virtual byte ChannelOrTransponder
|
||||
{
|
||||
get { return this.GetByte(offChannelTransponder); }
|
||||
set { this.SetByte(offChannelTransponder, value); }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ShortName
|
||||
public int ShortNameLength
|
||||
{
|
||||
get
|
||||
{
|
||||
var off = this.GetOffsets(offShortNameLength);
|
||||
if (off.Length > 0)
|
||||
return this.GetWord(off[0]);
|
||||
off = this.GetOffsets(lenShortName); // not an offset!
|
||||
return off.Length > 0 ? off[0] : 0;
|
||||
}
|
||||
}
|
||||
|
||||
public override string ShortName { get { return this.GetString(offShortName, this.ShortNameLength); } }
|
||||
#endregion
|
||||
|
||||
#region PcrPid
|
||||
public virtual ushort PcrPid
|
||||
{
|
||||
get { return this.GetWord(offPcrPid); }
|
||||
set { this.SetWord(offPcrPid, value); }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region VideoPid
|
||||
public virtual ushort VideoPid
|
||||
{
|
||||
get { return this.GetWord(offVideoPid); }
|
||||
set { this.SetWord(offVideoPid, value); }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region AudioPid
|
||||
public virtual ushort AudioPid
|
||||
{
|
||||
get { return this.GetWord(offAudioPid); }
|
||||
set { this.SetWord(offAudioPid, value); }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ServiceId
|
||||
public virtual ushort ServiceId
|
||||
{
|
||||
get { return this.GetWord(offServiceId); }
|
||||
set { this.SetWord(offServiceId, value); }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region OriginalNetworkId
|
||||
public virtual ushort OriginalNetworkId
|
||||
{
|
||||
get { return this.GetWord(offOriginalNetworkId); }
|
||||
set { this.SetWord(offOriginalNetworkId, value); }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region TransportStreamId
|
||||
public virtual ushort TransportStreamId
|
||||
{
|
||||
get { return this.GetWord(offTransportStreamId); }
|
||||
set { this.SetWord(offTransportStreamId, value); }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ServiceType
|
||||
public virtual byte ServiceType
|
||||
{
|
||||
get { return this.GetByte(offServiceType); }
|
||||
set { this.SetByte(offServiceType, value); }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region SymbolRate
|
||||
public virtual ushort SymbolRate
|
||||
{
|
||||
get { return this.GetWord(offSymbolRate); }
|
||||
set { this.SetWord(offSymbolRate, value); }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Encrypted
|
||||
public virtual bool Encrypted
|
||||
{
|
||||
get { return this.GetFlag(offEncrypted, maskEncrypted); }
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
196
ChanSort.Api/Utils/DvbStringDecoder.cs
Normal file
196
ChanSort.Api/Utils/DvbStringDecoder.cs
Normal file
@@ -0,0 +1,196 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace ChanSort.Api
|
||||
{
|
||||
#region Documentation
|
||||
/*
|
||||
ETSI EN 300 468
|
||||
|
||||
For one-byte character tables, the codes in the range 0x80 to 0x9F are assigned to control functions
|
||||
as shown in Table A.1: Single byte control codes
|
||||
|
||||
Control code - Control code Description
|
||||
0x80 to 0x85 reserved for future use
|
||||
0x86 character emphasis on
|
||||
0x87 character emphasis off
|
||||
0x88 to 0x89 reserved for future use
|
||||
0x8A CR/LF
|
||||
0x8B to 0x9F user defined
|
||||
|
||||
A.2 Selection of character table
|
||||
First byte value - Character code table - Table description - Reproduced in figure
|
||||
0x01 ISO/IEC 8859-5 [27] Latin/Cyrillic alphabet A.2
|
||||
0x02 ISO/IEC 8859-6 [28] Latin/Arabic alphabet A.3
|
||||
0x03 ISO/IEC 8859-7 [29] Latin/Greek alphabet A.4
|
||||
0x04 ISO/IEC 8859-8 [30] Latin/Hebrew alphabet A.5
|
||||
0x05 ISO/IEC 8859-9 [31] Latin alphabet No. 5 A.6
|
||||
0x06 ISO/IEC 8859-10 [32] Latin alphabet No. 6 A.7
|
||||
0x07 ISO/IEC 8859-11 [33] Latin/Thai (draft only) A.8
|
||||
0x08 reserved for future use (see note)
|
||||
0x09 ISO/IEC 8859-13 [34] Latin alphabet No. 7 A.9
|
||||
0x0A ISO/IEC 8859-14 [35] Latin alphabet No. 8 (Celtic) A.10
|
||||
0x0B ISO/IEC 8859-15 [36] Latin alphabet No. 9 A.11
|
||||
0x0C to 0x0F reserved for future use
|
||||
0x10 ISO/IEC 8859 See table A.4
|
||||
0x11 ISO/IEC 10646 [16] Basic Multilingual Plane (BMP)
|
||||
0x12 KSX1001-2004 [44] Korean Character Set
|
||||
0x13 GB-2312-1980 Simplified Chinese Character
|
||||
0x14 Big5 subset of ISO/IEC 10646 [16] Traditional Chinese
|
||||
0x15 UTF-8 encoding of ISO/IEC 10646 [16] Basic Multilingual Plane (BMP)
|
||||
0x16 to 0x1E reserved for future use
|
||||
0x1F Described by encoding_type_id Described by 8 bit
|
||||
|
||||
Table A.4: Character Coding Tables for first byte 0x10
|
||||
First byte value - Second byte value - Third Byte Value - Selected character code - table - Table Description
|
||||
0x10 0x00 0x00 reserved for future use
|
||||
0x10 0x00 0x01 ISO/IEC 8859-1 [23] West European
|
||||
0x10 0x00 0x02 ISO/IEC 8859-2 [24] East European
|
||||
0x10 0x00 0x03 ISO/IEC 8859-3 [25] South European
|
||||
0x10 0x00 0x04 ISO/IEC 8859-4 [26] North and North-East European
|
||||
0x10 0x00 0x05 ISO/IEC 8859-5 [27] Latin/Cyrillic A.2
|
||||
0x10 0x00 0x06 ISO/IEC 8859-6 [28] Latin/Arabic A.3
|
||||
0x10 0x00 0x07 ISO/IEC 8859-7 [29] Latin/Greek A.4
|
||||
0x10 0x00 0x08 ISO/IEC 8859-8 [30] Latin/Hebrew A.5
|
||||
0x10 0x00 0x09 ISO/IEC 8859-9 [31] West European & Turkish A.6
|
||||
0x10 0x00 0x0A ISO/IEC 8859-10 [32] North European A.7
|
||||
0x10 0x00 0x0B ISO/IEC 8859-11 [33] Thai A.8
|
||||
0x10 0x00 0x0C Reserved for future use
|
||||
0x10 0x00 0x0D ISO/IEC 8859-13 [34] Baltic A.9
|
||||
0x10 0x00 0x0E ISO/IEC 8859-14 [35] Celtic A.10
|
||||
0x10 0x00 0x0F ISO/IEC 8859-15 [36] West European A.11
|
||||
*/
|
||||
#endregion
|
||||
|
||||
public class DvbStringDecoder
|
||||
{
|
||||
static readonly string[] codePages1 =
|
||||
{
|
||||
null, "iso-8859-5", "iso-8859-6", "iso-8859-7", "iso-8859-8", "iso-8859-9", "iso-8859-10", "iso-8859-11",
|
||||
null, "iso-8859-13", "iso-8859-14", "iso-8859-15", null, null, null, null,
|
||||
null, // codePages2 prefix
|
||||
"utf-16", "x-cp20949", "x-cp20936", "utf-16", "utf-8", null, null, null
|
||||
};
|
||||
|
||||
static readonly string[] codePages2 =
|
||||
{
|
||||
null, "iso-8859-1", "iso-8859-2", "iso-8859-3", "iso-8859-4", "iso-8859-5", "iso-8859-6", "iso-8859-7",
|
||||
"iso-8859-8", "iso-8859-9", "iso-8859-10", "iso-8859-11", null, "iso-8859-13", "iso-8859-14", "iso-8859-15"
|
||||
};
|
||||
|
||||
private readonly Dictionary<string, Decoder> decoderCache = new Dictionary<string, Decoder>();
|
||||
|
||||
public DvbStringDecoder(Encoding defaultEncoding)
|
||||
{
|
||||
this.DefaultEncoding = defaultEncoding;
|
||||
}
|
||||
|
||||
public Encoding DefaultEncoding { get; set; }
|
||||
|
||||
#region GetChannelNames()
|
||||
public unsafe void GetChannelNames(byte* name, int len, out string longName, out string shortName)
|
||||
{
|
||||
StringBuilder sbLong = new StringBuilder();
|
||||
StringBuilder sbShort = new StringBuilder();
|
||||
Decoder decoder = this.DefaultEncoding.GetDecoder();
|
||||
bool inShortMode = false;
|
||||
for (int i = 0; i < len; i++)
|
||||
{
|
||||
byte b = name[i];
|
||||
if (b == 0x00)
|
||||
break;
|
||||
if (b == 0x10) // prefix for 3-byte code page
|
||||
{
|
||||
int cpIndex = name[i + 1] * 256 + name[i + 2];
|
||||
i += 2;
|
||||
SetDecoder(codePages2, cpIndex, ref decoder);
|
||||
continue;
|
||||
}
|
||||
if (b <= 0x1F)
|
||||
{
|
||||
SetDecoder(codePages1, b, ref decoder);
|
||||
continue;
|
||||
}
|
||||
|
||||
char ch = '\0';
|
||||
switch (b)
|
||||
{
|
||||
case 0x86: inShortMode = true; break;
|
||||
case 0x87: inShortMode = false; break;
|
||||
case 0x8a: ch = '\n'; break;
|
||||
default:
|
||||
// read as many bytes as necessary to get a character
|
||||
char[] charArray = new char[1];
|
||||
fixed (char* pCh = charArray)
|
||||
{
|
||||
byte* start = name + i;
|
||||
for (int j = 1; i < len && decoder.GetChars(start, j, pCh, 1, true) == 0; ++j)
|
||||
++i;
|
||||
}
|
||||
ch = charArray[0];
|
||||
break;
|
||||
}
|
||||
|
||||
if (ch == '\0')
|
||||
continue;
|
||||
|
||||
sbLong.Append(ch);
|
||||
if (inShortMode)
|
||||
sbShort.Append(ch);
|
||||
}
|
||||
longName = sbLong.ToString();
|
||||
shortName = sbShort.ToString();
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region SetDecoder()
|
||||
private void SetDecoder(string[] codePages, int cpIndex, ref Decoder defaultDecoder)
|
||||
{
|
||||
if (cpIndex >= codePages.Length)
|
||||
return;
|
||||
Decoder decoder;
|
||||
|
||||
string cp = codePages[cpIndex];
|
||||
if (cp == null)
|
||||
return;
|
||||
|
||||
if (this.decoderCache.TryGetValue(cp, out decoder))
|
||||
{
|
||||
defaultDecoder = decoder;
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var encoding = Encoding.GetEncoding(cp);
|
||||
defaultDecoder = encoding.GetDecoder();
|
||||
}
|
||||
catch (ArgumentException)
|
||||
{
|
||||
}
|
||||
decoderCache[cp] = defaultDecoder;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region GetCodepageBytes()
|
||||
public static byte[] GetCodepageBytes(Encoding encoding)
|
||||
{
|
||||
var encName = encoding.WebName;
|
||||
for (int i = 0; i < codePages1.Length; i++)
|
||||
{
|
||||
if (codePages1[i] == encName)
|
||||
return new [] {(byte)i};
|
||||
}
|
||||
|
||||
for (int i = 0; i < codePages2.Length; i++)
|
||||
{
|
||||
if (codePages2[i] == encName)
|
||||
return new[] { (byte)0x10, (byte)i };
|
||||
}
|
||||
|
||||
return new byte[0];
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
164
ChanSort.Api/Utils/IniFile.cs
Normal file
164
ChanSort.Api/Utils/IniFile.cs
Normal file
@@ -0,0 +1,164 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
|
||||
namespace ChanSort.Api
|
||||
{
|
||||
public class IniFile
|
||||
{
|
||||
#region class Section
|
||||
|
||||
public class Section
|
||||
{
|
||||
private readonly Dictionary<string, string> data = new Dictionary<string, string>(StringComparer.CurrentCultureIgnoreCase);
|
||||
|
||||
public Section(string name)
|
||||
{
|
||||
this.Name = name;
|
||||
}
|
||||
|
||||
#region Name
|
||||
public string Name { get; private set; }
|
||||
#endregion
|
||||
|
||||
#region Set()
|
||||
internal void Set(string key, string value)
|
||||
{
|
||||
data[key] = value;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Keys
|
||||
public IEnumerable<string> Keys { get { return data.Keys; } }
|
||||
#endregion
|
||||
|
||||
#region GetString()
|
||||
|
||||
public string GetString(string key)
|
||||
{
|
||||
string value;
|
||||
if (!data.TryGetValue(key, out value))
|
||||
return null;
|
||||
return value;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region GetInt()
|
||||
|
||||
public int GetInt(string key, int defaultValue = 0)
|
||||
{
|
||||
string value;
|
||||
if (!data.TryGetValue(key, out value))
|
||||
return defaultValue;
|
||||
return this.ParseNumber(value);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region GetBytes()
|
||||
|
||||
public byte[] GetBytes(string key)
|
||||
{
|
||||
string value;
|
||||
if (!data.TryGetValue(key, out value))
|
||||
return null;
|
||||
if (string.IsNullOrEmpty(value))
|
||||
return new byte[0];
|
||||
|
||||
string[] parts = value.Split(',');
|
||||
byte[] bytes = new byte[parts.Length];
|
||||
int i = 0;
|
||||
foreach (var part in parts)
|
||||
bytes[i++] = (byte)this.ParseNumber(part);
|
||||
return bytes;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region GetIntList()
|
||||
public int[] GetIntList(string key)
|
||||
{
|
||||
string value = this.GetString(key);
|
||||
if (string.IsNullOrEmpty(value))
|
||||
return new int[0];
|
||||
string[] numbers = value.Split(',');
|
||||
int[] ret = new int[numbers.Length];
|
||||
for (int i = 0; i < numbers.Length; i++)
|
||||
ret[i] = this.ParseNumber(numbers[i]);
|
||||
return ret;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ParseNumber()
|
||||
private int ParseNumber(string value)
|
||||
{
|
||||
if (value.ToLower().StartsWith("0x"))
|
||||
{
|
||||
try { return Convert.ToInt32(value, 16); }
|
||||
catch { return 0; }
|
||||
}
|
||||
int intValue;
|
||||
int.TryParse(value, out intValue);
|
||||
return intValue;
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
#endregion
|
||||
|
||||
private readonly Dictionary<string, Section> sectionDict;
|
||||
private readonly List<Section> sectionList;
|
||||
|
||||
public IniFile(string fileName)
|
||||
{
|
||||
this.sectionDict = new Dictionary<string, Section>();
|
||||
this.sectionList = new List<Section>();
|
||||
this.ReadIniFile(fileName);
|
||||
}
|
||||
|
||||
public IEnumerable<Section> Sections
|
||||
{
|
||||
get { return this.sectionList; }
|
||||
}
|
||||
|
||||
public Section GetSection(string sectionName)
|
||||
{
|
||||
return sectionDict.TryGet(sectionName);
|
||||
}
|
||||
|
||||
#region ReadIniFile()
|
||||
private void ReadIniFile(string fileName)
|
||||
{
|
||||
using (StreamReader rdr = new StreamReader(fileName))
|
||||
{
|
||||
Section currentSection = null;
|
||||
string line;
|
||||
while ((line = rdr.ReadLine()) != null)
|
||||
{
|
||||
string trimmedLine = line.Trim();
|
||||
if (trimmedLine.StartsWith(";"))
|
||||
continue;
|
||||
if (trimmedLine.StartsWith("["))
|
||||
{
|
||||
string sectionName = trimmedLine.EndsWith("]")
|
||||
? trimmedLine.Substring(1, trimmedLine.Length - 2)
|
||||
: trimmedLine.Substring(1);
|
||||
currentSection = new Section(sectionName);
|
||||
this.sectionList.Add(currentSection);
|
||||
this.sectionDict[sectionName] = currentSection;
|
||||
continue;
|
||||
}
|
||||
if (currentSection == null)
|
||||
continue;
|
||||
int idx = trimmedLine.IndexOf("=");
|
||||
if (idx < 0)
|
||||
continue;
|
||||
string key = trimmedLine.Substring(0, idx).Trim();
|
||||
string val = trimmedLine.Substring(idx + 1).Trim();
|
||||
currentSection.Set(key, val);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
33
ChanSort.Api/Utils/MappingPool.cs
Normal file
33
ChanSort.Api/Utils/MappingPool.cs
Normal file
@@ -0,0 +1,33 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace ChanSort.Api
|
||||
{
|
||||
public class MappingPool<T> where T : DataMapping
|
||||
{
|
||||
private const string ERR_unknownACTChannelDataLength = "Configuration doesn't contain a {0} data mapping for length {1}";
|
||||
private readonly Dictionary<int, T> mappings = new Dictionary<int, T>();
|
||||
private readonly string caption;
|
||||
|
||||
public MappingPool(string caption)
|
||||
{
|
||||
this.caption = caption;
|
||||
}
|
||||
|
||||
public void AddMapping(T mapping)
|
||||
{
|
||||
mappings[mapping.DataLength] = mapping;
|
||||
}
|
||||
|
||||
public T GetMapping(int dataLength, bool throwException = true)
|
||||
{
|
||||
if (dataLength == 0)
|
||||
return null;
|
||||
|
||||
T mapping;
|
||||
if (!mappings.TryGetValue(dataLength, out mapping) && throwException)
|
||||
throw new Exception(string.Format(ERR_unknownACTChannelDataLength, this.caption, dataLength));
|
||||
return mapping;
|
||||
}
|
||||
}
|
||||
}
|
||||
27
ChanSort.Api/Utils/Tools.cs
Normal file
27
ChanSort.Api/Utils/Tools.cs
Normal file
@@ -0,0 +1,27 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace ChanSort.Api
|
||||
{
|
||||
public static class Tools
|
||||
{
|
||||
public static V TryGet<K, V>(this IDictionary<K, V> dict, K key)
|
||||
{
|
||||
V val;
|
||||
dict.TryGetValue(key, out val);
|
||||
return val;
|
||||
}
|
||||
|
||||
public static unsafe string GetString(this Encoding encoding, byte* str, int len)
|
||||
{
|
||||
byte[] copy = new byte[len];
|
||||
for (int i = 0; i < len; i++)
|
||||
copy[i] = *str++;
|
||||
string name = encoding.GetString(copy, 0, len);
|
||||
int idx = name.IndexOf('\0');
|
||||
if (idx >= 0)
|
||||
name = name.Substring(0, idx);
|
||||
return name;
|
||||
}
|
||||
}
|
||||
}
|
||||
72
ChanSort.Plugin.ScmFile/AnalogChannelDataMapping.cs
Normal file
72
ChanSort.Plugin.ScmFile/AnalogChannelDataMapping.cs
Normal file
@@ -0,0 +1,72 @@
|
||||
using System.Text;
|
||||
using ChanSort.Api;
|
||||
|
||||
namespace ChanSort.Plugin.ScmFile
|
||||
{
|
||||
internal class AnalogChannelDataMapping : ChannelMappingBase
|
||||
{
|
||||
const string offFrequency = "offFrequency";
|
||||
const string offChecksum = "offChecksum";
|
||||
|
||||
#region ctor()
|
||||
public AnalogChannelDataMapping(IniFile.Section settings, int length) :
|
||||
base(settings, length, new UnicodeEncoding(true, false))
|
||||
{
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Favorites
|
||||
public override Favorites Favorites
|
||||
{
|
||||
get
|
||||
{
|
||||
if (this.DataLength < 64)
|
||||
return base.Favorites;
|
||||
|
||||
byte fav = 0;
|
||||
byte mask = 0x01;
|
||||
foreach (int off in this.GetOffsets(offFavorites))
|
||||
{
|
||||
if (this.GetByte(off) == 1)
|
||||
fav |= mask;
|
||||
mask <<= 1;
|
||||
}
|
||||
return (Favorites)fav;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (this.DataLength < 64)
|
||||
{
|
||||
base.Favorites = value;
|
||||
return;
|
||||
}
|
||||
|
||||
int intValue = (int)value;
|
||||
foreach (int off in this.GetOffsets(offFavorites))
|
||||
{
|
||||
if ((intValue & 1) != 0)
|
||||
this.SetByte(off, 1);
|
||||
intValue >>= 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Frequency
|
||||
public float Frequency
|
||||
{
|
||||
get { return this.GetFloat(offFrequency); }
|
||||
set { this.SetFloat(offFrequency, value); }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Checksum
|
||||
public byte Checksum
|
||||
{
|
||||
get { return this.GetByte(offChecksum); }
|
||||
set { this.SetByte(offChecksum, value); }
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
||||
}
|
||||
98
ChanSort.Plugin.ScmFile/ChanSort.Plugin.ScmFile.csproj
Normal file
98
ChanSort.Plugin.ScmFile/ChanSort.Plugin.ScmFile.csproj
Normal file
@@ -0,0 +1,98 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>8.0.30703</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{A1C9A98D-368A-44E8-9B7F-7EACA46C9EC5}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>ChanSort.Plugin.ScmFile</RootNamespace>
|
||||
<AssemblyName>ChanSort.Plugin.ScmFile</AssemblyName>
|
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<TargetFrameworkProfile>Client</TargetFrameworkProfile>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>..\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>..\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>
|
||||
<CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
|
||||
<CodeAnalysisFailOnMissingRules>false</CodeAnalysisFailOnMissingRules>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
|
||||
<OutputPath>bin\x86\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<CodeAnalysisIgnoreBuiltInRuleSets>true</CodeAnalysisIgnoreBuiltInRuleSets>
|
||||
<CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
|
||||
<CodeAnalysisFailOnMissingRules>true</CodeAnalysisFailOnMissingRules>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\DLL\ICSharpCode.SharpZipLib.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="AnalogChannelDataMapping.cs" />
|
||||
<Compile Include="DvbSChannelDataMapping.cs" />
|
||||
<Compile Include="DvbCtChannelDataMapping.cs" />
|
||||
<Compile Include="ModelConstants.cs" />
|
||||
<Compile Include="ScmSerializer.cs" />
|
||||
<Compile Include="ScmSerializerPlugin.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="ScmStructures.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\ChanSort.Api\ChanSort.Api.csproj">
|
||||
<Project>{DCCFFA08-472B-4D17-BB90-8F513FC01392}</Project>
|
||||
<Name>ChanSort.Api</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="ChanSort.Plugin.ScmFile.ini">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
334
ChanSort.Plugin.ScmFile/ChanSort.Plugin.ScmFile.ini
Normal file
334
ChanSort.Plugin.ScmFile/ChanSort.Plugin.ScmFile.ini
Normal file
@@ -0,0 +1,334 @@
|
||||
[Series:B]
|
||||
SatDataBase.dat = 145
|
||||
TransponderDataBase.dat = 49
|
||||
FineTune = 20
|
||||
FineTune_Digital = 28
|
||||
map-AirA = 28
|
||||
map-AirD = 248
|
||||
map-CableD = 248
|
||||
map-SateD = 144
|
||||
Favorites = 4
|
||||
|
||||
[Series:C]
|
||||
SatDataBase.dat = 145
|
||||
TransponderDataBase.dat = 45
|
||||
map-AirA = 40
|
||||
map-AirD = 292
|
||||
map-CableD = 292
|
||||
map-SateD = 144
|
||||
Favorites = 4
|
||||
|
||||
[Series:D]
|
||||
SatDataBase.dat = 145
|
||||
TransponderDataBase.dat = 45
|
||||
map-AirA = 64
|
||||
map-AirD = 320
|
||||
map-CableD = 320
|
||||
map-SateD = 172
|
||||
map-AstraHDPlusD = 212
|
||||
Favorites = 5
|
||||
|
||||
[Series:E]
|
||||
SatDataBase.dat = 145
|
||||
TransponderDataBase.dat = 45
|
||||
map-AirA = 64
|
||||
map-AirD = 320
|
||||
map-CableD = 320
|
||||
map-SateD = 168
|
||||
map-AstraHDPlusD = 212
|
||||
Favorites = 5
|
||||
|
||||
[Analog:28]
|
||||
; map-AirA and map-CableA for B series
|
||||
offInUse = 0
|
||||
maskInUse = 0x02
|
||||
;offNameLength = 1
|
||||
offProgramNr = 4
|
||||
offFavorites =
|
||||
offName = 12
|
||||
lenName = 12
|
||||
offChecksum = 27
|
||||
|
||||
[Analog:40]
|
||||
; map-AirA and map-CableA for C series
|
||||
offInUse = 1
|
||||
maskInUse = 0x01
|
||||
offSkip = 2
|
||||
maskSkip = 0x01
|
||||
offLock = 6
|
||||
maskLock = 0x01
|
||||
offTuned = 8
|
||||
maskTuned = 0x01
|
||||
offProgramNr = 9
|
||||
offSlotNr = 16
|
||||
offNameLength = 18
|
||||
offName = 20
|
||||
offFrequency = 32
|
||||
offFavorites = 38
|
||||
offChecksum = 39
|
||||
|
||||
[Analog:64]
|
||||
; map-AirA and map-CableA for D series
|
||||
offInUse = 1
|
||||
maskInUse = 0x01
|
||||
offSkip = 2
|
||||
maskSkip = 0x01
|
||||
offLock = 6
|
||||
maskLock = 0x01
|
||||
offTuned = 8
|
||||
maskTuned = 0x01
|
||||
offProgramNr = 9
|
||||
offSlotNr = 16
|
||||
offNameLength = 18
|
||||
offName = 20
|
||||
offFrequency = 32
|
||||
offFavorite = 36,40,44,48,52
|
||||
offChecksum = 63
|
||||
|
||||
[FineTune:20]
|
||||
offIsCable = 0
|
||||
maskIsCable = 0x01
|
||||
offSlotNr = 4
|
||||
offFrequency = 8
|
||||
|
||||
[FineTune_Digital:28]
|
||||
offIsCable = 0
|
||||
maskIsCable = 0x01
|
||||
offChannelTransponder = 4
|
||||
offFrequency = 16
|
||||
|
||||
[DvbCT:248]
|
||||
; map-AirD and map-CableD for B series
|
||||
offProgramNr = 0
|
||||
offVideoPid = 2
|
||||
offPcrPid = 4
|
||||
offServiceId = 10
|
||||
offStatus = 8
|
||||
offQam = 7
|
||||
offServiceType = 9
|
||||
offEncrypted = 23
|
||||
maskEncrypted = 0xff
|
||||
offSymbolRate = 32
|
||||
offLock = 244
|
||||
maskLock = 0x01
|
||||
offOriginalNetworkId = 12
|
||||
offNetworkId = 14
|
||||
offBouquet = 34
|
||||
offChannelTransponder = 26
|
||||
offLogicalProgramNr = 28
|
||||
offTransportStreamId = 36
|
||||
offName = 44
|
||||
lenName = 100
|
||||
offFavorites = 246
|
||||
offChecksum = 247
|
||||
offCodec =
|
||||
offServiceProviderId =
|
||||
offShortName =
|
||||
lenShortName =
|
||||
offVideoFormat =
|
||||
|
||||
[DvbCT:292]
|
||||
; map-AirD and map-CableD for C series
|
||||
offProgramNr = 0
|
||||
offVideoPid = 2
|
||||
offPcrPid = 4
|
||||
offServiceId = 6
|
||||
offStatus =
|
||||
offQam = 12
|
||||
offBandwidth = 14
|
||||
offServiceType = 15
|
||||
offCodec = 16
|
||||
offHRes = 20
|
||||
offVRes = 22
|
||||
offEncrypted = 24
|
||||
maskEncrypted = 0xff
|
||||
offFrameRate = 25
|
||||
offSymbolRate = 28
|
||||
offLock = 31
|
||||
maskLock = 0x01
|
||||
offOriginalNetworkId = 32
|
||||
offNetworkId = 34
|
||||
offServiceProviderId = 40
|
||||
offChannelTransponder = 42
|
||||
offLogicalProgramNr = 44
|
||||
offTransportStreamId = 48
|
||||
offName = 64
|
||||
lenName = 200
|
||||
offShortName = 264
|
||||
lenShortName = 18
|
||||
offVideoFormat = 282
|
||||
offFavorites = 289
|
||||
offChecksum = 291
|
||||
offBouquet =
|
||||
|
||||
|
||||
[DvbCT:320]
|
||||
; map-AirD and map-CableD for D and E series
|
||||
offProgramNr = 0
|
||||
offVideoPid = 2
|
||||
offPcrPid = 4
|
||||
offServiceId = 6
|
||||
offStatus =
|
||||
offQam = 12
|
||||
offBandwidth = 14
|
||||
offServiceType = 15
|
||||
offCodec = 16
|
||||
offHRes = 20
|
||||
offVRes = 22
|
||||
offEncrypted = 24
|
||||
maskEncrypted = 0xff
|
||||
offFrameRate = 25
|
||||
offSymbolRate = 28
|
||||
offLock = 31
|
||||
maskLock = 0x01
|
||||
offOriginalNetworkId = 32
|
||||
offNetworkId = 34
|
||||
offServiceProviderId = 40
|
||||
offChannelTransponder = 42
|
||||
offLogicalProgramNr = 44
|
||||
offTransportStreamId = 48
|
||||
offName = 64
|
||||
lenName = 200
|
||||
offShortName = 264
|
||||
lenShortName = 18
|
||||
offVideoFormat = 282
|
||||
offFavorites = 292,296,300,304,308
|
||||
offChecksum = 319
|
||||
offBouquet =
|
||||
|
||||
|
||||
[DvbS:144]
|
||||
; map-SateD for B and C Series
|
||||
offProgramNr = 0
|
||||
offVideoPid = 2
|
||||
offPcrPid = 4
|
||||
offInUse = 7
|
||||
maskInUse = 0x01
|
||||
offLock = 13
|
||||
maskLock = 0x01
|
||||
offServiceType = 14
|
||||
offServiceId = 16
|
||||
offTransponderNr = 18
|
||||
offSatelliteNr = 20
|
||||
offTransportStreamId = 24
|
||||
offOriginalNetworkId = 28
|
||||
offHRes = 32
|
||||
offVRes = 34
|
||||
offName = 36
|
||||
lenName = 100
|
||||
offEncrypted = 136
|
||||
maskEncrypted = 0x01
|
||||
offBouquet = 138
|
||||
offFavorites = 142
|
||||
offChecksum = 143
|
||||
offCodec =
|
||||
offSymbolRate =
|
||||
offNetworkId =
|
||||
offServiceProviderId =
|
||||
offChannelTransponder =
|
||||
offLogicalProgramNr =
|
||||
offShortName =
|
||||
lenShortName =
|
||||
offVideoFormat =
|
||||
|
||||
[DvbS:172]
|
||||
; map-SateD for D Series
|
||||
offProgramNr = 0
|
||||
offVideoPid = 2
|
||||
offPcrPid = 4
|
||||
offInUse = 7
|
||||
maskInUse = 0x01
|
||||
offLock = 13
|
||||
maskLock = 0x01
|
||||
offServiceType = 14
|
||||
offServiceId = 16
|
||||
offTransponderNr = 18
|
||||
offSatelliteNr = 20
|
||||
offTransportStreamId = 24
|
||||
offOriginalNetworkId = 28
|
||||
offHRes = 32
|
||||
offVRes = 34
|
||||
offName = 36
|
||||
lenName = 100
|
||||
offEncrypted = 136
|
||||
maskEncrypted = 0x01
|
||||
offBouquet = 138
|
||||
offFavorites = 140,144,148,152,156
|
||||
offChecksum = 171
|
||||
offCodec =
|
||||
offSymbolRate =
|
||||
offNetworkId =
|
||||
offServiceProviderId =
|
||||
offChannelTransponder =
|
||||
offLogicalProgramNr =
|
||||
offShortName =
|
||||
lenShortName =
|
||||
offVideoFormat =
|
||||
|
||||
[DvbS:168]
|
||||
; map-SateD for E Series
|
||||
offProgramNr = 0
|
||||
offVideoPid = 2
|
||||
offPcrPid = 4
|
||||
offInUse = 7
|
||||
maskInUse = 0x01
|
||||
offLock = 13
|
||||
maskLock = 0x01
|
||||
offServiceType = 14
|
||||
offServiceId = 16
|
||||
offTransponderNr = 18
|
||||
offSatelliteNr = 20
|
||||
offTransportStreamId = 24
|
||||
offOriginalNetworkId = 28
|
||||
offHRes = 32
|
||||
offVRes = 34
|
||||
offName = 36
|
||||
offEncrypted = 136
|
||||
maskEncrypted = 0x01
|
||||
lenName = 100
|
||||
offBouquet = 138
|
||||
offFavorites = 140,144,148,152,156
|
||||
offChecksum = 167
|
||||
offCodec =
|
||||
offSymbolRate =
|
||||
offNetworkId =
|
||||
offServiceProviderId =
|
||||
offChannelTransponder =
|
||||
offLogicalProgramNr =
|
||||
offShortName =
|
||||
lenShortName =
|
||||
offVideoFormat =
|
||||
|
||||
[AstraHDPlusD:212]
|
||||
; map-AstraHDPlusD for D and E Series
|
||||
offProgramNr = 0,20
|
||||
offVideoPid =
|
||||
offPcrPid =
|
||||
offInUse = 14
|
||||
maskInUse = 0xff
|
||||
offLock =
|
||||
maskLock = 0x01
|
||||
offServiceType = 14
|
||||
offServiceId = 16
|
||||
offTransponderNr = 18
|
||||
offSatelliteNr =
|
||||
offTransportStreamId = 36
|
||||
offOriginalNetworkId = 32
|
||||
offHRes =
|
||||
offVRes =
|
||||
offName = 48
|
||||
offEncrypted = 180
|
||||
maskEncrypted = 0x01
|
||||
lenName = 100
|
||||
offBouquet = 138
|
||||
offFavorites = 184,188,192,196,200
|
||||
offChecksum = 211
|
||||
offCodec =
|
||||
offSymbolRate =
|
||||
offNetworkId =
|
||||
offServiceProviderId =
|
||||
offChannelTransponder =
|
||||
offLogicalProgramNr =
|
||||
offShortName =
|
||||
lenShortName =
|
||||
offVideoFormat =
|
||||
63
ChanSort.Plugin.ScmFile/DvbCtChannelDataMapping.cs
Normal file
63
ChanSort.Plugin.ScmFile/DvbCtChannelDataMapping.cs
Normal file
@@ -0,0 +1,63 @@
|
||||
using System.Text;
|
||||
using ChanSort.Api;
|
||||
|
||||
namespace ChanSort.Plugin.ScmFile
|
||||
{
|
||||
internal class DvbCtChannelDataMapping : DvbChannelMappingBase
|
||||
{
|
||||
const string offChecksum = "offChecksum";
|
||||
|
||||
#region ctor()
|
||||
public DvbCtChannelDataMapping(IniFile.Section settings, int dataLength)
|
||||
: base(settings, dataLength, new UnicodeEncoding(true, false))
|
||||
{
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Checksum
|
||||
public byte Checksum
|
||||
{
|
||||
get { return this.GetByte(offChecksum); }
|
||||
set { this.SetByte(offChecksum, value); }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Favorites
|
||||
public override Favorites Favorites
|
||||
{
|
||||
get
|
||||
{
|
||||
if (this.DataLength < 320)
|
||||
return base.Favorites;
|
||||
|
||||
byte fav = 0;
|
||||
byte mask = 0x01;
|
||||
foreach (int off in this.GetOffsets(offFavorites))
|
||||
{
|
||||
if (this.GetByte(off) == 1)
|
||||
fav |= mask;
|
||||
mask <<= 1;
|
||||
}
|
||||
return (Favorites)fav;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (this.DataLength < 320)
|
||||
{
|
||||
base.Favorites = value;
|
||||
return;
|
||||
}
|
||||
|
||||
int intValue = (int)value;
|
||||
foreach (int off in this.GetOffsets(offFavorites))
|
||||
{
|
||||
if ((intValue & 1) != 0)
|
||||
this.SetByte(off, 1);
|
||||
intValue >>= 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
83
ChanSort.Plugin.ScmFile/DvbSChannelDataMapping.cs
Normal file
83
ChanSort.Plugin.ScmFile/DvbSChannelDataMapping.cs
Normal file
@@ -0,0 +1,83 @@
|
||||
using System.Text;
|
||||
using ChanSort.Api;
|
||||
|
||||
namespace ChanSort.Plugin.ScmFile
|
||||
{
|
||||
internal class DvbSChannelDataMapping : DvbChannelMappingBase
|
||||
{
|
||||
private const string offChecksum = "offChecksum";
|
||||
private const string offTransponderNr = "offTransponderNr";
|
||||
private const string offSatelliteNr = "offSatelliteNr";
|
||||
private readonly bool hasExtendedFavorites;
|
||||
|
||||
#region ctor()
|
||||
public DvbSChannelDataMapping(IniFile.Section settings, int dataLength)
|
||||
: base(settings, dataLength, new UnicodeEncoding(true, false))
|
||||
{
|
||||
this.hasExtendedFavorites = dataLength >= 168;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region TransponderNr
|
||||
public ushort TransponderNr
|
||||
{
|
||||
get { return this.GetWord(offTransponderNr); }
|
||||
set { this.SetWord(offTransponderNr, value); }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region SatelliteNr
|
||||
public ushort SatelliteNr
|
||||
{
|
||||
get { return this.GetWord(offSatelliteNr); }
|
||||
set { this.SetWord(offSatelliteNr, value); }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Favorites
|
||||
public override Favorites Favorites
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!this.hasExtendedFavorites)
|
||||
return base.Favorites;
|
||||
|
||||
byte fav = 0;
|
||||
byte mask = 0x01;
|
||||
foreach (int off in this.GetOffsets(offFavorites))
|
||||
{
|
||||
if (this.GetDword(off) == 1)
|
||||
fav |= mask;
|
||||
mask <<= 1;
|
||||
}
|
||||
return (Favorites)fav;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!this.hasExtendedFavorites)
|
||||
{
|
||||
base.Favorites = value;
|
||||
return;
|
||||
}
|
||||
|
||||
int intValue = (int)value;
|
||||
foreach (int off in this.GetOffsets(offFavorites))
|
||||
{
|
||||
if ((intValue & 1) != 0)
|
||||
this.SetDword(off, 1);
|
||||
intValue >>= 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
#region Checksum
|
||||
public byte Checksum
|
||||
{
|
||||
get { return this.GetByte(offChecksum); }
|
||||
set { this.SetByte(offChecksum, value); }
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
34
ChanSort.Plugin.ScmFile/ModelConstants.cs
Normal file
34
ChanSort.Plugin.ScmFile/ModelConstants.cs
Normal file
@@ -0,0 +1,34 @@
|
||||
using ChanSort.Api;
|
||||
|
||||
namespace ChanSort.Plugin.ScmFile
|
||||
{
|
||||
internal class ModelConstants
|
||||
{
|
||||
public readonly int dvbsSatelliteLength;
|
||||
public readonly int dvbsTransponderLength;
|
||||
public readonly int dvbsChannelLength;
|
||||
public readonly int dvbtChannelLength;
|
||||
public readonly int avbtChannelLength;
|
||||
public readonly int hdplusChannelLength;
|
||||
public readonly int avbtFineTuneLength;
|
||||
public readonly int dvbtFineTuneLength;
|
||||
public readonly Favorites supportedFavorites;
|
||||
|
||||
public ModelConstants(IniFile.Section iniSection)
|
||||
{
|
||||
this.avbtChannelLength = iniSection.GetInt("map-AirA");
|
||||
this.dvbtChannelLength = iniSection.GetInt("map-AirD");
|
||||
this.dvbsChannelLength = iniSection.GetInt("map-SateD");
|
||||
this.hdplusChannelLength = iniSection.GetInt("map-AstraHDPlusD");
|
||||
this.dvbsSatelliteLength = iniSection.GetInt("SatDataBase.dat");
|
||||
this.dvbsTransponderLength = iniSection.GetInt("TransponderDataBase.dat");
|
||||
this.avbtFineTuneLength = iniSection.GetInt("FineTune");
|
||||
this.dvbtFineTuneLength = iniSection.GetInt("FineTune_Digital");
|
||||
int numFavorites = iniSection.GetInt("Favorites");
|
||||
int mask = 0;
|
||||
for (int i = 0; i < numFavorites; i++)
|
||||
mask = (mask << 1) | 1;
|
||||
this.supportedFavorites = (Favorites)mask;
|
||||
}
|
||||
}
|
||||
}
|
||||
36
ChanSort.Plugin.ScmFile/Properties/AssemblyInfo.cs
Normal file
36
ChanSort.Plugin.ScmFile/Properties/AssemblyInfo.cs
Normal file
@@ -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.Plugin.ScmFile")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("ChanSort.Plugin.ScmFile")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2012")]
|
||||
[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("6f59ac5a-afba-42e3-a63e-c74793c15980")]
|
||||
|
||||
// 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")]
|
||||
740
ChanSort.Plugin.ScmFile/ScmSerializer.cs
Normal file
740
ChanSort.Plugin.ScmFile/ScmSerializer.cs
Normal file
@@ -0,0 +1,740 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
using ChanSort.Api;
|
||||
using ICSharpCode.SharpZipLib.Zip;
|
||||
|
||||
namespace ChanSort.Plugin.ScmFile
|
||||
{
|
||||
class ScmSerializer : SerializerBase
|
||||
{
|
||||
private readonly Dictionary<string, ModelConstants> modelConstants = new Dictionary<string, ModelConstants>();
|
||||
private readonly MappingPool<AnalogChannelDataMapping> analogMappings = new MappingPool<AnalogChannelDataMapping>("Analog");
|
||||
private readonly MappingPool<DvbCtChannelDataMapping> dvbctMappings = new MappingPool<DvbCtChannelDataMapping>("DVB-C/T");
|
||||
private readonly MappingPool<DvbSChannelDataMapping> dvbsMappings = new MappingPool<DvbSChannelDataMapping>("DVB-S");
|
||||
private readonly MappingPool<DvbSChannelDataMapping> hdplusMappings = new MappingPool<DvbSChannelDataMapping>("AstraHDPlus");
|
||||
private readonly MappingPool<DataMapping> analogFineTuneMappings = new MappingPool<DataMapping>("FineTune");
|
||||
private readonly ChannelList avbtChannels = new ChannelList(SignalSource.AnalogT, SignalType.Mixed);
|
||||
private readonly ChannelList avbcChannels = new ChannelList(SignalSource.AnalogC, SignalType.Mixed);
|
||||
private readonly ChannelList dvbcChannels = new ChannelList(SignalSource.DvbC, SignalType.Mixed);
|
||||
private readonly ChannelList dvbtChannels = new ChannelList(SignalSource.DvbT, SignalType.Mixed);
|
||||
private readonly ChannelList dvbsChannels = new ChannelList(SignalSource.DvbS, SignalType.Mixed);
|
||||
private readonly ChannelList hdplusChannels = new ChannelList(SignalSource.HdPlusD, SignalType.Mixed);
|
||||
private readonly Dictionary<int, decimal> avbtFrequency = new Dictionary<int, decimal>();
|
||||
private readonly Dictionary<int, decimal> avbcFrequency = new Dictionary<int, decimal>();
|
||||
private byte[] avbtFileContent;
|
||||
private byte[] avbcFileContent;
|
||||
private byte[] dvbtFileContent;
|
||||
private byte[] dvbcFileContent;
|
||||
private byte[] dvbsFileContent;
|
||||
private byte[] hdplusFileContent;
|
||||
private UnsortedChannelMode unsortedChannelMode;
|
||||
private ModelConstants c;
|
||||
|
||||
#region ctor()
|
||||
public ScmSerializer(string inputFile) : base(inputFile)
|
||||
{
|
||||
this.ReadConfigurationFromIniFile();
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region DisplayName
|
||||
public override string DisplayName { get { return "Samsung *.scm Loader"; } }
|
||||
#endregion
|
||||
|
||||
#region ReadConfigurationFromIniFile()
|
||||
private void ReadConfigurationFromIniFile()
|
||||
{
|
||||
string iniFile = Assembly.GetExecutingAssembly().Location.Replace(".dll", ".ini");
|
||||
IniFile ini = new IniFile(iniFile);
|
||||
foreach (var section in ini.Sections)
|
||||
{
|
||||
int idx = section.Name.IndexOf(":");
|
||||
int len=0;
|
||||
if (idx >= 0)
|
||||
int.TryParse(section.Name.Substring(idx + 1), out len);
|
||||
|
||||
if (section.Name.StartsWith("Series:"))
|
||||
modelConstants.Add(section.Name, new ModelConstants(section));
|
||||
else if (section.Name.StartsWith("Analog:"))
|
||||
analogMappings.AddMapping(new AnalogChannelDataMapping(section, len));
|
||||
else if (section.Name.StartsWith("DvbCT:"))
|
||||
dvbctMappings.AddMapping(new DvbCtChannelDataMapping(section, len));
|
||||
else if (section.Name.StartsWith("DvbS:"))
|
||||
dvbsMappings.AddMapping(new DvbSChannelDataMapping(section, len));
|
||||
else if (section.Name.StartsWith("FineTune:"))
|
||||
analogFineTuneMappings.AddMapping(new DataMapping(section, len, null));
|
||||
else if (section.Name.StartsWith("AstraHDPlusD:"))
|
||||
hdplusMappings.AddMapping(new DvbSChannelDataMapping(section, len));
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Load()
|
||||
public override void Load()
|
||||
{
|
||||
using (ZipFile zip = new ZipFile(this.FileName))
|
||||
{
|
||||
DetectModelConstants(zip);
|
||||
DataRoot.SupportedFavorites = c.supportedFavorites;
|
||||
|
||||
ReadAnalogFineTuning(zip);
|
||||
ReadAnalogChannels(zip, "map-AirA", this.avbtChannels, out this.avbtFileContent, this.avbtFrequency);
|
||||
ReadAnalogChannels(zip, "map-CableA", this.avbcChannels, out this.avbcFileContent, this.avbcFrequency);
|
||||
ReadDvbctChannels(zip, "map-AirD", this.dvbtChannels, out this.dvbtFileContent);
|
||||
ReadDvbctChannels(zip, "map-CableD", this.dvbcChannels, out this.dvbcFileContent);
|
||||
ReadSatellites(zip);
|
||||
ReadTransponder(zip, "TransponderDataBase.dat");
|
||||
ReadTransponder(zip, "UserTransponderDataBase.dat");
|
||||
ReadDvbsChannels(zip);
|
||||
ReadAstraHdPlusChannels(zip);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region DetectModelConstants()
|
||||
private void DetectModelConstants(ZipFile zip)
|
||||
{
|
||||
if (DetectModelFromCloneInfoFile(zip)) return;
|
||||
if (DetectModelFromContentFileLengths(zip)) return;
|
||||
if (DetectModelFromFileName()) return;
|
||||
throw new IOException("Unable to determine TV model from file content or name");
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region DetectModelFromFileName()
|
||||
private bool DetectModelFromFileName()
|
||||
{
|
||||
string file = Path.GetFileName(this.FileName);
|
||||
System.Text.RegularExpressions.Regex regex =
|
||||
new System.Text.RegularExpressions.Regex("channel_list_[A-Z]{2}[0-9]{2}([A-Z])[0-9A-Z]+_[0-9]+\\.scm");
|
||||
var match = regex.Match(file);
|
||||
if (match.Success)
|
||||
{
|
||||
string series = match.Groups[1].Value;
|
||||
if (this.modelConstants.TryGetValue("Series:" + series, out this.c))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region DetectModelFromCloneInfoFile()
|
||||
private bool DetectModelFromCloneInfoFile(ZipFile zip)
|
||||
{
|
||||
byte[] cloneInfo = ReadFileContent(zip, "CloneInfo");
|
||||
if (cloneInfo == null)
|
||||
{
|
||||
this.c = this.modelConstants["Series:B"];
|
||||
return true;
|
||||
}
|
||||
|
||||
if (cloneInfo.Length >= 9)
|
||||
{
|
||||
char series = (char) cloneInfo[8];
|
||||
if (this.modelConstants.TryGetValue("Series:" + series, out this.c))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region DetectModelFromContentFileLengths()
|
||||
private bool DetectModelFromContentFileLengths(ZipFile zip)
|
||||
{
|
||||
string[] candidates = new[]
|
||||
{
|
||||
DetectModelFromAirAOrCableA(zip),
|
||||
DetectModelFromAirDOrCableD(zip),
|
||||
DetectModelFromSateD(zip),
|
||||
DetectModelFromTranspoderDatabase(zip)
|
||||
};
|
||||
|
||||
string validCandidates = "BCDE";
|
||||
foreach (var candidateList in candidates)
|
||||
{
|
||||
if (candidateList == null)
|
||||
continue;
|
||||
string newValidCandidats = "";
|
||||
foreach (var candidate in candidateList)
|
||||
{
|
||||
if (validCandidates.Contains(candidate))
|
||||
newValidCandidats += candidate;
|
||||
}
|
||||
validCandidates = newValidCandidats;
|
||||
}
|
||||
|
||||
if (validCandidates.Length != 1)
|
||||
return false;
|
||||
|
||||
this.modelConstants.TryGetValue("Series:" + validCandidates, out this.c);
|
||||
return true;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region DetectModelFromAirAOrCableA()
|
||||
private string DetectModelFromAirAOrCableA(ZipFile zip)
|
||||
{
|
||||
var entry = zip.GetEntry("map-AirA") ?? zip.GetEntry("map-CableA");
|
||||
if (entry == null)
|
||||
return null;
|
||||
|
||||
var candidates = "";
|
||||
if (entry.Size % 28000 == 0)
|
||||
candidates += "B";
|
||||
if (entry.Size % 40000 == 0)
|
||||
candidates += "C";
|
||||
if (entry.Size % 64000 == 0)
|
||||
candidates += "DE";
|
||||
return candidates;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region DetectModelFromAirDOrCableD()
|
||||
private string DetectModelFromAirDOrCableD(ZipFile zip)
|
||||
{
|
||||
var entry = zip.GetEntry("map-AirD") ?? zip.GetEntry("map-CableD");
|
||||
if (entry == null)
|
||||
return null;
|
||||
|
||||
var candidates = "";
|
||||
if (entry.Size % 248 == 0)
|
||||
candidates += "B";
|
||||
if (entry.Size % 292 == 0)
|
||||
candidates += "C";
|
||||
if (entry.Size % 320 == 0)
|
||||
candidates += "DE";
|
||||
return candidates;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region DetectModelFromSateD()
|
||||
private string DetectModelFromSateD(ZipFile zip)
|
||||
{
|
||||
var entry = zip.GetEntry("map-SateD");
|
||||
if (entry == null)
|
||||
return null;
|
||||
|
||||
var candidates = "";
|
||||
if (entry.Size % 144 == 0)
|
||||
candidates += "BC";
|
||||
if (entry.Size % 172 == 0)
|
||||
candidates += "D";
|
||||
if (entry.Size % 168 == 0)
|
||||
candidates += "E";
|
||||
return candidates;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region DetectModelFromTranspoderDatabase()
|
||||
private string DetectModelFromTranspoderDatabase(ZipFile zip)
|
||||
{
|
||||
var entry = zip.GetEntry("TransponderDatabase.dat");
|
||||
if (entry == null)
|
||||
return null;
|
||||
|
||||
var size = entry.Size - 4;
|
||||
var candidates = "";
|
||||
if (size%49 == 0)
|
||||
candidates += "B";
|
||||
if (size%45 == 0)
|
||||
candidates += "CDE";
|
||||
return candidates;
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
#region ReadAnalogFineTuning()
|
||||
private unsafe void ReadAnalogFineTuning(ZipFile zip)
|
||||
{
|
||||
int entrySize = c.avbtFineTuneLength;
|
||||
if (entrySize == 0)
|
||||
return;
|
||||
|
||||
byte[] data = ReadFileContent(zip, "FineTune");
|
||||
if (data == null)
|
||||
return;
|
||||
|
||||
var mapping = analogFineTuneMappings.GetMapping(c.avbtFineTuneLength);
|
||||
fixed (byte* ptr = data)
|
||||
{
|
||||
mapping.DataPtr = ptr;
|
||||
int count = data.Length / mapping.DataLength;
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
bool isCable = mapping.GetFlag("offIsCable", "maskIsCable"); // HACK: this is just a guess
|
||||
int slot = mapping.GetWord("offSlotNr");
|
||||
float freq = mapping.GetFloat("offFrequency");
|
||||
var dict = isCable ? avbcFrequency : avbtFrequency;
|
||||
dict[slot] = (decimal)freq;
|
||||
mapping.Next();
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ReadAnalogChannels()
|
||||
private unsafe void ReadAnalogChannels(ZipFile zip, string fileName, ChannelList list, out byte[] data, Dictionary<int,decimal> freq)
|
||||
{
|
||||
data = null;
|
||||
int entrySize = c.avbtChannelLength;
|
||||
if (entrySize == 0)
|
||||
return;
|
||||
|
||||
data = ReadFileContent(zip, fileName);
|
||||
if (data == null)
|
||||
return;
|
||||
|
||||
this.DataRoot.AddChannelList(list);
|
||||
fixed (byte* ptr = data)
|
||||
{
|
||||
var rawChannel = analogMappings.GetMapping(entrySize);
|
||||
rawChannel.DataPtr = ptr;
|
||||
int count = data.Length / entrySize;
|
||||
|
||||
for (int slotIndex = 0; slotIndex < count; slotIndex++)
|
||||
{
|
||||
MapAnalogChannel(rawChannel, slotIndex, list, freq);
|
||||
rawChannel.DataPtr += entrySize;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region MapAnalogChannel()
|
||||
private unsafe void MapAnalogChannel(AnalogChannelDataMapping rawChannel, int slotIndex, ChannelList list, Dictionary<int,decimal> freq)
|
||||
{
|
||||
if (!rawChannel.InUse)
|
||||
return;
|
||||
|
||||
if (rawChannel.Checksum != CalcChecksum(rawChannel.DataPtr, c.avbtChannelLength))
|
||||
this.DataRoot.Warnings.AppendFormat("{0}: Incorrect checksum for channel index {1}\r\n", list, slotIndex);
|
||||
|
||||
ChannelInfo ci = new ChannelInfo(list.SignalSource, list.SignalType, slotIndex, rawChannel.ProgramNr, rawChannel.Name);
|
||||
ci.FreqInMhz = (decimal)Math.Round(rawChannel.Frequency, 2);
|
||||
if (ci.FreqInMhz == 0)
|
||||
ci.FreqInMhz = freq.TryGet(ci.RecordIndex);
|
||||
if (ci.FreqInMhz == 0)
|
||||
ci.FreqInMhz = slotIndex;
|
||||
ci.Lock = rawChannel.Lock;
|
||||
ci.Skip = rawChannel.Skip;
|
||||
ci.Favorites = rawChannel.Favorites;
|
||||
|
||||
this.DataRoot.AddChannel(list, ci);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region ReadDvbctChannels()
|
||||
private unsafe void ReadDvbctChannels(ZipFile zip, string fileName, ChannelList list, out byte[] data)
|
||||
{
|
||||
data = null;
|
||||
int entrySize = c.dvbtChannelLength;
|
||||
if (entrySize == 0)
|
||||
return;
|
||||
|
||||
data = ReadFileContent(zip, fileName);
|
||||
if (data == null)
|
||||
return;
|
||||
|
||||
this.DataRoot.AddChannelList(list);
|
||||
fixed (byte* ptr = data)
|
||||
{
|
||||
DvbCtChannelDataMapping rawChannel = dvbctMappings.GetMapping(entrySize);
|
||||
rawChannel.DataPtr = ptr;
|
||||
int count = data.Length / entrySize;
|
||||
for (int slotIndex = 0; slotIndex < count; slotIndex++)
|
||||
{
|
||||
MapDvbctChannel(rawChannel, slotIndex, list);
|
||||
rawChannel.Next();
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region MapDvbctChannel()
|
||||
private unsafe void MapDvbctChannel(DvbCtChannelDataMapping rawChannel, int slotIndex, ChannelList list)
|
||||
{
|
||||
if (rawChannel.ProgramNr == 0)
|
||||
return;
|
||||
if (rawChannel.Checksum != CalcChecksum(rawChannel.DataPtr, rawChannel.DataLength))
|
||||
this.DataRoot.Warnings.AppendFormat("{0}: Incorrect checksum for channel index {1}\r\n", list, slotIndex);
|
||||
|
||||
ChannelInfo ci = new ChannelInfo(list.SignalSource, list.SignalType, slotIndex, rawChannel.ProgramNr, rawChannel.Name);
|
||||
ci.VideoPid = rawChannel.VideoPid;
|
||||
ci.ServiceId = rawChannel.ServiceId;
|
||||
ci.ServiceType = rawChannel.ServiceType;
|
||||
ci.TransportStreamId = rawChannel.TransportStreamId;
|
||||
ci.FreqInMhz = LookupData.Instance.GetDvbtTransponderFrequency(rawChannel.ChannelOrTransponder);
|
||||
ci.OriginalNetworkId = rawChannel.OriginalNetworkId;
|
||||
ci.Favorites = rawChannel.Favorites;
|
||||
ci.Lock = rawChannel.Lock;
|
||||
ci.ShortName = rawChannel.ShortName;
|
||||
ci.SymbolRate = rawChannel.SymbolRate;
|
||||
ci.Encrypted = rawChannel.Encrypted;
|
||||
ci.ChannelOrTransponder = rawChannel.ChannelOrTransponder.ToString();
|
||||
|
||||
this.DataRoot.AddChannel(list, ci);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region ReadSatellites()
|
||||
private unsafe void ReadSatellites(ZipFile zip)
|
||||
{
|
||||
byte[] data = ReadFileContent(zip, "SatDataBase.dat");
|
||||
if (data == null)
|
||||
return;
|
||||
|
||||
var utf16Encoding = new UnicodeEncoding(false, false);
|
||||
fixed (byte* ptr = data)
|
||||
{
|
||||
int count = data.Length/this.c.dvbsSatelliteLength;
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
SatDataBase* sat = (SatDataBase*)(ptr + 4 + i * this.c.dvbsSatelliteLength);
|
||||
if (sat->Magic0x55 != 0x55)
|
||||
throw new IOException("Unknown SatDataBase.dat format");
|
||||
string name = utf16Encoding.GetString((byte*)sat->Name, 64*2);
|
||||
string location = string.Format("{0}.{1}{2}", sat->LongitudeTimes10/10, sat->LongitudeTimes10%10, sat->IsWest != 0 ? "W" : "E");
|
||||
|
||||
Satellite satellite = new Satellite(sat->SatelliteNr);
|
||||
satellite.Name = name;
|
||||
satellite.OrbitalPosition = location;
|
||||
this.DataRoot.Satellites.Add(sat->SatelliteNr, satellite);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ReadTransponder()
|
||||
|
||||
private unsafe void ReadTransponder(ZipFile zip, string fileName)
|
||||
{
|
||||
byte[] data = ReadFileContent(zip, fileName);
|
||||
if (data == null)
|
||||
return;
|
||||
|
||||
fixed (byte* ptr = data)
|
||||
{
|
||||
int count = data.Length/c.dvbsTransponderLength;
|
||||
for (int i=0; i<count; i++)
|
||||
{
|
||||
int baseOffset = 4 + i*c.dvbsTransponderLength;
|
||||
TransponderDataBase* trans = (TransponderDataBase*) (ptr + baseOffset);
|
||||
if (trans->Magic0x55 == 0)
|
||||
continue;
|
||||
|
||||
if (trans->TransponderNr == 0)
|
||||
continue;
|
||||
|
||||
var sat = this.DataRoot.Satellites.TryGet(trans->SatelliteNr);
|
||||
if (sat == null)
|
||||
{
|
||||
DataRoot.Warnings.Append(string.Format("Transponder #{0} references invalid satellite #{1}",
|
||||
trans->TransponderNr, trans->SatelliteNr));
|
||||
continue;
|
||||
}
|
||||
Transponder transponder = new Transponder(trans->TransponderNr);
|
||||
transponder.FrequencyInMhz = (uint) (trans->Frequency/1000);
|
||||
transponder.Polarity = trans->IsVerticalPolarity == 1 ? 'V' : 'H';
|
||||
transponder.SymbolRate = trans->SymbolRate/1000;
|
||||
this.DataRoot.AddTransponder(sat, transponder);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ReadDvbsChannels()
|
||||
private unsafe void ReadDvbsChannels(ZipFile zip)
|
||||
{
|
||||
this.dvbsFileContent = ReadFileContent(zip, "map-SateD");
|
||||
if (this.dvbsFileContent == null)
|
||||
return;
|
||||
|
||||
this.DataRoot.AddChannelList(this.dvbsChannels);
|
||||
fixed (byte* ptr = this.dvbsFileContent)
|
||||
{
|
||||
int entrySize = c.dvbsChannelLength;
|
||||
int count = this.dvbsFileContent.Length/entrySize;
|
||||
DvbSChannelDataMapping mapping = dvbsMappings.GetMapping(entrySize);
|
||||
mapping.DataPtr = ptr;
|
||||
for (int slotIndex = 0; slotIndex < count; slotIndex++)
|
||||
{
|
||||
MapDvbsChannel(this.dvbsChannels, mapping, slotIndex);
|
||||
mapping.Next();
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region MapDvbsChannel()
|
||||
private void MapDvbsChannel(ChannelList channelList, DvbSChannelDataMapping rawChannel, int slotIndex)
|
||||
{
|
||||
if (!rawChannel.InUse)
|
||||
return;
|
||||
|
||||
Transponder transponder = this.DataRoot.Transponder.TryGet(rawChannel.TransponderNr);
|
||||
Satellite satellite = transponder == null ? null : transponder.Satellite;
|
||||
string satPosition = satellite != null ? satellite.OrbitalPosition : "#" + rawChannel.SatelliteNr;
|
||||
|
||||
string satName = satellite != null ? satellite.Name : null;
|
||||
|
||||
ChannelInfo ci = new ChannelInfo(channelList.SignalSource, SignalType.Mixed, slotIndex, rawChannel.ProgramNr, rawChannel.Name);
|
||||
ci.Satellite = satName;
|
||||
ci.SatPosition = satPosition;
|
||||
ci.VideoPid = rawChannel.VideoPid;
|
||||
ci.ServiceId = rawChannel.ServiceId;
|
||||
ci.ServiceType = rawChannel.ServiceType;
|
||||
ci.TransportStreamId = rawChannel.TransportStreamId;
|
||||
ci.OriginalNetworkId = rawChannel.OriginalNetworkId;
|
||||
ci.Favorites = rawChannel.Favorites;
|
||||
ci.Encrypted = rawChannel.Encrypted;
|
||||
ci.Lock = rawChannel.Lock;
|
||||
ci.ShortName = rawChannel.ShortName;
|
||||
|
||||
if (transponder != null)
|
||||
{
|
||||
ci.Transponder = transponder;
|
||||
ci.FreqInMhz = transponder.FrequencyInMhz;
|
||||
ci.ChannelOrTransponder = this.GetTransponderChannelNumber((ushort)transponder.FrequencyInMhz);
|
||||
ci.SymbolRate = transponder.SymbolRate;
|
||||
ci.Polarity = transponder.Polarity;
|
||||
}
|
||||
|
||||
this.DataRoot.AddChannel(channelList, ci);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region GetTransponderChannelNumber()
|
||||
private string GetTransponderChannelNumber(ushort frequency)
|
||||
{
|
||||
int nr = LookupData.Instance.GetTransponderNumber(frequency);
|
||||
return nr <= 0 ? "" : nr.ToString("d3");
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
#region ReadAstraHdPlusChannels()
|
||||
private unsafe void ReadAstraHdPlusChannels(ZipFile zip)
|
||||
{
|
||||
this.hdplusFileContent = ReadFileContent(zip, "map-AstraHDPlusD");
|
||||
if (hdplusFileContent == null || c.hdplusChannelLength == 0)
|
||||
return;
|
||||
|
||||
this.DataRoot.AddChannelList(this.hdplusChannels);
|
||||
fixed (byte* ptr = hdplusFileContent)
|
||||
{
|
||||
int entrySize = c.hdplusChannelLength;
|
||||
int count = hdplusFileContent.Length / entrySize;
|
||||
DvbSChannelDataMapping mapping = hdplusMappings.GetMapping(entrySize);
|
||||
mapping.DataPtr = ptr;
|
||||
for (int slotIndex = 0; slotIndex < count; slotIndex++)
|
||||
{
|
||||
MapDvbsChannel(this.hdplusChannels, mapping, slotIndex);
|
||||
mapping.Next();
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
#region ReadFileContent()
|
||||
private static byte[] ReadFileContent(ZipFile zip, string fileName)
|
||||
{
|
||||
var entry = zip.GetEntry(fileName);
|
||||
if (entry == null)
|
||||
return null;
|
||||
byte[] data = new byte[entry.Size];
|
||||
using (var stream = zip.GetInputStream(entry))
|
||||
{
|
||||
stream.Read(data, 0, data.Length);
|
||||
}
|
||||
return data;
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
private unsafe delegate void UpdateFunc(ChannelInfo channelInfo, byte* fileContent);
|
||||
|
||||
#region Save()
|
||||
public override unsafe void Save(string tvOutputFile, string csvOutputFile, UnsortedChannelMode unsortedMode)
|
||||
{
|
||||
this.unsortedChannelMode = unsortedMode;
|
||||
if (tvOutputFile != this.FileName)
|
||||
{
|
||||
File.Copy(this.FileName, tvOutputFile);
|
||||
this.FileName = tvOutputFile;
|
||||
}
|
||||
using (ZipFile zip = new ZipFile(tvOutputFile))
|
||||
{
|
||||
zip.BeginUpdate();
|
||||
this.SaveChannels(zip, "map-AirA", this.avbtChannels, this.UpdateAnalogChannel, ref this.avbtFileContent);
|
||||
this.SaveChannels(zip, "map-CableA", this.avbcChannels, this.UpdateAnalogChannel, ref this.avbcFileContent);
|
||||
this.SaveChannels(zip, "map-AirD", this.dvbtChannels, this.UpdateDvbctChannel, ref this.dvbtFileContent);
|
||||
this.SaveChannels(zip, "map-CableD", this.dvbcChannels, this.UpdateDvbctChannel, ref this.dvbcFileContent);
|
||||
this.SaveChannels(zip, "map-SateD", this.dvbsChannels, this.UpdateDvbsChannel, ref this.dvbsFileContent);
|
||||
this.SaveChannels(zip, "map-AstraHDPlusD", this.hdplusChannels, this.UpdateHdPlusChannel, ref this.hdplusFileContent);
|
||||
zip.CommitUpdate();
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region SaveChannels()
|
||||
private unsafe void SaveChannels(ZipFile zip, string fileName, ChannelList channels, UpdateFunc updateChannel, ref byte[] fileContent)
|
||||
{
|
||||
if (fileContent == null)
|
||||
return;
|
||||
zip.Delete(fileName);
|
||||
|
||||
string tempFilePath = Path.GetTempFileName();
|
||||
using (var stream = new FileStream(tempFilePath, FileMode.OpenOrCreate, FileAccess.ReadWrite))
|
||||
{
|
||||
this.WriteChannels(channels, updateChannel, fileContent, stream);
|
||||
stream.Flush();
|
||||
stream.Seek(0, SeekOrigin.Begin);
|
||||
int size = (int)new FileInfo(tempFilePath).Length;
|
||||
fileContent = new byte[size];
|
||||
stream.Read(fileContent, 0, size);
|
||||
}
|
||||
|
||||
zip.Add(tempFilePath, fileName);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region WriteChannels()
|
||||
private unsafe void WriteChannels(ChannelList list, UpdateFunc updateChannel, byte[] fileContent, FileStream stream)
|
||||
{
|
||||
fixed (byte* ptr = fileContent)
|
||||
{
|
||||
int maxSlot = 0;
|
||||
foreach (var channel in list.Channels.OrderBy(ChannelComparer))
|
||||
{
|
||||
if (channel.RecordIndex < 0) // channel only exists in reference list
|
||||
continue;
|
||||
|
||||
int newProgNr;
|
||||
if (channel.NewProgramNr == 0 && this.unsortedChannelMode == UnsortedChannelMode.Hide)
|
||||
newProgNr = 0;
|
||||
else
|
||||
{
|
||||
newProgNr = channel.NewProgramNr != 0 ? channel.NewProgramNr : ++maxSlot;
|
||||
if (newProgNr > maxSlot)
|
||||
maxSlot = channel.NewProgramNr;
|
||||
}
|
||||
|
||||
var channels = new List<ChannelInfo>();
|
||||
channels.Add(channel);
|
||||
channels.AddRange(channel.Duplicates);
|
||||
foreach (var channelInstance in channels)
|
||||
{
|
||||
channelInstance.OldProgramNr = newProgNr;
|
||||
updateChannel(channelInstance, ptr);
|
||||
}
|
||||
}
|
||||
|
||||
stream.Write(fileContent, 0, fileContent.Length);
|
||||
#if false
|
||||
if (count == 0 || count%padToPageSize != 0)
|
||||
{
|
||||
byte[] padding = new byte[(padToPageSize - count%padToPageSize) * entrySize];
|
||||
stream.Write(padding, 0, padding.Length);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region UpdateAnalogChannel()
|
||||
private unsafe void UpdateAnalogChannel(ChannelInfo channel, byte* ptr)
|
||||
{
|
||||
AnalogChannelDataMapping raw = analogMappings.GetMapping(c.avbtChannelLength);
|
||||
int startOffset = channel.RecordIndex * raw.DataLength;
|
||||
raw.DataPtr = ptr + startOffset;
|
||||
raw.ProgramNr = (ushort)channel.OldProgramNr;
|
||||
raw.Favorites = channel.Favorites;
|
||||
raw.Lock = channel.Lock;
|
||||
raw.Checksum = CalcChecksum(raw.DataPtr, raw.DataLength);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region UpdateDvbctChannel()
|
||||
private unsafe void UpdateDvbctChannel(ChannelInfo channel, byte* ptr)
|
||||
{
|
||||
DvbCtChannelDataMapping raw = dvbctMappings.GetMapping(c.dvbtChannelLength);
|
||||
int startOffset = channel.RecordIndex * raw.DataLength;
|
||||
raw.DataPtr = ptr + startOffset;
|
||||
raw.ProgramNr = (ushort)channel.OldProgramNr;
|
||||
raw.Favorites = channel.Favorites;
|
||||
raw.Lock = channel.Lock;
|
||||
raw.Checksum = CalcChecksum(raw.DataPtr, raw.DataLength);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region UpdateDvbsChannel()
|
||||
private unsafe void UpdateDvbsChannel(ChannelInfo channel, byte* ptr)
|
||||
{
|
||||
DvbSChannelDataMapping raw = dvbsMappings.GetMapping(c.dvbsChannelLength);
|
||||
int startOffset = channel.RecordIndex*raw.DataLength;
|
||||
raw.DataPtr = (ptr + startOffset);
|
||||
raw.ProgramNr = (ushort)channel.OldProgramNr;
|
||||
raw.Favorites = channel.Favorites;
|
||||
raw.Lock = channel.Lock;
|
||||
raw.Checksum = CalcChecksum(raw.DataPtr, raw.DataLength);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region UpdateHdPlusChannel()
|
||||
private unsafe void UpdateHdPlusChannel(ChannelInfo channel, byte* ptr)
|
||||
{
|
||||
DvbSChannelDataMapping raw = hdplusMappings.GetMapping(c.hdplusChannelLength);
|
||||
int startOffset = channel.RecordIndex * raw.DataLength;
|
||||
raw.DataPtr = (ptr + startOffset);
|
||||
raw.ProgramNr = (ushort)channel.OldProgramNr;
|
||||
raw.Favorites = channel.Favorites;
|
||||
raw.Lock = channel.Lock;
|
||||
raw.Checksum = CalcChecksum(raw.DataPtr, raw.DataLength);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region CalcChecksum()
|
||||
private static unsafe byte CalcChecksum(byte* ptr, int length)
|
||||
{
|
||||
byte checksum = 0;
|
||||
for (int i = 1; i < length; i++)
|
||||
checksum += *ptr++;
|
||||
return checksum;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ChannelComparer()
|
||||
private string ChannelComparer(ChannelInfo channel)
|
||||
{
|
||||
if (channel.NewProgramNr != 0)
|
||||
return "A" + channel.NewProgramNr.ToString("d4");
|
||||
if (channel.OldProgramNr != 0)
|
||||
{
|
||||
if (this.unsortedChannelMode == UnsortedChannelMode.AppendInOrder)
|
||||
return "B" + channel.OldProgramNr.ToString("d4");
|
||||
return "B" + channel.Name;
|
||||
}
|
||||
return "Z";
|
||||
}
|
||||
#endregion
|
||||
|
||||
public override void ShowDeviceSettingsForm(object parentWindow)
|
||||
{
|
||||
MessageBox.Show((Form) parentWindow, "Sorry, ChanSort currently doesn't support any settings for your TV model.",
|
||||
"Device Settings",
|
||||
MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
}
|
||||
}
|
||||
15
ChanSort.Plugin.ScmFile/ScmSerializerPlugin.cs
Normal file
15
ChanSort.Plugin.ScmFile/ScmSerializerPlugin.cs
Normal file
@@ -0,0 +1,15 @@
|
||||
using ChanSort.Api;
|
||||
|
||||
namespace ChanSort.Plugin.ScmFile
|
||||
{
|
||||
public class ScmSerializerPlugin : ISerializerPlugin
|
||||
{
|
||||
public string PluginName { get { return "Samsung *.scm Loader"; } }
|
||||
public string FileFilter { get { return "*.scm"; } }
|
||||
|
||||
public SerializerBase CreateSerializer(string inputFile)
|
||||
{
|
||||
return new ScmSerializer(inputFile);
|
||||
}
|
||||
}
|
||||
}
|
||||
97
ChanSort.Plugin.ScmFile/ScmStructures.cs
Normal file
97
ChanSort.Plugin.ScmFile/ScmStructures.cs
Normal file
@@ -0,0 +1,97 @@
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace ChanSort.Plugin.ScmFile
|
||||
{
|
||||
[StructLayout(LayoutKind.Sequential, Pack=1)]
|
||||
unsafe struct SatDataBase
|
||||
{
|
||||
public byte Magic0x55;
|
||||
public int SatelliteNr;
|
||||
public int TransponderCount;
|
||||
public fixed ushort Name[64];
|
||||
public int IsWest;
|
||||
public int LongitudeTimes10;
|
||||
};
|
||||
|
||||
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
||||
struct TransponderDataBase
|
||||
{
|
||||
public byte Magic0x55;
|
||||
public int TransponderNr;
|
||||
public int SatelliteNr;
|
||||
public int Frequency;
|
||||
public int SymbolRate;
|
||||
public int IsVerticalPolarity;
|
||||
public int Modulation;
|
||||
public int CodeRate;
|
||||
public int Unknown1;
|
||||
public int Unknown2;
|
||||
public int Unknown3;
|
||||
public int Unknown4;
|
||||
};
|
||||
|
||||
#if false
|
||||
[StructLayout(LayoutKind.Sequential, Pack=1)]
|
||||
unsafe struct MapSateD
|
||||
{
|
||||
public ushort ChannelNumber;
|
||||
public ushort VideoPid;
|
||||
public ushort Pid;
|
||||
public byte Mpeg4;
|
||||
public byte Unknown8;
|
||||
public ushort Unknown9;
|
||||
public ushort Unknonw11;
|
||||
public ushort Unknown13;
|
||||
public byte ServiceType;
|
||||
public byte Unknown16;
|
||||
public ushort ServiceId;
|
||||
public ushort TransponderNr;
|
||||
public ushort SatelliteNr;
|
||||
public ushort Unknown23;
|
||||
public ushort TransportStreamId;
|
||||
public ushort Unknown27;
|
||||
public ushort OriginalNetworkId;
|
||||
public ushort Unknown31;
|
||||
public ushort HRes;
|
||||
public ushort VRes;
|
||||
public fixed ushort NameInBigEndianUtf16[51];
|
||||
public ushort Bouquet;
|
||||
public byte Unknown141;
|
||||
public byte Locked;
|
||||
public byte Favorites;
|
||||
public byte ChecksumCSeries;
|
||||
public fixed byte Padding [28];
|
||||
}
|
||||
#endif
|
||||
#if false
|
||||
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
||||
unsafe struct MapAirD
|
||||
{
|
||||
public ushort ChannelNumber;
|
||||
public ushort VideoPid;
|
||||
public ushort PcrPid;
|
||||
public ushort ServiceId;
|
||||
public ushort Status;
|
||||
public ushort Unknown11;
|
||||
public ushort Qam;
|
||||
public byte ServiceType;
|
||||
public byte Codec;
|
||||
public fixed byte Unknown17 [7];
|
||||
public byte Encrypted;
|
||||
public fixed byte Unknown25 [3];
|
||||
public ushort Frequency;
|
||||
public ushort LogicalChannelNumber;
|
||||
public fixed byte Unknown31 [2];
|
||||
public ushort SymbolRate;
|
||||
public ushort Bouquet;
|
||||
public ushort TransportStreamId;
|
||||
public fixed byte Unknown39 [5];
|
||||
public fixed ushort NameInBigEndianUtf16[100];
|
||||
public byte Unknown244;
|
||||
public ushort Locked;
|
||||
public byte FavoritesX79;
|
||||
public byte ChecksumBSeries;
|
||||
public fixed byte PaddingCSeries [292 - 248];
|
||||
}
|
||||
#endif
|
||||
}
|
||||
219
ChanSort.Plugin.TllFile/ActChannelDataMapping.cs
Normal file
219
ChanSort.Plugin.TllFile/ActChannelDataMapping.cs
Normal file
@@ -0,0 +1,219 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using ChanSort.Api;
|
||||
|
||||
namespace ChanSort.Plugin.TllFile
|
||||
{
|
||||
#region class ActChannelDataMapping
|
||||
/// <summary>
|
||||
/// Mapping for Analog, Cable and Terrestrial
|
||||
/// </summary>
|
||||
public unsafe class ActChannelDataMapping : DvbChannelMappingBase
|
||||
{
|
||||
private readonly DvbStringDecoder dvbsStringDecoder;
|
||||
|
||||
private const string offFrequencyLong = "offFrequencyLong";
|
||||
private const string offFavorites2 = "offFavorites2";
|
||||
private const string offProgramNr2 = "offProgramNr2";
|
||||
|
||||
#region ctor()
|
||||
public ActChannelDataMapping(IniFile.Section settings, int length, DvbStringDecoder dvbsStringDecoder) : base(settings, length, null)
|
||||
{
|
||||
this.dvbsStringDecoder = dvbsStringDecoder;
|
||||
this.ReorderChannelData = settings.GetInt("reorderChannelData") != 0;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Encoding
|
||||
public Encoding Encoding
|
||||
{
|
||||
get { return this.dvbsStringDecoder.DefaultEncoding; }
|
||||
set { this.dvbsStringDecoder.DefaultEncoding = value; }
|
||||
}
|
||||
#endregion
|
||||
|
||||
public bool ReorderChannelData { get; private set; }
|
||||
|
||||
#region Favorites
|
||||
public override Favorites Favorites
|
||||
{
|
||||
get { return (Favorites)(this.GetByte(offFavorites) & 0x0F); }
|
||||
set
|
||||
{
|
||||
int intValue = (int)value;
|
||||
foreach (int off in this.GetOffsets(offFavorites))
|
||||
this.DataPtr[off] = (byte) ((this.DataPtr[off] & 0xF0) | intValue);
|
||||
intValue <<= 2;
|
||||
foreach (int off in this.GetOffsets(offFavorites2))
|
||||
this.DataPtr[off] = (byte)((this.DataPtr[off] & 0xC3) | intValue);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ProgramNr
|
||||
public override ushort ProgramNr
|
||||
{
|
||||
get { return base.ProgramNr; }
|
||||
set
|
||||
{
|
||||
base.ProgramNr = value;
|
||||
this.SetWord(offProgramNr2, (ushort)((value<<2) | (GetWord(offProgramNr2) & 0x03)));
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Name
|
||||
public override string Name
|
||||
{
|
||||
get
|
||||
{
|
||||
string longName, shortName;
|
||||
this.dvbsStringDecoder.GetChannelNames(this.NamePtr, this.NameLength, out longName, out shortName);
|
||||
return longName;
|
||||
}
|
||||
set { ChannelDataMapping.SetChannelName(this, value, this.dvbsStringDecoder.DefaultEncoding); }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ShortName
|
||||
public override string ShortName
|
||||
{
|
||||
get
|
||||
{
|
||||
string longName, shortName;
|
||||
this.dvbsStringDecoder.GetChannelNames(this.NamePtr, this.NameLength, out longName, out shortName);
|
||||
return shortName;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region FrequencyLong
|
||||
public virtual uint FrequencyLong
|
||||
{
|
||||
get { return this.GetDword(offFrequencyLong); }
|
||||
set { this.SetDword(offFrequencyLong, value); }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region AnalogFrequency, AnalogChannelNr, AnalogChannelBand
|
||||
|
||||
public ushort AnalogFrequency
|
||||
{
|
||||
get { return this.PcrPid; }
|
||||
set { this.PcrPid = value; }
|
||||
}
|
||||
|
||||
public byte AnalogChannelNr
|
||||
{
|
||||
get { return (byte)(this.VideoPid & 0xFF); }
|
||||
}
|
||||
|
||||
public byte AnalogChannelBand
|
||||
{
|
||||
get { return (byte)(this.VideoPid >> 8); }
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
#region Validate()
|
||||
public string Validate()
|
||||
{
|
||||
bool ok = true;
|
||||
List<string> warnings = new List<string>();
|
||||
ok &= ValidateByte(offChannelTransponder) || AddWarning(warnings, "Channel/Transponder number");
|
||||
ok &= ValidateWord(offProgramNr) || AddWarning(warnings, "Program#");
|
||||
ok &= ValidateByte(offFavorites) || AddWarning(warnings, "Favorites");
|
||||
ok &= ValidateWord(offPcrPid) || AddWarning(warnings, "PCR-PID");
|
||||
ok &= ValidateWord(offAudioPid) || AddWarning(warnings, "Audio-PID");
|
||||
ok &= ValidateWord(offVideoPid) || AddWarning(warnings, "Video-PID");
|
||||
ok &= ValidateString(offName, 40) || AddWarning(warnings, "Channel name");
|
||||
ok &= ValidateByte(offNameLength) || AddWarning(warnings, "Channel name length");
|
||||
ok &= ValidateWord(offServiceId) || AddWarning(warnings, "Service-ID");
|
||||
ok &= ValidateString(offFrequencyLong, 4) || AddWarning(warnings, "Frequency");
|
||||
ok &= ValidateWord(offOriginalNetworkId) || AddWarning(warnings, "Original Network-ID");
|
||||
ok &= ValidateWord(offTransportStreamId) || AddWarning(warnings, "Transport Stream ID");
|
||||
ok &= ValidateByte(offFavorites2) || AddWarning(warnings, "Favorites #2");
|
||||
ok &= ValidateByte(offServiceType) || AddWarning(warnings, "Service Type");
|
||||
|
||||
if (ok)
|
||||
return null;
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
foreach (var warning in warnings)
|
||||
{
|
||||
if (sb.Length > 0)
|
||||
sb.Append(", ");
|
||||
sb.Append(warning);
|
||||
}
|
||||
return sb.ToString();
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region AddWarning()
|
||||
private bool AddWarning(List<string> warnings, string p)
|
||||
{
|
||||
warnings.Add(p);
|
||||
return false;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ValidateByte()
|
||||
private bool ValidateByte(string key)
|
||||
{
|
||||
var offsets = this.GetOffsets(key);
|
||||
if (offsets == null || offsets.Length < 1)
|
||||
return true;
|
||||
byte value = *(this.DataPtr + offsets[0]);
|
||||
bool ok = true;
|
||||
foreach(int offset in offsets)
|
||||
{
|
||||
if (this.DataPtr[offset] != value)
|
||||
ok = false;
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ValidateWord()
|
||||
private bool ValidateWord(string key)
|
||||
{
|
||||
var offsets = this.GetOffsets(key);
|
||||
if (offsets == null || offsets.Length < 1)
|
||||
return true;
|
||||
ushort value = *(ushort*)(this.DataPtr + offsets[0]);
|
||||
bool ok = true;
|
||||
foreach (int offset in offsets)
|
||||
{
|
||||
if (*(ushort*) (this.DataPtr + offset) != value)
|
||||
ok = false;
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ValidateString()
|
||||
private bool ValidateString(string key, int len)
|
||||
{
|
||||
var offsets = this.GetOffsets(key);
|
||||
if (offsets == null || offsets.Length < 1)
|
||||
return true;
|
||||
bool ok = true;
|
||||
int off0 = offsets[0];
|
||||
for (int i = 1; i < offsets.Length; i++)
|
||||
{
|
||||
int offI = offsets[i];
|
||||
for (int j = 0; j < len; j++)
|
||||
{
|
||||
byte b = this.DataPtr[off0 + j];
|
||||
if (this.DataPtr[offI + j] != b)
|
||||
ok = false;
|
||||
if (b == 0)
|
||||
break;
|
||||
}
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
138
ChanSort.Plugin.TllFile/ChanSort.Plugin.TllFile.csproj
Normal file
138
ChanSort.Plugin.TllFile/ChanSort.Plugin.TllFile.csproj
Normal file
@@ -0,0 +1,138 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>8.0.30703</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{E972D8A1-2F5F-421C-AC91-CFF45E5191BE}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>ChanSort.Plugin.TllFile</RootNamespace>
|
||||
<AssemblyName>ChanSort.Plugin.TllFile</AssemblyName>
|
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<TargetFrameworkProfile>Client</TargetFrameworkProfile>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>..\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>
|
||||
<CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
|
||||
<CodeAnalysisFailOnMissingRules>true</CodeAnalysisFailOnMissingRules>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
|
||||
<OutputPath>bin\x86\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>
|
||||
<CodeAnalysisFailOnMissingRules>true</CodeAnalysisFailOnMissingRules>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="DevExpress.Data.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.Utils.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="ActChannelDataMapping.cs" />
|
||||
<Compile Include="ChannelDataMapping.cs" />
|
||||
<Compile Include="DvbsChannelDataMapping.cs" />
|
||||
<Compile Include="FirmwareDataMapping.cs" />
|
||||
<Compile Include="ModelConstants.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Resource.de.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Resource.de.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Resource.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Resource.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="TllFileSerializer.cs" />
|
||||
<Compile Include="TllFileSerializer.sql.cs" />
|
||||
<Compile Include="TllFileSerializerPlugin.cs" />
|
||||
<Compile Include="TllStructures.cs" />
|
||||
<Compile Include="TvSettingsForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="TvSettingsForm.Designer.cs">
|
||||
<DependentUpon>TvSettingsForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\ChanSort.Api\ChanSort.Api.csproj">
|
||||
<Project>{DCCFFA08-472B-4D17-BB90-8F513FC01392}</Project>
|
||||
<Name>ChanSort.Api</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="ChanSort.Plugin.TllFile.ini">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Properties\licenses.licx" />
|
||||
<EmbeddedResource Include="Resource.de.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resource.de.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Resource.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resource.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="TvSettingsForm.de.resx">
|
||||
<DependentUpon>TvSettingsForm.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="TvSettingsForm.resx">
|
||||
<DependentUpon>TvSettingsForm.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
331
ChanSort.Plugin.TllFile/ChanSort.Plugin.TllFile.ini
Normal file
331
ChanSort.Plugin.TllFile/ChanSort.Plugin.TllFile.ini
Normal file
@@ -0,0 +1,331 @@
|
||||
; FileConfigurationX: overall file and DVB-S data layout
|
||||
; ACTChannelDataMappingX: analog, DVB-C and DVB-T channel data mapping for data length X
|
||||
|
||||
[FileConfiguration1]
|
||||
; LM and PM series except LM611S and LM340S
|
||||
magicBytes = 90, 90, 90, 90
|
||||
satCount = 64
|
||||
satLength = 44
|
||||
transponderCount = 2400
|
||||
transponderLength = 40
|
||||
dvbsChannelCount = 7520
|
||||
dvbsChannelLength = 72
|
||||
lnbCount = 40
|
||||
lnbLength = 44
|
||||
|
||||
[FileConfiguration2]
|
||||
; LV and LW series (some LW don't have DVB-S though), some LM models
|
||||
magicBytes = 90, 90, 90, 90
|
||||
satCount = 64
|
||||
satLength = 44
|
||||
transponderCount = 2400
|
||||
transponderLength = 40
|
||||
dvbsChannelCount = 7520
|
||||
dvbsChannelLength = 68
|
||||
lnbCount = 40
|
||||
lnbLength = 44
|
||||
|
||||
[FileConfiguration3]
|
||||
; DM and LH series
|
||||
magicBytes =
|
||||
satCount = 0
|
||||
|
||||
|
||||
[ACTChannelDataMapping:192]
|
||||
; LM series with Firmware 4.x (all except LM611S and LM340S)
|
||||
reorderChannelData = 0
|
||||
lenName = 40
|
||||
offChannelTransponder = 10, 94, 126, 132
|
||||
offProgramNr = 12, 128
|
||||
offFavorites = 20
|
||||
offPcrPid = 22, 180
|
||||
offAudioPid = 24
|
||||
offVideoPid = 26
|
||||
offName = 30, 140
|
||||
offNameLength = 70, 139
|
||||
offServiceId = 72, 136
|
||||
offFrequencyLong = 96
|
||||
offOriginalNetworkId = 102
|
||||
offTransportStreamId = 104
|
||||
offFavorites2 = 134
|
||||
offLock = 135
|
||||
maskLock = 0x01
|
||||
offSkip = 135
|
||||
maskSkip = 0x02
|
||||
offHide = 135
|
||||
maskHide = 0x04
|
||||
offServiceType = 138
|
||||
offAudioPid2 = 182
|
||||
|
||||
[ACTChannelDataMapping:188]
|
||||
; LM series with Firmware 3.x (LM611S with exceptions, LM340S)
|
||||
reorderChannelData = 0
|
||||
lenName = 40
|
||||
offChannelTransponder = 10, 94, 125, 132
|
||||
offProgramNr = 12, 128
|
||||
offFavorites = 20
|
||||
offPcrPid = 22, 180
|
||||
offAudioPid = 24
|
||||
offVideoPid = 26
|
||||
offName = 30, 140
|
||||
offNameLength = 70, 139
|
||||
offServiceId = 72, 136
|
||||
offFrequencyLong = 96
|
||||
offOriginalNetworkId = 102
|
||||
offTransportStreamId = 104
|
||||
offFavorites2 = 134
|
||||
offLock = 135
|
||||
maskLock = 0x01
|
||||
offSkip = 135
|
||||
maskSkip = 0x02
|
||||
offHide = 135
|
||||
maskHide = 0x04
|
||||
offServiceType = 138
|
||||
offAudioPid2 = 182
|
||||
|
||||
[ACTChannelDataMapping:184]
|
||||
; LV470S,LV570S,LV579S(with exceptions), LW5500,LW5590,LW570S,LW579S,LW650S,LW659S(with exceptions)
|
||||
; LK950S, CS460S, PM670S, LM611S(with exceptions)
|
||||
reorderChannelData = 0
|
||||
lenName = 40
|
||||
offChannelTransponder = 10, 90, 121, 128
|
||||
offProgramNr = 12, 124
|
||||
offFavorites = 20
|
||||
offPcrPid = 22, 176
|
||||
offAudioPid = 24
|
||||
offVideoPid = 26
|
||||
offName = 30, 136
|
||||
offNameLength = 70, 135
|
||||
offServiceId = 72, 132
|
||||
offFrequencyLong = 92
|
||||
offOriginalNetworkId = 98
|
||||
offTransportStreamId = 100
|
||||
offFavorites2 = 130
|
||||
offLock = 131
|
||||
maskLock = 0x01
|
||||
offSkip = 131
|
||||
maskSkip = 0x02
|
||||
offHide = 131
|
||||
maskHide = 0x04
|
||||
offServiceType = 134
|
||||
offAudioPid2 = 178
|
||||
|
||||
[ACTChannelDataMapping:180]
|
||||
; PT
|
||||
reorderChannelData = 0
|
||||
lenName = 40
|
||||
offChannelTransponder = 10, 90, 124
|
||||
offProgramNr = 12
|
||||
offFavorites = 20
|
||||
offPcrPid = 22, 172
|
||||
offAudioPid = 24
|
||||
offVideoPid = 26
|
||||
offName = 30, 132
|
||||
offNameLength = 70, 131
|
||||
offServiceId = 72, 128
|
||||
offFrequencyLong = 92
|
||||
offOriginalNetworkId = 98
|
||||
offTransportStreamId = 100
|
||||
offProgramNr2 = 120
|
||||
offFavorites2 = 126
|
||||
offLock = 127
|
||||
maskLock = 0x01
|
||||
offSkip = 127
|
||||
maskSkip = 0x02
|
||||
offHide = 127
|
||||
maskHide = 0x04
|
||||
offServiceType = 130
|
||||
offAudioPid2 = 172
|
||||
|
||||
[ACTChannelDataMapping:176]
|
||||
; LD, LE series, LK450, LW4500, LW5400
|
||||
reorderChannelData = 0
|
||||
lenName = 40
|
||||
offChannelTransponder = 10, 86, 120
|
||||
offProgramNr = 12
|
||||
offFavorites = 20
|
||||
offPcrPid = 22, 168
|
||||
offAudioPid = 24
|
||||
offVideoPid = 26
|
||||
offName = 30, 128
|
||||
offNameLength = 70, 127
|
||||
offServiceId = 72, 124
|
||||
offFrequencyLong = 88
|
||||
offOriginalNetworkId = 94
|
||||
offTransportStreamId = 96
|
||||
offProgramNr2 = 116
|
||||
offFavorites2 = 122
|
||||
offLock = 123
|
||||
maskLock = 0x01
|
||||
offSkip = 123
|
||||
maskSkip = 0x02
|
||||
offHide = 123
|
||||
maskHide = 0x04
|
||||
offServiceType = 126
|
||||
offAudioPid2 = 170
|
||||
|
||||
[ACTChannelDataMapping:164]
|
||||
; DM and LH series
|
||||
reorderChannelData = 1
|
||||
lenName = 40
|
||||
offChannelTransponder = 9, 112
|
||||
offProgramNr = 10
|
||||
offFavorites = 18
|
||||
offPcrPid = 20, 156
|
||||
offAudioPid = 22
|
||||
offVideoPid = 24
|
||||
offName = 28, 116
|
||||
offNameLength = 68
|
||||
offServiceId = 70
|
||||
offOriginalNetworkId = 86
|
||||
offTransportStreamId = 88
|
||||
offFrequencyLong = 96
|
||||
offProgramNr2 = 108
|
||||
offFavorites2 = 113
|
||||
offLock = 113
|
||||
maskLock =
|
||||
offSkip = 113
|
||||
maskSkip = 0x20
|
||||
offHide = 113
|
||||
maskHide =
|
||||
offServiceType = 115
|
||||
offAudioPid2 = 158
|
||||
|
||||
[SatChannelDataMapping:68]
|
||||
lenName = 40
|
||||
offSatelliteNr = 0
|
||||
offSourceType = 4
|
||||
offTransponderIndex = 5, 12
|
||||
offProgramNr = 8
|
||||
offProgramNrPreset = 10
|
||||
offFavorites = 14
|
||||
maskFavorites = 0x3C
|
||||
offDeleted = 14
|
||||
maskDeleted = 0x42
|
||||
offEncrypted = 14
|
||||
maskEncrypted = 0x80
|
||||
offLock = 15
|
||||
maskLock = 0x01
|
||||
offSkip = 15
|
||||
maskSkip = 0x02
|
||||
offHide = 15
|
||||
maskHide = 0x04
|
||||
offProgNrCustomized = 15
|
||||
maskProgNrCustomized = 0x40
|
||||
offServiceId = 16
|
||||
offServiceType = 18
|
||||
offNameLength = 19
|
||||
offName = 20
|
||||
offVideoPid = 60
|
||||
offAudioPid = 62
|
||||
|
||||
[SatChannelDataMapping:72]
|
||||
lenName = 40
|
||||
offSatelliteNr = 0
|
||||
offSourceType = 4
|
||||
offTransponderIndex = 6, 12
|
||||
offProgramNr = 8
|
||||
offProgramNrPreset = 10
|
||||
offFavorites = 14
|
||||
maskFavorites = 0x3C
|
||||
offDeleted = 14
|
||||
maskDeleted = 0x42
|
||||
offEncrypted = 14
|
||||
maskEncrypted = 0x80
|
||||
offLock = 15
|
||||
maskLock = 0x01
|
||||
offSkip = 15
|
||||
maskSkip = 0x02
|
||||
offHide = 15
|
||||
maskHide = 0x04
|
||||
offProgNrCustomized = 15
|
||||
maskProgNrCustomized = 0x40
|
||||
offServiceId = 16
|
||||
offServiceType = 18
|
||||
offNameLength = 19
|
||||
offName = 20
|
||||
offVideoPid = 60
|
||||
offAudioPid = 62
|
||||
|
||||
[FirmwareData:6944]
|
||||
; LH series
|
||||
offSize = 0
|
||||
offHotelModeEnabled=6543
|
||||
offHotelModeDtvUpdate=6553
|
||||
|
||||
[FirmwareData:11008]
|
||||
; DM (2350D)
|
||||
offSize = 0
|
||||
offHotelModeEnabled=10563
|
||||
offHotelModeDtvUpdate=10573
|
||||
|
||||
[FirmwareData:15936]
|
||||
; PT
|
||||
offSize = 0
|
||||
offHotelModeEnabled=12601
|
||||
offHotelModeDtvUpdate=12611
|
||||
|
||||
[FirmwareData:15960]
|
||||
; LW4500, LW5400
|
||||
offSize = 0
|
||||
offHotelModeEnabled=12603
|
||||
offHotelModeDtvUpdate=12613
|
||||
|
||||
[FirmwareData:16024]
|
||||
; LM611S, LM340S, CS460S
|
||||
offSize = 0
|
||||
offHotelModeEnabled=12639
|
||||
offHotelModeDtvUpdate=12649
|
||||
|
||||
[FirmwareData:23072]
|
||||
; LD420, LD450, LD550
|
||||
offSize = 0
|
||||
offHotelModeEnabled=19721
|
||||
offHotelModeDtvUpdate=19731
|
||||
|
||||
[FirmwareData:23088]
|
||||
; LK450
|
||||
offSize = 0
|
||||
offHotelModeEnabled=19723
|
||||
offHotelModeDtvUpdate=19733
|
||||
|
||||
[FirmwareData:23096]
|
||||
; LE5500, LD750
|
||||
offSize = 0
|
||||
offHotelModeEnabled=19721
|
||||
offHotelModeDtvUpdate=19731
|
||||
|
||||
[FirmwareData:35504]
|
||||
; LV,LW,LK950S
|
||||
offSize = 0
|
||||
offSystemLock =
|
||||
offTvPassword =
|
||||
offHbbTvEnabled =
|
||||
offHotelModeEnabled=34643
|
||||
offHotelModeDtvUpdate=34653
|
||||
offHotelMenuAccessCode = 34668
|
||||
offHotelMenuPin = 34714
|
||||
|
||||
[FirmwareData:36856]
|
||||
; LM860V
|
||||
offSize = 0
|
||||
offSystemLock = 171
|
||||
offTvPassword = 173
|
||||
offHbbTvEnabled = 35096
|
||||
offHotelModeEnabled=35635
|
||||
offHotelModeDtvUpdate=35645
|
||||
offHotelMenuAccessCode = 35660
|
||||
offHotelMenuPin = 35706
|
||||
offSettingsChannelUpdate=36544
|
||||
|
||||
[FirmwareData:36864]
|
||||
; LM (except LM611S,LM340S and LM860V),PM,LS
|
||||
offSize = 0
|
||||
offSystemLock = 171
|
||||
offTvPassword = 173
|
||||
offHbbTvEnabled = 35096
|
||||
offHotelModeEnabled=35635
|
||||
offHotelModeDtvUpdate=35645
|
||||
offHotelMenuAccessCode = 35660
|
||||
offHotelMenuPin = 35706
|
||||
offSettingsChannelUpdate=36544
|
||||
23
ChanSort.Plugin.TllFile/ChannelDataMapping.cs
Normal file
23
ChanSort.Plugin.TllFile/ChannelDataMapping.cs
Normal file
@@ -0,0 +1,23 @@
|
||||
using System;
|
||||
using System.Text;
|
||||
using ChanSort.Api;
|
||||
|
||||
namespace ChanSort.Plugin.TllFile
|
||||
{
|
||||
internal static class ChannelDataMapping
|
||||
{
|
||||
public static unsafe void SetChannelName(ChannelMappingBase mapping, string channelName, Encoding defaultEncoding)
|
||||
{
|
||||
byte[] codePagePrefix = new byte[0]; // DvbStringDecoder.GetCodepageBytes(defaultEncoding);
|
||||
byte[] name = defaultEncoding.GetBytes(channelName);
|
||||
byte[] newName = new byte[codePagePrefix.Length + name.Length + 1];
|
||||
Array.Copy(codePagePrefix, 0, newName, 0, codePagePrefix.Length);
|
||||
Array.Copy(name, 0, newName, codePagePrefix.Length, name.Length);
|
||||
fixed (byte* ptrNewName = newName)
|
||||
{
|
||||
mapping.NamePtr = ptrNewName;
|
||||
}
|
||||
mapping.NameLength = newName.Length;
|
||||
}
|
||||
}
|
||||
}
|
||||
197
ChanSort.Plugin.TllFile/DvbsChannelDataMapping.cs
Normal file
197
ChanSort.Plugin.TllFile/DvbsChannelDataMapping.cs
Normal file
@@ -0,0 +1,197 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using ChanSort.Api;
|
||||
|
||||
namespace ChanSort.Plugin.TllFile
|
||||
{
|
||||
public unsafe class DvbsChannelDataMapping : DvbChannelMappingBase
|
||||
{
|
||||
private const string offSatelliteNr = "offSatelliteNr";
|
||||
private const string offTransponderIndex = "offTransponderIndex";
|
||||
private const string offProgramNrPreset = "offProgramNrPreset";
|
||||
private const string offProgNrCustomized = "offProgNrCustomized";
|
||||
private const string maskProgNrCustomized = "maskProgNrCustomized";
|
||||
|
||||
private readonly DvbStringDecoder dvbsStringDecoder;
|
||||
|
||||
public DvbsChannelDataMapping(IniFile.Section settings, int dataLength, DvbStringDecoder dvbsStringDecoder) :
|
||||
base(settings, dataLength, null)
|
||||
{
|
||||
this.dvbsStringDecoder = dvbsStringDecoder;
|
||||
}
|
||||
|
||||
#region Encoding
|
||||
public Encoding Encoding
|
||||
{
|
||||
get { return this.dvbsStringDecoder.DefaultEncoding; }
|
||||
set { this.dvbsStringDecoder.DefaultEncoding = value; }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region InUse
|
||||
public override bool InUse
|
||||
{
|
||||
get { return this.SatelliteNr != 0xFFFF; }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region IsDeleted
|
||||
public override bool IsDeleted
|
||||
{
|
||||
get { return base.IsDeleted; }
|
||||
set
|
||||
{
|
||||
base.IsDeleted = value;
|
||||
if (value)
|
||||
this.SatelliteNr = 0xFFFF;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region SatelliteNr
|
||||
public int SatelliteNr
|
||||
{
|
||||
get { return this.GetWord(offSatelliteNr); }
|
||||
set { this.SetWord(offSatelliteNr, value); }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ProgramNr
|
||||
public override ushort ProgramNr
|
||||
{
|
||||
get { return base.ProgramNr; }
|
||||
set
|
||||
{
|
||||
base.ProgramNr = value;
|
||||
this.IsProgNrCustomized = true;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ProgramNrPreset
|
||||
public int ProgramNrPreset
|
||||
{
|
||||
get { return this.GetWord(offProgramNrPreset); }
|
||||
set { this.SetWord(offProgramNrPreset, (ushort)value); }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region IsProgNrCustomized
|
||||
public bool IsProgNrCustomized
|
||||
{
|
||||
get { return GetFlag(offProgNrCustomized, maskProgNrCustomized); }
|
||||
set { SetFlag(offProgNrCustomized, maskProgNrCustomized, value); }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Name
|
||||
public override string Name
|
||||
{
|
||||
get
|
||||
{
|
||||
string longName, shortName;
|
||||
this.dvbsStringDecoder.GetChannelNames(this.NamePtr, this.NameLength, out longName, out shortName);
|
||||
return longName;
|
||||
}
|
||||
set { ChannelDataMapping.SetChannelName(this, value, this.dvbsStringDecoder.DefaultEncoding); }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ShortName
|
||||
public override string ShortName
|
||||
{
|
||||
get
|
||||
{
|
||||
string longName, shortName;
|
||||
this.dvbsStringDecoder.GetChannelNames(this.NamePtr, this.NameLength, out longName, out shortName);
|
||||
return shortName;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Favorites
|
||||
public override Favorites Favorites
|
||||
{
|
||||
get { return (Favorites)((GetByte(offFavorites)>>2) & 0x0F); }
|
||||
set
|
||||
{
|
||||
var newVal = (GetByte(offFavorites) & 0xC3) | (byte)((byte)value << 2);
|
||||
SetByte(offFavorites, (byte)newVal);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region TransponderIndex
|
||||
public ushort TransponderIndex
|
||||
{
|
||||
get { return GetWord(offTransponderIndex); }
|
||||
set { SetWord(offTransponderIndex, value); }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Validate()
|
||||
public string Validate()
|
||||
{
|
||||
bool ok = true;
|
||||
List<string> warnings = new List<string>();
|
||||
ok &= ValidateByte(offTransponderIndex) || AddWarning(warnings, "Transponder index");
|
||||
ok &= ValidateWord(offProgramNr) || AddWarning(warnings, "Program#");
|
||||
|
||||
if (ok)
|
||||
return null;
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
foreach (var warning in warnings)
|
||||
{
|
||||
if (sb.Length > 0)
|
||||
sb.Append(", ");
|
||||
sb.Append(warning);
|
||||
}
|
||||
return sb.ToString();
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region AddWarning()
|
||||
private bool AddWarning(List<string> warnings, string p)
|
||||
{
|
||||
warnings.Add(p);
|
||||
return false;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ValidateByte()
|
||||
private bool ValidateByte(string key)
|
||||
{
|
||||
var offsets = this.GetOffsets(key);
|
||||
if (offsets == null || offsets.Length < 1)
|
||||
return true;
|
||||
byte value = *(this.DataPtr + offsets[0]);
|
||||
bool ok = true;
|
||||
foreach (int offset in offsets)
|
||||
{
|
||||
if (this.DataPtr[offset] != value)
|
||||
ok = false;
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ValidateWord()
|
||||
private bool ValidateWord(string key)
|
||||
{
|
||||
var offsets = this.GetOffsets(key);
|
||||
if (offsets == null || offsets.Length < 1)
|
||||
return true;
|
||||
ushort value = *(ushort*)(this.DataPtr + offsets[0]);
|
||||
bool ok = true;
|
||||
foreach (int offset in offsets)
|
||||
{
|
||||
if (*(ushort*)(this.DataPtr + offset) != value)
|
||||
ok = false;
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
64
ChanSort.Plugin.TllFile/FirmwareDataMapping.cs
Normal file
64
ChanSort.Plugin.TllFile/FirmwareDataMapping.cs
Normal file
@@ -0,0 +1,64 @@
|
||||
using ChanSort.Api;
|
||||
|
||||
namespace ChanSort.Plugin.TllFile
|
||||
{
|
||||
public class FirmwareDataMapping : DataMapping
|
||||
{
|
||||
private const string offSize = "offSize";
|
||||
private const string offSystemLock = "offSystemLock";
|
||||
private const string offTvPassword = "offTvPassword";
|
||||
private const string offHbbTvEnabled = "offHbbTvEnabled";
|
||||
private const string offHotelModeEnabled = "offHotelModeEnabled";
|
||||
private const string offHotelModeDtvUpdate = "offHotelModeDtvUpdate";
|
||||
private const string offHotelMenuAccessCode = "offHotelMenuAccessCode";
|
||||
private const string offHotelMenuPin = "offHotelMenuPin";
|
||||
private const string offSettingsChannelUpdate = "offSettingsChannelUpdate";
|
||||
|
||||
public FirmwareDataMapping(IniFile.Section settings, int structureLength) :
|
||||
base(settings, structureLength, null)
|
||||
{
|
||||
}
|
||||
|
||||
public uint Size { get { return this.GetDword(offSize); } }
|
||||
public bool SystemLocked { get { return this.GetByte(offSystemLock) != 0; } }
|
||||
public string TvPassword { get { return CodeToString(this.GetDword(offTvPassword)); } }
|
||||
public string HotelMenuAccessCode { get { return CodeToString(this.GetDword(offHotelMenuAccessCode)); } }
|
||||
public string HotelMenuPin { get { return CodeToString(this.GetDword(offHotelMenuPin)); } }
|
||||
|
||||
|
||||
public bool SettingsAutomaticChannelUpdate
|
||||
{
|
||||
get { return this.GetByte(offSettingsChannelUpdate) != 0; }
|
||||
set { this.SetByte(offSettingsChannelUpdate, (byte) (value ? 1 : 0)); }
|
||||
}
|
||||
|
||||
public bool HbbTvEnabled
|
||||
{
|
||||
get { return this.GetByte(offHbbTvEnabled) != 0; }
|
||||
set { this.SetByte(offHbbTvEnabled, (byte)(value ? 1 : 0)); }
|
||||
}
|
||||
|
||||
public bool HotelModeEnabled
|
||||
{
|
||||
get { return this.GetByte(offHotelModeEnabled) != 0; }
|
||||
set { this.SetByte(offHotelModeEnabled, (byte) (value ? 1 : 0)); }
|
||||
}
|
||||
|
||||
public bool HotelModeDtvUpdate
|
||||
{
|
||||
get { return this.GetByte(offHotelModeDtvUpdate) != 0; }
|
||||
set { this.SetByte(offHotelModeDtvUpdate, (byte)(value ? 1 : 0)); }
|
||||
}
|
||||
|
||||
private string CodeToString(uint val)
|
||||
{
|
||||
var code = "";
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
code += (char)(33 + (val & 0x0f));
|
||||
val >>= 8;
|
||||
}
|
||||
return code;
|
||||
}
|
||||
}
|
||||
}
|
||||
49
ChanSort.Plugin.TllFile/ModelConstants.cs
Normal file
49
ChanSort.Plugin.TllFile/ModelConstants.cs
Normal file
@@ -0,0 +1,49 @@
|
||||
namespace ChanSort.Plugin.TllFile
|
||||
{
|
||||
public class ModelConstants
|
||||
{
|
||||
public readonly string series;
|
||||
public readonly byte[] magicBytes;
|
||||
|
||||
public int actChannelLength; // auto-detect
|
||||
|
||||
public readonly int satCount;
|
||||
public readonly int satLength;
|
||||
public readonly int sizeOfTransponderBlockHeader;
|
||||
public readonly int transponderCount;
|
||||
public readonly int transponderLength;
|
||||
public readonly int sizeOfZappingTableEntry = 8;
|
||||
public readonly int dvbsMaxChannelCount;
|
||||
public readonly int dvbsChannelLength;
|
||||
public readonly int lnbCount;
|
||||
public readonly int lnbLength;
|
||||
public readonly int[] dvbsSubblockLength;
|
||||
|
||||
public bool hasDvbSBlock;
|
||||
public int firmwareBlockLength; // auto-detect
|
||||
|
||||
public ModelConstants(Api.IniFile.Section iniSection)
|
||||
{
|
||||
this.series = iniSection.Name;
|
||||
this.magicBytes = iniSection.GetBytes("magicBytes");
|
||||
this.satCount = iniSection.GetInt("satCount");
|
||||
this.satLength = iniSection.GetInt("satLength");
|
||||
this.transponderCount = iniSection.GetInt("transponderCount");
|
||||
this.transponderLength = iniSection.GetInt("transponderLength");
|
||||
this.sizeOfTransponderBlockHeader = 14 + transponderCount/8 + transponderCount*6 + 2;
|
||||
this.dvbsMaxChannelCount = iniSection.GetInt("dvbsChannelCount");
|
||||
this.dvbsChannelLength = iniSection.GetInt("dvbsChannelLength");
|
||||
this.lnbCount = iniSection.GetInt("lnbCount");
|
||||
this.lnbLength = iniSection.GetInt("lnbLength");
|
||||
|
||||
this.dvbsSubblockLength = new[]
|
||||
{
|
||||
12,
|
||||
14 + 2 + this.satCount + this.satCount*this.satLength, // 2896
|
||||
sizeOfTransponderBlockHeader - 4 + transponderCount * transponderLength, // 110712
|
||||
12 + dvbsMaxChannelCount/8 + dvbsMaxChannelCount*sizeOfZappingTableEntry + dvbsMaxChannelCount * dvbsChannelLength, // 602552
|
||||
8 + lnbCount * lnbLength // 1768
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
38
ChanSort.Plugin.TllFile/Properties/AssemblyInfo.cs
Normal file
38
ChanSort.Plugin.TllFile/Properties/AssemblyInfo.cs
Normal file
@@ -0,0 +1,38 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
[assembly: InternalsVisibleTo("Test.Plugin.TllFile")]
|
||||
|
||||
// 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.Plugin.TllFile")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("ChanSort.Plugin.TllFile")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2012")]
|
||||
[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("387d8661-ecb3-4957-afca-9a156a90f384")]
|
||||
|
||||
// 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")]
|
||||
4
ChanSort.Plugin.TllFile/Properties/licenses.licx
Normal file
4
ChanSort.Plugin.TllFile/Properties/licenses.licx
Normal file
@@ -0,0 +1,4 @@
|
||||
DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.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
|
||||
DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
117
ChanSort.Plugin.TllFile/Resource.Designer.cs
generated
Normal file
117
ChanSort.Plugin.TllFile/Resource.Designer.cs
generated
Normal file
@@ -0,0 +1,117 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.586
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace ChanSort.Plugin.TllFile {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resource {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resource() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ChanSort.Plugin.TllFile.Resource", typeof(Resource).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to File format is not supported: bad header.
|
||||
/// </summary>
|
||||
internal static string TllFileSerializer_ERR_badFileHeader {
|
||||
get {
|
||||
return ResourceManager.GetString("TllFileSerializer_ERR_badFileHeader", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Channel #{0} (Pr# {1}) was erased because it is a duplicate of channel #{2} (Pr# {3}): {4}.
|
||||
/// </summary>
|
||||
internal static string TllFileSerializer_ERR_dupeChannel {
|
||||
get {
|
||||
return ResourceManager.GetString("TllFileSerializer_ERR_dupeChannel", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Wrong checksum: calculated {1:x8} but file has {0:x8}.
|
||||
/// </summary>
|
||||
internal static string TllFileSerializer_ERR_wrongChecksum {
|
||||
get {
|
||||
return ResourceManager.GetString("TllFileSerializer_ERR_wrongChecksum", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to File size {0} is larger than allowed maxiumum of {1}.
|
||||
/// </summary>
|
||||
internal static string TllFileSerializerPlugin_ERR_fileTooBig {
|
||||
get {
|
||||
return ResourceManager.GetString("TllFileSerializerPlugin_ERR_fileTooBig", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The file content doesn't match any supported model.
|
||||
/// </summary>
|
||||
internal static string TllFileSerializerPlugin_ERR_modelUnknown {
|
||||
get {
|
||||
return ResourceManager.GetString("TllFileSerializerPlugin_ERR_modelUnknown", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to LG-Electronics *.tll Loader.
|
||||
/// </summary>
|
||||
internal static string TllFileSerializerPlugin_PluginName {
|
||||
get {
|
||||
return ResourceManager.GetString("TllFileSerializerPlugin_PluginName", resourceCulture);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
0
ChanSort.Plugin.TllFile/Resource.de.Designer.cs
generated
Normal file
0
ChanSort.Plugin.TllFile/Resource.de.Designer.cs
generated
Normal file
138
ChanSort.Plugin.TllFile/Resource.de.resx
Normal file
138
ChanSort.Plugin.TllFile/Resource.de.resx
Normal file
@@ -0,0 +1,138 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="TllFileSerializer_ERR_badFileHeader" xml:space="preserve">
|
||||
<value>Ungültiges Dateiformat: Dateikopf unbekannt</value>
|
||||
</data>
|
||||
<data name="TllFileSerializer_ERR_wrongChecksum" xml:space="preserve">
|
||||
<value>Prüfsummenfehler: berechnet wurde {1:x8} aber Datei enthält {0:x8}</value>
|
||||
</data>
|
||||
<data name="TllFileSerializerPlugin_ERR_modelUnknown" xml:space="preserve">
|
||||
<value>Der Dateiinhalt entstpricht keinem bekannten Modell</value>
|
||||
</data>
|
||||
<data name="TllFileSerializerPlugin_ERR_fileTooBig" xml:space="preserve">
|
||||
<value>Dateigröße {0} überschreitet das erlaubte Maximum von {1}</value>
|
||||
</data>
|
||||
<data name="TllFileSerializerPlugin_PluginName" xml:space="preserve">
|
||||
<value>LG-Electronics *.tll Loader</value>
|
||||
</data>
|
||||
<data name="TllFileSerializer_ERR_dupeChannel" xml:space="preserve">
|
||||
<value>Sender #{0} (Pr# {1}) wurde gelöscht da er ein Duplikat von Sender #{2} (Pr# {3}) ist: {4}</value>
|
||||
</data>
|
||||
</root>
|
||||
119
ChanSort.Plugin.TllFile/Resource.resx
Normal file
119
ChanSort.Plugin.TllFile/Resource.resx
Normal file
@@ -0,0 +1,119 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 1.3
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">1.3</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1">this is my long string</data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
[base64 mime encoded serialized .NET Framework object]
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
[base64 mime encoded string representing a byte array form of the .NET Framework object]
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>1.3</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="TllFileSerializer_ERR_badFileHeader" xml:space="preserve">
|
||||
<value>File format is not supported: bad header</value>
|
||||
</data>
|
||||
<data name="TllFileSerializer_ERR_wrongChecksum" xml:space="preserve">
|
||||
<value>Wrong checksum: calculated {1:x8} but file has {0:x8}</value>
|
||||
</data>
|
||||
<data name="TllFileSerializerPlugin_ERR_modelUnknown" xml:space="preserve">
|
||||
<value>The file content doesn't match any supported model</value>
|
||||
</data>
|
||||
<data name="TllFileSerializerPlugin_ERR_fileTooBig" xml:space="preserve">
|
||||
<value>File size {0} is larger than allowed maxiumum of {1}</value>
|
||||
</data>
|
||||
<data name="TllFileSerializerPlugin_PluginName" xml:space="preserve">
|
||||
<value>LG-Electronics *.tll Loader</value>
|
||||
</data>
|
||||
<data name="TllFileSerializer_ERR_dupeChannel" xml:space="preserve">
|
||||
<value>Channel #{0} (Pr# {1}) was erased because it is a duplicate of channel #{2} (Pr# {3}): {4}</value>
|
||||
</data>
|
||||
</root>
|
||||
1001
ChanSort.Plugin.TllFile/TllFileSerializer.cs
Normal file
1001
ChanSort.Plugin.TllFile/TllFileSerializer.cs
Normal file
File diff suppressed because it is too large
Load Diff
208
ChanSort.Plugin.TllFile/TllFileSerializer.sql.cs
Normal file
208
ChanSort.Plugin.TllFile/TllFileSerializer.sql.cs
Normal file
@@ -0,0 +1,208 @@
|
||||
using System;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
using System.Data.SqlClient;
|
||||
using System.Text;
|
||||
using ChanSort.Api;
|
||||
|
||||
namespace ChanSort.Plugin.TllFile
|
||||
{
|
||||
public partial class TllFileSerializer
|
||||
{
|
||||
#region SQL
|
||||
|
||||
/*
|
||||
|
||||
create table list (
|
||||
listid int not null,
|
||||
filename varchar(100),
|
||||
created datetime,
|
||||
primary key (listid))
|
||||
|
||||
create table channel (
|
||||
listid int not null,
|
||||
slot int not null,
|
||||
isdel bit not null,
|
||||
seq int,
|
||||
progmask int not null,
|
||||
prognr int not null,
|
||||
name varchar(40) not null,
|
||||
tpnr int not null,
|
||||
satnr int,
|
||||
onid int not null,
|
||||
tsid int not null,
|
||||
ssid int not null,
|
||||
uid varchar(25),
|
||||
favcrypt int,
|
||||
lockskiphide int,
|
||||
progfix int,
|
||||
primary key (listid, slot))
|
||||
|
||||
create table chanseq(
|
||||
listid int not null,
|
||||
seq int not null,
|
||||
slot int not null,
|
||||
primary key (listid, seq))
|
||||
|
||||
|
||||
update channel
|
||||
set seq=s.seq
|
||||
from channel c inner join chanseq s on s.listid=c.listid and s.slot=c.slot
|
||||
|
||||
|
||||
*/
|
||||
#endregion
|
||||
|
||||
private unsafe void StoreToDatabase()
|
||||
{
|
||||
return;
|
||||
var list = this.DataRoot.GetChannelList(SignalSource.DvbS, SignalType.Tv, false);
|
||||
if (list == null)
|
||||
return;
|
||||
|
||||
using (var conn = SqlClientFactory.Instance.CreateConnection())
|
||||
{
|
||||
conn.ConnectionString = "server=(local);database=ChanSort;Integrated Security=true";
|
||||
conn.Open();
|
||||
|
||||
using (var cmd = conn.CreateCommand())
|
||||
{
|
||||
var listId = InsertListData(cmd);
|
||||
|
||||
fixed (byte* ptr = this.fileContent)
|
||||
{
|
||||
InsertSequenceData(ptr, cmd, listId);
|
||||
InsertChannelData(ptr, cmd, listId);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private unsafe void InsertSequenceData(byte* ptr, DbCommand cmd, int listId)
|
||||
{
|
||||
cmd.Parameters.Clear();
|
||||
cmd.CommandText = "insert into chanseq(listid,seq,slot) values (" + listId + ",@seq,@slot)";
|
||||
var pSeq = cmd.CreateParameter();
|
||||
pSeq.ParameterName = "@seq";
|
||||
pSeq.DbType = DbType.Int32;
|
||||
cmd.Parameters.Add(pSeq);
|
||||
var pSlot = cmd.CreateParameter();
|
||||
pSlot.ParameterName = "@slot";
|
||||
pSlot.DbType = DbType.Int32;
|
||||
cmd.Parameters.Add(pSlot);
|
||||
|
||||
SatChannelListHeader* header = (SatChannelListHeader*) (ptr + this.dvbsChannelHeaderOffset);
|
||||
|
||||
int seq = 0;
|
||||
ushort tableIndex = header->LinkedListStartIndex;
|
||||
while(tableIndex != 0xFFFF)
|
||||
{
|
||||
ushort* entry = (ushort*)(ptr + this.dvbsChannelLinkedListOffset + tableIndex*c.sizeOfZappingTableEntry);
|
||||
pSeq.Value = seq;
|
||||
if (entry[2] != tableIndex)
|
||||
break;
|
||||
pSlot.Value = (int)tableIndex;
|
||||
cmd.ExecuteNonQuery();
|
||||
|
||||
tableIndex = entry[1];
|
||||
++seq;
|
||||
}
|
||||
}
|
||||
|
||||
#region InsertListData()
|
||||
private int InsertListData(DbCommand cmd)
|
||||
{
|
||||
cmd.CommandText = "select max(listid) from list";
|
||||
var maxObj = cmd.ExecuteScalar();
|
||||
int listId = maxObj == DBNull.Value ? 1 : (int) maxObj + 1;
|
||||
|
||||
cmd.CommandText = "insert into list(listid, filename, created) values (" + listId + ", @filename, getdate())";
|
||||
var parm = cmd.CreateParameter();
|
||||
parm.ParameterName = "@filename";
|
||||
parm.DbType = DbType.String;
|
||||
parm.Value = this.FileName;
|
||||
cmd.Parameters.Add(parm);
|
||||
cmd.ExecuteNonQuery();
|
||||
return listId;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region InsertChannelData()
|
||||
private unsafe void InsertChannelData(byte* ptr, DbCommand cmd, int listId)
|
||||
{
|
||||
PrepareChannelInsert(cmd);
|
||||
|
||||
dvbsMapping.DataPtr = ptr + this.dvbsChannelListOffset;
|
||||
for (int slot = 0; slot < this.dvbsChannelCount; slot++)
|
||||
{
|
||||
cmd.Parameters["@listid"].Value = listId;
|
||||
cmd.Parameters["@slot"].Value = slot;
|
||||
cmd.Parameters["@seq"].Value = DBNull.Value;
|
||||
cmd.Parameters["@isdel"].Value = dvbsMapping.InUse ? 0 : 1;
|
||||
cmd.Parameters["@progmask"].Value = dvbsMapping.ProgramNr;
|
||||
cmd.Parameters["@prognr"].Value = (dvbsMapping.ProgramNr & 0x3FFF);
|
||||
cmd.Parameters["@progfix"].Value = dvbsMapping.ProgramNrPreset;
|
||||
cmd.Parameters["@name"].Value = dvbsMapping.Name;
|
||||
cmd.Parameters["@tpnr"].Value = dvbsMapping.TransponderIndex;
|
||||
var transp = this.DataRoot.Transponder.TryGet(dvbsMapping.TransponderIndex);
|
||||
cmd.Parameters["@satnr"].Value = transp == null ? (object)DBNull.Value : transp.Satellite.Id;
|
||||
cmd.Parameters["@onid"].Value = transp == null ? (object)DBNull.Value : transp.OriginalNetworkId;
|
||||
cmd.Parameters["@tsid"].Value = transp == null ? (object)DBNull.Value : transp.TransportStreamId;
|
||||
cmd.Parameters["@ssid"].Value = (int)dvbsMapping.ServiceId;
|
||||
cmd.Parameters["@uid"].Value = transp == null
|
||||
? (object) DBNull.Value
|
||||
: transp.TransportStreamId + "-" + transp.OriginalNetworkId + "-" +
|
||||
dvbsMapping.ServiceId;
|
||||
cmd.Parameters["@favcrypt"].Value = (int)dvbsMapping.GetByte("offFavorites");
|
||||
cmd.Parameters["@lockskiphide"].Value = (int)dvbsMapping.GetByte("offLock");
|
||||
cmd.ExecuteNonQuery();
|
||||
dvbsMapping.Next();
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region PrepareChannelInsert()
|
||||
private static void PrepareChannelInsert(DbCommand cmd)
|
||||
{
|
||||
var cols = new[] { "listid", "slot", "seq", "isdel", "progmask", "prognr", "progfix", "name", "tpnr", "satnr", "onid", "tsid", "ssid", "uid", "favcrypt", "lockskiphide" };
|
||||
|
||||
cmd.Parameters.Clear();
|
||||
|
||||
var sb = new StringBuilder();
|
||||
sb.Append("insert into channel (");
|
||||
var comma = "";
|
||||
foreach (var col in cols)
|
||||
{
|
||||
sb.Append(comma).Append(col);
|
||||
comma = ",";
|
||||
}
|
||||
sb.Append(") values (");
|
||||
comma = "";
|
||||
foreach (var col in cols)
|
||||
{
|
||||
sb.Append(comma).Append('@').Append(col);
|
||||
comma = ",";
|
||||
}
|
||||
sb.Append(")");
|
||||
cmd.CommandText = sb.ToString();
|
||||
|
||||
foreach (var col in cols)
|
||||
{
|
||||
DbParameter parm = cmd.CreateParameter();
|
||||
parm.ParameterName = "@" + col;
|
||||
if (col == "name" || col == "uid")
|
||||
{
|
||||
parm.DbType = DbType.String;
|
||||
parm.Size = 40;
|
||||
}
|
||||
else
|
||||
parm.DbType = DbType.Int32;
|
||||
cmd.Parameters.Add(parm);
|
||||
}
|
||||
|
||||
cmd.Prepare();
|
||||
}
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
185
ChanSort.Plugin.TllFile/TllFileSerializerPlugin.cs
Normal file
185
ChanSort.Plugin.TllFile/TllFileSerializerPlugin.cs
Normal file
@@ -0,0 +1,185 @@
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using ChanSort.Api;
|
||||
|
||||
namespace ChanSort.Plugin.TllFile
|
||||
{
|
||||
public class TllFileSerializerPlugin : ISerializerPlugin
|
||||
{
|
||||
private const int MAX_FILE_SIZE = 16*1000*1000;
|
||||
private readonly string ERR_modelUnknown = Resource.TllFileSerializerPlugin_ERR_modelUnknown;
|
||||
private readonly string ERR_fileTooBig = Resource.TllFileSerializerPlugin_ERR_fileTooBig;
|
||||
private static readonly byte[] DVBS_S2 = Encoding.ASCII.GetBytes("DVBS-S2");
|
||||
|
||||
private readonly MappingPool<ActChannelDataMapping> actMappings = new MappingPool<ActChannelDataMapping>("Analog and DVB-C/T");
|
||||
private readonly MappingPool<DvbsChannelDataMapping> dvbsMappings = new MappingPool<DvbsChannelDataMapping>("DVB-S");
|
||||
private readonly MappingPool<FirmwareDataMapping> firmwareMappings = new MappingPool<FirmwareDataMapping>("Firmware");
|
||||
private readonly List<ModelConstants> modelConstants = new List<ModelConstants>();
|
||||
private string series = "";
|
||||
|
||||
public string PluginName { get { return Resource.TllFileSerializerPlugin_PluginName; } }
|
||||
public string FileFilter { get { return "*.TLL"; } }
|
||||
|
||||
public TllFileSerializerPlugin()
|
||||
{
|
||||
this.ReadConfigurationFromIniFile();
|
||||
}
|
||||
|
||||
#region ReadConfigurationFromIniFile()
|
||||
|
||||
private void ReadConfigurationFromIniFile()
|
||||
{
|
||||
DvbStringDecoder dvbsStringDecoder = new DvbStringDecoder(null);
|
||||
string iniFile = Assembly.GetExecutingAssembly().Location.Replace(".dll", ".ini");
|
||||
IniFile ini = new IniFile(iniFile);
|
||||
foreach (var section in ini.Sections)
|
||||
{
|
||||
int idx = section.Name.IndexOf(":");
|
||||
int recordLength = idx < 0 ? 0 : int.Parse(section.Name.Substring(idx + 1));
|
||||
if (section.Name.StartsWith("FileConfiguration"))
|
||||
this.ReadModelConstants(section);
|
||||
else if (section.Name.StartsWith("ACTChannelDataMapping"))
|
||||
actMappings.AddMapping(new ActChannelDataMapping(section, recordLength, dvbsStringDecoder));
|
||||
else if (section.Name.StartsWith("SatChannelDataMapping"))
|
||||
dvbsMappings.AddMapping(new DvbsChannelDataMapping(section, recordLength, dvbsStringDecoder));
|
||||
else if (section.Name.StartsWith("FirmwareData"))
|
||||
firmwareMappings.AddMapping(new FirmwareDataMapping(section, recordLength));
|
||||
}
|
||||
}
|
||||
|
||||
private void ReadModelConstants(IniFile.Section section)
|
||||
{
|
||||
if (this.series.Length > 0)
|
||||
this.series += ",";
|
||||
this.series += section.Name;
|
||||
|
||||
ModelConstants c = new ModelConstants(section);
|
||||
this.modelConstants.Add(c);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region CreateSerializer()
|
||||
public SerializerBase CreateSerializer(string inputFile)
|
||||
{
|
||||
long fileSize = new FileInfo(inputFile).Length;
|
||||
if (fileSize > MAX_FILE_SIZE)
|
||||
throw new IOException(string.Format(ERR_fileTooBig, fileSize, MAX_FILE_SIZE));
|
||||
byte[] fileContent = File.ReadAllBytes(inputFile);
|
||||
ModelConstants model = this.DetermineModel(fileContent);
|
||||
if (model == null)
|
||||
throw new IOException(ERR_modelUnknown);
|
||||
|
||||
return new TllFileSerializer(inputFile, model,
|
||||
this.actMappings.GetMapping(model.actChannelLength),
|
||||
this.dvbsMappings.GetMapping(model.dvbsChannelLength),
|
||||
this.firmwareMappings.GetMapping(model.firmwareBlockLength, false),
|
||||
fileContent);
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
#region DetermineModel()
|
||||
private ModelConstants DetermineModel(byte[] fileContent)
|
||||
{
|
||||
foreach (var model in this.modelConstants)
|
||||
{
|
||||
if (this.IsModel(fileContent, model))
|
||||
return model;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region IsModel()
|
||||
private unsafe bool IsModel(byte[] fileContent, ModelConstants c)
|
||||
{
|
||||
c.hasDvbSBlock = false;
|
||||
fixed (byte* p = fileContent)
|
||||
{
|
||||
long fileSize = fileContent.Length;
|
||||
|
||||
// check magic file header
|
||||
uint offset = 0;
|
||||
if (fileSize < c.magicBytes.Length)
|
||||
return false;
|
||||
if (!ByteCompare(p, c.magicBytes))
|
||||
return false;
|
||||
offset += (uint)c.magicBytes.Length;
|
||||
|
||||
// analog channel block
|
||||
if (offset + 8 > fileSize) return false;
|
||||
uint blockSize = *(uint*)(p + offset);
|
||||
uint channelCount = *(uint*) (p + offset + 4);
|
||||
if (blockSize < 4 + channelCount)
|
||||
return false;
|
||||
if (blockSize > 4 && channelCount > 0)
|
||||
c.actChannelLength = (int)((blockSize - 4)/channelCount);
|
||||
offset += 4 + blockSize;
|
||||
|
||||
// firmware data block
|
||||
if (offset + 4 > fileSize) return false;
|
||||
blockSize = *(uint*) (p + offset);
|
||||
c.firmwareBlockLength = (int)blockSize;
|
||||
offset += 4 + blockSize;
|
||||
|
||||
// DVB-C/T channel block
|
||||
if (offset + 8 > fileSize) return false;
|
||||
blockSize = *(uint*) (p + offset);
|
||||
channelCount = *(uint*) (p + offset + 4);
|
||||
if (blockSize < 4 + channelCount)
|
||||
return false;
|
||||
if (blockSize > 4 && channelCount > 0)
|
||||
c.actChannelLength = (int)((blockSize - 4) / channelCount);
|
||||
offset += 4 + blockSize;
|
||||
|
||||
// optional blocks
|
||||
while (offset != fileSize)
|
||||
{
|
||||
if (offset + 4 > fileSize)
|
||||
return false;
|
||||
|
||||
blockSize = *(uint*) (p + offset);
|
||||
// check for DVBS-S2 block
|
||||
if (blockSize >= sizeof(DvbSBlockHeader))
|
||||
{
|
||||
DvbSBlockHeader* header = (DvbSBlockHeader*) (p + offset);
|
||||
if (ByteCompare(header->DvbS_S2, DVBS_S2))
|
||||
{
|
||||
c.hasDvbSBlock = true;
|
||||
int length = sizeof(DvbSBlockHeader) +
|
||||
c.satCount*c.satLength +
|
||||
c.sizeOfTransponderBlockHeader +
|
||||
c.transponderCount*c.transponderLength +
|
||||
sizeof(SatChannelListHeader) +
|
||||
c.dvbsMaxChannelCount/8 +
|
||||
c.dvbsMaxChannelCount*c.sizeOfZappingTableEntry +
|
||||
c.dvbsMaxChannelCount*c.dvbsChannelLength +
|
||||
sizeof(LnbBlockHeader) + c.lnbCount*c.lnbLength;
|
||||
if (length != 4 + blockSize)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
offset += 4 + blockSize;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region ByteCompare()
|
||||
private static unsafe bool ByteCompare(byte* buffer, byte[] expected)
|
||||
{
|
||||
for (int i = 0; i < expected.Length; i++)
|
||||
{
|
||||
if (buffer[i] != expected[i])
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
169
ChanSort.Plugin.TllFile/TllStructures.cs
Normal file
169
ChanSort.Plugin.TllFile/TllStructures.cs
Normal file
@@ -0,0 +1,169 @@
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace ChanSort.Plugin.TllFile
|
||||
{
|
||||
/*
|
||||
TllFileHeader? ("ZZZZ" or nothing)
|
||||
ChannelBlock
|
||||
AnalogChannel[]
|
||||
FirmwareBlock
|
||||
ChannelBlock
|
||||
DvbCtChannel[]
|
||||
DvbSBlockHeader
|
||||
TllSatellite[64]
|
||||
TransponderBlockHeader
|
||||
TllTransponder[2400]
|
||||
SatChannelListHeader
|
||||
DvbSChannel[7520]
|
||||
LnbBlockHeader
|
||||
Lnb[40]
|
||||
SettingsBlock?
|
||||
*/
|
||||
|
||||
#region struct ChannelBlock
|
||||
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
||||
public struct ChannelBlock
|
||||
{
|
||||
public uint BlockSize; // = 4 + ChannelCount * ChannelLength
|
||||
public uint ChannelCount;
|
||||
public uint ChannelLength { get { return ChannelCount == 0 ? 0 : (BlockSize - 4) / ChannelCount; } }
|
||||
public byte StartOfChannelList;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region struct FirmwareBlock
|
||||
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
||||
public unsafe struct FirmwareBlock
|
||||
{
|
||||
public uint BlockSize;
|
||||
public fixed byte Unknown_0x0000[35631];
|
||||
public fixed byte HotelMenu[29];
|
||||
public fixed byte Unknown_0x8B4C[1204]; // or more
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
#region struct DvbSBlockHeader
|
||||
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
||||
public unsafe struct DvbSBlockHeader
|
||||
{
|
||||
public uint BlockSize;
|
||||
public uint Crc32ForSubblock1;
|
||||
public fixed byte DvbS_S2 [8]; // "DVBS-S2\0"
|
||||
public ushort Unknown_0x10; // 0x0007
|
||||
public ushort Unknown_0x12; // 0x0004 // 0x0000
|
||||
|
||||
public uint Crc32ForSubblock2;
|
||||
public const int Unknown0x18_Length = 12;
|
||||
public fixed byte Unknown_0x18[Unknown0x18_Length];
|
||||
public ushort SatOrderLength;
|
||||
public fixed byte SatOrder[64];
|
||||
public fixed byte Unknown [2];
|
||||
//public fixed TllSatellite Satellites[64]
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region struct TllSatellite
|
||||
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
||||
public unsafe struct TllSatellite
|
||||
{
|
||||
public const int SatNameLength =32;
|
||||
|
||||
public fixed byte Name [SatNameLength];
|
||||
public byte PosDeg;
|
||||
public byte PosCDeg;
|
||||
public byte Unknown_34; // typically 0
|
||||
public byte Unknown_35; // typically 2
|
||||
public ushort Unknown_36; // 0xFFFF if sat is not used
|
||||
public ushort Unknown_38; // 0xFFFF if sat is not used
|
||||
public ushort TransponderCount;
|
||||
public ushort Unknown_42; // typically 0
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region struct TransponderLinkedList
|
||||
public struct TransponderLinkedList
|
||||
{
|
||||
public ushort Prev;
|
||||
public ushort Next;
|
||||
public ushort Current;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region struct TransponderBlockHeader
|
||||
public unsafe struct TransponderBlockHeader
|
||||
{
|
||||
public uint Crc32;
|
||||
public ushort Unknown1;
|
||||
public ushort HeadIndex;
|
||||
public ushort TailIndex1;
|
||||
public ushort TailIndex2;
|
||||
public ushort TransponderCount;
|
||||
public fixed byte AllocationBitmap [2400/8];
|
||||
public fixed ushort TransponderLinkedList [2400*3];
|
||||
public ushort Unknown3;
|
||||
// public fixed TllTransponder Transponders[2400]
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region struct TllTransponder
|
||||
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
||||
public unsafe struct TllTransponder
|
||||
{
|
||||
public fixed byte Unknown_0x00 [10];
|
||||
public ushort Index;
|
||||
public ushort Frequency;
|
||||
public fixed byte Unknown_0x0E [4];
|
||||
public ushort NetworkId;
|
||||
public ushort TransportStreamId;
|
||||
public fixed byte Unknown_0x16 [3];
|
||||
public ushort SymbolRateAndPolarity;
|
||||
public fixed byte Unknown_0x1B [9];
|
||||
public byte SatIndex;
|
||||
public fixed byte Unknown_0x25 [3];
|
||||
|
||||
//public int SymbolRate { get { return this.SymbolRateAndPolarity & 0x7FFFF; } }
|
||||
public ushort SymbolRate { get { return this.SymbolRateAndPolarity; } set { this.SymbolRateAndPolarity = value; } }
|
||||
public char Polarity { get { return '\0'; } }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region struct SatChannelListHeader
|
||||
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
||||
public unsafe struct SatChannelListHeader
|
||||
{
|
||||
public uint Checksum;
|
||||
public fixed byte Unknown_0x04[4];
|
||||
public ushort LinkedListStartIndex;
|
||||
public ushort LinkedListEndIndex1;
|
||||
public ushort LinkedListEndIndex2;
|
||||
public ushort ChannelCount;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region struct LnbBlockHeader
|
||||
public unsafe struct LnbBlockHeader
|
||||
{
|
||||
public uint crc32;
|
||||
public ushort lastUsedIndex;
|
||||
public fixed byte lnbAllocationBitmap[6];
|
||||
// public Lnb lnbs[40];
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region struct Lnb
|
||||
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
||||
public unsafe struct Lnb
|
||||
{
|
||||
public byte SettingsID;
|
||||
public fixed byte Unknown_0x0D[3];
|
||||
public byte SatelliteID;
|
||||
public fixed byte Unknown_0x11[3];
|
||||
public fixed byte FrequencyName[12];
|
||||
public ushort LOF1;
|
||||
public fixed byte Unknown_0x22 [2];
|
||||
public ushort LOF2;
|
||||
public fixed byte Unknown_0x26 [18];
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
223
ChanSort.Plugin.TllFile/TvSettingsForm.Designer.cs
generated
Normal file
223
ChanSort.Plugin.TllFile/TvSettingsForm.Designer.cs
generated
Normal file
@@ -0,0 +1,223 @@
|
||||
namespace ChanSort.Plugin.TllFile
|
||||
{
|
||||
partial class TvSettingsForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(TvSettingsForm));
|
||||
this.grpSettings = new DevExpress.XtraEditors.GroupControl();
|
||||
this.cbHbbTv = new DevExpress.XtraEditors.CheckEdit();
|
||||
this.cbCustomCountry = new DevExpress.XtraEditors.CheckEdit();
|
||||
this.comboBoxEdit1 = new DevExpress.XtraEditors.ComboBoxEdit();
|
||||
this.labelControl1 = new DevExpress.XtraEditors.LabelControl();
|
||||
this.btnOk = new DevExpress.XtraEditors.SimpleButton();
|
||||
this.btnCancel = new DevExpress.XtraEditors.SimpleButton();
|
||||
this.grpHotelMode = new DevExpress.XtraEditors.GroupControl();
|
||||
this.labelControl3 = new DevExpress.XtraEditors.LabelControl();
|
||||
this.labelControl2 = new DevExpress.XtraEditors.LabelControl();
|
||||
this.cbDtvUpdate = new DevExpress.XtraEditors.CheckEdit();
|
||||
this.cbHotelMode = new DevExpress.XtraEditors.CheckEdit();
|
||||
this.cbAutoChannelUpdate = new DevExpress.XtraEditors.CheckEdit();
|
||||
this.groupControl1 = new DevExpress.XtraEditors.GroupControl();
|
||||
this.grpFirmwareNote = new DevExpress.XtraEditors.GroupControl();
|
||||
this.labelControl4 = new DevExpress.XtraEditors.LabelControl();
|
||||
((System.ComponentModel.ISupportInitialize)(this.grpSettings)).BeginInit();
|
||||
this.grpSettings.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.cbHbbTv.Properties)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.cbCustomCountry.Properties)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.comboBoxEdit1.Properties)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.grpHotelMode)).BeginInit();
|
||||
this.grpHotelMode.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.cbDtvUpdate.Properties)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.cbHotelMode.Properties)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.cbAutoChannelUpdate.Properties)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.groupControl1)).BeginInit();
|
||||
this.groupControl1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.grpFirmwareNote)).BeginInit();
|
||||
this.grpFirmwareNote.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// grpSettings
|
||||
//
|
||||
this.grpSettings.Controls.Add(this.cbHbbTv);
|
||||
this.grpSettings.Controls.Add(this.cbCustomCountry);
|
||||
this.grpSettings.Controls.Add(this.comboBoxEdit1);
|
||||
this.grpSettings.Controls.Add(this.labelControl1);
|
||||
resources.ApplyResources(this.grpSettings, "grpSettings");
|
||||
this.grpSettings.Name = "grpSettings";
|
||||
//
|
||||
// cbHbbTv
|
||||
//
|
||||
resources.ApplyResources(this.cbHbbTv, "cbHbbTv");
|
||||
this.cbHbbTv.Name = "cbHbbTv";
|
||||
this.cbHbbTv.Properties.Caption = resources.GetString("cbHbbTv.Properties.Caption");
|
||||
//
|
||||
// cbCustomCountry
|
||||
//
|
||||
resources.ApplyResources(this.cbCustomCountry, "cbCustomCountry");
|
||||
this.cbCustomCountry.Name = "cbCustomCountry";
|
||||
this.cbCustomCountry.Properties.Caption = resources.GetString("cbCustomCountry.Properties.Caption");
|
||||
this.cbCustomCountry.CheckedChanged += new System.EventHandler(this.cbCustomCountry_CheckedChanged);
|
||||
//
|
||||
// comboBoxEdit1
|
||||
//
|
||||
resources.ApplyResources(this.comboBoxEdit1, "comboBoxEdit1");
|
||||
this.comboBoxEdit1.Name = "comboBoxEdit1";
|
||||
this.comboBoxEdit1.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
|
||||
new DevExpress.XtraEditors.Controls.EditorButton(((DevExpress.XtraEditors.Controls.ButtonPredefines)(resources.GetObject("comboBoxEdit1.Properties.Buttons"))))});
|
||||
this.comboBoxEdit1.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.DisableTextEditor;
|
||||
//
|
||||
// labelControl1
|
||||
//
|
||||
resources.ApplyResources(this.labelControl1, "labelControl1");
|
||||
this.labelControl1.Name = "labelControl1";
|
||||
//
|
||||
// btnOk
|
||||
//
|
||||
resources.ApplyResources(this.btnOk, "btnOk");
|
||||
this.btnOk.DialogResult = System.Windows.Forms.DialogResult.OK;
|
||||
this.btnOk.Name = "btnOk";
|
||||
this.btnOk.Click += new System.EventHandler(this.btnOk_Click);
|
||||
//
|
||||
// btnCancel
|
||||
//
|
||||
resources.ApplyResources(this.btnCancel, "btnCancel");
|
||||
this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.btnCancel.Name = "btnCancel";
|
||||
//
|
||||
// grpHotelMode
|
||||
//
|
||||
this.grpHotelMode.Controls.Add(this.labelControl3);
|
||||
this.grpHotelMode.Controls.Add(this.labelControl2);
|
||||
this.grpHotelMode.Controls.Add(this.cbDtvUpdate);
|
||||
this.grpHotelMode.Controls.Add(this.cbHotelMode);
|
||||
resources.ApplyResources(this.grpHotelMode, "grpHotelMode");
|
||||
this.grpHotelMode.Name = "grpHotelMode";
|
||||
//
|
||||
// labelControl3
|
||||
//
|
||||
resources.ApplyResources(this.labelControl3, "labelControl3");
|
||||
this.labelControl3.Name = "labelControl3";
|
||||
//
|
||||
// labelControl2
|
||||
//
|
||||
resources.ApplyResources(this.labelControl2, "labelControl2");
|
||||
this.labelControl2.Name = "labelControl2";
|
||||
//
|
||||
// cbDtvUpdate
|
||||
//
|
||||
resources.ApplyResources(this.cbDtvUpdate, "cbDtvUpdate");
|
||||
this.cbDtvUpdate.Name = "cbDtvUpdate";
|
||||
this.cbDtvUpdate.Properties.Caption = resources.GetString("cbDtvUpdate.Properties.Caption");
|
||||
//
|
||||
// cbHotelMode
|
||||
//
|
||||
resources.ApplyResources(this.cbHotelMode, "cbHotelMode");
|
||||
this.cbHotelMode.Name = "cbHotelMode";
|
||||
this.cbHotelMode.Properties.Caption = resources.GetString("cbHotelMode.Properties.Caption");
|
||||
//
|
||||
// cbAutoChannelUpdate
|
||||
//
|
||||
resources.ApplyResources(this.cbAutoChannelUpdate, "cbAutoChannelUpdate");
|
||||
this.cbAutoChannelUpdate.Name = "cbAutoChannelUpdate";
|
||||
this.cbAutoChannelUpdate.Properties.Caption = resources.GetString("cbAutoChannelUpdate.Properties.Caption");
|
||||
//
|
||||
// groupControl1
|
||||
//
|
||||
this.groupControl1.Controls.Add(this.cbAutoChannelUpdate);
|
||||
resources.ApplyResources(this.groupControl1, "groupControl1");
|
||||
this.groupControl1.Name = "groupControl1";
|
||||
//
|
||||
// grpFirmwareNote
|
||||
//
|
||||
this.grpFirmwareNote.Controls.Add(this.labelControl4);
|
||||
resources.ApplyResources(this.grpFirmwareNote, "grpFirmwareNote");
|
||||
this.grpFirmwareNote.Name = "grpFirmwareNote";
|
||||
//
|
||||
// labelControl4
|
||||
//
|
||||
resources.ApplyResources(this.labelControl4, "labelControl4");
|
||||
this.labelControl4.Name = "labelControl4";
|
||||
//
|
||||
// TvSettingsForm
|
||||
//
|
||||
this.AcceptButton = this.btnOk;
|
||||
this.Appearance.Options.UseBackColor = true;
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.CancelButton = this.btnCancel;
|
||||
this.Controls.Add(this.grpHotelMode);
|
||||
this.Controls.Add(this.btnCancel);
|
||||
this.Controls.Add(this.btnOk);
|
||||
this.Controls.Add(this.grpSettings);
|
||||
this.Controls.Add(this.groupControl1);
|
||||
this.Controls.Add(this.grpFirmwareNote);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "TvSettingsForm";
|
||||
this.Load += new System.EventHandler(this.TvSettingsForm_Load);
|
||||
((System.ComponentModel.ISupportInitialize)(this.grpSettings)).EndInit();
|
||||
this.grpSettings.ResumeLayout(false);
|
||||
this.grpSettings.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.cbHbbTv.Properties)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.cbCustomCountry.Properties)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.comboBoxEdit1.Properties)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.grpHotelMode)).EndInit();
|
||||
this.grpHotelMode.ResumeLayout(false);
|
||||
this.grpHotelMode.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.cbDtvUpdate.Properties)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.cbHotelMode.Properties)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.cbAutoChannelUpdate.Properties)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.groupControl1)).EndInit();
|
||||
this.groupControl1.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.grpFirmwareNote)).EndInit();
|
||||
this.grpFirmwareNote.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private DevExpress.XtraEditors.GroupControl grpSettings;
|
||||
private DevExpress.XtraEditors.ComboBoxEdit comboBoxEdit1;
|
||||
private DevExpress.XtraEditors.LabelControl labelControl1;
|
||||
private DevExpress.XtraEditors.SimpleButton btnOk;
|
||||
private DevExpress.XtraEditors.SimpleButton btnCancel;
|
||||
private DevExpress.XtraEditors.CheckEdit cbCustomCountry;
|
||||
private DevExpress.XtraEditors.GroupControl grpHotelMode;
|
||||
private DevExpress.XtraEditors.CheckEdit cbHbbTv;
|
||||
private DevExpress.XtraEditors.CheckEdit cbDtvUpdate;
|
||||
private DevExpress.XtraEditors.CheckEdit cbHotelMode;
|
||||
private DevExpress.XtraEditors.CheckEdit cbAutoChannelUpdate;
|
||||
private DevExpress.XtraEditors.GroupControl groupControl1;
|
||||
private DevExpress.XtraEditors.LabelControl labelControl3;
|
||||
private DevExpress.XtraEditors.LabelControl labelControl2;
|
||||
private DevExpress.XtraEditors.GroupControl grpFirmwareNote;
|
||||
private DevExpress.XtraEditors.LabelControl labelControl4;
|
||||
}
|
||||
}
|
||||
73
ChanSort.Plugin.TllFile/TvSettingsForm.cs
Normal file
73
ChanSort.Plugin.TllFile/TvSettingsForm.cs
Normal file
@@ -0,0 +1,73 @@
|
||||
using System;
|
||||
using DevExpress.XtraEditors;
|
||||
using DevExpress.XtraEditors.Controls;
|
||||
|
||||
namespace ChanSort.Plugin.TllFile
|
||||
{
|
||||
public partial class TvSettingsForm : XtraForm
|
||||
{
|
||||
private readonly TllFileSerializer tvSerializer;
|
||||
|
||||
public TvSettingsForm(TllFileSerializer tvSerializer)
|
||||
{
|
||||
this.tvSerializer = tvSerializer;
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private unsafe void TvSettingsForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
var items = tvSerializer.SupportedTvCountryCodes;
|
||||
foreach(var item in items)
|
||||
this.comboBoxEdit1.Properties.Items.Add(item);
|
||||
this.comboBoxEdit1.Text = this.tvSerializer.TvCountryCode;
|
||||
|
||||
byte[] fileContent = this.tvSerializer.FileContent;
|
||||
fixed (byte* ptr = fileContent)
|
||||
{
|
||||
var mapping = this.tvSerializer.GetFirmwareMapping(ptr);
|
||||
if (mapping != null)
|
||||
{
|
||||
this.cbAutoChannelUpdate.Checked = mapping.SettingsAutomaticChannelUpdate;
|
||||
this.cbHbbTv.Checked = mapping.HbbTvEnabled;
|
||||
this.cbHotelMode.Checked = mapping.HotelModeEnabled;
|
||||
this.cbDtvUpdate.Checked = mapping.HotelModeDtvUpdate;
|
||||
|
||||
this.grpFirmwareNote.Visible = false;
|
||||
this.Height -= this.grpFirmwareNote.Height;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.cbAutoChannelUpdate.Enabled = false;
|
||||
this.cbHbbTv.Enabled = false;
|
||||
this.cbHotelMode.Enabled = false;
|
||||
this.cbDtvUpdate.Enabled = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private unsafe void btnOk_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.tvSerializer.TvCountryCode = this.comboBoxEdit1.Text;
|
||||
|
||||
byte[] fileContent = this.tvSerializer.FileContent;
|
||||
fixed (byte* ptr = fileContent)
|
||||
{
|
||||
var mapping = this.tvSerializer.GetFirmwareMapping(ptr);
|
||||
if (mapping != null)
|
||||
{
|
||||
mapping.SettingsAutomaticChannelUpdate = this.cbAutoChannelUpdate.Checked;
|
||||
mapping.HbbTvEnabled = this.cbHbbTv.Checked;
|
||||
mapping.HotelModeEnabled = this.cbHotelMode.Checked;
|
||||
mapping.HotelModeDtvUpdate = this.cbDtvUpdate.Checked;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void cbCustomCountry_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
this.comboBoxEdit1.Properties.TextEditStyle = this.cbCustomCountry.Checked
|
||||
? TextEditStyles.Standard
|
||||
: TextEditStyles.DisableTextEditor;
|
||||
}
|
||||
}
|
||||
}
|
||||
325
ChanSort.Plugin.TllFile/TvSettingsForm.de.resx
Normal file
325
ChanSort.Plugin.TllFile/TvSettingsForm.de.resx
Normal file
@@ -0,0 +1,325 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="cbHbbTv.Properties.AccessibleDescription" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbHbbTv.Properties.AccessibleName" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="cbHbbTv.Properties.AutoHeight" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="cbHbbTv.Properties.Caption" xml:space="preserve">
|
||||
<value>HbbTV aktivieren (funktioniert nur mit den Ländereinstellungen DEU, FRA, NED und ESP)</value>
|
||||
</data>
|
||||
<data name="cbHbbTv.Properties.DisplayValueChecked" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbHbbTv.Properties.DisplayValueGrayed" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbHbbTv.Properties.DisplayValueUnchecked" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbCustomCountry.Properties.AccessibleDescription" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbCustomCountry.Properties.AccessibleName" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbCustomCountry.Properties.AutoHeight" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="cbCustomCountry.Properties.Caption" xml:space="preserve">
|
||||
<value>Eigene Werte erlauben (auf eigene Gefahr!)</value>
|
||||
</data>
|
||||
<data name="cbCustomCountry.Properties.DisplayValueChecked" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbCustomCountry.Properties.DisplayValueGrayed" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbCustomCountry.Properties.DisplayValueUnchecked" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="comboBoxEdit1.Properties.AccessibleDescription" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="comboBoxEdit1.Properties.AccessibleName" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="comboBoxEdit1.Properties.AutoHeight" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="comboBoxEdit1.Properties.NullValuePrompt" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="comboBoxEdit1.Properties.NullValuePromptShowForEmptyValue" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="labelControl1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>27, 13</value>
|
||||
</data>
|
||||
<data name="labelControl1.Text" xml:space="preserve">
|
||||
<value>Land:</value>
|
||||
</data>
|
||||
<data name="grpSettings.Text" xml:space="preserve">
|
||||
<value>OPTION Menü</value>
|
||||
</data>
|
||||
<data name="btnCancel.Text" xml:space="preserve">
|
||||
<value>Abbrechen</value>
|
||||
</data>
|
||||
<data name="labelControl3.Text" xml:space="preserve">
|
||||
<value>HINWEIS: Bei aktivem Hotel-Modus kann man in der EPG nicht zum gewählten Sender wechseln und die Funktion "Werkseinstellungen" ist gesperrt.</value>
|
||||
</data>
|
||||
<data name="labelControl2.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>341, 13</value>
|
||||
</data>
|
||||
<data name="labelControl2.Text" xml:space="preserve">
|
||||
<value>Die folgenden Einstellungen funktionieren nur bei aktivem Hotel-Modus:</value>
|
||||
</data>
|
||||
<data name="cbDtvUpdate.Properties.AccessibleDescription" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbDtvUpdate.Properties.AccessibleName" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbDtvUpdate.Properties.AutoHeight" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="cbDtvUpdate.Properties.Caption" xml:space="preserve">
|
||||
<value>D-TV Senderliste automatisch aktualisieren (empfohlen: AUS)</value>
|
||||
</data>
|
||||
<data name="cbDtvUpdate.Properties.DisplayValueChecked" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbDtvUpdate.Properties.DisplayValueGrayed" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbDtvUpdate.Properties.DisplayValueUnchecked" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbHotelMode.Properties.AccessibleDescription" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbHotelMode.Properties.AccessibleName" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbHotelMode.Properties.AutoHeight" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="cbHotelMode.Properties.Caption" xml:space="preserve">
|
||||
<value>Hotel Modus aktivieren (empfohlen: EIN)</value>
|
||||
</data>
|
||||
<data name="cbHotelMode.Properties.DisplayValueChecked" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbHotelMode.Properties.DisplayValueGrayed" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbHotelMode.Properties.DisplayValueUnchecked" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="grpHotelMode.Text" xml:space="preserve">
|
||||
<value>Hotel Modus</value>
|
||||
</data>
|
||||
<data name="cbAutoChannelUpdate.Properties.AccessibleDescription" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbAutoChannelUpdate.Properties.AccessibleName" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbAutoChannelUpdate.Properties.AutoHeight" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="cbAutoChannelUpdate.Properties.Caption" xml:space="preserve">
|
||||
<value>Senderliste automatisch aktualisieren (empfohlen: AUS)</value>
|
||||
</data>
|
||||
<data name="cbAutoChannelUpdate.Properties.DisplayValueChecked" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbAutoChannelUpdate.Properties.DisplayValueGrayed" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbAutoChannelUpdate.Properties.DisplayValueUnchecked" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="groupControl1.Text" xml:space="preserve">
|
||||
<value>EINST. Menü</value>
|
||||
</data>
|
||||
<data name="labelControl4.Text" xml:space="preserve">
|
||||
<value>Das Dateiformat Ihres TV-Modells wird nicht vollständig unterstützt. Deshalb sind viele Einstellungen in diesem Dialog gesperrt.</value>
|
||||
</data>
|
||||
<data name="textEdit1.Properties.AccessibleDescription" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="textEdit1.Properties.AccessibleName" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="textEdit1.Properties.AutoHeight" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<assembly alias="DevExpress.XtraEditors.v12.2" name="DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<data name="textEdit1.Properties.Mask.AutoComplete" type="DevExpress.XtraEditors.Mask.AutoCompleteType, DevExpress.XtraEditors.v12.2">
|
||||
<value>Default</value>
|
||||
</data>
|
||||
<data name="textEdit1.Properties.Mask.BeepOnError" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="textEdit1.Properties.Mask.EditMask" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="textEdit1.Properties.Mask.IgnoreMaskBlank" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="textEdit1.Properties.Mask.MaskType" type="DevExpress.XtraEditors.Mask.MaskType, DevExpress.XtraEditors.v12.2">
|
||||
<value>None</value>
|
||||
</data>
|
||||
<data name="textEdit1.Properties.Mask.PlaceHolder" type="System.Char, mscorlib" xml:space="preserve">
|
||||
<value>_</value>
|
||||
</data>
|
||||
<data name="textEdit1.Properties.Mask.SaveLiteral" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="textEdit1.Properties.Mask.ShowPlaceHolders" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="textEdit1.Properties.Mask.UseMaskAsDisplayFormat" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="textEdit1.Properties.NullValuePrompt" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="textEdit1.Properties.NullValuePromptShowForEmptyValue" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="TvSettingsForm.Appearance.GradientMode" type="System.Drawing.Drawing2D.LinearGradientMode, System.Drawing">
|
||||
<value>Horizontal</value>
|
||||
</data>
|
||||
<data name="TvSettingsForm.Appearance.Image" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="$this.Text" xml:space="preserve">
|
||||
<value>TV Einstellungen</value>
|
||||
</data>
|
||||
</root>
|
||||
569
ChanSort.Plugin.TllFile/TvSettingsForm.resx
Normal file
569
ChanSort.Plugin.TllFile/TvSettingsForm.resx
Normal file
@@ -0,0 +1,569 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="cbHbbTv.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left, Right</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="cbHbbTv.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>12, 64</value>
|
||||
</data>
|
||||
<data name="cbHbbTv.Properties.Caption" xml:space="preserve">
|
||||
<value>Enable HbbTV (only works with country settings DEU, FRA, NED and ESP)</value>
|
||||
</data>
|
||||
<data name="cbHbbTv.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>456, 19</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="cbHbbTv.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name=">>cbHbbTv.Name" xml:space="preserve">
|
||||
<value>cbHbbTv</value>
|
||||
</data>
|
||||
<data name=">>cbHbbTv.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>cbHbbTv.Parent" xml:space="preserve">
|
||||
<value>grpSettings</value>
|
||||
</data>
|
||||
<data name=">>cbHbbTv.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="cbCustomCountry.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left, Right</value>
|
||||
</data>
|
||||
<data name="cbCustomCountry.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>150, 30</value>
|
||||
</data>
|
||||
<data name="cbCustomCountry.Properties.Caption" xml:space="preserve">
|
||||
<value>allow custom value (at your own risk!)</value>
|
||||
</data>
|
||||
<data name="cbCustomCountry.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>320, 19</value>
|
||||
</data>
|
||||
<data name="cbCustomCountry.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name=">>cbCustomCountry.Name" xml:space="preserve">
|
||||
<value>cbCustomCountry</value>
|
||||
</data>
|
||||
<data name=">>cbCustomCountry.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>cbCustomCountry.Parent" xml:space="preserve">
|
||||
<value>grpSettings</value>
|
||||
</data>
|
||||
<data name=">>cbCustomCountry.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="comboBoxEdit1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>72, 29</value>
|
||||
</data>
|
||||
<assembly alias="DevExpress.Utils.v12.2" name="DevExpress.Utils.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<data name="comboBoxEdit1.Properties.Buttons" type="DevExpress.XtraEditors.Controls.ButtonPredefines, DevExpress.Utils.v12.2">
|
||||
<value>Combo</value>
|
||||
</data>
|
||||
<data name="comboBoxEdit1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>72, 20</value>
|
||||
</data>
|
||||
<data name="comboBoxEdit1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name=">>comboBoxEdit1.Name" xml:space="preserve">
|
||||
<value>comboBoxEdit1</value>
|
||||
</data>
|
||||
<data name=">>comboBoxEdit1.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>comboBoxEdit1.Parent" xml:space="preserve">
|
||||
<value>grpSettings</value>
|
||||
</data>
|
||||
<data name=">>comboBoxEdit1.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="labelControl1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>12, 32</value>
|
||||
</data>
|
||||
<data name="labelControl1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>43, 13</value>
|
||||
</data>
|
||||
<data name="labelControl1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="labelControl1.Text" xml:space="preserve">
|
||||
<value>Country:</value>
|
||||
</data>
|
||||
<data name=">>labelControl1.Name" xml:space="preserve">
|
||||
<value>labelControl1</value>
|
||||
</data>
|
||||
<data name=">>labelControl1.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>labelControl1.Parent" xml:space="preserve">
|
||||
<value>grpSettings</value>
|
||||
</data>
|
||||
<data name=">>labelControl1.ZOrder" xml:space="preserve">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="grpSettings.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Top</value>
|
||||
</data>
|
||||
<data name="grpSettings.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 142</value>
|
||||
</data>
|
||||
<data name="grpSettings.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>480, 106</value>
|
||||
</data>
|
||||
<data name="grpSettings.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="grpSettings.Text" xml:space="preserve">
|
||||
<value>OPTION Menu</value>
|
||||
</data>
|
||||
<data name=">>grpSettings.Name" xml:space="preserve">
|
||||
<value>grpSettings</value>
|
||||
</data>
|
||||
<data name=">>grpSettings.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>grpSettings.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>grpSettings.ZOrder" xml:space="preserve">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="btnOk.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Right</value>
|
||||
</data>
|
||||
<data name="btnOk.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>310, 413</value>
|
||||
</data>
|
||||
<data name="btnOk.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>75, 23</value>
|
||||
</data>
|
||||
<data name="btnOk.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="btnOk.Text" xml:space="preserve">
|
||||
<value>Ok</value>
|
||||
</data>
|
||||
<data name=">>btnOk.Name" xml:space="preserve">
|
||||
<value>btnOk</value>
|
||||
</data>
|
||||
<data name=">>btnOk.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>btnOk.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>btnOk.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="btnCancel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Right</value>
|
||||
</data>
|
||||
<data name="btnCancel.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>395, 413</value>
|
||||
</data>
|
||||
<data name="btnCancel.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>75, 23</value>
|
||||
</data>
|
||||
<data name="btnCancel.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="btnCancel.Text" xml:space="preserve">
|
||||
<value>Cancel</value>
|
||||
</data>
|
||||
<data name=">>btnCancel.Name" xml:space="preserve">
|
||||
<value>btnCancel</value>
|
||||
</data>
|
||||
<data name=">>btnCancel.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>btnCancel.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>btnCancel.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<assembly alias="DevExpress.XtraEditors.v12.2" name="DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<data name="labelControl3.AutoSizeMode" type="DevExpress.XtraEditors.LabelAutoSizeMode, DevExpress.XtraEditors.v12.2">
|
||||
<value>Vertical</value>
|
||||
</data>
|
||||
<data name="labelControl3.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>12, 26</value>
|
||||
</data>
|
||||
<data name="labelControl3.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>458, 26</value>
|
||||
</data>
|
||||
<data name="labelControl3.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>7</value>
|
||||
</data>
|
||||
<data name="labelControl3.Text" xml:space="preserve">
|
||||
<value>NOTE: When Hotel Mode is active, you can no longer activate a channel from inside the EPG and the "Factory Reset" function becomes disabled.</value>
|
||||
</data>
|
||||
<data name=">>labelControl3.Name" xml:space="preserve">
|
||||
<value>labelControl3</value>
|
||||
</data>
|
||||
<data name=">>labelControl3.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>labelControl3.Parent" xml:space="preserve">
|
||||
<value>grpHotelMode</value>
|
||||
</data>
|
||||
<data name=">>labelControl3.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="labelControl2.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>41, 93</value>
|
||||
</data>
|
||||
<data name="labelControl2.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>315, 13</value>
|
||||
</data>
|
||||
<data name="labelControl2.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>6</value>
|
||||
</data>
|
||||
<data name="labelControl2.Text" xml:space="preserve">
|
||||
<value>The settings below are only effective when Hotel Mode is enabled</value>
|
||||
</data>
|
||||
<data name=">>labelControl2.Name" xml:space="preserve">
|
||||
<value>labelControl2</value>
|
||||
</data>
|
||||
<data name=">>labelControl2.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>labelControl2.Parent" xml:space="preserve">
|
||||
<value>grpHotelMode</value>
|
||||
</data>
|
||||
<data name=">>labelControl2.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="cbDtvUpdate.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left, Right</value>
|
||||
</data>
|
||||
<data name="cbDtvUpdate.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>39, 112</value>
|
||||
</data>
|
||||
<data name="cbDtvUpdate.Properties.Caption" xml:space="preserve">
|
||||
<value>Automatic D-TV channel update (recommended: OFF)</value>
|
||||
</data>
|
||||
<data name="cbDtvUpdate.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>431, 19</value>
|
||||
</data>
|
||||
<data name="cbDtvUpdate.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>5</value>
|
||||
</data>
|
||||
<data name=">>cbDtvUpdate.Name" xml:space="preserve">
|
||||
<value>cbDtvUpdate</value>
|
||||
</data>
|
||||
<data name=">>cbDtvUpdate.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>cbDtvUpdate.Parent" xml:space="preserve">
|
||||
<value>grpHotelMode</value>
|
||||
</data>
|
||||
<data name=">>cbDtvUpdate.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="cbHotelMode.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left, Right</value>
|
||||
</data>
|
||||
<data name="cbHotelMode.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>10, 58</value>
|
||||
</data>
|
||||
<data name="cbHotelMode.Properties.Caption" xml:space="preserve">
|
||||
<value>Enable Hotel Mode (recommended: ON)</value>
|
||||
</data>
|
||||
<data name="cbHotelMode.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>456, 19</value>
|
||||
</data>
|
||||
<data name="cbHotelMode.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name=">>cbHotelMode.Name" xml:space="preserve">
|
||||
<value>cbHotelMode</value>
|
||||
</data>
|
||||
<data name=">>cbHotelMode.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>cbHotelMode.Parent" xml:space="preserve">
|
||||
<value>grpHotelMode</value>
|
||||
</data>
|
||||
<data name=">>cbHotelMode.ZOrder" xml:space="preserve">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="grpHotelMode.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Top</value>
|
||||
</data>
|
||||
<data name="grpHotelMode.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 248</value>
|
||||
</data>
|
||||
<data name="grpHotelMode.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>480, 151</value>
|
||||
</data>
|
||||
<data name="grpHotelMode.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="grpHotelMode.Text" xml:space="preserve">
|
||||
<value>Hotel Mode</value>
|
||||
</data>
|
||||
<data name=">>grpHotelMode.Name" xml:space="preserve">
|
||||
<value>grpHotelMode</value>
|
||||
</data>
|
||||
<data name=">>grpHotelMode.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>grpHotelMode.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>grpHotelMode.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="cbAutoChannelUpdate.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left, Right</value>
|
||||
</data>
|
||||
<data name="cbAutoChannelUpdate.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>12, 35</value>
|
||||
</data>
|
||||
<data name="cbAutoChannelUpdate.Properties.Caption" xml:space="preserve">
|
||||
<value>Automatic Channel Update (recommended: OFF)</value>
|
||||
</data>
|
||||
<data name="cbAutoChannelUpdate.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>456, 19</value>
|
||||
</data>
|
||||
<data name="cbAutoChannelUpdate.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name=">>cbAutoChannelUpdate.Name" xml:space="preserve">
|
||||
<value>cbAutoChannelUpdate</value>
|
||||
</data>
|
||||
<data name=">>cbAutoChannelUpdate.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>cbAutoChannelUpdate.Parent" xml:space="preserve">
|
||||
<value>groupControl1</value>
|
||||
</data>
|
||||
<data name=">>cbAutoChannelUpdate.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="groupControl1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Top</value>
|
||||
</data>
|
||||
<data name="groupControl1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 71</value>
|
||||
</data>
|
||||
<data name="groupControl1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>480, 71</value>
|
||||
</data>
|
||||
<data name="groupControl1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>5</value>
|
||||
</data>
|
||||
<data name="groupControl1.Text" xml:space="preserve">
|
||||
<value>SETUP Menu</value>
|
||||
</data>
|
||||
<data name=">>groupControl1.Name" xml:space="preserve">
|
||||
<value>groupControl1</value>
|
||||
</data>
|
||||
<data name=">>groupControl1.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>groupControl1.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>groupControl1.ZOrder" xml:space="preserve">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name="labelControl4.AutoSizeMode" type="DevExpress.XtraEditors.LabelAutoSizeMode, DevExpress.XtraEditors.v12.2">
|
||||
<value>Vertical</value>
|
||||
</data>
|
||||
<data name="labelControl4.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>11, 29</value>
|
||||
</data>
|
||||
<data name="labelControl4.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>458, 26</value>
|
||||
</data>
|
||||
<data name="labelControl4.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>8</value>
|
||||
</data>
|
||||
<data name="labelControl4.Text" xml:space="preserve">
|
||||
<value>Your TV model's TLL file format is not fully supported. Therefore many features in this dialog are disabled.</value>
|
||||
</data>
|
||||
<data name=">>labelControl4.Name" xml:space="preserve">
|
||||
<value>labelControl4</value>
|
||||
</data>
|
||||
<data name=">>labelControl4.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>labelControl4.Parent" xml:space="preserve">
|
||||
<value>grpFirmwareNote</value>
|
||||
</data>
|
||||
<data name=">>labelControl4.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="grpFirmwareNote.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Top</value>
|
||||
</data>
|
||||
<data name="grpFirmwareNote.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 0</value>
|
||||
</data>
|
||||
<data name="grpFirmwareNote.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>480, 71</value>
|
||||
</data>
|
||||
<data name="grpFirmwareNote.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>6</value>
|
||||
</data>
|
||||
<data name="grpFirmwareNote.Text" xml:space="preserve">
|
||||
<value>Information</value>
|
||||
</data>
|
||||
<data name=">>grpFirmwareNote.Name" xml:space="preserve">
|
||||
<value>grpFirmwareNote</value>
|
||||
</data>
|
||||
<data name=">>grpFirmwareNote.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>grpFirmwareNote.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>grpFirmwareNote.ZOrder" xml:space="preserve">
|
||||
<value>5</value>
|
||||
</data>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||
<value>6, 13</value>
|
||||
</data>
|
||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||
<value>480, 448</value>
|
||||
</data>
|
||||
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
|
||||
<value>CenterParent</value>
|
||||
</data>
|
||||
<data name="$this.Text" xml:space="preserve">
|
||||
<value>TV Settings</value>
|
||||
</data>
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>TvSettingsForm</value>
|
||||
</data>
|
||||
<data name=">>$this.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
</root>
|
||||
241
ChanSort.Ui/AboutForm.Designer.cs
generated
Normal file
241
ChanSort.Ui/AboutForm.Designer.cs
generated
Normal file
@@ -0,0 +1,241 @@
|
||||
namespace ChanSort.Ui
|
||||
{
|
||||
partial class AboutForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AboutForm));
|
||||
this.labelControl1 = new DevExpress.XtraEditors.LabelControl();
|
||||
this.hyperLinkEdit1 = new DevExpress.XtraEditors.HyperLinkEdit();
|
||||
this.gcPlugins = new DevExpress.XtraGrid.GridControl();
|
||||
this.gvPlugins = new DevExpress.XtraGrid.Views.Grid.GridView();
|
||||
this.colPlugin = new DevExpress.XtraGrid.Columns.GridColumn();
|
||||
this.colDisplayText = new DevExpress.XtraGrid.Columns.GridColumn();
|
||||
this.colFileTypes = new DevExpress.XtraGrid.Columns.GridColumn();
|
||||
this.hyperLinkEdit2 = new DevExpress.XtraEditors.HyperLinkEdit();
|
||||
this.labelControl3 = new DevExpress.XtraEditors.LabelControl();
|
||||
this.labelControl4 = new DevExpress.XtraEditors.LabelControl();
|
||||
this.labelControl5 = new DevExpress.XtraEditors.LabelControl();
|
||||
this.hyperLinkEdit3 = new DevExpress.XtraEditors.HyperLinkEdit();
|
||||
this.txtCredits = new DevExpress.XtraEditors.MemoEdit();
|
||||
this.xtraTabControl1 = new DevExpress.XtraTab.XtraTabControl();
|
||||
this.xtraTabPage1 = new DevExpress.XtraTab.XtraTabPage();
|
||||
this.xtraTabPage2 = new DevExpress.XtraTab.XtraTabPage();
|
||||
this.picDonate = new DevExpress.XtraEditors.PictureEdit();
|
||||
this.labelControl2 = new DevExpress.XtraEditors.LabelControl();
|
||||
((System.ComponentModel.ISupportInitialize)(this.hyperLinkEdit1.Properties)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.gcPlugins)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.gvPlugins)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.hyperLinkEdit2.Properties)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.hyperLinkEdit3.Properties)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.txtCredits.Properties)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xtraTabControl1)).BeginInit();
|
||||
this.xtraTabControl1.SuspendLayout();
|
||||
this.xtraTabPage1.SuspendLayout();
|
||||
this.xtraTabPage2.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picDonate.Properties)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// labelControl1
|
||||
//
|
||||
resources.ApplyResources(this.labelControl1, "labelControl1");
|
||||
this.labelControl1.Name = "labelControl1";
|
||||
//
|
||||
// hyperLinkEdit1
|
||||
//
|
||||
resources.ApplyResources(this.hyperLinkEdit1, "hyperLinkEdit1");
|
||||
this.hyperLinkEdit1.Name = "hyperLinkEdit1";
|
||||
this.hyperLinkEdit1.Properties.Appearance.BackColor = ((System.Drawing.Color)(resources.GetObject("hyperLinkEdit1.Properties.Appearance.BackColor")));
|
||||
this.hyperLinkEdit1.Properties.Appearance.Options.UseBackColor = true;
|
||||
this.hyperLinkEdit1.Properties.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
|
||||
//
|
||||
// gcPlugins
|
||||
//
|
||||
resources.ApplyResources(this.gcPlugins, "gcPlugins");
|
||||
this.gcPlugins.MainView = this.gvPlugins;
|
||||
this.gcPlugins.Name = "gcPlugins";
|
||||
this.gcPlugins.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] {
|
||||
this.gvPlugins});
|
||||
//
|
||||
// gvPlugins
|
||||
//
|
||||
this.gvPlugins.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] {
|
||||
this.colPlugin,
|
||||
this.colDisplayText,
|
||||
this.colFileTypes});
|
||||
this.gvPlugins.GridControl = this.gcPlugins;
|
||||
this.gvPlugins.Name = "gvPlugins";
|
||||
this.gvPlugins.OptionsBehavior.ReadOnly = true;
|
||||
this.gvPlugins.OptionsView.ShowGroupPanel = false;
|
||||
this.gvPlugins.OptionsView.ShowIndicator = false;
|
||||
this.gvPlugins.CustomUnboundColumnData += new DevExpress.XtraGrid.Views.Base.CustomColumnDataEventHandler(this.gvPlugins_CustomUnboundColumnData);
|
||||
//
|
||||
// colPlugin
|
||||
//
|
||||
resources.ApplyResources(this.colPlugin, "colPlugin");
|
||||
this.colPlugin.FieldName = "PluginDll";
|
||||
this.colPlugin.Name = "colPlugin";
|
||||
this.colPlugin.UnboundType = DevExpress.Data.UnboundColumnType.String;
|
||||
//
|
||||
// colDisplayText
|
||||
//
|
||||
resources.ApplyResources(this.colDisplayText, "colDisplayText");
|
||||
this.colDisplayText.FieldName = "PluginName";
|
||||
this.colDisplayText.Name = "colDisplayText";
|
||||
//
|
||||
// colFileTypes
|
||||
//
|
||||
resources.ApplyResources(this.colFileTypes, "colFileTypes");
|
||||
this.colFileTypes.FieldName = "FileFilter";
|
||||
this.colFileTypes.Name = "colFileTypes";
|
||||
//
|
||||
// hyperLinkEdit2
|
||||
//
|
||||
resources.ApplyResources(this.hyperLinkEdit2, "hyperLinkEdit2");
|
||||
this.hyperLinkEdit2.Name = "hyperLinkEdit2";
|
||||
this.hyperLinkEdit2.Properties.Appearance.BackColor = ((System.Drawing.Color)(resources.GetObject("hyperLinkEdit2.Properties.Appearance.BackColor")));
|
||||
this.hyperLinkEdit2.Properties.Appearance.Options.UseBackColor = true;
|
||||
this.hyperLinkEdit2.Properties.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
|
||||
//
|
||||
// labelControl3
|
||||
//
|
||||
resources.ApplyResources(this.labelControl3, "labelControl3");
|
||||
this.labelControl3.Name = "labelControl3";
|
||||
//
|
||||
// labelControl4
|
||||
//
|
||||
resources.ApplyResources(this.labelControl4, "labelControl4");
|
||||
this.labelControl4.Name = "labelControl4";
|
||||
//
|
||||
// labelControl5
|
||||
//
|
||||
resources.ApplyResources(this.labelControl5, "labelControl5");
|
||||
this.labelControl5.Name = "labelControl5";
|
||||
//
|
||||
// hyperLinkEdit3
|
||||
//
|
||||
resources.ApplyResources(this.hyperLinkEdit3, "hyperLinkEdit3");
|
||||
this.hyperLinkEdit3.Name = "hyperLinkEdit3";
|
||||
this.hyperLinkEdit3.Properties.Appearance.BackColor = ((System.Drawing.Color)(resources.GetObject("hyperLinkEdit3.Properties.Appearance.BackColor")));
|
||||
this.hyperLinkEdit3.Properties.Appearance.Options.UseBackColor = true;
|
||||
this.hyperLinkEdit3.Properties.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
|
||||
//
|
||||
// txtCredits
|
||||
//
|
||||
resources.ApplyResources(this.txtCredits, "txtCredits");
|
||||
this.txtCredits.Name = "txtCredits";
|
||||
this.txtCredits.Properties.ReadOnly = true;
|
||||
//
|
||||
// xtraTabControl1
|
||||
//
|
||||
resources.ApplyResources(this.xtraTabControl1, "xtraTabControl1");
|
||||
this.xtraTabControl1.Name = "xtraTabControl1";
|
||||
this.xtraTabControl1.SelectedTabPage = this.xtraTabPage1;
|
||||
this.xtraTabControl1.TabPages.AddRange(new DevExpress.XtraTab.XtraTabPage[] {
|
||||
this.xtraTabPage1,
|
||||
this.xtraTabPage2});
|
||||
//
|
||||
// xtraTabPage1
|
||||
//
|
||||
this.xtraTabPage1.Controls.Add(this.txtCredits);
|
||||
this.xtraTabPage1.Name = "xtraTabPage1";
|
||||
resources.ApplyResources(this.xtraTabPage1, "xtraTabPage1");
|
||||
//
|
||||
// xtraTabPage2
|
||||
//
|
||||
this.xtraTabPage2.Controls.Add(this.gcPlugins);
|
||||
this.xtraTabPage2.Name = "xtraTabPage2";
|
||||
resources.ApplyResources(this.xtraTabPage2, "xtraTabPage2");
|
||||
//
|
||||
// picDonate
|
||||
//
|
||||
this.picDonate.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
resources.ApplyResources(this.picDonate, "picDonate");
|
||||
this.picDonate.Name = "picDonate";
|
||||
this.picDonate.Properties.Appearance.BackColor = ((System.Drawing.Color)(resources.GetObject("picDonate.Properties.Appearance.BackColor")));
|
||||
this.picDonate.Properties.Appearance.Options.UseBackColor = true;
|
||||
this.picDonate.Properties.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
|
||||
this.picDonate.Click += new System.EventHandler(this.picDonate_Click);
|
||||
//
|
||||
// labelControl2
|
||||
//
|
||||
resources.ApplyResources(this.labelControl2, "labelControl2");
|
||||
this.labelControl2.Name = "labelControl2";
|
||||
//
|
||||
// AboutForm
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.labelControl2);
|
||||
this.Controls.Add(this.picDonate);
|
||||
this.Controls.Add(this.xtraTabControl1);
|
||||
this.Controls.Add(this.hyperLinkEdit3);
|
||||
this.Controls.Add(this.labelControl5);
|
||||
this.Controls.Add(this.labelControl4);
|
||||
this.Controls.Add(this.hyperLinkEdit2);
|
||||
this.Controls.Add(this.labelControl3);
|
||||
this.Controls.Add(this.hyperLinkEdit1);
|
||||
this.Controls.Add(this.labelControl1);
|
||||
this.Name = "AboutForm";
|
||||
((System.ComponentModel.ISupportInitialize)(this.hyperLinkEdit1.Properties)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.gcPlugins)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.gvPlugins)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.hyperLinkEdit2.Properties)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.hyperLinkEdit3.Properties)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.txtCredits.Properties)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.xtraTabControl1)).EndInit();
|
||||
this.xtraTabControl1.ResumeLayout(false);
|
||||
this.xtraTabPage1.ResumeLayout(false);
|
||||
this.xtraTabPage2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.picDonate.Properties)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private DevExpress.XtraEditors.LabelControl labelControl1;
|
||||
private DevExpress.XtraEditors.HyperLinkEdit hyperLinkEdit1;
|
||||
private DevExpress.XtraGrid.GridControl gcPlugins;
|
||||
private DevExpress.XtraGrid.Views.Grid.GridView gvPlugins;
|
||||
private DevExpress.XtraGrid.Columns.GridColumn colPlugin;
|
||||
private DevExpress.XtraGrid.Columns.GridColumn colDisplayText;
|
||||
private DevExpress.XtraGrid.Columns.GridColumn colFileTypes;
|
||||
private DevExpress.XtraEditors.HyperLinkEdit hyperLinkEdit2;
|
||||
private DevExpress.XtraEditors.LabelControl labelControl3;
|
||||
private DevExpress.XtraEditors.LabelControl labelControl4;
|
||||
private DevExpress.XtraEditors.LabelControl labelControl5;
|
||||
private DevExpress.XtraEditors.HyperLinkEdit hyperLinkEdit3;
|
||||
private DevExpress.XtraEditors.MemoEdit txtCredits;
|
||||
private DevExpress.XtraTab.XtraTabControl xtraTabControl1;
|
||||
private DevExpress.XtraTab.XtraTabPage xtraTabPage1;
|
||||
private DevExpress.XtraTab.XtraTabPage xtraTabPage2;
|
||||
private DevExpress.XtraEditors.PictureEdit picDonate;
|
||||
private DevExpress.XtraEditors.LabelControl labelControl2;
|
||||
}
|
||||
}
|
||||
48
ChanSort.Ui/AboutForm.cs
Normal file
48
ChanSort.Ui/AboutForm.cs
Normal file
@@ -0,0 +1,48 @@
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using ChanSort.Api;
|
||||
using DevExpress.XtraEditors;
|
||||
|
||||
namespace ChanSort.Ui
|
||||
{
|
||||
public partial class AboutForm :XtraForm
|
||||
{
|
||||
public AboutForm(IList<ISerializerPlugin> plugins)
|
||||
{
|
||||
InitializeComponent();
|
||||
this.picDonate.Image = Properties.Resources.Donate;
|
||||
this.gcPlugins.DataSource = plugins;
|
||||
|
||||
this.txtCredits.Text = @"PDA-User:
|
||||
Analysis of TLL file structure and extensive testing of ChanSort
|
||||
|
||||
HellG:
|
||||
For writing TLLsort which was the basis for the first versions of ChanSort
|
||||
|
||||
edank, JLevi, Oleg:
|
||||
For writing TLLview, TLLedit and edankTLL and making the source available
|
||||
|
||||
Many more on lg-forum.com:
|
||||
For providing example TLL files, error feedback and other helpful information";
|
||||
}
|
||||
|
||||
private void gvPlugins_CustomUnboundColumnData(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgs e)
|
||||
{
|
||||
if (e.Column == this.colPlugin)
|
||||
e.Value = (Path.GetFileName(e.Row.GetType().Assembly.Location) ?? "").Replace("ChanSort.Plugin.", "");
|
||||
}
|
||||
|
||||
private void picDonate_Click(object sender, System.EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
string fileName = Path.GetTempFileName() + ".html";
|
||||
File.WriteAllText(fileName, Properties.Resources.paypal_button);
|
||||
System.Diagnostics.Process.Start(fileName);
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
164
ChanSort.Ui/AboutForm.de.resx
Normal file
164
ChanSort.Ui/AboutForm.de.resx
Normal file
@@ -0,0 +1,164 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="labelControl1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>80, 13</value>
|
||||
</data>
|
||||
<data name="labelControl1.Text" xml:space="preserve">
|
||||
<value>Aktuelle Version:</value>
|
||||
</data>
|
||||
<data name="colDisplayText.Caption" xml:space="preserve">
|
||||
<value>Beschreibung</value>
|
||||
</data>
|
||||
<data name="colFileTypes.Caption" xml:space="preserve">
|
||||
<value>Dateitypen</value>
|
||||
</data>
|
||||
<data name="labelControl3.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>86, 13</value>
|
||||
</data>
|
||||
<data name="labelControl3.Text" xml:space="preserve">
|
||||
<value>Online Diskussion:</value>
|
||||
</data>
|
||||
<data name="labelControl4.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>41, 13</value>
|
||||
</data>
|
||||
<data name="labelControl4.Text" xml:space="preserve">
|
||||
<value>Kontakt:</value>
|
||||
</data>
|
||||
<data name="xtraTabPage1.Text" xml:space="preserve">
|
||||
<value>Gruß und Dank</value>
|
||||
</data>
|
||||
<data name="xtraTabPage2.Text" xml:space="preserve">
|
||||
<value>Erweiterungen</value>
|
||||
</data>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="picDonate.EditValue" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="labelControl2.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>151, 13</value>
|
||||
</data>
|
||||
<data name="labelControl2.Text" xml:space="preserve">
|
||||
<value>Wenn dir das Programm gefällt:</value>
|
||||
</data>
|
||||
<data name="$this.Text" xml:space="preserve">
|
||||
<value>Über ChanSort</value>
|
||||
</data>
|
||||
</root>
|
||||
546
ChanSort.Ui/AboutForm.resx
Normal file
546
ChanSort.Ui/AboutForm.resx
Normal file
@@ -0,0 +1,546 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="labelControl1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>12, 15</value>
|
||||
</data>
|
||||
<data name="labelControl1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>72, 13</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="labelControl1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="labelControl1.Text" xml:space="preserve">
|
||||
<value>Latest version:</value>
|
||||
</data>
|
||||
<data name=">>labelControl1.Name" xml:space="preserve">
|
||||
<value>labelControl1</value>
|
||||
</data>
|
||||
<data name=">>labelControl1.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>labelControl1.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>labelControl1.ZOrder" xml:space="preserve">
|
||||
<value>9</value>
|
||||
</data>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="hyperLinkEdit1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left, Right</value>
|
||||
</data>
|
||||
<data name="hyperLinkEdit1.EditValue" xml:space="preserve">
|
||||
<value>http://beham.biz/ChanSort/</value>
|
||||
</data>
|
||||
<data name="hyperLinkEdit1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>144, 13</value>
|
||||
</data>
|
||||
<data name="hyperLinkEdit1.Properties.Appearance.BackColor" type="System.Drawing.Color, System.Drawing">
|
||||
<value>Transparent</value>
|
||||
</data>
|
||||
<data name="hyperLinkEdit1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>436, 18</value>
|
||||
</data>
|
||||
<data name="hyperLinkEdit1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name=">>hyperLinkEdit1.Name" xml:space="preserve">
|
||||
<value>hyperLinkEdit1</value>
|
||||
</data>
|
||||
<data name=">>hyperLinkEdit1.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.HyperLinkEdit, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>hyperLinkEdit1.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>hyperLinkEdit1.ZOrder" xml:space="preserve">
|
||||
<value>8</value>
|
||||
</data>
|
||||
<data name="gcPlugins.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Fill</value>
|
||||
</data>
|
||||
<data name="gcPlugins.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 0</value>
|
||||
</data>
|
||||
<data name="colPlugin.Caption" xml:space="preserve">
|
||||
<value>Plugin</value>
|
||||
</data>
|
||||
<data name="colPlugin.Visible" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="colPlugin.VisibleIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="colPlugin.Width" type="System.Int32, mscorlib">
|
||||
<value>70</value>
|
||||
</data>
|
||||
<data name="colDisplayText.Caption" xml:space="preserve">
|
||||
<value>Description</value>
|
||||
</data>
|
||||
<data name="colDisplayText.Visible" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="colDisplayText.VisibleIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="colDisplayText.Width" type="System.Int32, mscorlib">
|
||||
<value>246</value>
|
||||
</data>
|
||||
<data name="colFileTypes.Caption" xml:space="preserve">
|
||||
<value>File types</value>
|
||||
</data>
|
||||
<data name="colFileTypes.Visible" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="colFileTypes.VisibleIndex" type="System.Int32, mscorlib">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="colFileTypes.Width" type="System.Int32, mscorlib">
|
||||
<value>249</value>
|
||||
</data>
|
||||
<data name="gcPlugins.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>562, 272</value>
|
||||
</data>
|
||||
<data name="gcPlugins.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name=">>gcPlugins.Name" xml:space="preserve">
|
||||
<value>gcPlugins</value>
|
||||
</data>
|
||||
<data name=">>gcPlugins.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>gcPlugins.Parent" xml:space="preserve">
|
||||
<value>xtraTabPage2</value>
|
||||
</data>
|
||||
<data name=">>gcPlugins.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="hyperLinkEdit2.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left, Right</value>
|
||||
</data>
|
||||
<data name="hyperLinkEdit2.EditValue" xml:space="preserve">
|
||||
<value>http://www.lg-forum.com/lg-led-plasma-lcd-fernseher/5098-channeleditor-45.html</value>
|
||||
</data>
|
||||
<data name="hyperLinkEdit2.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>144, 32</value>
|
||||
</data>
|
||||
<data name="hyperLinkEdit2.Properties.Appearance.BackColor" type="System.Drawing.Color, System.Drawing">
|
||||
<value>Transparent</value>
|
||||
</data>
|
||||
<data name="hyperLinkEdit2.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>436, 18</value>
|
||||
</data>
|
||||
<data name="hyperLinkEdit2.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>5</value>
|
||||
</data>
|
||||
<data name=">>hyperLinkEdit2.Name" xml:space="preserve">
|
||||
<value>hyperLinkEdit2</value>
|
||||
</data>
|
||||
<data name=">>hyperLinkEdit2.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.HyperLinkEdit, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>hyperLinkEdit2.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>hyperLinkEdit2.ZOrder" xml:space="preserve">
|
||||
<value>6</value>
|
||||
</data>
|
||||
<data name="labelControl3.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>12, 34</value>
|
||||
</data>
|
||||
<data name="labelControl3.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>85, 13</value>
|
||||
</data>
|
||||
<data name="labelControl3.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name="labelControl3.Text" xml:space="preserve">
|
||||
<value>Online discussion:</value>
|
||||
</data>
|
||||
<data name=">>labelControl3.Name" xml:space="preserve">
|
||||
<value>labelControl3</value>
|
||||
</data>
|
||||
<data name=">>labelControl3.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>labelControl3.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>labelControl3.ZOrder" xml:space="preserve">
|
||||
<value>7</value>
|
||||
</data>
|
||||
<data name="labelControl4.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>12, 56</value>
|
||||
</data>
|
||||
<data name="labelControl4.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>42, 13</value>
|
||||
</data>
|
||||
<data name="labelControl4.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>6</value>
|
||||
</data>
|
||||
<data name="labelControl4.Text" xml:space="preserve">
|
||||
<value>Contact:</value>
|
||||
</data>
|
||||
<data name=">>labelControl4.Name" xml:space="preserve">
|
||||
<value>labelControl4</value>
|
||||
</data>
|
||||
<data name=">>labelControl4.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>labelControl4.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>labelControl4.ZOrder" xml:space="preserve">
|
||||
<value>5</value>
|
||||
</data>
|
||||
<data name="labelControl5.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>147, 56</value>
|
||||
</data>
|
||||
<data name="labelControl5.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>175, 13</value>
|
||||
</data>
|
||||
<data name="labelControl5.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>7</value>
|
||||
</data>
|
||||
<data name="labelControl5.Text" xml:space="preserve">
|
||||
<value>User "Pred" @ www.lg-forum.com |</value>
|
||||
</data>
|
||||
<data name=">>labelControl5.Name" xml:space="preserve">
|
||||
<value>labelControl5</value>
|
||||
</data>
|
||||
<data name=">>labelControl5.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>labelControl5.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>labelControl5.ZOrder" xml:space="preserve">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name="hyperLinkEdit3.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left, Right</value>
|
||||
</data>
|
||||
<data name="hyperLinkEdit3.EditValue" xml:space="preserve">
|
||||
<value>mailto:horst@beham.biz</value>
|
||||
</data>
|
||||
<data name="hyperLinkEdit3.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>328, 54</value>
|
||||
</data>
|
||||
<data name="hyperLinkEdit3.Properties.Appearance.BackColor" type="System.Drawing.Color, System.Drawing">
|
||||
<value>Transparent</value>
|
||||
</data>
|
||||
<data name="hyperLinkEdit3.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>252, 18</value>
|
||||
</data>
|
||||
<data name="hyperLinkEdit3.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>8</value>
|
||||
</data>
|
||||
<data name=">>hyperLinkEdit3.Name" xml:space="preserve">
|
||||
<value>hyperLinkEdit3</value>
|
||||
</data>
|
||||
<data name=">>hyperLinkEdit3.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.HyperLinkEdit, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>hyperLinkEdit3.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>hyperLinkEdit3.ZOrder" xml:space="preserve">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="txtCredits.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Fill</value>
|
||||
</data>
|
||||
<data name="txtCredits.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 0</value>
|
||||
</data>
|
||||
<data name="txtCredits.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>562, 272</value>
|
||||
</data>
|
||||
<data name="txtCredits.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>10</value>
|
||||
</data>
|
||||
<data name=">>txtCredits.Name" xml:space="preserve">
|
||||
<value>txtCredits</value>
|
||||
</data>
|
||||
<data name=">>txtCredits.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.MemoEdit, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>txtCredits.Parent" xml:space="preserve">
|
||||
<value>xtraTabPage1</value>
|
||||
</data>
|
||||
<data name=">>txtCredits.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="xtraTabControl1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Bottom, Left, Right</value>
|
||||
</data>
|
||||
<data name="xtraTabControl1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>12, 134</value>
|
||||
</data>
|
||||
<data name="xtraTabPage1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>562, 272</value>
|
||||
</data>
|
||||
<data name="xtraTabPage1.Text" xml:space="preserve">
|
||||
<value>Credits</value>
|
||||
</data>
|
||||
<data name=">>xtraTabPage1.Name" xml:space="preserve">
|
||||
<value>xtraTabPage1</value>
|
||||
</data>
|
||||
<data name=">>xtraTabPage1.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraTab.XtraTabPage, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>xtraTabPage1.Parent" xml:space="preserve">
|
||||
<value>xtraTabControl1</value>
|
||||
</data>
|
||||
<data name=">>xtraTabPage1.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="xtraTabControl1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>568, 300</value>
|
||||
</data>
|
||||
<data name="xtraTabControl1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>11</value>
|
||||
</data>
|
||||
<data name="xtraTabPage2.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>562, 272</value>
|
||||
</data>
|
||||
<data name="xtraTabPage2.Text" xml:space="preserve">
|
||||
<value>Plugins</value>
|
||||
</data>
|
||||
<data name=">>xtraTabPage2.Name" xml:space="preserve">
|
||||
<value>xtraTabPage2</value>
|
||||
</data>
|
||||
<data name=">>xtraTabPage2.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraTab.XtraTabPage, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>xtraTabPage2.Parent" xml:space="preserve">
|
||||
<value>xtraTabControl1</value>
|
||||
</data>
|
||||
<data name=">>xtraTabPage2.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name=">>xtraTabControl1.Name" xml:space="preserve">
|
||||
<value>xtraTabControl1</value>
|
||||
</data>
|
||||
<data name=">>xtraTabControl1.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraTab.XtraTabControl, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>xtraTabControl1.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>xtraTabControl1.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="picDonate.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>214, 78</value>
|
||||
</data>
|
||||
<data name="picDonate.Properties.Appearance.BackColor" type="System.Drawing.Color, System.Drawing">
|
||||
<value>Transparent</value>
|
||||
</data>
|
||||
<data name="picDonate.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>177, 58</value>
|
||||
</data>
|
||||
<data name="picDonate.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>12</value>
|
||||
</data>
|
||||
<data name=">>picDonate.Name" xml:space="preserve">
|
||||
<value>picDonate</value>
|
||||
</data>
|
||||
<data name=">>picDonate.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.PictureEdit, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>picDonate.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>picDonate.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="labelControl2.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>12, 88</value>
|
||||
</data>
|
||||
<data name="labelControl2.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>114, 13</value>
|
||||
</data>
|
||||
<data name="labelControl2.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>13</value>
|
||||
</data>
|
||||
<data name="labelControl2.Text" xml:space="preserve">
|
||||
<value>If you like this program:</value>
|
||||
</data>
|
||||
<data name=">>labelControl2.Name" xml:space="preserve">
|
||||
<value>labelControl2</value>
|
||||
</data>
|
||||
<data name=">>labelControl2.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>labelControl2.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>labelControl2.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||
<value>6, 13</value>
|
||||
</data>
|
||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||
<value>592, 446</value>
|
||||
</data>
|
||||
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
|
||||
<value>CenterParent</value>
|
||||
</data>
|
||||
<data name="$this.Text" xml:space="preserve">
|
||||
<value>About ChanSort</value>
|
||||
</data>
|
||||
<data name=">>gvPlugins.Name" xml:space="preserve">
|
||||
<value>gvPlugins</value>
|
||||
</data>
|
||||
<data name=">>gvPlugins.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraGrid.Views.Grid.GridView, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>colPlugin.Name" xml:space="preserve">
|
||||
<value>colPlugin</value>
|
||||
</data>
|
||||
<data name=">>colPlugin.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>colDisplayText.Name" xml:space="preserve">
|
||||
<value>colDisplayText</value>
|
||||
</data>
|
||||
<data name=">>colDisplayText.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>colFileTypes.Name" xml:space="preserve">
|
||||
<value>colFileTypes</value>
|
||||
</data>
|
||||
<data name=">>colFileTypes.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>AboutForm</value>
|
||||
</data>
|
||||
<data name=">>$this.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
</root>
|
||||
215
ChanSort.Ui/ChanSort.Ui.csproj
Normal file
215
ChanSort.Ui/ChanSort.Ui.csproj
Normal file
@@ -0,0 +1,215 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
|
||||
<ProductVersion>8.0.30703</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{5FAFDABC-A52F-498C-BD2F-AFFC4119797A}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>ChanSort.Ui</RootNamespace>
|
||||
<AssemblyName>ChanSort</AssemblyName>
|
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||
<TargetFrameworkProfile>Client</TargetFrameworkProfile>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>..\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>
|
||||
<CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU'">
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>
|
||||
<CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ApplicationIcon>app.ico</ApplicationIcon>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="DevExpress.Data.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
</Reference>
|
||||
<Reference Include="DevExpress.Printing.v12.2.Core, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
</Reference>
|
||||
<Reference Include="DevExpress.Utils.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
</Reference>
|
||||
<Reference Include="DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
</Reference>
|
||||
<Reference Include="DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
</Reference>
|
||||
<Reference Include="DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Deployment" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="InfoBox.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="InfoBox.Designer.cs">
|
||||
<DependentUpon>InfoBox.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="MainForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="MainForm.Designer.cs">
|
||||
<DependentUpon>MainForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<Compile Include="Settings.cs" />
|
||||
<Compile Include="WaitForm1.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="WaitForm1.Designer.cs">
|
||||
<DependentUpon>WaitForm1.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="AboutForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="AboutForm.Designer.cs">
|
||||
<DependentUpon>AboutForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="CharsetForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="CharsetForm.Designer.cs">
|
||||
<DependentUpon>CharsetForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<EmbeddedResource Include="AboutForm.de.resx">
|
||||
<DependentUpon>AboutForm.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="AboutForm.resx">
|
||||
<DependentUpon>AboutForm.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="CharsetForm.de.resx">
|
||||
<DependentUpon>CharsetForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="CharsetForm.resx">
|
||||
<DependentUpon>CharsetForm.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="InfoBox.resx">
|
||||
<DependentUpon>InfoBox.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="MainForm.de.resx">
|
||||
<DependentUpon>MainForm.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="MainForm.resx">
|
||||
<DependentUpon>MainForm.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\licenses.licx" />
|
||||
<EmbeddedResource Include="Properties\Resources.de.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.de.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<Compile Include="Properties\Resources.de.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.de.resx</DependentUpon>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<EmbeddedResource Include="WaitForm1.de.resx">
|
||||
<DependentUpon>WaitForm1.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="WaitForm1.resx">
|
||||
<DependentUpon>WaitForm1.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<None Include="app.config" />
|
||||
<None Include="Properties\DataSources\ChannelInfo.datasource" />
|
||||
<None Include="Properties\DataSources\System.Text.EncodingInfo.datasource" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\ChanSort.Api\ChanSort.Api.csproj">
|
||||
<Project>{DCCFFA08-472B-4D17-BB90-8F513FC01392}</Project>
|
||||
<Name>ChanSort.Api</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="app.ico" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\Donate.bmp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\btn_donateCC_LG.gif" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\paypal-button.txt" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\btn_donateCC_LG_de.gif" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
171
ChanSort.Ui/CharsetForm.Designer.cs
generated
Normal file
171
ChanSort.Ui/CharsetForm.Designer.cs
generated
Normal file
@@ -0,0 +1,171 @@
|
||||
namespace ChanSort.Ui
|
||||
{
|
||||
partial class CharsetForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CharsetForm));
|
||||
this.gcCharset = new DevExpress.XtraGrid.GridControl();
|
||||
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
|
||||
this.gvCharset = new DevExpress.XtraGrid.Views.Grid.GridView();
|
||||
this.colCodePage = new DevExpress.XtraGrid.Columns.GridColumn();
|
||||
this.colName = new DevExpress.XtraGrid.Columns.GridColumn();
|
||||
this.colDisplayName = new DevExpress.XtraGrid.Columns.GridColumn();
|
||||
this.panelControl1 = new DevExpress.XtraEditors.PanelControl();
|
||||
this.btnMyCountry = new DevExpress.XtraEditors.SimpleButton();
|
||||
this.btnCancel = new DevExpress.XtraEditors.SimpleButton();
|
||||
this.btnOk = new DevExpress.XtraEditors.SimpleButton();
|
||||
((System.ComponentModel.ISupportInitialize)(this.gcCharset)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.gvCharset)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.panelControl1)).BeginInit();
|
||||
this.panelControl1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// gcCharset
|
||||
//
|
||||
resources.ApplyResources(this.gcCharset, "gcCharset");
|
||||
this.gcCharset.DataSource = this.bindingSource1;
|
||||
this.gcCharset.EmbeddedNavigator.AccessibleDescription = resources.GetString("gcCharset.EmbeddedNavigator.AccessibleDescription");
|
||||
this.gcCharset.EmbeddedNavigator.AccessibleName = resources.GetString("gcCharset.EmbeddedNavigator.AccessibleName");
|
||||
this.gcCharset.EmbeddedNavigator.AllowHtmlTextInToolTip = ((DevExpress.Utils.DefaultBoolean)(resources.GetObject("gcCharset.EmbeddedNavigator.AllowHtmlTextInToolTip")));
|
||||
this.gcCharset.EmbeddedNavigator.Anchor = ((System.Windows.Forms.AnchorStyles)(resources.GetObject("gcCharset.EmbeddedNavigator.Anchor")));
|
||||
this.gcCharset.EmbeddedNavigator.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("gcCharset.EmbeddedNavigator.BackgroundImage")));
|
||||
this.gcCharset.EmbeddedNavigator.BackgroundImageLayout = ((System.Windows.Forms.ImageLayout)(resources.GetObject("gcCharset.EmbeddedNavigator.BackgroundImageLayout")));
|
||||
this.gcCharset.EmbeddedNavigator.ImeMode = ((System.Windows.Forms.ImeMode)(resources.GetObject("gcCharset.EmbeddedNavigator.ImeMode")));
|
||||
this.gcCharset.EmbeddedNavigator.TextLocation = ((DevExpress.XtraEditors.NavigatorButtonsTextLocation)(resources.GetObject("gcCharset.EmbeddedNavigator.TextLocation")));
|
||||
this.gcCharset.EmbeddedNavigator.ToolTip = resources.GetString("gcCharset.EmbeddedNavigator.ToolTip");
|
||||
this.gcCharset.EmbeddedNavigator.ToolTipIconType = ((DevExpress.Utils.ToolTipIconType)(resources.GetObject("gcCharset.EmbeddedNavigator.ToolTipIconType")));
|
||||
this.gcCharset.EmbeddedNavigator.ToolTipTitle = resources.GetString("gcCharset.EmbeddedNavigator.ToolTipTitle");
|
||||
this.gcCharset.MainView = this.gvCharset;
|
||||
this.gcCharset.Name = "gcCharset";
|
||||
this.gcCharset.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] {
|
||||
this.gvCharset});
|
||||
//
|
||||
// bindingSource1
|
||||
//
|
||||
this.bindingSource1.DataSource = typeof(System.Text.EncodingInfo);
|
||||
//
|
||||
// gvCharset
|
||||
//
|
||||
resources.ApplyResources(this.gvCharset, "gvCharset");
|
||||
this.gvCharset.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] {
|
||||
this.colCodePage,
|
||||
this.colName,
|
||||
this.colDisplayName});
|
||||
this.gvCharset.GridControl = this.gcCharset;
|
||||
this.gvCharset.Name = "gvCharset";
|
||||
this.gvCharset.OptionsBehavior.Editable = false;
|
||||
this.gvCharset.OptionsView.ShowAutoFilterRow = true;
|
||||
this.gvCharset.OptionsView.ShowGroupPanel = false;
|
||||
this.gvCharset.OptionsView.ShowIndicator = false;
|
||||
this.gvCharset.RowClick += new DevExpress.XtraGrid.Views.Grid.RowClickEventHandler(this.gvCharset_RowClick);
|
||||
this.gvCharset.FocusedRowChanged += new DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventHandler(this.gvCharset_FocusedRowChanged);
|
||||
//
|
||||
// colCodePage
|
||||
//
|
||||
resources.ApplyResources(this.colCodePage, "colCodePage");
|
||||
this.colCodePage.FieldName = "CodePage";
|
||||
this.colCodePage.Name = "colCodePage";
|
||||
this.colCodePage.OptionsColumn.ReadOnly = true;
|
||||
//
|
||||
// colName
|
||||
//
|
||||
resources.ApplyResources(this.colName, "colName");
|
||||
this.colName.FieldName = "Name";
|
||||
this.colName.Name = "colName";
|
||||
this.colName.OptionsColumn.ReadOnly = true;
|
||||
//
|
||||
// colDisplayName
|
||||
//
|
||||
resources.ApplyResources(this.colDisplayName, "colDisplayName");
|
||||
this.colDisplayName.FieldName = "DisplayName";
|
||||
this.colDisplayName.Name = "colDisplayName";
|
||||
this.colDisplayName.OptionsColumn.ReadOnly = true;
|
||||
this.colDisplayName.Summary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] {
|
||||
new DevExpress.XtraGrid.GridColumnSummaryItem()});
|
||||
//
|
||||
// panelControl1
|
||||
//
|
||||
resources.ApplyResources(this.panelControl1, "panelControl1");
|
||||
this.panelControl1.Controls.Add(this.btnMyCountry);
|
||||
this.panelControl1.Controls.Add(this.btnCancel);
|
||||
this.panelControl1.Controls.Add(this.btnOk);
|
||||
this.panelControl1.Name = "panelControl1";
|
||||
//
|
||||
// btnMyCountry
|
||||
//
|
||||
resources.ApplyResources(this.btnMyCountry, "btnMyCountry");
|
||||
this.btnMyCountry.Name = "btnMyCountry";
|
||||
this.btnMyCountry.Click += new System.EventHandler(this.btnMyCountry_Click);
|
||||
//
|
||||
// btnCancel
|
||||
//
|
||||
resources.ApplyResources(this.btnCancel, "btnCancel");
|
||||
this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.btnCancel.Name = "btnCancel";
|
||||
//
|
||||
// btnOk
|
||||
//
|
||||
resources.ApplyResources(this.btnOk, "btnOk");
|
||||
this.btnOk.DialogResult = System.Windows.Forms.DialogResult.OK;
|
||||
this.btnOk.Name = "btnOk";
|
||||
//
|
||||
// CharsetForm
|
||||
//
|
||||
this.AcceptButton = this.btnOk;
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.CancelButton = this.btnCancel;
|
||||
this.Controls.Add(this.gcCharset);
|
||||
this.Controls.Add(this.panelControl1);
|
||||
this.Name = "CharsetForm";
|
||||
this.Load += new System.EventHandler(this.CharsetForm_Load);
|
||||
((System.ComponentModel.ISupportInitialize)(this.gcCharset)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.gvCharset)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.panelControl1)).EndInit();
|
||||
this.panelControl1.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private DevExpress.XtraGrid.GridControl gcCharset;
|
||||
private DevExpress.XtraGrid.Views.Grid.GridView gvCharset;
|
||||
private DevExpress.XtraEditors.PanelControl panelControl1;
|
||||
private DevExpress.XtraEditors.SimpleButton btnMyCountry;
|
||||
private DevExpress.XtraEditors.SimpleButton btnCancel;
|
||||
private DevExpress.XtraEditors.SimpleButton btnOk;
|
||||
private System.Windows.Forms.BindingSource bindingSource1;
|
||||
private DevExpress.XtraGrid.Columns.GridColumn colCodePage;
|
||||
private DevExpress.XtraGrid.Columns.GridColumn colName;
|
||||
private DevExpress.XtraGrid.Columns.GridColumn colDisplayName;
|
||||
}
|
||||
}
|
||||
100
ChanSort.Ui/CharsetForm.cs
Normal file
100
ChanSort.Ui/CharsetForm.cs
Normal file
@@ -0,0 +1,100 @@
|
||||
using System;
|
||||
using System.Text;
|
||||
using DevExpress.XtraEditors;
|
||||
using DevExpress.XtraGrid.Views.Base;
|
||||
|
||||
namespace ChanSort.Ui
|
||||
{
|
||||
public partial class CharsetForm : XtraForm
|
||||
{
|
||||
private readonly Encoding initialEncoding = Encoding.Default;
|
||||
private Encoding currentEncoding;
|
||||
|
||||
public EventHandler<EncodingChangedEventArgs> EncodingChanged;
|
||||
|
||||
public CharsetForm(Encoding encoding)
|
||||
{
|
||||
this.initialEncoding = encoding;
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public Encoding Encoding
|
||||
{
|
||||
get { return this.currentEncoding; }
|
||||
}
|
||||
|
||||
private void SelectEncoding(Encoding encoding)
|
||||
{
|
||||
var encodings = Encoding.GetEncodings();
|
||||
for (int i = 0; i < encodings.Length; i++)
|
||||
{
|
||||
if (encodings[i].Name == encoding.WebName)
|
||||
{
|
||||
this.gvCharset.FocusedRowHandle = i;
|
||||
this.gvCharset.MakeRowVisible(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void RaiseEncodingChanged()
|
||||
{
|
||||
if (this.EncodingChanged != null)
|
||||
this.EncodingChanged(this, new EncodingChangedEventArgs(this.currentEncoding));
|
||||
}
|
||||
|
||||
private void CharsetForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
var encodings = Encoding.GetEncodings();
|
||||
this.gcCharset.DataSource = encodings;
|
||||
}
|
||||
|
||||
protected override void OnShown(EventArgs e)
|
||||
{
|
||||
base.OnShown(e);
|
||||
this.SelectEncoding(this.initialEncoding);
|
||||
}
|
||||
|
||||
private void gvCharset_FocusedRowChanged(object sender, FocusedRowChangedEventArgs e)
|
||||
{
|
||||
var encodingInfo = (EncodingInfo) gvCharset.GetFocusedRow();
|
||||
if (encodingInfo == null)
|
||||
return;
|
||||
this.currentEncoding = Encoding.GetEncoding(encodingInfo.Name);
|
||||
this.RaiseEncodingChanged();
|
||||
}
|
||||
|
||||
private void gvCharset_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e)
|
||||
{
|
||||
if (e.Clicks == 2 && this.gvCharset.IsDataRow(e.RowHandle))
|
||||
this.DialogResult = System.Windows.Forms.DialogResult.OK;
|
||||
}
|
||||
|
||||
private void btnMyCountry_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.SelectEncoding(Encoding.Default);
|
||||
}
|
||||
|
||||
protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
|
||||
{
|
||||
base.OnClosing(e);
|
||||
if (this.DialogResult != System.Windows.Forms.DialogResult.OK)
|
||||
{
|
||||
// restore initial encoding
|
||||
this.currentEncoding = this.initialEncoding;
|
||||
this.RaiseEncodingChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#region class EncodingChangedEventArgs
|
||||
public class EncodingChangedEventArgs : EventArgs
|
||||
{
|
||||
public readonly Encoding Encoding;
|
||||
|
||||
public EncodingChangedEventArgs(Encoding encoding)
|
||||
{
|
||||
this.Encoding = encoding;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
132
ChanSort.Ui/CharsetForm.de.resx
Normal file
132
ChanSort.Ui/CharsetForm.de.resx
Normal file
@@ -0,0 +1,132 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="colDisplayName.Caption" xml:space="preserve">
|
||||
<value>Beschreibung</value>
|
||||
</data>
|
||||
<data name="btnMyCountry.Text" xml:space="preserve">
|
||||
<value>Standard-Zeichensatz meines Landes</value>
|
||||
</data>
|
||||
<data name="btnCancel.Text" xml:space="preserve">
|
||||
<value>Abbrechen</value>
|
||||
</data>
|
||||
<data name="$this.Text" xml:space="preserve">
|
||||
<value>Zeichensatz</value>
|
||||
</data>
|
||||
</root>
|
||||
367
ChanSort.Ui/CharsetForm.resx
Normal file
367
ChanSort.Ui/CharsetForm.resx
Normal file
@@ -0,0 +1,367 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name=">>btnCancel.Parent" xml:space="preserve">
|
||||
<value>panelControl1</value>
|
||||
</data>
|
||||
<data name=">>gcCharset.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="gcCharset.EmbeddedNavigator.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>Inherit</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="btnOk.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>272, 6</value>
|
||||
</data>
|
||||
<data name=">>colCodePage.Name" xml:space="preserve">
|
||||
<value>colCodePage</value>
|
||||
</data>
|
||||
<data name=">>btnCancel.Name" xml:space="preserve">
|
||||
<value>btnCancel</value>
|
||||
</data>
|
||||
<data name=">>btnOk.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name="gcCharset.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>433, 446</value>
|
||||
</data>
|
||||
<data name=">>gvCharset.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraGrid.Views.Grid.GridView, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>CharsetForm</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="gcCharset.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="btnCancel.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="colName.VisibleIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="btnMyCountry.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>5, 6</value>
|
||||
</data>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="gcCharset.EmbeddedNavigator.BackgroundImage" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="gcCharset.EmbeddedNavigator.AccessibleName" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||
<value>6, 13</value>
|
||||
</data>
|
||||
<data name="panelControl1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Bottom</value>
|
||||
</data>
|
||||
<data name=">>btnMyCountry.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<assembly alias="DevExpress.XtraEditors.v12.2" name="DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<data name="gcCharset.EmbeddedNavigator.TextLocation" type="DevExpress.XtraEditors.NavigatorButtonsTextLocation, DevExpress.XtraEditors.v12.2">
|
||||
<value>Center</value>
|
||||
</data>
|
||||
<assembly alias="DevExpress.Utils.v12.2" name="DevExpress.Utils.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<data name="gcCharset.EmbeddedNavigator.ToolTipIconType" type="DevExpress.Utils.ToolTipIconType, DevExpress.Utils.v12.2">
|
||||
<value>None</value>
|
||||
</data>
|
||||
<data name=">>gvCharset.Name" xml:space="preserve">
|
||||
<value>gvCharset</value>
|
||||
</data>
|
||||
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
|
||||
<value>Manual</value>
|
||||
</data>
|
||||
<data name="btnCancel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name=">>btnMyCountry.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name="gcCharset.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Fill</value>
|
||||
</data>
|
||||
<data name="gcCharset.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 0</value>
|
||||
</data>
|
||||
<data name="colDisplayName.VisibleIndex" type="System.Int32, mscorlib">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name=">>gcCharset.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>gcCharset.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>btnCancel.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>colName.Name" xml:space="preserve">
|
||||
<value>colName</value>
|
||||
</data>
|
||||
<data name="gcCharset.EmbeddedNavigator.ToolTipTitle" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="panelControl1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>433, 37</value>
|
||||
</data>
|
||||
<data name="panelControl1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 446</value>
|
||||
</data>
|
||||
<data name="btnOk.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name=">>colDisplayName.Name" xml:space="preserve">
|
||||
<value>colDisplayName</value>
|
||||
</data>
|
||||
<data name="btnCancel.Text" xml:space="preserve">
|
||||
<value>Cancel</value>
|
||||
</data>
|
||||
<data name=">>btnOk.Parent" xml:space="preserve">
|
||||
<value>panelControl1</value>
|
||||
</data>
|
||||
<data name=">>btnMyCountry.Name" xml:space="preserve">
|
||||
<value>btnMyCountry</value>
|
||||
</data>
|
||||
<data name="colDisplayName.Visible" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="colCodePage.VisibleIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name=">>panelControl1.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>btnMyCountry.Parent" xml:space="preserve">
|
||||
<value>panelControl1</value>
|
||||
</data>
|
||||
<data name=">>gcCharset.Name" xml:space="preserve">
|
||||
<value>gcCharset</value>
|
||||
</data>
|
||||
<data name=">>colCodePage.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name="btnMyCountry.Text" xml:space="preserve">
|
||||
<value>Default character set for my country</value>
|
||||
</data>
|
||||
<data name="colCodePage.Width" type="System.Int32, mscorlib">
|
||||
<value>67</value>
|
||||
</data>
|
||||
<data name="colDisplayName.Width" type="System.Int32, mscorlib">
|
||||
<value>222</value>
|
||||
</data>
|
||||
<data name="btnCancel.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>353, 6</value>
|
||||
</data>
|
||||
<data name=">>colName.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name="btnCancel.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>75, 23</value>
|
||||
</data>
|
||||
<data name=">>bindingSource1.Name" xml:space="preserve">
|
||||
<value>bindingSource1</value>
|
||||
</data>
|
||||
<data name=">>btnOk.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name=">>btnCancel.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="btnOk.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name=">>panelControl1.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="btnOk.Text" xml:space="preserve">
|
||||
<value>Ok</value>
|
||||
</data>
|
||||
<data name="gcCharset.EmbeddedNavigator.AccessibleDescription" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="gcCharset.EmbeddedNavigator.BackgroundImageLayout" type="System.Windows.Forms.ImageLayout, System.Windows.Forms">
|
||||
<value>Tile</value>
|
||||
</data>
|
||||
<data name="$this.Text" xml:space="preserve">
|
||||
<value>Character set</value>
|
||||
</data>
|
||||
<data name="btnMyCountry.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>232, 23</value>
|
||||
</data>
|
||||
<data name="colCodePage.Visible" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name=">>bindingSource1.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.BindingSource, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="btnMyCountry.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name=">>panelControl1.Name" xml:space="preserve">
|
||||
<value>panelControl1</value>
|
||||
</data>
|
||||
<data name="gcCharset.EmbeddedNavigator.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left</value>
|
||||
</data>
|
||||
<data name="panelControl1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="btnOk.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>75, 23</value>
|
||||
</data>
|
||||
<data name=">>btnOk.Name" xml:space="preserve">
|
||||
<value>btnOk</value>
|
||||
</data>
|
||||
<data name="gcCharset.EmbeddedNavigator.ToolTip" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name=">>colDisplayName.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||
<value>433, 483</value>
|
||||
</data>
|
||||
<data name="colName.Width" type="System.Int32, mscorlib">
|
||||
<value>142</value>
|
||||
</data>
|
||||
<data name=">>panelControl1.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.PanelControl, DevExpress.Utils.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name="colName.Visible" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<assembly alias="DevExpress.Data.v12.2" name="DevExpress.Data.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<data name="gcCharset.EmbeddedNavigator.AllowHtmlTextInToolTip" type="DevExpress.Utils.DefaultBoolean, DevExpress.Data.v12.2">
|
||||
<value>Default</value>
|
||||
</data>
|
||||
<data name=">>$this.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bindingSource1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
</root>
|
||||
91
ChanSort.Ui/InfoBox.Designer.cs
generated
Normal file
91
ChanSort.Ui/InfoBox.Designer.cs
generated
Normal file
@@ -0,0 +1,91 @@
|
||||
namespace ChanSort.Ui
|
||||
{
|
||||
partial class InfoBox
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.txtMessage = new DevExpress.XtraEditors.MemoEdit();
|
||||
this.panelControl1 = new DevExpress.XtraEditors.PanelControl();
|
||||
this.simpleButton1 = new DevExpress.XtraEditors.SimpleButton();
|
||||
((System.ComponentModel.ISupportInitialize)(this.txtMessage.Properties)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.panelControl1)).BeginInit();
|
||||
this.panelControl1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// txtMessage
|
||||
//
|
||||
this.txtMessage.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.txtMessage.Location = new System.Drawing.Point(0, 0);
|
||||
this.txtMessage.Name = "txtMessage";
|
||||
this.txtMessage.Properties.Appearance.Font = new System.Drawing.Font("Lucida Console", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.txtMessage.Properties.Appearance.Options.UseFont = true;
|
||||
this.txtMessage.Size = new System.Drawing.Size(953, 486);
|
||||
this.txtMessage.TabIndex = 0;
|
||||
//
|
||||
// panelControl1
|
||||
//
|
||||
this.panelControl1.Controls.Add(this.simpleButton1);
|
||||
this.panelControl1.Dock = System.Windows.Forms.DockStyle.Bottom;
|
||||
this.panelControl1.Location = new System.Drawing.Point(0, 486);
|
||||
this.panelControl1.Name = "panelControl1";
|
||||
this.panelControl1.Size = new System.Drawing.Size(953, 45);
|
||||
this.panelControl1.TabIndex = 1;
|
||||
//
|
||||
// simpleButton1
|
||||
//
|
||||
this.simpleButton1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.simpleButton1.DialogResult = System.Windows.Forms.DialogResult.OK;
|
||||
this.simpleButton1.Location = new System.Drawing.Point(866, 10);
|
||||
this.simpleButton1.Name = "simpleButton1";
|
||||
this.simpleButton1.Size = new System.Drawing.Size(75, 23);
|
||||
this.simpleButton1.TabIndex = 0;
|
||||
this.simpleButton1.Text = "Ok";
|
||||
//
|
||||
// InfoBox
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(953, 531);
|
||||
this.Controls.Add(this.txtMessage);
|
||||
this.Controls.Add(this.panelControl1);
|
||||
this.Name = "InfoBox";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||
this.Text = "InfoBox";
|
||||
((System.ComponentModel.ISupportInitialize)(this.txtMessage.Properties)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.panelControl1)).EndInit();
|
||||
this.panelControl1.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private DevExpress.XtraEditors.MemoEdit txtMessage;
|
||||
private DevExpress.XtraEditors.PanelControl panelControl1;
|
||||
private DevExpress.XtraEditors.SimpleButton simpleButton1;
|
||||
}
|
||||
}
|
||||
35
ChanSort.Ui/InfoBox.cs
Normal file
35
ChanSort.Ui/InfoBox.cs
Normal file
@@ -0,0 +1,35 @@
|
||||
using System.Windows.Forms;
|
||||
using DevExpress.XtraEditors;
|
||||
|
||||
namespace ChanSort.Ui
|
||||
{
|
||||
public partial class InfoBox : XtraForm
|
||||
{
|
||||
public InfoBox()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.ActiveControl = this.simpleButton1;
|
||||
}
|
||||
|
||||
public static void Show(IWin32Window owner, string message, string caption)
|
||||
{
|
||||
var box = new InfoBox();
|
||||
box.Text = caption;
|
||||
box.txtMessage.Text = message;
|
||||
box.txtMessage.Properties.ReadOnly = true;
|
||||
box.txtMessage.SelectionStart = 0;
|
||||
box.txtMessage.SelectionLength = 0;
|
||||
box.ShowDialog(owner);
|
||||
}
|
||||
|
||||
protected override bool ProcessDialogKey(Keys keyData)
|
||||
{
|
||||
if (keyData == Keys.Escape)
|
||||
{
|
||||
this.DialogResult = DialogResult.Cancel;
|
||||
return true;
|
||||
}
|
||||
return base.ProcessDialogKey(keyData);
|
||||
}
|
||||
}
|
||||
}
|
||||
120
ChanSort.Ui/InfoBox.resx
Normal file
120
ChanSort.Ui/InfoBox.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
1481
ChanSort.Ui/MainForm.Designer.cs
generated
Normal file
1481
ChanSort.Ui/MainForm.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
1712
ChanSort.Ui/MainForm.cs
Normal file
1712
ChanSort.Ui/MainForm.cs
Normal file
File diff suppressed because it is too large
Load Diff
693
ChanSort.Ui/MainForm.de.resx
Normal file
693
ChanSort.Ui/MainForm.de.resx
Normal file
@@ -0,0 +1,693 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="gridOutput.EmbeddedNavigator.AccessibleDescription" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="gridOutput.EmbeddedNavigator.AccessibleName" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<assembly alias="DevExpress.Data.v12.2" name="DevExpress.Data.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<data name="gridOutput.EmbeddedNavigator.AllowHtmlTextInToolTip" type="DevExpress.Utils.DefaultBoolean, DevExpress.Data.v12.2">
|
||||
<value>Default</value>
|
||||
</data>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="gridOutput.EmbeddedNavigator.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left</value>
|
||||
</data>
|
||||
<data name="gridOutput.EmbeddedNavigator.BackgroundImage" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="gridOutput.EmbeddedNavigator.BackgroundImageLayout" type="System.Windows.Forms.ImageLayout, System.Windows.Forms">
|
||||
<value>Tile</value>
|
||||
</data>
|
||||
<data name="gridOutput.EmbeddedNavigator.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>Inherit</value>
|
||||
</data>
|
||||
<assembly alias="DevExpress.XtraEditors.v12.2" name="DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<data name="gridOutput.EmbeddedNavigator.TextLocation" type="DevExpress.XtraEditors.NavigatorButtonsTextLocation, DevExpress.XtraEditors.v12.2">
|
||||
<value>Center</value>
|
||||
</data>
|
||||
<data name="gridOutput.EmbeddedNavigator.ToolTip" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<assembly alias="DevExpress.Utils.v12.2" name="DevExpress.Utils.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<data name="gridOutput.EmbeddedNavigator.ToolTipIconType" type="DevExpress.Utils.ToolTipIconType, DevExpress.Utils.v12.2">
|
||||
<value>None</value>
|
||||
</data>
|
||||
<data name="gridOutput.EmbeddedNavigator.ToolTipTitle" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="gviewOutput.Appearance.HeaderPanel.GradientMode" type="System.Drawing.Drawing2D.LinearGradientMode, System.Drawing">
|
||||
<value>Horizontal</value>
|
||||
</data>
|
||||
<data name="gviewOutput.Appearance.HeaderPanel.Image" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="colOutSlot.Caption" xml:space="preserve">
|
||||
<value>Neue Pr#</value>
|
||||
</data>
|
||||
<data name="colOutSlot.ToolTip" xml:space="preserve">
|
||||
<value>Neuer Programmplatz</value>
|
||||
</data>
|
||||
<data name="colOutName.Caption" xml:space="preserve">
|
||||
<value>Sendername</value>
|
||||
</data>
|
||||
<data name="colOutFav.Caption" xml:space="preserve">
|
||||
<value>Favoriten</value>
|
||||
</data>
|
||||
<data name="repositoryItemCheckedComboBoxEdit1.Mask.AutoComplete" type="DevExpress.XtraEditors.Mask.AutoCompleteType, DevExpress.XtraEditors.v12.2">
|
||||
<value>Default</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="repositoryItemCheckedComboBoxEdit1.Mask.BeepOnError" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="repositoryItemCheckedComboBoxEdit1.Mask.IgnoreMaskBlank" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="repositoryItemCheckedComboBoxEdit1.Mask.PlaceHolder" type="System.Char, mscorlib" xml:space="preserve">
|
||||
<value>_</value>
|
||||
</data>
|
||||
<data name="repositoryItemCheckedComboBoxEdit1.Mask.SaveLiteral" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="repositoryItemCheckedComboBoxEdit1.Mask.ShowPlaceHolders" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="repositoryItemCheckedComboBoxEdit1.Mask.UseMaskAsDisplayFormat" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="lblHotkeyLeft.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>333, 17</value>
|
||||
</data>
|
||||
<data name="lblHotkeyLeft.Text" xml:space="preserve">
|
||||
<value>F3: Filter | F4: Liste | -: nach oben | +: nach unten | Entf: entfernen</value>
|
||||
</data>
|
||||
<data name="comboEditMode.EditValue" xml:space="preserve">
|
||||
<value>Dahinter einfügen</value>
|
||||
</data>
|
||||
<data name="miFile.Caption" xml:space="preserve">
|
||||
<value>&Datei</value>
|
||||
</data>
|
||||
<data name="miOpen.Caption" xml:space="preserve">
|
||||
<value>TV Senderliste &öffnen...</value>
|
||||
</data>
|
||||
<data name="miReload.Caption" xml:space="preserve">
|
||||
<value>&Erneut laden</value>
|
||||
</data>
|
||||
<data name="miRestoreOriginal.Caption" xml:space="preserve">
|
||||
<value>Sicherheitskopie wiederherstellen</value>
|
||||
</data>
|
||||
<data name="miFileInformation.Caption" xml:space="preserve">
|
||||
<value>Datei&information...</value>
|
||||
</data>
|
||||
<data name="miSave.Caption" xml:space="preserve">
|
||||
<value>&Speichern</value>
|
||||
</data>
|
||||
<data name="miSaveAs.Caption" xml:space="preserve">
|
||||
<value>Speichern &unter...</value>
|
||||
</data>
|
||||
<data name="miOpenReferenceFile.Caption" xml:space="preserve">
|
||||
<value>Referenzliste öffnen...</value>
|
||||
</data>
|
||||
<data name="miQuit.Caption" xml:space="preserve">
|
||||
<value>&Beenden</value>
|
||||
</data>
|
||||
<data name="miEdit.Caption" xml:space="preserve">
|
||||
<value>&Bearbeiten</value>
|
||||
</data>
|
||||
<data name="miAddChannel.Caption" xml:space="preserve">
|
||||
<value>Sender &übernehmen</value>
|
||||
</data>
|
||||
<data name="miRemove.Caption" xml:space="preserve">
|
||||
<value>Sender &entfernen</value>
|
||||
</data>
|
||||
<data name="miReplace.Caption" xml:space="preserve">
|
||||
<value>Sender erset&zen</value>
|
||||
</data>
|
||||
<data name="miSort.Caption" xml:space="preserve">
|
||||
<value>Sender alphabetisch sortieren</value>
|
||||
</data>
|
||||
<data name="miRenum.Caption" xml:space="preserve">
|
||||
<value>Sender neu &nummerieren</value>
|
||||
</data>
|
||||
<data name="mnuFavSet.Caption" xml:space="preserve">
|
||||
<value>&Favoriten hinzufügen</value>
|
||||
</data>
|
||||
<data name="mnuFavUnset.Caption" xml:space="preserve">
|
||||
<value>Favoriten entfernen</value>
|
||||
</data>
|
||||
<data name="miLockOn.Caption" xml:space="preserve">
|
||||
<value>Sender s&perren: ein</value>
|
||||
</data>
|
||||
<data name="miLockOff.Caption" xml:space="preserve">
|
||||
<value>Sender sperren: aus</value>
|
||||
</data>
|
||||
<data name="miSkipOn.Caption" xml:space="preserve">
|
||||
<value>Sender ü&berspringen: ein</value>
|
||||
</data>
|
||||
<data name="miSkipOff.Caption" xml:space="preserve">
|
||||
<value>Sender überspringen: aus</value>
|
||||
</data>
|
||||
<data name="miHideOn.Caption" xml:space="preserve">
|
||||
<value>Sender &verstecken: ein</value>
|
||||
</data>
|
||||
<data name="miHideOff.Caption" xml:space="preserve">
|
||||
<value>Sender verstecken: aus</value>
|
||||
</data>
|
||||
<data name="barSubItem2.Caption" xml:space="preserve">
|
||||
<value>TV-Gerät</value>
|
||||
</data>
|
||||
<data name="miTvCountrySetup.Caption" xml:space="preserve">
|
||||
<value>Geräteeinstellungen...</value>
|
||||
</data>
|
||||
<data name="mnuOptions.Caption" xml:space="preserve">
|
||||
<value>&Einstellungen</value>
|
||||
</data>
|
||||
<data name="barSubItem1.Caption" xml:space="preserve">
|
||||
<value>&Sprache</value>
|
||||
</data>
|
||||
<data name="mnuCharset.Caption" xml:space="preserve">
|
||||
<value>&Zeichensatz</value>
|
||||
</data>
|
||||
<data name="mnuHelp.Caption" xml:space="preserve">
|
||||
<value>&Hilfe</value>
|
||||
</data>
|
||||
<data name="miAbout.Caption" xml:space="preserve">
|
||||
<value>&Über ChanSort...</value>
|
||||
</data>
|
||||
<assembly alias="DevExpress.XtraBars.v12.2" name="DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<data name="barManager1.Categories" type="DevExpress.XtraBars.BarManagerCategory, DevExpress.XtraBars.v12.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxMi4yLCBWZXJzaW9uPTEy
|
||||
LjIuNi4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA
|
||||
ACZEZXZFeHByZXNzLlh0cmFCYXJzLkJhck1hbmFnZXJDYXRlZ29yeQMAAAAETmFtZQRHdWlkB1Zpc2li
|
||||
bGUBAwALU3lzdGVtLkd1aWQBAgAAAAYDAAAABEZpbGUE/P///wtTeXN0ZW0uR3VpZAsAAAACX2ECX2IC
|
||||
X2MCX2QCX2UCX2YCX2cCX2gCX2kCX2oCX2sAAAAAAAAAAAAAAAgHBwICAgICAgICKaPJ5gsBeU2NTSFe
|
||||
Xxl+0wEL
|
||||
</value>
|
||||
</data>
|
||||
<data name="barManager1.Categories1" type="DevExpress.XtraBars.BarManagerCategory, DevExpress.XtraBars.v12.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxMi4yLCBWZXJzaW9uPTEy
|
||||
LjIuNi4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA
|
||||
ACZEZXZFeHByZXNzLlh0cmFCYXJzLkJhck1hbmFnZXJDYXRlZ29yeQMAAAAETmFtZQRHdWlkB1Zpc2li
|
||||
bGUBAwALU3lzdGVtLkd1aWQBAgAAAAYDAAAABEhlbHAE/P///wtTeXN0ZW0uR3VpZAsAAAACX2ECX2IC
|
||||
X2MCX2QCX2UCX2YCX2cCX2gCX2kCX2oCX2sAAAAAAAAAAAAAAAgHBwICAgICAgICdEVVDegwMU2acNpw
|
||||
KphCYAEL
|
||||
</value>
|
||||
</data>
|
||||
<data name="barManager1.Categories2" type="DevExpress.XtraBars.BarManagerCategory, DevExpress.XtraBars.v12.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxMi4yLCBWZXJzaW9uPTEy
|
||||
LjIuNi4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA
|
||||
ACZEZXZFeHByZXNzLlh0cmFCYXJzLkJhck1hbmFnZXJDYXRlZ29yeQMAAAAETmFtZQRHdWlkB1Zpc2li
|
||||
bGUBAwALU3lzdGVtLkd1aWQBAgAAAAYDAAAABEVkaXQE/P///wtTeXN0ZW0uR3VpZAsAAAACX2ECX2IC
|
||||
X2MCX2QCX2UCX2YCX2cCX2gCX2kCX2oCX2sAAAAAAAAAAAAAAAgHBwICAgICAgICZMTu18lZRU+IqmAu
|
||||
ZMgcwAEL
|
||||
</value>
|
||||
</data>
|
||||
<data name="barManager1.Categories3" type="DevExpress.XtraBars.BarManagerCategory, DevExpress.XtraBars.v12.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxMi4yLCBWZXJzaW9uPTEy
|
||||
LjIuNi4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA
|
||||
ACZEZXZFeHByZXNzLlh0cmFCYXJzLkJhck1hbmFnZXJDYXRlZ29yeQMAAAAETmFtZQRHdWlkB1Zpc2li
|
||||
bGUBAwALU3lzdGVtLkd1aWQBAgAAAAYDAAAAB09wdGlvbnME/P///wtTeXN0ZW0uR3VpZAsAAAACX2EC
|
||||
X2ICX2MCX2QCX2UCX2YCX2cCX2gCX2kCX2oCX2sAAAAAAAAAAAAAAAgHBwICAgICAgICXJMOh9nzAkKc
|
||||
WIeWYGkVXQEL
|
||||
</value>
|
||||
</data>
|
||||
<data name="barDockControlTop.Appearance.GradientMode" type="System.Drawing.Drawing2D.LinearGradientMode, System.Drawing">
|
||||
<value>Horizontal</value>
|
||||
</data>
|
||||
<data name="barDockControlTop.Appearance.Image" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="barDockControlBottom.Appearance.GradientMode" type="System.Drawing.Drawing2D.LinearGradientMode, System.Drawing">
|
||||
<value>Horizontal</value>
|
||||
</data>
|
||||
<data name="barDockControlBottom.Appearance.Image" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="barDockControlLeft.Appearance.GradientMode" type="System.Drawing.Drawing2D.LinearGradientMode, System.Drawing">
|
||||
<value>Horizontal</value>
|
||||
</data>
|
||||
<data name="barDockControlLeft.Appearance.Image" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="barDockControlRight.Appearance.GradientMode" type="System.Drawing.Drawing2D.LinearGradientMode, System.Drawing">
|
||||
<value>Horizontal</value>
|
||||
</data>
|
||||
<data name="barDockControlRight.Appearance.Image" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="comboUnsortedAction.EditValue" xml:space="preserve">
|
||||
<value>In bestehender Reihenfolge am Ende anhängen</value>
|
||||
</data>
|
||||
<data name="comboUnsortedAction.Properties.AccessibleDescription" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="comboUnsortedAction.Properties.AccessibleName" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="comboUnsortedAction.Properties.AutoHeight" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="comboUnsortedAction.Properties.Items" xml:space="preserve">
|
||||
<value>In bestehender Reihenfolge am Ende anhängen</value>
|
||||
</data>
|
||||
<data name="comboUnsortedAction.Properties.Items1" xml:space="preserve">
|
||||
<value>In alphabetischer Reihenfolge am Ende anhängen</value>
|
||||
</data>
|
||||
<data name="comboUnsortedAction.Properties.Items2" xml:space="preserve">
|
||||
<value>Löschen</value>
|
||||
</data>
|
||||
<data name="comboUnsortedAction.Properties.NullValuePrompt" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="comboUnsortedAction.Properties.NullValuePromptShowForEmptyValue" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="comboUnsortedAction.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>262, 20</value>
|
||||
</data>
|
||||
<data name="labelControl3.Appearance.DisabledImage" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="labelControl3.Appearance.GradientMode" type="System.Drawing.Drawing2D.LinearGradientMode, System.Drawing">
|
||||
<value>Horizontal</value>
|
||||
</data>
|
||||
<data name="labelControl3.Appearance.HoverImage" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="labelControl3.Appearance.Image" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="labelControl3.Appearance.PressedImage" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="labelControl3.Text" xml:space="preserve">
|
||||
<value>Nicht explizit sortierte Sender:</value>
|
||||
</data>
|
||||
<data name="btnResetChannelData.Text" xml:space="preserve">
|
||||
<value>Senderlisten vollständig löschen</value>
|
||||
</data>
|
||||
<data name="comboChannelList.Properties.AccessibleDescription" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="comboChannelList.Properties.AccessibleName" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="comboChannelList.Properties.AutoHeight" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="comboChannelList.Properties.NullValuePrompt" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="comboChannelList.Properties.NullValuePromptShowForEmptyValue" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="labelControl1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>57, 13</value>
|
||||
</data>
|
||||
<data name="labelControl1.Text" xml:space="preserve">
|
||||
<value>Senderliste:</value>
|
||||
</data>
|
||||
<data name="$this.Text" xml:space="preserve">
|
||||
<value>ChanSort v2013-03-30 - Senderlisten Editor für LG und Samsung TV</value>
|
||||
</data>
|
||||
<data name="miMoveUp.Caption" xml:space="preserve">
|
||||
<value>Nach oben</value>
|
||||
</data>
|
||||
<data name="miMoveDown.Caption" xml:space="preserve">
|
||||
<value>Nach unten</value>
|
||||
</data>
|
||||
<data name="comboEditMode.Properties.AccessibleDescription" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="comboEditMode.Properties.AccessibleName" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="comboEditMode.Properties.AutoHeight" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="comboEditMode.Properties.Items" xml:space="preserve">
|
||||
<value>Davor einfügen</value>
|
||||
</data>
|
||||
<data name="comboEditMode.Properties.Items1" xml:space="preserve">
|
||||
<value>Dahinter einfügen</value>
|
||||
</data>
|
||||
<data name="comboEditMode.Properties.Items2" xml:space="preserve">
|
||||
<value>Austauschen</value>
|
||||
</data>
|
||||
<data name="comboEditMode.Properties.NullValuePrompt" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="comboEditMode.Properties.NullValuePromptShowForEmptyValue" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="btnSyncFromLeft.ToolTip" xml:space="preserve">
|
||||
<value>Nach aktuellem Sender in rechtem Fenster filtern</value>
|
||||
</data>
|
||||
<data name="labelControl2.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>35, 13</value>
|
||||
</data>
|
||||
<data name="labelControl2.Text" xml:space="preserve">
|
||||
<value>Modus:</value>
|
||||
</data>
|
||||
<data name="btnClearLeftFilter.Appearance.GradientMode" type="System.Drawing.Drawing2D.LinearGradientMode, System.Drawing">
|
||||
<value>Horizontal</value>
|
||||
</data>
|
||||
<data name="btnClearLeftFilter.Appearance.Image" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="btnClearLeftFilter.ToolTip" xml:space="preserve">
|
||||
<value>Filter zurücksetzen</value>
|
||||
</data>
|
||||
<data name="btnRenum.ToolTip" xml:space="preserve">
|
||||
<value>Markierte Sender neu nummerieren</value>
|
||||
</data>
|
||||
<data name="btnSort.ToolTip" xml:space="preserve">
|
||||
<value>Markierte Sender alphabetisch sortieren</value>
|
||||
</data>
|
||||
<data name="btnDown.ToolTip" xml:space="preserve">
|
||||
<value>Markierte Sender nach unten verschieben</value>
|
||||
</data>
|
||||
<data name="btnUp.ToolTip" xml:space="preserve">
|
||||
<value>Markierte Sender nach oben verschieben</value>
|
||||
</data>
|
||||
<data name="btnRemove.ToolTip" xml:space="preserve">
|
||||
<value>Markierte Sender entfernen</value>
|
||||
</data>
|
||||
<data name="txtSetSlot.Properties.AccessibleDescription" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="txtSetSlot.Properties.AccessibleName" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="txtSetSlot.Properties.AutoHeight" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="txtSetSlot.Properties.Mask.AutoComplete" type="DevExpress.XtraEditors.Mask.AutoCompleteType, DevExpress.XtraEditors.v12.2">
|
||||
<value>Default</value>
|
||||
</data>
|
||||
<data name="txtSetSlot.Properties.Mask.BeepOnError" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="txtSetSlot.Properties.Mask.IgnoreMaskBlank" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="txtSetSlot.Properties.Mask.PlaceHolder" type="System.Char, mscorlib" xml:space="preserve">
|
||||
<value>_</value>
|
||||
</data>
|
||||
<data name="txtSetSlot.Properties.Mask.SaveLiteral" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="txtSetSlot.Properties.Mask.ShowPlaceHolders" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="txtSetSlot.Properties.Mask.UseMaskAsDisplayFormat" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="txtSetSlot.Properties.NullValuePrompt" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="txtSetSlot.Properties.NullValuePromptShowForEmptyValue" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="labelControl11.Text" xml:space="preserve">
|
||||
<value>Setze Pr#:</value>
|
||||
</data>
|
||||
<data name="labelControl11.ToolTip" xml:space="preserve">
|
||||
<value>Programplatz für Einfügen und Festlegen</value>
|
||||
</data>
|
||||
<data name="grpOutputList.Text" xml:space="preserve">
|
||||
<value>Sortierte Sender (.csv)</value>
|
||||
</data>
|
||||
<data name="gridInput.EmbeddedNavigator.AccessibleDescription" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="gridInput.EmbeddedNavigator.AccessibleName" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="gridInput.EmbeddedNavigator.AllowHtmlTextInToolTip" type="DevExpress.Utils.DefaultBoolean, DevExpress.Data.v12.2">
|
||||
<value>Default</value>
|
||||
</data>
|
||||
<data name="gridInput.EmbeddedNavigator.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left</value>
|
||||
</data>
|
||||
<data name="gridInput.EmbeddedNavigator.BackgroundImage" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="gridInput.EmbeddedNavigator.BackgroundImageLayout" type="System.Windows.Forms.ImageLayout, System.Windows.Forms">
|
||||
<value>Tile</value>
|
||||
</data>
|
||||
<data name="gridInput.EmbeddedNavigator.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>Inherit</value>
|
||||
</data>
|
||||
<data name="gridInput.EmbeddedNavigator.TextLocation" type="DevExpress.XtraEditors.NavigatorButtonsTextLocation, DevExpress.XtraEditors.v12.2">
|
||||
<value>Center</value>
|
||||
</data>
|
||||
<data name="gridInput.EmbeddedNavigator.ToolTip" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="gridInput.EmbeddedNavigator.ToolTipIconType" type="DevExpress.Utils.ToolTipIconType, DevExpress.Utils.v12.2">
|
||||
<value>None</value>
|
||||
</data>
|
||||
<data name="gridInput.EmbeddedNavigator.ToolTipTitle" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="gviewInput.Appearance.HeaderPanel.GradientMode" type="System.Drawing.Drawing2D.LinearGradientMode, System.Drawing">
|
||||
<value>Horizontal</value>
|
||||
</data>
|
||||
<data name="gviewInput.Appearance.HeaderPanel.Image" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="colSlotOld.Caption" xml:space="preserve">
|
||||
<value>Alte Pr#</value>
|
||||
</data>
|
||||
<data name="colSlotOld.ToolTip" xml:space="preserve">
|
||||
<value>Alter Programmplatz</value>
|
||||
</data>
|
||||
<data name="colSlotNew.Caption" xml:space="preserve">
|
||||
<value>Neue Pr#</value>
|
||||
</data>
|
||||
<data name="colSlotNew.ToolTip" xml:space="preserve">
|
||||
<value>Neuer Programmplatz</value>
|
||||
</data>
|
||||
<data name="colName.Caption" xml:space="preserve">
|
||||
<value>Sendername</value>
|
||||
</data>
|
||||
<data name="colShortName.Caption" xml:space="preserve">
|
||||
<value>Kurzname</value>
|
||||
</data>
|
||||
<data name="colFavorites.Caption" xml:space="preserve">
|
||||
<value>Favoriten</value>
|
||||
</data>
|
||||
<data name="repositoryItemCheckedComboBoxEdit2.Mask.AutoComplete" type="DevExpress.XtraEditors.Mask.AutoCompleteType, DevExpress.XtraEditors.v12.2">
|
||||
<value>Default</value>
|
||||
</data>
|
||||
<data name="repositoryItemCheckedComboBoxEdit2.Mask.BeepOnError" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="repositoryItemCheckedComboBoxEdit2.Mask.IgnoreMaskBlank" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="repositoryItemCheckedComboBoxEdit2.Mask.PlaceHolder" type="System.Char, mscorlib" xml:space="preserve">
|
||||
<value>_</value>
|
||||
</data>
|
||||
<data name="repositoryItemCheckedComboBoxEdit2.Mask.SaveLiteral" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="repositoryItemCheckedComboBoxEdit2.Mask.ShowPlaceHolders" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="repositoryItemCheckedComboBoxEdit2.Mask.UseMaskAsDisplayFormat" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="colLock.Caption" xml:space="preserve">
|
||||
<value>Ge- sperrt</value>
|
||||
</data>
|
||||
<data name="colSkip.Caption" xml:space="preserve">
|
||||
<value>Über- springen</value>
|
||||
</data>
|
||||
<data name="colHidden.Caption" xml:space="preserve">
|
||||
<value>Ver- steckt</value>
|
||||
</data>
|
||||
<data name="colEncrypted.Caption" xml:space="preserve">
|
||||
<value>Ver- schlüss</value>
|
||||
</data>
|
||||
<data name="colEncrypted.ToolTip" xml:space="preserve">
|
||||
<value>Verschlüsselt</value>
|
||||
</data>
|
||||
<data name="colChannelOrTransponder.Caption" xml:space="preserve">
|
||||
<value>Kanal/ Transp.</value>
|
||||
</data>
|
||||
<data name="colChannelOrTransponder.ToolTip" xml:space="preserve">
|
||||
<value>Kanal- bzw. Transpondernummer</value>
|
||||
</data>
|
||||
<data name="colFreqInMhz.Caption" xml:space="preserve">
|
||||
<value>Freqenz (MHz)</value>
|
||||
</data>
|
||||
<data name="colSatellite.Caption" xml:space="preserve">
|
||||
<value>Satellit</value>
|
||||
</data>
|
||||
<data name="colSymbolRate.Caption" xml:space="preserve">
|
||||
<value>Symbol- rate</value>
|
||||
</data>
|
||||
<data name="colPolarity.Caption" xml:space="preserve">
|
||||
<value>Polarität</value>
|
||||
</data>
|
||||
<data name="colNetworkName.Caption" xml:space="preserve">
|
||||
<value>Netzwerk Name</value>
|
||||
</data>
|
||||
<data name="colNetworkOperator.Caption" xml:space="preserve">
|
||||
<value>Netzwerk Betreiber</value>
|
||||
</data>
|
||||
<data name="lblHotkeyRight.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>213, 17</value>
|
||||
</data>
|
||||
<data name="lblHotkeyRight.Text" xml:space="preserve">
|
||||
<value>F5: Filter | F6: Liste | Eingabe: übernehmen</value>
|
||||
</data>
|
||||
<data name="btnCloneChannelList.Text" xml:space="preserve">
|
||||
<value><< Alle hinzufügen (aktuelle Senderliste kopieren)</value>
|
||||
</data>
|
||||
<data name="btnClearRightFilter.Appearance.GradientMode" type="System.Drawing.Drawing2D.LinearGradientMode, System.Drawing">
|
||||
<value>Horizontal</value>
|
||||
</data>
|
||||
<data name="btnClearRightFilter.Appearance.Image" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="btnClearRightFilter.ToolTip" xml:space="preserve">
|
||||
<value>Filter zurücksetzen</value>
|
||||
</data>
|
||||
<data name="btnSyncFromRight.ToolTip" xml:space="preserve">
|
||||
<value>Nach aktuellem Sender in linkem Fenster filtern</value>
|
||||
</data>
|
||||
<data name="btnAdd.ToolTip" xml:space="preserve">
|
||||
<value>Markierte Sender übernehmen</value>
|
||||
</data>
|
||||
<data name="grpInputList.Text" xml:space="preserve">
|
||||
<value>Alle Sender</value>
|
||||
</data>
|
||||
</root>
|
||||
2375
ChanSort.Ui/MainForm.resx
Normal file
2375
ChanSort.Ui/MainForm.resx
Normal file
File diff suppressed because it is too large
Load Diff
22
ChanSort.Ui/Program.cs
Normal file
22
ChanSort.Ui/Program.cs
Normal file
@@ -0,0 +1,22 @@
|
||||
using System;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace ChanSort.Ui
|
||||
{
|
||||
static class Program
|
||||
{
|
||||
internal static bool ChangeLanguage;
|
||||
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
do
|
||||
{
|
||||
ChangeLanguage = false;
|
||||
Application.Run(new MainForm());
|
||||
} while (ChangeLanguage);
|
||||
}
|
||||
}
|
||||
}
|
||||
38
ChanSort.Ui/Properties/AssemblyInfo.cs
Normal file
38
ChanSort.Ui/Properties/AssemblyInfo.cs
Normal file
@@ -0,0 +1,38 @@
|
||||
using System.Reflection;
|
||||
using System.Resources;
|
||||
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("ChanSortUI")]
|
||||
[assembly: AssemblyDescription("TV Channel Sort Utility")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("ChanSort")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2012")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
[assembly: NeutralResourcesLanguage("en-US")]
|
||||
|
||||
// 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("207c2719-5641-4141-917e-e76b7c3b952a")]
|
||||
|
||||
// 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")]
|
||||
10
ChanSort.Ui/Properties/DataSources/ChannelInfo.datasource
Normal file
10
ChanSort.Ui/Properties/DataSources/ChannelInfo.datasource
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
This file is automatically generated by Visual Studio .Net. It is
|
||||
used to store generic object data source configuration information.
|
||||
Renaming the file extension or editing the content of this file may
|
||||
cause the file to be unrecognizable by the program.
|
||||
-->
|
||||
<GenericObjectDataSource DisplayName="ChannelInfo" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
|
||||
<TypeInfo>GUI.ChannelInfo, GUI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
|
||||
</GenericObjectDataSource>
|
||||
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
This file is automatically generated by Visual Studio .Net. It is
|
||||
used to store generic object data source configuration information.
|
||||
Renaming the file extension or editing the content of this file may
|
||||
cause the file to be unrecognizable by the program.
|
||||
-->
|
||||
<GenericObjectDataSource DisplayName="EncodingInfo" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
|
||||
<TypeInfo>System.Text.EncodingInfo, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</TypeInfo>
|
||||
</GenericObjectDataSource>
|
||||
337
ChanSort.Ui/Properties/Resources.Designer.cs
generated
Normal file
337
ChanSort.Ui/Properties/Resources.Designer.cs
generated
Normal file
@@ -0,0 +1,337 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.586
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace ChanSort.Ui.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ChanSort.Ui.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap Donate {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("Donate", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Delete all channel data.
|
||||
/// </summary>
|
||||
internal static string MainForm_btnResetChannelData_Click_Caption {
|
||||
get {
|
||||
return ResourceManager.GetString("MainForm_btnResetChannelData_Click_Caption", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to WARNING: All analog, DVB-C/T and DVB-S channel and transponder data will be deleted.
|
||||
///You will have to run a full channel scan after loading this file into your TV.
|
||||
///Proceed?.
|
||||
/// </summary>
|
||||
internal static string MainForm_btnResetChannelData_Click_Message {
|
||||
get {
|
||||
return ResourceManager.GetString("MainForm_btnResetChannelData_Click_Message", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Supported Files|{0}|All Files (*.*)|*.
|
||||
/// </summary>
|
||||
internal static string MainForm_FileDialog_OpenFileFilter {
|
||||
get {
|
||||
return ResourceManager.GetString("MainForm_FileDialog_OpenFileFilter", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to {0}-Files|*{0}|All Files (*.*)|*.
|
||||
/// </summary>
|
||||
internal static string MainForm_FileDialog_SaveFileFilter {
|
||||
get {
|
||||
return ResourceManager.GetString("MainForm_FileDialog_SaveFileFilter", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The input file contains multiple records that use the same
|
||||
///program number. It is possible that the TV will not accept
|
||||
///the changes made by ChanSort.
|
||||
///This is typically caused by running a manual transponder scan.
|
||||
///It is recommended to use a clean input file for any modifications.
|
||||
///To do that, turn Hotel Mode OFF, reset the TV to
|
||||
///factory defaults, run a new blind channel scan and turn
|
||||
///Hotel Mode back ON, then export a new clean TLL file.
|
||||
///.
|
||||
/// </summary>
|
||||
internal static string MainForm_LoadFiles_DupeWarningMsg {
|
||||
get {
|
||||
return ResourceManager.GetString("MainForm_LoadFiles_DupeWarningMsg", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Error loading file.
|
||||
/// </summary>
|
||||
internal static string MainForm_LoadFiles_IOException {
|
||||
get {
|
||||
return ResourceManager.GetString("MainForm_LoadFiles_IOException", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Data validation.
|
||||
/// </summary>
|
||||
internal static string MainForm_LoadFiles_ValidationWarningCap {
|
||||
get {
|
||||
return ResourceManager.GetString("MainForm_LoadFiles_ValidationWarningCap", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The verification of the file content showed some anomalies. Possible causes are:
|
||||
///- The TV itself created a mess in the channel lists (which happens frequently).
|
||||
///- The file format is partially unknown (e.g. unknown TV model or firmware).
|
||||
///- The file has been edited with a broken program version.
|
||||
///- ChanSort's validation rules are based on wrong assumptions.
|
||||
///You can continue editing, but it is possibile that your TV will reject the changes..
|
||||
/// </summary>
|
||||
internal static string MainForm_LoadFiles_ValidationWarningMsg {
|
||||
get {
|
||||
return ResourceManager.GetString("MainForm_LoadFiles_ValidationWarningMsg", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to An error occured while loading the TV's data file:
|
||||
///{0}.
|
||||
/// </summary>
|
||||
internal static string MainForm_LoadTll_Exception {
|
||||
get {
|
||||
return ResourceManager.GetString("MainForm_LoadTll_Exception", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to No plugin found to read/write {0} files..
|
||||
/// </summary>
|
||||
internal static string MainForm_LoadTll_SerializerNotFound {
|
||||
get {
|
||||
return ResourceManager.GetString("MainForm_LoadTll_SerializerNotFound", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Quell-TLL konnte nicht gefunden werden:
|
||||
///'{0}'.
|
||||
/// </summary>
|
||||
internal static string MainForm_LoadTll_SourceTllNotFound {
|
||||
get {
|
||||
return ResourceManager.GetString("MainForm_LoadTll_SourceTllNotFound", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to You are about to restore the backup file. All changes will be lost!
|
||||
///Do you want to continue?.
|
||||
/// </summary>
|
||||
internal static string MainForm_miRestoreOriginal_ItemClick_Confirm {
|
||||
get {
|
||||
return ResourceManager.GetString("MainForm_miRestoreOriginal_ItemClick_Confirm", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to No backup file found: {0}.
|
||||
/// </summary>
|
||||
internal static string MainForm_miRestoreOriginal_ItemClick_NoBackup {
|
||||
get {
|
||||
return ResourceManager.GetString("MainForm_miRestoreOriginal_ItemClick_NoBackup", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Unable to copy .bak file to {0}.
|
||||
/// </summary>
|
||||
internal static string MainForm_miRestoreOriginal_Message {
|
||||
get {
|
||||
return ResourceManager.GetString("MainForm_miRestoreOriginal_Message", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Data modified.
|
||||
/// </summary>
|
||||
internal static string MainForm_PromptSaveAndContinue_Caption {
|
||||
get {
|
||||
return ResourceManager.GetString("MainForm_PromptSaveAndContinue_Caption", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Do you want to save the changes?.
|
||||
/// </summary>
|
||||
internal static string MainForm_PromptSaveAndContinue_Message {
|
||||
get {
|
||||
return ResourceManager.GetString("MainForm_PromptSaveAndContinue_Message", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Restore order from channel scan.
|
||||
/// </summary>
|
||||
internal static string MainForm_RestoreScanOrder_Caption {
|
||||
get {
|
||||
return ResourceManager.GetString("MainForm_RestoreScanOrder_Caption", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to All custom storing will be lost.
|
||||
///Are you sure you want to restore the order from the channel scan?.
|
||||
/// </summary>
|
||||
internal static string MainForm_RestoreScanOrder_Message {
|
||||
get {
|
||||
return ResourceManager.GetString("MainForm_RestoreScanOrder_Message", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to There was an error saving the file. Please make sure that
|
||||
///- you have write permission on the file
|
||||
///- the file is not open in another program
|
||||
///
|
||||
///The error message is:
|
||||
///.
|
||||
/// </summary>
|
||||
internal static string MainForm_SaveFiles_ErrorMsg {
|
||||
get {
|
||||
return ResourceManager.GetString("MainForm_SaveFiles_ErrorMsg", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to File write error.
|
||||
/// </summary>
|
||||
internal static string MainForm_SaveFiles_ErrorTitle {
|
||||
get {
|
||||
return ResourceManager.GetString("MainForm_SaveFiles_ErrorTitle", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to An error occured while writing the TV data file:
|
||||
///{0}.
|
||||
/// </summary>
|
||||
internal static string MainForm_SaveTllFile_Exception {
|
||||
get {
|
||||
return ResourceManager.GetString("MainForm_SaveTllFile_Exception", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Sorted TV data file was created successfully..
|
||||
/// </summary>
|
||||
internal static string MainForm_SaveTllFile_Success {
|
||||
get {
|
||||
return ResourceManager.GetString("MainForm_SaveTllFile_Success", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to ChanSort Reference List|*.csv|SamToolBox Reference List|*.chl|All Reference Lists|*.csv;*.chl.
|
||||
/// </summary>
|
||||
internal static string MainForm_ShowOpenReferenceFileDialog_Filter {
|
||||
get {
|
||||
return ResourceManager.GetString("MainForm_ShowOpenReferenceFileDialog_Filter", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Open Reference List.
|
||||
/// </summary>
|
||||
internal static string MainForm_ShowOpenReferenceFileDialog_Title {
|
||||
get {
|
||||
return ResourceManager.GetString("MainForm_ShowOpenReferenceFileDialog_Title", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to An unexpected error occured:
|
||||
///{0}.
|
||||
/// </summary>
|
||||
internal static string MainForm_TryExecute_Exception {
|
||||
get {
|
||||
return ResourceManager.GetString("MainForm_TryExecute_Exception", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to <html>
|
||||
///<body>
|
||||
///<p style="font-family:Arial;font-size:12pt">PayPal donation page is being opened...</p>
|
||||
///<p></p>
|
||||
///<p style="font-family:Arial;font-size:12pt">PayPal Spendenseite wird ge&ouml;ffnet...</p>
|
||||
///<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
|
||||
///<input type="hidden" name="cmd" value="_s-xclick">
|
||||
///<input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----MIIHVwYJKoZIhvcNAQcEoIIHSDCCB0QCAQExggEwMIIBLAIBADCBlDCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBW [rest of string was truncated]";.
|
||||
/// </summary>
|
||||
internal static string paypal_button {
|
||||
get {
|
||||
return ResourceManager.GetString("paypal_button", resourceCulture);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
0
ChanSort.Ui/Properties/Resources.de.Designer.cs
generated
Normal file
0
ChanSort.Ui/Properties/Resources.de.Designer.cs
generated
Normal file
230
ChanSort.Ui/Properties/Resources.de.resx
Normal file
230
ChanSort.Ui/Properties/Resources.de.resx
Normal file
@@ -0,0 +1,230 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="MainForm_LoadTll_SourceTllNotFound" xml:space="preserve">
|
||||
<value>Quell-TLL konnte nicht gefunden werden:
|
||||
'{0}'</value>
|
||||
</data>
|
||||
<data name="MainForm_LoadTll_Exception" xml:space="preserve">
|
||||
<value>Beim Auslesen der TLL-Datei trat ein Fehler auf:
|
||||
{0}</value>
|
||||
</data>
|
||||
<data name="MainForm_FileDialog_OpenFileFilter" xml:space="preserve">
|
||||
<value>Unterstützte Dateien|{0}|Alle Dateien (*.*)|*</value>
|
||||
</data>
|
||||
<data name="MainForm_FileDialog_SaveFileFilter" xml:space="preserve">
|
||||
<value>{0}-Dateien|*{0}|Alle Dateien (*.*)|*</value>
|
||||
</data>
|
||||
<data name="MainForm_TryExecute_Exception" xml:space="preserve">
|
||||
<value>Beim Ausführen der Aktion trat ein Programmfehler auf:
|
||||
{0}</value>
|
||||
</data>
|
||||
<data name="MainForm_SaveTllFile_Exception" xml:space="preserve">
|
||||
<value>Beim Schreiben der TLL-Datei trat ein Fehler auf:
|
||||
{0}</value>
|
||||
</data>
|
||||
<data name="MainForm_SaveTllFile_Success" xml:space="preserve">
|
||||
<value>Die sortierte TLL-Datei wurde erfolgreich erstellt.</value>
|
||||
</data>
|
||||
<data name="MainForm_PromptSaveAndContinue_Message" xml:space="preserve">
|
||||
<value>Möchten Sie die Änderungen Speichern?</value>
|
||||
</data>
|
||||
<data name="MainForm_PromptSaveAndContinue_Caption" xml:space="preserve">
|
||||
<value>Daten verändert</value>
|
||||
</data>
|
||||
<data name="MainForm_LoadTll_SerializerNotFound" xml:space="preserve">
|
||||
<value>Es konnte kein Modul zum Lesen/Schreiben von {0}-Dateien gefunden werden.</value>
|
||||
</data>
|
||||
<data name="MainForm_LoadFiles_IOException" xml:space="preserve">
|
||||
<value>Fehler beim Laden der Datei</value>
|
||||
</data>
|
||||
<data name="MainForm_LoadFiles_ValidationWarningCap" xml:space="preserve">
|
||||
<value>Datenüberprüfung</value>
|
||||
</data>
|
||||
<data name="MainForm_LoadFiles_ValidationWarningMsg" xml:space="preserve">
|
||||
<value>Die Überprüfung des Dateiinhalts fand einige Auffälligkeiten. Mögliche Ursachen sind:
|
||||
- Der Fernseher hat seine Senderlisten versaut (was häufig vorkommt).
|
||||
- Das Dateiformat ist teilweise unbekannt (unbekanntes Modell oder Firmware).
|
||||
- Die Datei wurde mit einer defekten Programmversion bearbeitet.
|
||||
- Eine von ChanSort's Prüfungen geht von einer falschen Annahme aus.
|
||||
Sie können mit der Bearbeitung fortfahren, es ist aber möglich, dass Ihr Fernsehgerät die Änderungen nicht annimmt.</value>
|
||||
</data>
|
||||
<data name="MainForm_RestoreScanOrder_Message" xml:space="preserve">
|
||||
<value>Die händische Sortierung wird überschrieben.
|
||||
Wollen Sie wirklich die Reihenfolge des Sendersuchlaufs wiederherstellen?</value>
|
||||
</data>
|
||||
<data name="MainForm_RestoreScanOrder_Caption" xml:space="preserve">
|
||||
<value>Reihenfolge des Sendersuchlaufs wiederherstellen</value>
|
||||
</data>
|
||||
<data name="MainForm_LoadFiles_DupeWarningMsg" xml:space="preserve">
|
||||
<value>Die Eingabedatei enthält mehrere Einträge die der
|
||||
gleichen Programmnummer zugeordnet sind. Es ist möglich,
|
||||
dass das Fernsehgerät die von ChanSort durchgeführten
|
||||
Änderungen nicht akzeptiert.
|
||||
Eine typische Ursache für diese Situation ist ein
|
||||
manueller Transponderscan.
|
||||
Es wird empfohlen, für die Bearbeitung eine saubere
|
||||
Ausgangsdatei zu verwenden. Dazu schalten Sie zunächst
|
||||
den Hotel-Modus AUS, daraufhin können Sie die
|
||||
Werkseinstellungen wiederherstellen und einen
|
||||
Sender-Blindsuchlauf ausführen. Anschließend aktivieren
|
||||
Sie bitte den den Hotel-Modus wieder und exportieren
|
||||
die Senderliste erneut auf einen USB-Stick.
|
||||
</value>
|
||||
</data>
|
||||
<data name="MainForm_btnResetChannelData_Click_Message" xml:space="preserve">
|
||||
<value>ACHTUNG: Alle analogen, DVB-C/T und DVB-S Sender- und Transponderdaten werden gelöscht.
|
||||
Nach dem Laden der Datei in den Fernseher ist ein vollständer Suchlauf notwendig.
|
||||
Wollen Sie fortsetzen?</value>
|
||||
</data>
|
||||
<data name="MainForm_btnResetChannelData_Click_Caption" xml:space="preserve">
|
||||
<value>Senderinformationen löschen</value>
|
||||
</data>
|
||||
<data name="MainForm_miRestoreOriginal_Message" xml:space="preserve">
|
||||
<value>Die .bak Datei konnte nicht nach {0} kopiert werden</value>
|
||||
</data>
|
||||
<data name="MainForm_miRestoreOriginal_ItemClick_NoBackup" xml:space="preserve">
|
||||
<value>Sicherheitskopie wurde nicht gefunden: {0}</value>
|
||||
</data>
|
||||
<data name="MainForm_miRestoreOriginal_ItemClick_Confirm" xml:space="preserve">
|
||||
<value>Sie sind dabei die Sicherheitskopie wiederherzustellen. Sämtliche Änderungen gehen verloren!
|
||||
Möchten Sie fortfahren?</value>
|
||||
</data>
|
||||
<data name="MainForm_ShowOpenReferenceFileDialog_Title" xml:space="preserve">
|
||||
<value>Referenzliste öffnen</value>
|
||||
</data>
|
||||
<data name="MainForm_ShowOpenReferenceFileDialog_Filter" xml:space="preserve">
|
||||
<value>ChanSort Referenzliste (*.csv)|*.csv|SamToolBox Referenzliste|*.chl|Alle Referenzlisten|*.csv;*.chl</value>
|
||||
</data>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="Donate" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\btn_donateCC_LG_de.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="MainForm_SaveFiles_ErrorTitle" xml:space="preserve">
|
||||
<value>Schreibfehler</value>
|
||||
</data>
|
||||
<data name="MainForm_SaveFiles_ErrorMsg" xml:space="preserve">
|
||||
<value>Beim Schreiben der Datei trat ein Fehler auf. Bitte stellen Sie sicher dass
|
||||
- Sie Schreibrechte auf die Datei besitzen
|
||||
- die Datei in keinem anderen Programm geöffnet ist
|
||||
|
||||
Die Fehlermeldung lautet:
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
229
ChanSort.Ui/Properties/Resources.resx
Normal file
229
ChanSort.Ui/Properties/Resources.resx
Normal file
@@ -0,0 +1,229 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="MainForm_LoadTll_SourceTllNotFound" xml:space="preserve">
|
||||
<value>Quell-TLL konnte nicht gefunden werden:
|
||||
'{0}'</value>
|
||||
</data>
|
||||
<data name="MainForm_LoadTll_Exception" xml:space="preserve">
|
||||
<value>An error occured while loading the TV's data file:
|
||||
{0}</value>
|
||||
</data>
|
||||
<data name="MainForm_FileDialog_OpenFileFilter" xml:space="preserve">
|
||||
<value>Supported Files|{0}|All Files (*.*)|*</value>
|
||||
</data>
|
||||
<data name="MainForm_FileDialog_SaveFileFilter" xml:space="preserve">
|
||||
<value>{0}-Files|*{0}|All Files (*.*)|*</value>
|
||||
</data>
|
||||
<data name="MainForm_TryExecute_Exception" xml:space="preserve">
|
||||
<value>An unexpected error occured:
|
||||
{0}</value>
|
||||
</data>
|
||||
<data name="MainForm_SaveTllFile_Exception" xml:space="preserve">
|
||||
<value>An error occured while writing the TV data file:
|
||||
{0}</value>
|
||||
</data>
|
||||
<data name="MainForm_SaveTllFile_Success" xml:space="preserve">
|
||||
<value>Sorted TV data file was created successfully.</value>
|
||||
</data>
|
||||
<data name="MainForm_PromptSaveAndContinue_Message" xml:space="preserve">
|
||||
<value>Do you want to save the changes?</value>
|
||||
</data>
|
||||
<data name="MainForm_PromptSaveAndContinue_Caption" xml:space="preserve">
|
||||
<value>Data modified</value>
|
||||
</data>
|
||||
<data name="MainForm_LoadTll_SerializerNotFound" xml:space="preserve">
|
||||
<value>No plugin found to read/write {0} files.</value>
|
||||
</data>
|
||||
<data name="MainForm_LoadFiles_IOException" xml:space="preserve">
|
||||
<value>Error loading file</value>
|
||||
</data>
|
||||
<data name="MainForm_LoadFiles_ValidationWarningMsg" xml:space="preserve">
|
||||
<value>The verification of the file content showed some anomalies. Possible causes are:
|
||||
- The TV itself created a mess in the channel lists (which happens frequently).
|
||||
- The file format is partially unknown (e.g. unknown TV model or firmware).
|
||||
- The file has been edited with a broken program version.
|
||||
- ChanSort's validation rules are based on wrong assumptions.
|
||||
You can continue editing, but it is possibile that your TV will reject the changes.</value>
|
||||
</data>
|
||||
<data name="MainForm_LoadFiles_ValidationWarningCap" xml:space="preserve">
|
||||
<value>Data validation</value>
|
||||
</data>
|
||||
<data name="MainForm_RestoreScanOrder_Message" xml:space="preserve">
|
||||
<value>All custom storing will be lost.
|
||||
Are you sure you want to restore the order from the channel scan?</value>
|
||||
</data>
|
||||
<data name="MainForm_RestoreScanOrder_Caption" xml:space="preserve">
|
||||
<value>Restore order from channel scan</value>
|
||||
</data>
|
||||
<data name="MainForm_LoadFiles_DupeWarningMsg" xml:space="preserve">
|
||||
<value>The input file contains multiple records that use the same
|
||||
program number. It is possible that the TV will not accept
|
||||
the changes made by ChanSort.
|
||||
This is typically caused by running a manual transponder scan.
|
||||
It is recommended to use a clean input file for any modifications.
|
||||
To do that, turn Hotel Mode OFF, reset the TV to
|
||||
factory defaults, run a new blind channel scan and turn
|
||||
Hotel Mode back ON, then export a new clean TLL file.
|
||||
</value>
|
||||
</data>
|
||||
<data name="MainForm_btnResetChannelData_Click_Message" xml:space="preserve">
|
||||
<value>WARNING: All analog, DVB-C/T and DVB-S channel and transponder data will be deleted.
|
||||
You will have to run a full channel scan after loading this file into your TV.
|
||||
Proceed?</value>
|
||||
</data>
|
||||
<data name="MainForm_btnResetChannelData_Click_Caption" xml:space="preserve">
|
||||
<value>Delete all channel data</value>
|
||||
</data>
|
||||
<data name="MainForm_miRestoreOriginal_Message" xml:space="preserve">
|
||||
<value>Unable to copy .bak file to {0}</value>
|
||||
</data>
|
||||
<data name="MainForm_miRestoreOriginal_ItemClick_NoBackup" xml:space="preserve">
|
||||
<value>No backup file found: {0}</value>
|
||||
</data>
|
||||
<data name="MainForm_miRestoreOriginal_ItemClick_Confirm" xml:space="preserve">
|
||||
<value>You are about to restore the backup file. All changes will be lost!
|
||||
Do you want to continue?</value>
|
||||
</data>
|
||||
<data name="MainForm_ShowOpenReferenceFileDialog_Title" xml:space="preserve">
|
||||
<value>Open Reference List</value>
|
||||
</data>
|
||||
<data name="MainForm_ShowOpenReferenceFileDialog_Filter" xml:space="preserve">
|
||||
<value>ChanSort Reference List|*.csv|SamToolBox Reference List|*.chl|All Reference Lists|*.csv;*.chl</value>
|
||||
</data>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="Donate" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\btn_donateCC_LG.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="paypal_button" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\paypal-button.txt;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
|
||||
</data>
|
||||
<data name="MainForm_SaveFiles_ErrorMsg" xml:space="preserve">
|
||||
<value>There was an error saving the file. Please make sure that
|
||||
- you have write permission on the file
|
||||
- the file is not open in another program
|
||||
|
||||
The error message is:
|
||||
</value>
|
||||
</data>
|
||||
<data name="MainForm_SaveFiles_ErrorTitle" xml:space="preserve">
|
||||
<value>File write error</value>
|
||||
</data>
|
||||
</root>
|
||||
266
ChanSort.Ui/Properties/Settings.Designer.cs
generated
Normal file
266
ChanSort.Ui/Properties/Settings.Designer.cs
generated
Normal file
@@ -0,0 +1,266 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.586
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace ChanSort.Ui.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default {
|
||||
get {
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string InputTLL {
|
||||
get {
|
||||
return ((string)(this["InputTLL"]));
|
||||
}
|
||||
set {
|
||||
this["InputTLL"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("0")]
|
||||
public int InputListRowHandle {
|
||||
get {
|
||||
return ((int)(this["InputListRowHandle"]));
|
||||
}
|
||||
set {
|
||||
this["InputListRowHandle"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("0")]
|
||||
public int OutputListRowHandle {
|
||||
get {
|
||||
return ((int)(this["OutputListRowHandle"]));
|
||||
}
|
||||
set {
|
||||
this["OutputListRowHandle"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string OutputListLayout {
|
||||
get {
|
||||
return ((string)(this["OutputListLayout"]));
|
||||
}
|
||||
set {
|
||||
this["OutputListLayout"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string InputFilterName {
|
||||
get {
|
||||
return ((string)(this["InputFilterName"]));
|
||||
}
|
||||
set {
|
||||
this["InputFilterName"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string InputFilterOldSlot {
|
||||
get {
|
||||
return ((string)(this["InputFilterOldSlot"]));
|
||||
}
|
||||
set {
|
||||
this["InputFilterOldSlot"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string InputFilterCrypt {
|
||||
get {
|
||||
return ((string)(this["InputFilterCrypt"]));
|
||||
}
|
||||
set {
|
||||
this["InputFilterCrypt"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string InputFilterNewSlot {
|
||||
get {
|
||||
return ((string)(this["InputFilterNewSlot"]));
|
||||
}
|
||||
set {
|
||||
this["InputFilterNewSlot"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string InputFilterChannel {
|
||||
get {
|
||||
return ((string)(this["InputFilterChannel"]));
|
||||
}
|
||||
set {
|
||||
this["InputFilterChannel"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string InputFilterUid {
|
||||
get {
|
||||
return ((string)(this["InputFilterUid"]));
|
||||
}
|
||||
set {
|
||||
this["InputFilterUid"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string OutputFilterName {
|
||||
get {
|
||||
return ((string)(this["OutputFilterName"]));
|
||||
}
|
||||
set {
|
||||
this["OutputFilterName"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string Language {
|
||||
get {
|
||||
return ((string)(this["Language"]));
|
||||
}
|
||||
set {
|
||||
this["Language"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string OutputFilterNewSlot {
|
||||
get {
|
||||
return ((string)(this["OutputFilterNewSlot"]));
|
||||
}
|
||||
set {
|
||||
this["OutputFilterNewSlot"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string Encoding {
|
||||
get {
|
||||
return ((string)(this["Encoding"]));
|
||||
}
|
||||
set {
|
||||
this["Encoding"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool HideLeftList {
|
||||
get {
|
||||
return ((bool)(this["HideLeftList"]));
|
||||
}
|
||||
set {
|
||||
this["HideLeftList"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("0, 0")]
|
||||
public global::System.Drawing.Size WindowSize {
|
||||
get {
|
||||
return ((global::System.Drawing.Size)(this["WindowSize"]));
|
||||
}
|
||||
set {
|
||||
this["WindowSize"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string InputGridLayoutAnalog {
|
||||
get {
|
||||
return ((string)(this["InputGridLayoutAnalog"]));
|
||||
}
|
||||
set {
|
||||
this["InputGridLayoutAnalog"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string InputGridLayoutDvbCT {
|
||||
get {
|
||||
return ((string)(this["InputGridLayoutDvbCT"]));
|
||||
}
|
||||
set {
|
||||
this["InputGridLayoutDvbCT"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string InputGridLayoutDvbS {
|
||||
get {
|
||||
return ((string)(this["InputGridLayoutDvbS"]));
|
||||
}
|
||||
set {
|
||||
this["InputGridLayoutDvbS"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("0")]
|
||||
public int LeftPanelWidth {
|
||||
get {
|
||||
return ((int)(this["LeftPanelWidth"]));
|
||||
}
|
||||
set {
|
||||
this["LeftPanelWidth"] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
66
ChanSort.Ui/Properties/Settings.settings
Normal file
66
ChanSort.Ui/Properties/Settings.settings
Normal file
@@ -0,0 +1,66 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="ChanSort.Ui.Properties" GeneratedClassName="Settings">
|
||||
<Profiles />
|
||||
<Settings>
|
||||
<Setting Name="InputTLL" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="InputListRowHandle" Type="System.Int32" Scope="User">
|
||||
<Value Profile="(Default)">0</Value>
|
||||
</Setting>
|
||||
<Setting Name="OutputListRowHandle" Type="System.Int32" Scope="User">
|
||||
<Value Profile="(Default)">0</Value>
|
||||
</Setting>
|
||||
<Setting Name="OutputListLayout" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="InputFilterName" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="InputFilterOldSlot" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="InputFilterCrypt" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="InputFilterNewSlot" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="InputFilterChannel" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="InputFilterUid" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="OutputFilterName" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="Language" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="OutputFilterNewSlot" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="Encoding" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="HideLeftList" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="WindowSize" Type="System.Drawing.Size" Scope="User">
|
||||
<Value Profile="(Default)">0, 0</Value>
|
||||
</Setting>
|
||||
<Setting Name="InputGridLayoutAnalog" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="InputGridLayoutDvbCT" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="InputGridLayoutDvbS" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="LeftPanelWidth" Type="System.Int32" Scope="User">
|
||||
<Value Profile="(Default)">0</Value>
|
||||
</Setting>
|
||||
</Settings>
|
||||
</SettingsFile>
|
||||
7
ChanSort.Ui/Properties/licenses.licx
Normal file
7
ChanSort.Ui/Properties/licenses.licx
Normal file
@@ -0,0 +1,7 @@
|
||||
DevExpress.XtraGrid.GridControl, 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
|
||||
DevExpress.XtraEditors.ButtonEdit, DevExpress.XtraEditors.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
|
||||
DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
DevExpress.XtraSplashScreen.SplashScreenManager, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
DevExpress.XtraBars.BarManager, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
BIN
ChanSort.Ui/Resources/Donate.bmp
Normal file
BIN
ChanSort.Ui/Resources/Donate.bmp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.3 KiB |
BIN
ChanSort.Ui/Resources/btn_donateCC_LG.gif
Normal file
BIN
ChanSort.Ui/Resources/btn_donateCC_LG.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.8 KiB |
BIN
ChanSort.Ui/Resources/btn_donateCC_LG_de.gif
Normal file
BIN
ChanSort.Ui/Resources/btn_donateCC_LG_de.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.3 KiB |
19
ChanSort.Ui/Resources/paypal-button.txt
Normal file
19
ChanSort.Ui/Resources/paypal-button.txt
Normal file
@@ -0,0 +1,19 @@
|
||||
<html>
|
||||
<body>
|
||||
<p style="font-family:Arial;font-size:12pt">PayPal donation page is being opened...</p>
|
||||
<p></p>
|
||||
<p style="font-family:Arial;font-size:12pt">PayPal Spendenseite wird geöffnet...</p>
|
||||
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
|
||||
<input type="hidden" name="cmd" value="_s-xclick">
|
||||
<input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----MIIHVwYJKoZIhvcNAQcEoIIHSDCCB0QCAQExggEwMIIBLAIBADCBlDCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20CAQAwDQYJKoZIhvcNAQEBBQAEgYB29ud0WRAkISd+eaatpTPZIDm+OSKMJPalTPRx13VaUQ/z9K7ycjOF8JShlbTCo/vNJkNbaPZfWY1OD+q9t1QHPdwTSOciExPawGcqgiqqhLBLaKlLdmNikJA6fUuObg3Bk4jYR8m0TthCwK7Tb2A7GfBPHxSGh3GhriGv/SoTJjELMAkGBSsOAwIaBQAwgdQGCSqGSIb3DQEHATAUBggqhkiG9w0DBwQIH0I94374C/qAgbBmDh4y8T56kdAu+uuRQdqYH9OQxu/Fj7UT/ntZSLP2KjkqoMtjDhiJ3VJ3clFIxpOgGUVegTZzxZH9VJs8hep08n+34WRmpzm9V7erbvS5V2WNLvCAu/PHij717tS3dkH7QLuNhn3X1CHEz2i//00OynPjelOkvFrGrXCFvBhIKLYFCexMO4EIWq7zcRbkNHF61ttbhZvcav4fJBvTc/LcZgL4julfQfgdUVyVqekag6CCA4cwggODMIIC7KADAgECAgEAMA0GCSqGSIb3DQEBBQUAMIGOMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC1BheVBhbCBJbmMuMRMwEQYDVQQLFApsaXZlX2NlcnRzMREwDwYDVQQDFAhsaXZlX2FwaTEcMBoGCSqGSIb3DQEJARYNcmVAcGF5cGFsLmNvbTAeFw0wNDAyMTMxMDEzMTVaFw0zNTAyMTMxMDEzMTVaMIGOMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC1BheVBhbCBJbmMuMRMwEQYDVQQLFApsaXZlX2NlcnRzMREwDwYDVQQDFAhsaXZlX2FwaTEcMBoGCSqGSIb3DQEJARYNcmVAcGF5cGFsLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwUdO3fxEzEtcnI7ZKZL412XvZPugoni7i7D7prCe0AtaHTc97CYgm7NsAtJyxNLixmhLV8pyIEaiHXWAh8fPKW+R017+EmXrr9EaquPmsVvTywAAE1PMNOKqo2kl4Gxiz9zZqIajOm1fZGWcGS0f5JQ2kBqNbvbg2/Za+GJ/qwUCAwEAAaOB7jCB6zAdBgNVHQ4EFgQUlp98u8ZvF71ZP1LXChvsENZklGswgbsGA1UdIwSBszCBsIAUlp98u8ZvF71ZP1LXChvsENZklGuhgZSkgZEwgY4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLUGF5UGFsIEluYy4xEzARBgNVBAsUCmxpdmVfY2VydHMxETAPBgNVBAMUCGxpdmVfYXBpMRwwGgYJKoZIhvcNAQkBFg1yZUBwYXlwYWwuY29tggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAgV86VpqAWuXvX6Oro4qJ1tYVIT5DgWpE692Ag422H7yRIr/9j/iKG4Thia/Oflx4TdL+IFJBAyPK9v6zZNZtBgPBynXb048hsP16l2vi0k5Q2JKiPDsEfBhGI+HnxLXEaUWAcVfCsQFvd2A1sxRr67ip5y2wwBelUecP3AjJ+YcxggGaMIIBlgIBATCBlDCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20CAQAwCQYFKw4DAhoFAKBdMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTEyMTIyODE5NTcyNVowIwYJKoZIhvcNAQkEMRYEFNxiS60sHIy0aM4C8sE2CPVtAGo4MA0GCSqGSIb3DQEBAQUABIGAiv/ZxTpzVVskQUfZQIrQ9td0k4vtAVcsvz7UMn2L9Veb0Io65t4amUU3BplRlnw7k+nALFZ9ILYxvzTJJj7HP6ZFBru9Be/+XObU/zm0dlcaTkzQP22ZgFLZZxK0KVuAz8agShap2fVoLG6JII0q7ggDYHfILUrd4H9i2FWWdMQ=-----END PKCS7-----
|
||||
">
|
||||
<input type="image" src="https://www.paypalobjects.com/de_DE/i/scr/pixel.gif" border="0" name="submit" alt="">
|
||||
<img alt="" border="0" src="https://www.paypalobjects.com/de_DE/i/scr/pixel.gif" width="1" height="1">
|
||||
</form>
|
||||
<script type="text/javascript">
|
||||
<!--//
|
||||
document.forms[0].submit();
|
||||
//-->
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
28
ChanSort.Ui/Settings.cs
Normal file
28
ChanSort.Ui/Settings.cs
Normal file
@@ -0,0 +1,28 @@
|
||||
namespace ChanSort.Ui.Properties {
|
||||
|
||||
|
||||
// This class allows you to handle specific events on the settings class:
|
||||
// The SettingChanging event is raised before a setting's value is changed.
|
||||
// The PropertyChanged event is raised after a setting's value is changed.
|
||||
// The SettingsLoaded event is raised after the setting values are loaded.
|
||||
// The SettingsSaving event is raised before the setting values are saved.
|
||||
internal sealed partial class Settings {
|
||||
|
||||
public Settings() {
|
||||
// // To add event handlers for saving and changing settings, uncomment the lines below:
|
||||
//
|
||||
// this.SettingChanging += this.SettingChangingEventHandler;
|
||||
//
|
||||
// this.SettingsSaving += this.SettingsSavingEventHandler;
|
||||
//
|
||||
}
|
||||
|
||||
private void SettingChangingEventHandler(object sender, System.Configuration.SettingChangingEventArgs e) {
|
||||
// Add code to handle the SettingChangingEvent event here.
|
||||
}
|
||||
|
||||
private void SettingsSavingEventHandler(object sender, System.ComponentModel.CancelEventArgs e) {
|
||||
// Add code to handle the SettingsSaving event here.
|
||||
}
|
||||
}
|
||||
}
|
||||
80
ChanSort.Ui/WaitForm1.Designer.cs
generated
Normal file
80
ChanSort.Ui/WaitForm1.Designer.cs
generated
Normal file
@@ -0,0 +1,80 @@
|
||||
namespace ChanSort.Ui
|
||||
{
|
||||
partial class WaitForm1
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(WaitForm1));
|
||||
this.progressPanel1 = new DevExpress.XtraWaitForm.ProgressPanel();
|
||||
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.tableLayoutPanel1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// progressPanel1
|
||||
//
|
||||
resources.ApplyResources(this.progressPanel1, "progressPanel1");
|
||||
this.progressPanel1.Appearance.BackColor = ((System.Drawing.Color)(resources.GetObject("progressPanel1.Appearance.BackColor")));
|
||||
this.progressPanel1.Appearance.GradientMode = ((System.Drawing.Drawing2D.LinearGradientMode)(resources.GetObject("progressPanel1.Appearance.GradientMode")));
|
||||
this.progressPanel1.Appearance.Image = ((System.Drawing.Image)(resources.GetObject("progressPanel1.Appearance.Image")));
|
||||
this.progressPanel1.Appearance.Options.UseBackColor = true;
|
||||
this.progressPanel1.AppearanceCaption.Font = ((System.Drawing.Font)(resources.GetObject("resource.Font")));
|
||||
this.progressPanel1.AppearanceCaption.GradientMode = ((System.Drawing.Drawing2D.LinearGradientMode)(resources.GetObject("resource.GradientMode")));
|
||||
this.progressPanel1.AppearanceCaption.Image = ((System.Drawing.Image)(resources.GetObject("resource.Image")));
|
||||
this.progressPanel1.AppearanceCaption.Options.UseFont = true;
|
||||
this.progressPanel1.AppearanceDescription.Font = ((System.Drawing.Font)(resources.GetObject("resource.Font1")));
|
||||
this.progressPanel1.AppearanceDescription.GradientMode = ((System.Drawing.Drawing2D.LinearGradientMode)(resources.GetObject("resource.GradientMode1")));
|
||||
this.progressPanel1.AppearanceDescription.Image = ((System.Drawing.Image)(resources.GetObject("resource.Image1")));
|
||||
this.progressPanel1.AppearanceDescription.Options.UseFont = true;
|
||||
this.progressPanel1.ImageHorzOffset = 20;
|
||||
this.progressPanel1.Name = "progressPanel1";
|
||||
//
|
||||
// tableLayoutPanel1
|
||||
//
|
||||
resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1");
|
||||
this.tableLayoutPanel1.BackColor = System.Drawing.Color.Transparent;
|
||||
this.tableLayoutPanel1.Controls.Add(this.progressPanel1, 0, 0);
|
||||
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
|
||||
//
|
||||
// WaitForm1
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.tableLayoutPanel1);
|
||||
this.DoubleBuffered = true;
|
||||
this.Name = "WaitForm1";
|
||||
this.tableLayoutPanel1.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private DevExpress.XtraWaitForm.ProgressPanel progressPanel1;
|
||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
|
||||
}
|
||||
}
|
||||
37
ChanSort.Ui/WaitForm1.cs
Normal file
37
ChanSort.Ui/WaitForm1.cs
Normal file
@@ -0,0 +1,37 @@
|
||||
using System;
|
||||
using DevExpress.XtraWaitForm;
|
||||
|
||||
namespace ChanSort.Ui
|
||||
{
|
||||
public partial class WaitForm1 : WaitForm
|
||||
{
|
||||
public WaitForm1()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.progressPanel1.AutoHeight = true;
|
||||
}
|
||||
|
||||
#region Overrides
|
||||
|
||||
public override void SetCaption(string caption)
|
||||
{
|
||||
base.SetCaption(caption);
|
||||
this.progressPanel1.Caption = caption;
|
||||
}
|
||||
public override void SetDescription(string description)
|
||||
{
|
||||
base.SetDescription(description);
|
||||
this.progressPanel1.Description = description;
|
||||
}
|
||||
public override void ProcessCommand(Enum cmd, object arg)
|
||||
{
|
||||
base.ProcessCommand(cmd, arg);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
public enum WaitFormCommand
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
126
ChanSort.Ui/WaitForm1.de.resx
Normal file
126
ChanSort.Ui/WaitForm1.de.resx
Normal file
@@ -0,0 +1,126 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="progressPanel1.Caption" xml:space="preserve">
|
||||
<value>Bitte um Geduld</value>
|
||||
</data>
|
||||
<data name="progressPanel1.Description" xml:space="preserve">
|
||||
<value>TV Senderliste wird gespeichert...</value>
|
||||
</data>
|
||||
</root>
|
||||
256
ChanSort.Ui/WaitForm1.resx
Normal file
256
ChanSort.Ui/WaitForm1.resx
Normal file
@@ -0,0 +1,256 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="tableLayoutPanel1.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="progressPanel1.Description" xml:space="preserve">
|
||||
<value>Generating TV data file...</value>
|
||||
</data>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="$this.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
|
||||
<value>GrowAndShrink</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||
<value>6, 13</value>
|
||||
</data>
|
||||
<data name="resource.Font" type="System.Drawing.Font, System.Drawing">
|
||||
<value>Microsoft Sans Serif, 12pt</value>
|
||||
</data>
|
||||
<data name="$this.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="progressPanel1.Text" xml:space="preserve">
|
||||
<value>progressPanel1</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel1.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
||||
<value>0, 14, 0, 14</value>
|
||||
</data>
|
||||
<data name=">>$this.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraWaitForm.WaitForm, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>WaitForm1</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="progressPanel1.Appearance.Image" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="progressPanel1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
||||
<value>0, 3, 0, 3</value>
|
||||
</data>
|
||||
<data name="resource.Image" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="$this.MinimumSize" type="System.Drawing.Size, System.Drawing">
|
||||
<value>246, 0</value>
|
||||
</data>
|
||||
<data name="progressPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Fill</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="progressPanel1.Appearance.BackColor" type="System.Drawing.Color, System.Drawing">
|
||||
<value>Transparent</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
|
||||
<value><?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="progressPanel1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Absolute,246" /><Rows Styles="Percent,100" /></TableLayoutSettings></value>
|
||||
</data>
|
||||
<data name=">>tableLayoutPanel1.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||
<value>246, 73</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Fill</value>
|
||||
</data>
|
||||
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
|
||||
<value>Manual</value>
|
||||
</data>
|
||||
<data name="progressPanel1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 17</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 0</value>
|
||||
</data>
|
||||
<data name=">>progressPanel1.Parent" xml:space="preserve">
|
||||
<value>tableLayoutPanel1</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel1.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
|
||||
<value>GrowAndShrink</value>
|
||||
</data>
|
||||
<data name=">>progressPanel1.Name" xml:space="preserve">
|
||||
<value>progressPanel1</value>
|
||||
</data>
|
||||
<data name="progressPanel1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="resource.Image1" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name=">>progressPanel1.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>246, 73</value>
|
||||
</data>
|
||||
<data name="progressPanel1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>246, 39</value>
|
||||
</data>
|
||||
<data name=">>tableLayoutPanel1.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="resource.GradientMode1" type="System.Drawing.Drawing2D.LinearGradientMode, System.Drawing">
|
||||
<value>Horizontal</value>
|
||||
</data>
|
||||
<data name=">>progressPanel1.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraWaitForm.ProgressPanel, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name="progressPanel1.Appearance.GradientMode" type="System.Drawing.Drawing2D.LinearGradientMode, System.Drawing">
|
||||
<value>Horizontal</value>
|
||||
</data>
|
||||
<data name="resource.Font1" type="System.Drawing.Font, System.Drawing">
|
||||
<value>Microsoft Sans Serif, 8.25pt</value>
|
||||
</data>
|
||||
<data name=">>tableLayoutPanel1.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="$this.Text" xml:space="preserve">
|
||||
<value>Form1</value>
|
||||
</data>
|
||||
<data name="resource.GradientMode" type="System.Drawing.Drawing2D.LinearGradientMode, System.Drawing">
|
||||
<value>Horizontal</value>
|
||||
</data>
|
||||
<data name=">>tableLayoutPanel1.Name" xml:space="preserve">
|
||||
<value>tableLayoutPanel1</value>
|
||||
</data>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
</root>
|
||||
114
ChanSort.Ui/app.config
Normal file
114
ChanSort.Ui/app.config
Normal file
@@ -0,0 +1,114 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<configSections>
|
||||
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
|
||||
<section name="ChanSort.Ui.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
|
||||
<section name="GUI.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
|
||||
</sectionGroup>
|
||||
</configSections>
|
||||
<startup><supportedRuntime version="v2.0.50727" sku="Client"/></startup><userSettings>
|
||||
<ChanSort.Ui.Properties.Settings>
|
||||
<setting name="InputTLL" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="InputListRowHandle" serializeAs="String">
|
||||
<value>0</value>
|
||||
</setting>
|
||||
<setting name="OutputListRowHandle" serializeAs="String">
|
||||
<value>0</value>
|
||||
</setting>
|
||||
<setting name="OutputListLayout" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="InputFilterName" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="InputFilterOldSlot" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="InputFilterCrypt" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="InputFilterNewSlot" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="InputFilterChannel" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="InputFilterUid" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="OutputFilterName" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="Language" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="OutputFilterNewSlot" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="Encoding" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="HideLeftList" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="WindowSize" serializeAs="String">
|
||||
<value>0, 0</value>
|
||||
</setting>
|
||||
<setting name="InputGridLayoutAnalog" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="InputGridLayoutDvbCT" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="InputGridLayoutDvbS" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="LeftPanelWidth" serializeAs="String">
|
||||
<value>0</value>
|
||||
</setting>
|
||||
</ChanSort.Ui.Properties.Settings>
|
||||
<GUI.Properties.Settings>
|
||||
<setting name="InputTLL" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="OutputTLL" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="InputListRowHandle" serializeAs="String">
|
||||
<value>0</value>
|
||||
</setting>
|
||||
<setting name="OutputListRowHandle" serializeAs="String">
|
||||
<value>0</value>
|
||||
</setting>
|
||||
<setting name="InputListLayout" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="OutputListLayout" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="InputFilterName" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="InputFilterOldSlot" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="InputFilterCrypt" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="InputFilterNewSlot" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="InputFilterChannel" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="InputFilterUid" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="OutputFilterName" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
</GUI.Properties.Settings>
|
||||
</userSettings>
|
||||
</configuration>
|
||||
BIN
ChanSort.Ui/app.ico
Normal file
BIN
ChanSort.Ui/app.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 97 KiB |
BIN
ChanSort.Ui/icons/flag_austria.png
Normal file
BIN
ChanSort.Ui/icons/flag_austria.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 541 B |
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user