mirror of
https://github.com/PredatH0r/ChanSort.git
synced 2026-07-10 17:51:45 +02:00
initial support for .m3u Lists (for SAT>IP)
This commit is contained in:
79
source/ChanSort.Loader.M3u/ChanSort.Loader.M3u.csproj
Normal file
79
source/ChanSort.Loader.M3u/ChanSort.Loader.M3u.csproj
Normal file
@@ -0,0 +1,79 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{484028B6-3AAE-4F7E-A88A-76BEEB70203B}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>ChanSort.Loader.M3u</RootNamespace>
|
||||
<AssemblyName>ChanSort.Loader.M3u</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<Deterministic>true</Deterministic>
|
||||
</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>
|
||||
<LangVersion>latest</LangVersion>
|
||||
</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>
|
||||
<LangVersion>latest</LangVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>bin\x86\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<LangVersion>latest</LangVersion>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
|
||||
<OutputPath>bin\x86\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<LangVersion>latest</LangVersion>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Web" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Channel.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Serializer.cs" />
|
||||
<Compile Include="SerializerPlugin.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\ChanSort.Api\ChanSort.Api.csproj">
|
||||
<Project>{dccffa08-472b-4d17-bb90-8f513fc01392}</Project>
|
||||
<Name>ChanSort.Api</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
14
source/ChanSort.Loader.M3u/Channel.cs
Normal file
14
source/ChanSort.Loader.M3u/Channel.cs
Normal file
@@ -0,0 +1,14 @@
|
||||
using ChanSort.Api;
|
||||
|
||||
namespace ChanSort.Loader.M3u
|
||||
{
|
||||
internal class Channel : ChannelInfo
|
||||
{
|
||||
public string Uri { get; }
|
||||
|
||||
public Channel(int index, int progNr, string name, string uri) : base(SignalSource.IP, index, progNr, name)
|
||||
{
|
||||
this.Uri = uri;
|
||||
}
|
||||
}
|
||||
}
|
||||
36
source/ChanSort.Loader.M3u/Properties/AssemblyInfo.cs
Normal file
36
source/ChanSort.Loader.M3u/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.Loader.M3u")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("ChanSort.Loader.M3u")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2020")]
|
||||
[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("484028b6-3aae-4f7e-a88a-76beeb70203b")]
|
||||
|
||||
// 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")]
|
||||
161
source/ChanSort.Loader.M3u/Serializer.cs
Normal file
161
source/ChanSort.Loader.M3u/Serializer.cs
Normal file
@@ -0,0 +1,161 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Web;
|
||||
using ChanSort.Api;
|
||||
|
||||
namespace ChanSort.Loader.M3u
|
||||
{
|
||||
class Serializer : SerializerBase
|
||||
{
|
||||
private readonly ChannelList allChannels = new ChannelList(SignalSource.IP, "All");
|
||||
|
||||
private List<string> lines = new List<string>();
|
||||
|
||||
#region ctor()
|
||||
public Serializer(string inputFile) : base(inputFile)
|
||||
{
|
||||
this.Features.ChannelNameEdit = ChannelNameEditMode.All;
|
||||
this.Features.DeleteMode = DeleteMode.Physically;
|
||||
this.Features.SortedFavorites = false;
|
||||
this.Features.SupportedFavorites = 0;
|
||||
this.Features.CanLockChannels = false;
|
||||
this.Features.CanSkipChannels = false;
|
||||
this.Features.CanHideChannels = false;
|
||||
|
||||
this.DataRoot.AddChannelList(this.allChannels);
|
||||
|
||||
base.DefaultEncoding = new UTF8Encoding(false);
|
||||
this.allChannels.VisibleColumnFieldNames = new List<string>()
|
||||
{
|
||||
"OldPosition", "Position", "Name", "FreqInMhz", "Polarity", "SymbolRate", "VideoPid", "AudioPid", "Satellite"
|
||||
};
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Load()
|
||||
public override void Load()
|
||||
{
|
||||
var rdr = new StreamReader(this.FileName);
|
||||
var header = rdr.ReadLine()?.TrimEnd();
|
||||
if (header != "#EXTM3U")
|
||||
throw new FileLoadException("Unsupported .m3u file: " + this.FileName);
|
||||
|
||||
int lineNr=0;
|
||||
string line1, line2;
|
||||
while ((line1 = rdr.ReadLine()) != null)
|
||||
{
|
||||
++lineNr;
|
||||
if (line1.Trim() == "")
|
||||
continue;
|
||||
|
||||
var lineNr1 = lineNr;
|
||||
while ((line2 = rdr.ReadLine()) != null)
|
||||
{
|
||||
++lineNr;
|
||||
if (line2.Trim() != "")
|
||||
{
|
||||
ReadChannel(lineNr1, line1, line2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ReadChannel()
|
||||
private static readonly Regex ExtInfRegex = new Regex(@"^#EXTINF:\d+,(?:(\d+)\. )?(.*)$");
|
||||
private void ReadChannel(int lineNr, string line1, string line2)
|
||||
{
|
||||
var match = ExtInfRegex.Match(line1);
|
||||
if (!match.Success)
|
||||
throw new FileLoadException($"Unsupported #EXTINF line #{lineNr}: {line1}");
|
||||
|
||||
int progNr = string.IsNullOrEmpty(match.Groups[2].Value)
|
||||
? this.allChannels.Count + 1
|
||||
: this.ParseInt(match.Groups[1].Value);
|
||||
|
||||
Uri uri;
|
||||
try
|
||||
{
|
||||
uri = new Uri(line2);
|
||||
}
|
||||
catch
|
||||
{
|
||||
throw new FileLoadException($"Unsupported URI in line #{lineNr}: {line2}");
|
||||
}
|
||||
|
||||
var chan = new Channel(lineNr, progNr, match.Groups[2].Value, line2);
|
||||
chan.Satellite = uri.GetLeftPart(UriPartial.Path);
|
||||
var parms = HttpUtility.ParseQueryString(uri.Query);
|
||||
foreach (var key in parms.AllKeys)
|
||||
{
|
||||
var val = parms.Get(key);
|
||||
switch (key)
|
||||
{
|
||||
case "freq":
|
||||
chan.FreqInMhz = this.ParseInt(val);
|
||||
break;
|
||||
case "pol":
|
||||
if (val.Length == 1)
|
||||
chan.Polarity = Char.ToUpper(val[0]);
|
||||
break;
|
||||
case "sr":
|
||||
chan.SymbolRate = this.ParseInt(val);
|
||||
break;
|
||||
case "pids":
|
||||
var pids = val.Split(',');
|
||||
//if (pids.Length > 3)
|
||||
// chan.PcrPid = this.ParseInt(pids[3]);
|
||||
if (pids.Length > 4)
|
||||
chan.VideoPid = this.ParseInt(pids[4]);
|
||||
if (pids.Length > 5)
|
||||
chan.AudioPid = this.ParseInt(pids[5]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
this.DataRoot.AddChannel(this.allChannels, chan);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region DefaultEncoding
|
||||
public override Encoding DefaultEncoding
|
||||
{
|
||||
get => base.DefaultEncoding; // set to UTF-8 without BOM in constructor
|
||||
set { } // can't be changed
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
#region Save()
|
||||
public override void Save(string tvOutputFile)
|
||||
{
|
||||
using var file = new StreamWriter(new FileStream(tvOutputFile, FileMode.Create), this.DefaultEncoding);
|
||||
file.WriteLine("#EXTM3U");
|
||||
foreach (ChannelInfo channel in this.allChannels.GetChannelsByNewOrder())
|
||||
{
|
||||
// when a reference list was applied, the list may contain proxy entries for deleted channels, which must be ignored
|
||||
if (channel is Channel chan && !channel.IsDeleted)
|
||||
{
|
||||
file.WriteLine($"#EXTINF:0,{chan.NewProgramNr}. {chan.Name}");
|
||||
file.WriteLine(chan.Uri);
|
||||
}
|
||||
}
|
||||
|
||||
this.FileName = tvOutputFile;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region GetFileInformation()
|
||||
public override string GetFileInformation()
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.Append(base.GetFileInformation());
|
||||
return sb.ToString();
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
16
source/ChanSort.Loader.M3u/SerializerPlugin.cs
Normal file
16
source/ChanSort.Loader.M3u/SerializerPlugin.cs
Normal file
@@ -0,0 +1,16 @@
|
||||
using ChanSort.Api;
|
||||
|
||||
namespace ChanSort.Loader.M3u
|
||||
{
|
||||
public class SerializerPlugin : ISerializerPlugin
|
||||
{
|
||||
public string DllName { get; set; }
|
||||
public string PluginName => "m3u (WinAmp, VLC, SAT>IP, ...)";
|
||||
public string FileFilter => "*.m3u";
|
||||
|
||||
public SerializerBase CreateSerializer(string inputFile)
|
||||
{
|
||||
return new Serializer(inputFile);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -74,6 +74,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test.Loader.Toshiba", "Test
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test.Loader.VDR", "Test.Loader.VDR\Test.Loader.VDR.csproj", "{AED060F0-495C-494C-89C2-7A96A0FA3762}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ChanSort.Loader.M3u", "ChanSort.Loader.M3u\ChanSort.Loader.M3u.csproj", "{484028B6-3AAE-4F7E-A88A-76BEEB70203B}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
@@ -408,6 +410,18 @@ Global
|
||||
{AED060F0-495C-494C-89C2-7A96A0FA3762}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{AED060F0-495C-494C-89C2-7A96A0FA3762}.Release|x86.ActiveCfg = Release|x86
|
||||
{AED060F0-495C-494C-89C2-7A96A0FA3762}.Release|x86.Build.0 = Release|x86
|
||||
{484028B6-3AAE-4F7E-A88A-76BEEB70203B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{484028B6-3AAE-4F7E-A88A-76BEEB70203B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{484028B6-3AAE-4F7E-A88A-76BEEB70203B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{484028B6-3AAE-4F7E-A88A-76BEEB70203B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{484028B6-3AAE-4F7E-A88A-76BEEB70203B}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{484028B6-3AAE-4F7E-A88A-76BEEB70203B}.Debug|x86.Build.0 = Debug|x86
|
||||
{484028B6-3AAE-4F7E-A88A-76BEEB70203B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{484028B6-3AAE-4F7E-A88A-76BEEB70203B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{484028B6-3AAE-4F7E-A88A-76BEEB70203B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{484028B6-3AAE-4F7E-A88A-76BEEB70203B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{484028B6-3AAE-4F7E-A88A-76BEEB70203B}.Release|x86.ActiveCfg = Release|x86
|
||||
{484028B6-3AAE-4F7E-A88A-76BEEB70203B}.Release|x86.Build.0 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
||||
@@ -404,6 +404,10 @@
|
||||
<Project>{e972d8a1-2f5f-421c-ac91-cff45e5191be}</Project>
|
||||
<Name>ChanSort.Loader.LG</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\ChanSort.Loader.M3u\ChanSort.Loader.M3u.csproj">
|
||||
<Project>{484028b6-3aae-4f7e-a88a-76beeb70203b}</Project>
|
||||
<Name>ChanSort.Loader.M3u</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\ChanSort.Loader.Panasonic\ChanSort.Loader.Panasonic.csproj">
|
||||
<Project>{68da8072-3a29-4076-9f64-d66f38349585}</Project>
|
||||
<Name>ChanSort.Loader.Panasonic</Name>
|
||||
|
||||
@@ -1512,7 +1512,7 @@ namespace ChanSort.Ui
|
||||
if (col == this.colDebug) return col.Visible;
|
||||
if (col == this.colSignalSource) return col.Visible;
|
||||
if (col == this.colLogicalIndex) return col.Visible;
|
||||
if (col == this.colPolarity) return (source & SignalSource.Sat) != 0;
|
||||
if (col == this.colPolarity) return (source & SignalSource.Sat) != 0 || (source & SignalSource.IP) != 0;
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -1618,7 +1618,7 @@ namespace ChanSort.Ui
|
||||
this.btnToggleFavF.Enabled = mayEdit && (this.DataRoot.SupportedFavorites & Favorites.F) != 0 && this.subListIndex != 6;
|
||||
this.btnToggleFavG.Enabled = mayEdit && (this.DataRoot.SupportedFavorites & Favorites.G) != 0 && this.subListIndex != 7;
|
||||
this.btnToggleFavH.Enabled = mayEdit && (this.DataRoot.SupportedFavorites & Favorites.H) != 0 && this.subListIndex != 8;
|
||||
this.btnToggleLock.Enabled = mayEdit;
|
||||
this.btnToggleLock.Enabled = mayEdit && this.DataRoot.CanLock;
|
||||
|
||||
if (afterFileLoad)
|
||||
{
|
||||
|
||||
@@ -270,7 +270,7 @@
|
||||
<value>Numeric</value>
|
||||
</data>
|
||||
<data name="gridLeft.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>499, 374</value>
|
||||
<value>499, 368</value>
|
||||
</data>
|
||||
<data name="gridLeft.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
@@ -291,7 +291,7 @@
|
||||
<value>Bottom</value>
|
||||
</data>
|
||||
<data name="lblHotkeyLeft.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>2, 428</value>
|
||||
<value>2, 422</value>
|
||||
</data>
|
||||
<data name="lblHotkeyLeft.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
||||
<value>2, 2, 2, 2</value>
|
||||
@@ -330,7 +330,7 @@
|
||||
<value>6, 13</value>
|
||||
</data>
|
||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||
<value>1416, 557</value>
|
||||
<value>1402, 551</value>
|
||||
</data>
|
||||
<data name="tabSubList.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left, Right</value>
|
||||
@@ -339,7 +339,7 @@
|
||||
<value>0, 5</value>
|
||||
</data>
|
||||
<data name="pageProgNr.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>1405, 0</value>
|
||||
<value>1391, 0</value>
|
||||
</data>
|
||||
<data name="pageProgNr.Text" xml:space="preserve">
|
||||
<value>Pr#</value>
|
||||
@@ -357,7 +357,7 @@
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="tabSubList.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>1411, 22</value>
|
||||
<value>1397, 22</value>
|
||||
</data>
|
||||
<data name="tabSubList.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>6</value>
|
||||
@@ -381,7 +381,7 @@
|
||||
<value>0, 83</value>
|
||||
</data>
|
||||
<data name="grpSubList.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>1416, 27</value>
|
||||
<value>1402, 27</value>
|
||||
</data>
|
||||
<data name="grpSubList.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>10</value>
|
||||
@@ -795,7 +795,7 @@
|
||||
<value>0, 0</value>
|
||||
</data>
|
||||
<data name="barDockControlTop.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>1416, 26</value>
|
||||
<value>1402, 26</value>
|
||||
</data>
|
||||
<data name=">>barDockControlTop.Name" xml:space="preserve">
|
||||
<value>barDockControlTop</value>
|
||||
@@ -813,10 +813,10 @@
|
||||
<value>Bottom</value>
|
||||
</data>
|
||||
<data name="barDockControlBottom.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 557</value>
|
||||
<value>0, 551</value>
|
||||
</data>
|
||||
<data name="barDockControlBottom.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>1416, 0</value>
|
||||
<value>1402, 0</value>
|
||||
</data>
|
||||
<data name=">>barDockControlBottom.Name" xml:space="preserve">
|
||||
<value>barDockControlBottom</value>
|
||||
@@ -837,7 +837,7 @@
|
||||
<value>0, 26</value>
|
||||
</data>
|
||||
<data name="barDockControlLeft.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>0, 531</value>
|
||||
<value>0, 525</value>
|
||||
</data>
|
||||
<data name=">>barDockControlLeft.Name" xml:space="preserve">
|
||||
<value>barDockControlLeft</value>
|
||||
@@ -855,10 +855,10 @@
|
||||
<value>Right</value>
|
||||
</data>
|
||||
<data name="barDockControlRight.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>1416, 26</value>
|
||||
<value>1402, 26</value>
|
||||
</data>
|
||||
<data name="barDockControlRight.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>0, 531</value>
|
||||
<value>0, 525</value>
|
||||
</data>
|
||||
<data name=">>barDockControlRight.Name" xml:space="preserve">
|
||||
<value>barDockControlRight</value>
|
||||
@@ -1018,7 +1018,7 @@
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="picDonate.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>1238, 4</value>
|
||||
<value>1224, 4</value>
|
||||
</data>
|
||||
<data name="picDonate.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>166, 54</value>
|
||||
@@ -1045,7 +1045,7 @@
|
||||
<value>0, 33</value>
|
||||
</data>
|
||||
<data name="pageEmpty.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>1226, 0</value>
|
||||
<value>1212, 0</value>
|
||||
</data>
|
||||
<data name="pageEmpty.Text" xml:space="preserve">
|
||||
<value>No channel lists</value>
|
||||
@@ -1063,7 +1063,7 @@
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="tabChannelList.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>1232, 22</value>
|
||||
<value>1218, 22</value>
|
||||
</data>
|
||||
<data name="tabChannelList.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>5</value>
|
||||
@@ -1147,7 +1147,7 @@
|
||||
<value>0, 26</value>
|
||||
</data>
|
||||
<data name="grpTopPanel.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>1416, 57</value>
|
||||
<value>1402, 57</value>
|
||||
</data>
|
||||
<data name="grpTopPanel.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
@@ -1264,7 +1264,7 @@
|
||||
<value>globalImageCollection1</value>
|
||||
</data>
|
||||
<data name=">>globalImageCollection1.Type" xml:space="preserve">
|
||||
<value>ChanSort.Ui.GlobalImageCollection, ChanSort, Version=1.0.7305.24811, Culture=neutral, PublicKeyToken=null</value>
|
||||
<value>ChanSort.Ui.GlobalImageCollection, ChanSort, Version=1.0.7305.33710, Culture=neutral, PublicKeyToken=null</value>
|
||||
</data>
|
||||
<data name=">>gviewRight.Name" xml:space="preserve">
|
||||
<value>gviewRight</value>
|
||||
@@ -1374,6 +1374,12 @@
|
||||
<data name=">>colFreqInMhz.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>colPolarity.Name" xml:space="preserve">
|
||||
<value>colPolarity</value>
|
||||
</data>
|
||||
<data name=">>colPolarity.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>colChannelOrTransponder.Name" xml:space="preserve">
|
||||
<value>colChannelOrTransponder</value>
|
||||
</data>
|
||||
@@ -1428,12 +1434,6 @@
|
||||
<data name=">>colSymbolRate.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>colPolarity.Name" xml:space="preserve">
|
||||
<value>colPolarity</value>
|
||||
</data>
|
||||
<data name=">>colPolarity.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v19.2, Version=19.2.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>colNetworkName.Name" xml:space="preserve">
|
||||
<value>colNetworkName</value>
|
||||
</data>
|
||||
@@ -1957,7 +1957,7 @@
|
||||
<value>DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v19.2, Version=19.2.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name="SharedImageCollection.Timestamp" type="System.DateTime, mscorlib">
|
||||
<value>01/01/2020 13:48:29</value>
|
||||
<value>01/01/2020 18:44:40</value>
|
||||
</data>
|
||||
<data name="SharedImageCollection.ImageSize" type="System.Drawing.Size, System.Drawing">
|
||||
<value>16, 16</value>
|
||||
@@ -2392,7 +2392,7 @@
|
||||
<value>0, 0</value>
|
||||
</data>
|
||||
<data name="grpOutputList.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>503, 447</value>
|
||||
<value>503, 441</value>
|
||||
</data>
|
||||
<data name="grpOutputList.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
@@ -2773,7 +2773,7 @@
|
||||
<value>Signal source</value>
|
||||
</data>
|
||||
<data name="gridRight.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>903, 374</value>
|
||||
<value>889, 368</value>
|
||||
</data>
|
||||
<data name="gridRight.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
@@ -2794,7 +2794,7 @@
|
||||
<value>Bottom</value>
|
||||
</data>
|
||||
<data name="lblHotkeyRight.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>2, 428</value>
|
||||
<value>2, 422</value>
|
||||
</data>
|
||||
<data name="lblHotkeyRight.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
||||
<value>2, 2, 2, 2</value>
|
||||
@@ -2986,7 +2986,7 @@
|
||||
<value>2, 21</value>
|
||||
</data>
|
||||
<data name="panelControl3.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>903, 33</value>
|
||||
<value>889, 33</value>
|
||||
</data>
|
||||
<data name="panelControl3.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
@@ -3010,7 +3010,7 @@
|
||||
<value>0, 0</value>
|
||||
</data>
|
||||
<data name="grpInputList.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>907, 447</value>
|
||||
<value>893, 441</value>
|
||||
</data>
|
||||
<data name="grpInputList.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
@@ -3034,7 +3034,7 @@
|
||||
<value>Panel2</value>
|
||||
</data>
|
||||
<data name="splitContainerControl1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>1416, 447</value>
|
||||
<value>1402, 441</value>
|
||||
</data>
|
||||
<data name="splitContainerControl1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>5</value>
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
ChanSort Change Log
|
||||
===================
|
||||
|
||||
2020-01-02
|
||||
- added support for m3u lists (SAT>IP, VLC, WinAmp, ...)
|
||||
- disabled "Lock" toggle button when the list does not support parental locks
|
||||
|
||||
2020-01-01
|
||||
- fixed loading of Samsung .scm files (Samsung.ini file was missing in the release package)
|
||||
- added "polarity" information for Samsung .scm and .zip files
|
||||
|
||||
Reference in New Issue
Block a user