- added UTF-16 Big Endian and Little Endian options to character set menu

- Samsung .zip loader: auto-detect UTF-16 endianness and allow to change encoding after loading to UTF-16 LE/BE
  (some files use Little Endian format and show chinese characters when loaded with the default Big Endian format)
- Customized column order is now preserved across file formats and input sources

- Note about LG WebOS 5 files (e.g. CX series):
  It is still unclear what exact firmware version and conditions are needed to properly import a channel list.
  Users reported about varying success of an import, reaching from not possible at all, only after a factory reset,
  importing the same list twice or working just fine.
  The problems is not related to ChanSort, as it can be reproduced by exporting a list to USB, swapping channels
  in the TV's menu and trying to loading the previously exported list back. The TV may keep the swapped channels and
  show inconsistencies between the channel list in the settings menu and the EPG.

- upgrade to DevExpress 20.1.4
This commit is contained in:
Horst Beham
2020-07-12 02:39:43 +02:00
parent 6b25a1648d
commit 180ad35d8e
31 changed files with 1577 additions and 437 deletions

View File

@@ -86,6 +86,7 @@
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="Utils\DelegateComparer.cs" />
<Compile Include="Utils\DependencyChecker.cs" />
<Compile Include="Utils\FileAssociation.cs" />
<Compile Include="View\View.cs" />

View File

@@ -0,0 +1,60 @@
using System;
using System.Collections;
using System.Collections.Generic;
namespace ChanSort
{
/// <summary>
/// The DelegateComparer class is used as an adapter to use a simple delegate method in places
/// where an IComparer interface is expected
/// </summary>
public class DelegateComparer : IComparer
{
private readonly Func<object,object,int> handler;
private readonly bool reverse;
/// <summary>
/// Create a new DelegateComparer
/// </summary>
/// <param name="handler">The method used to compare two objects</param>
public DelegateComparer(Func<object, object, int> handler)
{
this.handler = handler;
}
public DelegateComparer(Func<object, object, int> handler, bool reverse) : this(handler)
{
this.reverse=reverse;
}
/// <summary>
/// Compares two objects by delegating the request to the handler-delegate
/// </summary>
public int Compare(object o1, object o2)
{
int r=this.handler(o1, o2);
return this.reverse ? -r : +r;
}
}
public class DelegateComparer<T> : IComparer<T>, IComparer
{
private readonly Func<T, T, int> handler;
private readonly bool reverse;
public DelegateComparer(Func<T,T,int> handler, bool reverse = false)
{
this.handler = handler;
this.reverse = reverse;
}
public int Compare(T x, T y)
{
var r = handler(x, y);
return reverse ? -r : r;
}
int IComparer.Compare(object x, object y) => this.Compare((T) x, (T) y);
}
}

View File

@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
namespace ChanSort.Api
@@ -206,5 +207,14 @@ namespace ChanSort.Api
}
#endregion
#region FirstNotDefault()
public static T FirstNotDefault<T>(params T[] values)
{
var def = default(T);
return values.FirstOrDefault(v => !Equals(v, def));
}
#endregion
}
}

View File

@@ -200,6 +200,7 @@ namespace ChanSort.Loader.GlobalClone
{
foreach (var list in this.DataRoot.ChannelLists)
{
int radioMask = (list.SignalSource & SignalSource.Radio) != 0 ? 0x4000 : 0;
foreach (var chan in list.Channels)
{
if (!(chan is GcChannel<JToken> ch))
@@ -212,15 +213,20 @@ namespace ChanSort.Loader.GlobalClone
}
node["deleted"] = ch.IsDeleted;
var nr = Math.Max(ch.NewProgramNr, 0); // radio channels, except the deleted ones with Nr 0, have 0x4000 added to their number
if (nr != 0 && (ch.SignalSource & SignalSource.Radio) != 0)
nr |= 0x4000;
var nr = Math.Max(ch.NewProgramNr, 0); // radio channels, except the deleted ones with nr=0, have 0x4000 added to their number
if (nr != 0)
nr |= radioMask;
node["majorNumber"] = nr;
node["skipped"] = ch.Skip;
node["locked"] = ch.Lock;
node["Invisible"] = ch.Hidden;
node["userEditChNumber"] = true;
node["userSelCHNo"] = true;
if (ch.NewProgramNr != ch.OldProgramNr)
{
node["userEditChNumber"] = true;
node["userSelCHNo"] = true;
}
//node["disableUpdate"] = true; // experimental to prevent "DTV Auto Update" of channel numbers right after importing the list
}
}
}

View File

@@ -60,10 +60,10 @@
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="DevExpress.Data.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Data.Desktop.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Utils.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Data.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Data.Desktop.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Utils.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />

View File

@@ -121,7 +121,7 @@
<data name="labelControl1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<assembly alias="DevExpress.XtraEditors.v20.1" name="DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<assembly alias="DevExpress.XtraEditors.v20.1" name="DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<data name="labelControl1.AutoSizeMode" type="DevExpress.XtraEditors.LabelAutoSizeMode, DevExpress.XtraEditors.v20.1">
<value>Vertical</value>
</data>
@@ -143,7 +143,7 @@
<value>labelControl1</value>
</data>
<data name="&gt;&gt;labelControl1.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;labelControl1.Parent" xml:space="preserve">
<value>$this</value>
@@ -176,7 +176,7 @@
<value>labelControl3</value>
</data>
<data name="&gt;&gt;labelControl3.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;labelControl3.Parent" xml:space="preserve">
<value>$this</value>
@@ -209,7 +209,7 @@
<value>labelControl4</value>
</data>
<data name="&gt;&gt;labelControl4.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;labelControl4.Parent" xml:space="preserve">
<value>$this</value>
@@ -239,7 +239,7 @@
<value>labelControl5</value>
</data>
<data name="&gt;&gt;labelControl5.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;labelControl5.Parent" xml:space="preserve">
<value>$this</value>
@@ -269,7 +269,7 @@
<value>labelControl6</value>
</data>
<data name="&gt;&gt;labelControl6.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;labelControl6.Parent" xml:space="preserve">
<value>$this</value>
@@ -299,7 +299,7 @@
<value>labelControl7</value>
</data>
<data name="&gt;&gt;labelControl7.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;labelControl7.Parent" xml:space="preserve">
<value>$this</value>
@@ -353,7 +353,7 @@
<value>btnOk</value>
</data>
<data name="&gt;&gt;btnOk.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;btnOk.Parent" xml:space="preserve">
<value>$this</value>
@@ -383,7 +383,7 @@
<value>labelControl2</value>
</data>
<data name="&gt;&gt;labelControl2.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;labelControl2.Parent" xml:space="preserve">
<value>$this</value>
@@ -410,6 +410,6 @@
<value>PresetProgramNrDialog</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
</root>

View File

@@ -139,7 +139,7 @@
<value>cbHbbTv</value>
</data>
<data name="&gt;&gt;cbHbbTv.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;cbHbbTv.Parent" xml:space="preserve">
<value>grpOption</value>
@@ -166,7 +166,7 @@
<value>cbCustomCountry</value>
</data>
<data name="&gt;&gt;cbCustomCountry.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;cbCustomCountry.Parent" xml:space="preserve">
<value>grpOption</value>
@@ -177,7 +177,7 @@
<data name="comboBoxEdit1.Location" type="System.Drawing.Point, System.Drawing">
<value>72, 29</value>
</data>
<assembly alias="DevExpress.Utils.v20.1" name="DevExpress.Utils.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<assembly alias="DevExpress.Utils.v20.1" name="DevExpress.Utils.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<data name="comboBoxEdit1.Properties.Buttons" type="DevExpress.XtraEditors.Controls.ButtonPredefines, DevExpress.Utils.v20.1">
<value>Combo</value>
</data>
@@ -191,7 +191,7 @@
<value>comboBoxEdit1</value>
</data>
<data name="&gt;&gt;comboBoxEdit1.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;comboBoxEdit1.Parent" xml:space="preserve">
<value>grpOption</value>
@@ -215,7 +215,7 @@
<value>labelControl1</value>
</data>
<data name="&gt;&gt;labelControl1.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;labelControl1.Parent" xml:space="preserve">
<value>grpOption</value>
@@ -242,7 +242,7 @@
<value>grpOption</value>
</data>
<data name="&gt;&gt;grpOption.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;grpOption.Parent" xml:space="preserve">
<value>$this</value>
@@ -269,7 +269,7 @@
<value>btnOk</value>
</data>
<data name="&gt;&gt;btnOk.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;btnOk.Parent" xml:space="preserve">
<value>$this</value>
@@ -296,7 +296,7 @@
<value>btnCancel</value>
</data>
<data name="&gt;&gt;btnCancel.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;btnCancel.Parent" xml:space="preserve">
<value>$this</value>
@@ -304,7 +304,7 @@
<data name="&gt;&gt;btnCancel.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<assembly alias="DevExpress.XtraEditors.v20.1" name="DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<assembly alias="DevExpress.XtraEditors.v20.1" name="DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<data name="labelControl3.AutoSizeMode" type="DevExpress.XtraEditors.LabelAutoSizeMode, DevExpress.XtraEditors.v20.1">
<value>Vertical</value>
</data>
@@ -324,7 +324,7 @@
<value>labelControl3</value>
</data>
<data name="&gt;&gt;labelControl3.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;labelControl3.Parent" xml:space="preserve">
<value>grpHotelMode</value>
@@ -348,7 +348,7 @@
<value>labelControl2</value>
</data>
<data name="&gt;&gt;labelControl2.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;labelControl2.Parent" xml:space="preserve">
<value>grpHotelMode</value>
@@ -375,7 +375,7 @@
<value>cbDtvUpdate</value>
</data>
<data name="&gt;&gt;cbDtvUpdate.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;cbDtvUpdate.Parent" xml:space="preserve">
<value>grpHotelMode</value>
@@ -402,7 +402,7 @@
<value>cbHotelMode</value>
</data>
<data name="&gt;&gt;cbHotelMode.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;cbHotelMode.Parent" xml:space="preserve">
<value>grpHotelMode</value>
@@ -429,7 +429,7 @@
<value>grpHotelMode</value>
</data>
<data name="&gt;&gt;grpHotelMode.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;grpHotelMode.Parent" xml:space="preserve">
<value>$this</value>
@@ -456,7 +456,7 @@
<value>cbAutoChannelUpdate</value>
</data>
<data name="&gt;&gt;cbAutoChannelUpdate.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;cbAutoChannelUpdate.Parent" xml:space="preserve">
<value>grpSetup</value>
@@ -483,7 +483,7 @@
<value>grpSetup</value>
</data>
<data name="&gt;&gt;grpSetup.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;grpSetup.Parent" xml:space="preserve">
<value>$this</value>
@@ -510,7 +510,7 @@
<value>labelControl4</value>
</data>
<data name="&gt;&gt;labelControl4.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;labelControl4.Parent" xml:space="preserve">
<value>grpInformation</value>
@@ -537,7 +537,7 @@
<value>grpInformation</value>
</data>
<data name="&gt;&gt;grpInformation.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;grpInformation.Parent" xml:space="preserve">
<value>$this</value>
@@ -567,7 +567,7 @@
<value>lblHotelMenuAutoDetect</value>
</data>
<data name="&gt;&gt;lblHotelMenuAutoDetect.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;lblHotelMenuAutoDetect.Parent" xml:space="preserve">
<value>$this</value>
@@ -594,6 +594,6 @@
<value>TvSettingsForm</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
</root>

View File

@@ -7,7 +7,7 @@ namespace ChanSort.Loader.SamsungJ
internal class DbChannel : ChannelInfo
{
#region ctor()
internal DbChannel(SQLiteDataReader r, IDictionary<string, int> field, DataRoot dataRoot, Dictionary<long, string> providers, Satellite sat, Transponder tp)
internal DbChannel(SQLiteDataReader r, IDictionary<string, int> field, DbSerializer loader, Dictionary<long, string> providers, Satellite sat, Transponder tp)
{
var chType = r.GetInt32(field["chType"]);
this.SignalSource = DbSerializer.ChTypeToSignalSource(chType);
@@ -20,7 +20,7 @@ namespace ChanSort.Loader.SamsungJ
(this.SignalSource & SignalSource.DvbC) == SignalSource.DvbC ? LookupData.Instance.GetDvbcTransponder(this.FreqInMhz).ToString() :
(this.SignalSource & SignalSource.DvbS) == SignalSource.DvbS ? LookupData.Instance.GetAstraTransponder((int)this.FreqInMhz).ToString() :
"";
this.Name = DbSerializer.ReadUtf16(r, field["srvName"]);
this.Name = loader.ReadUtf16(r, field["srvName"]);
this.Hidden = r.GetBoolean(field["hidden"]);
this.Encrypted = r.GetBoolean(field["scrambled"]);
this.Lock = r.GetBoolean(field["lockMode"]);
@@ -39,7 +39,7 @@ namespace ChanSort.Loader.SamsungJ
}
if ((this.SignalSource & SignalSource.Digital) != 0)
this.ReadDvbData(r, field, dataRoot, providers);
this.ReadDvbData(r, field, loader, providers);
else
this.ReadAnalogData(r, field);
@@ -56,9 +56,9 @@ namespace ChanSort.Loader.SamsungJ
#endregion
#region ReadDvbData()
protected void ReadDvbData(SQLiteDataReader r, IDictionary<string, int> field, DataRoot dataRoot, Dictionary<long, string> providers)
protected void ReadDvbData(SQLiteDataReader r, IDictionary<string, int> field, DbSerializer loader, Dictionary<long, string> providers)
{
this.ShortName = DbSerializer.ReadUtf16(r, field["srvName"]);
this.ShortName = loader.ReadUtf16(r, field["srvName"]);
this.RecordOrder = r.GetInt32(field["major"]);
int serviceType = r.GetInt32(field["srvType"]);
this.ServiceType = serviceType;

View File

@@ -17,6 +17,7 @@ namespace ChanSort.Loader.SamsungJ
private readonly Dictionary<long, DbChannel> channelById = new Dictionary<long, DbChannel>();
private readonly Dictionary<ChannelList, string> dbPathByChannelList = new Dictionary<ChannelList, string>();
private readonly List<string> tableNames = new List<string>();
private Encoding encoding;
private enum FileType { Unknown, SatDb, ChannelDbDvb, ChannelDbAnalog, ChannelDbIp }
@@ -262,7 +263,7 @@ namespace ChanSort.Loader.SamsungJ
// ... and get the satellite from that transponder - if set
// Note that we can have channels from multiple satellites in the same list, so this is a loop variable now
var sat = tp?.Satellite;
var channel = new DbChannel(r, fields, this.DataRoot, providers, sat, tp);
var channel = new DbChannel(r, fields, this, providers, sat, tp);
if (channel.OldProgramNr == prevNr) // when there is a SRV_EXT_APP table in the database, the service with the highest ext_app "recState" takes priority
continue;
@@ -278,6 +279,7 @@ namespace ChanSort.Loader.SamsungJ
}
#endregion
#region CreateChannelList()
private ChannelList CreateChannelList(SignalSource signalSource, string name)
{
var list = new ChannelList(signalSource, name);
@@ -290,6 +292,7 @@ namespace ChanSort.Loader.SamsungJ
}
return list;
}
#endregion
#region DetectSignalSource()
private static SignalSource DetectSignalSource(SQLiteCommand cmd, FileType fileType)
@@ -383,13 +386,77 @@ namespace ChanSort.Loader.SamsungJ
#endregion
#region ReadUtf16()
internal static string ReadUtf16(SQLiteDataReader r, int fieldIndex)
internal string ReadUtf16(SQLiteDataReader r, int fieldIndex)
{
if (r.IsDBNull(fieldIndex))
return null;
byte[] nameBytes = new byte[200];
int nameLen = (int)r.GetBytes(fieldIndex, 0, nameBytes, 0, nameBytes.Length);
return Encoding.BigEndianUnicode.GetString(nameBytes, 0, nameLen).Replace("\0", ""); // remove trailing \0 characters found in Samsung "_T_..." channel list
this.encoding ??= AutoDetectUtf16Endian(nameBytes, nameLen);
if (this.encoding == null)
return string.Empty;
return encoding.GetString(nameBytes, 0, nameLen).Replace("\0", ""); // remove trailing \0 characters found in Samsung "_T_..." channel list
}
#endregion
#region AutoDetectUtf16Endian()
private Encoding AutoDetectUtf16Endian(byte[] nameBytes, int nameLen)
{
if (this.DefaultEncoding is UnicodeEncoding)
return this.DefaultEncoding;
int evenBytesZero = 0;
int oddBytesZero = 0;
for (int i = 0; i < nameLen; i += 2)
{
if (nameBytes[i] == 0)
++evenBytesZero;
if (nameBytes[i + 1] == 0)
++oddBytesZero;
}
if (evenBytesZero + oddBytesZero == nameLen)
return null;
return evenBytesZero >= oddBytesZero ? Encoding.BigEndianUnicode : Encoding.Unicode;
}
#endregion
#region DefaultEncoding
public override Encoding DefaultEncoding
{
get => base.DefaultEncoding;
set
{
if (!(value is UnicodeEncoding))
return;
var oldEncoding = base.DefaultEncoding;
if (oldEncoding != null)
{
// change encoding of channel names
foreach (var list in this.DataRoot.ChannelLists)
{
foreach (var chan in list.Channels)
{
byte[] bytes;
if (chan.Name != null)
{
bytes = oldEncoding.GetBytes(chan.Name);
chan.Name = value.GetString(bytes);
}
if (chan.ShortName != null)
{
bytes = oldEncoding.GetBytes(chan.ShortName);
chan.ShortName = value.GetString(bytes);
}
}
}
}
base.DefaultEncoding = value;
}
}
#endregion
@@ -528,7 +595,7 @@ namespace ChanSort.Loader.SamsungJ
cmdUpdateSrv.Parameters["@lock"].Value = channel.Lock;
cmdUpdateSrv.Parameters["@hidden"].Value = channel.Hidden;
cmdUpdateSrv.Parameters["@numsel"].Value = !channel.Skip;
cmdUpdateSrv.Parameters["@srvname"].Value = channel.Name == null ? (object)DBNull.Value : Encoding.BigEndianUnicode.GetBytes(channel.Name);
cmdUpdateSrv.Parameters["@srvname"].Value = channel.Name == null ? (object)DBNull.Value : encoding.GetBytes(channel.Name);
cmdUpdateSrv.ExecuteNonQuery();
// update favorites
@@ -557,6 +624,5 @@ namespace ChanSort.Loader.SamsungJ
}
}
#endregion
}
}

View File

@@ -117,7 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="DevExpress.XtraEditors.v20.1" name="DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<assembly alias="DevExpress.XtraEditors.v20.1" name="DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<data name="lblWebsite.AutoSizeMode" type="DevExpress.XtraEditors.LabelAutoSizeMode, DevExpress.XtraEditors.v20.1">
<value>Vertical</value>
</data>
@@ -139,7 +139,7 @@
<value>lblWebsite</value>
</data>
<data name="&gt;&gt;lblWebsite.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;lblWebsite.Parent" xml:space="preserve">
<value>$this</value>
@@ -170,7 +170,7 @@
<value>lnkDownload</value>
</data>
<data name="&gt;&gt;lnkDownload.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.HyperLinkEdit, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.HyperLinkEdit, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;lnkDownload.Parent" xml:space="preserve">
<value>$this</value>
@@ -194,7 +194,7 @@
<value>gcPlugins</value>
</data>
<data name="&gt;&gt;gcPlugins.Type" xml:space="preserve">
<value>DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="lnkEmail.EditValue" xml:space="preserve">
<value>horst@beham.biz</value>
@@ -215,7 +215,7 @@
<value>lnkEmail</value>
</data>
<data name="&gt;&gt;lnkEmail.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.HyperLinkEdit, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.HyperLinkEdit, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;lnkEmail.Parent" xml:space="preserve">
<value>$this</value>
@@ -242,7 +242,7 @@
<value>lblAuthor</value>
</data>
<data name="&gt;&gt;lblAuthor.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;lblAuthor.Parent" xml:space="preserve">
<value>$this</value>
@@ -269,7 +269,7 @@
<value>lblLicense</value>
</data>
<data name="&gt;&gt;lblLicense.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;lblLicense.Parent" xml:space="preserve">
<value>$this</value>
@@ -299,7 +299,7 @@
<value>lnkLicense</value>
</data>
<data name="&gt;&gt;lnkLicense.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.HyperLinkEdit, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.HyperLinkEdit, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;lnkLicense.Parent" xml:space="preserve">
<value>$this</value>
@@ -326,7 +326,7 @@
<value>lblCredits</value>
</data>
<data name="&gt;&gt;lblCredits.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;lblCredits.Parent" xml:space="preserve">
<value>$this</value>
@@ -350,7 +350,7 @@
<value>txtCredits</value>
</data>
<data name="&gt;&gt;txtCredits.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.MemoEdit, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.MemoEdit, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;txtCredits.Parent" xml:space="preserve">
<value>$this</value>
@@ -377,7 +377,7 @@
<value>btnClose</value>
</data>
<data name="&gt;&gt;btnClose.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;btnClose.Parent" xml:space="preserve">
<value>$this</value>
@@ -401,7 +401,7 @@
<value>txtAuthor</value>
</data>
<data name="&gt;&gt;txtAuthor.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;txtAuthor.Parent" xml:space="preserve">
<value>$this</value>
@@ -428,30 +428,30 @@
<value>gvPlugins</value>
</data>
<data name="&gt;&gt;gvPlugins.Type" xml:space="preserve">
<value>DevExpress.XtraGrid.Views.Grid.GridView, DevExpress.XtraGrid.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraGrid.Views.Grid.GridView, DevExpress.XtraGrid.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;colPlugin.Name" xml:space="preserve">
<value>colPlugin</value>
</data>
<data name="&gt;&gt;colPlugin.Type" xml:space="preserve">
<value>DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;colDisplayText.Name" xml:space="preserve">
<value>colDisplayText</value>
</data>
<data name="&gt;&gt;colDisplayText.Type" xml:space="preserve">
<value>DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;colFileTypes.Name" xml:space="preserve">
<value>colFileTypes</value>
</data>
<data name="&gt;&gt;colFileTypes.Type" xml:space="preserve">
<value>DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>AboutForm</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
</root>

View File

@@ -125,7 +125,7 @@
<data name="lblMessage.Appearance.Font" type="System.Drawing.Font, System.Drawing">
<value>Tahoma, 9pt</value>
</data>
<assembly alias="DevExpress.XtraEditors.v20.1" name="DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<assembly alias="DevExpress.XtraEditors.v20.1" name="DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<data name="lblMessage.AutoSizeMode" type="DevExpress.XtraEditors.LabelAutoSizeMode, DevExpress.XtraEditors.v20.1">
<value>Vertical</value>
</data>
@@ -146,7 +146,7 @@
<value>lblMessage</value>
</data>
<data name="&gt;&gt;lblMessage.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;lblMessage.Parent" xml:space="preserve">
<value>$this</value>
@@ -160,7 +160,7 @@
<data name="imageCollection1.ImageSize" type="System.Drawing.Size, System.Drawing">
<value>32, 32</value>
</data>
<assembly alias="DevExpress.Utils.v20.1" name="DevExpress.Utils.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<assembly alias="DevExpress.Utils.v20.1" name="DevExpress.Utils.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<data name="imageCollection1.ImageStream" type="DevExpress.Utils.ImageCollectionStreamer, DevExpress.Utils.v20.1" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLlV0aWxzLnYxMi4yLCBWZXJzaW9uPTEyLjIu
@@ -459,12 +459,12 @@
<value>imageCollection1</value>
</data>
<data name="&gt;&gt;imageCollection1.Type" xml:space="preserve">
<value>DevExpress.Utils.ImageCollection, DevExpress.Utils.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.Utils.ImageCollection, DevExpress.Utils.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>ActionBoxDialog</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
</root>

View File

@@ -120,7 +120,7 @@
<metadata name="imageCollection1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>349, 503</value>
</metadata>
<assembly alias="DevExpress.Utils.v20.1" name="DevExpress.Utils.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<assembly alias="DevExpress.Utils.v20.1" name="DevExpress.Utils.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<data name="imageCollection1.ImageStream" type="DevExpress.Utils.ImageCollectionStreamer, DevExpress.Utils.v20.1" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLlV0aWxzLnYxNS4yLCBWZXJzaW9uPTE1LjIu

View File

@@ -69,47 +69,47 @@
<ApplicationManifest>app.manifest</ApplicationManifest>
</PropertyGroup>
<ItemGroup>
<Reference Include="DevExpress.Data.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
<Reference Include="DevExpress.Data.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="DevExpress.Office.v20.1.Core, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Pdf.v20.1.Core, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
<Reference Include="DevExpress.Office.v20.1.Core, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Pdf.v20.1.Core, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="DevExpress.RichEdit.v20.1.Export, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
<Reference Include="DevExpress.RichEdit.v20.1.Export, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="DevExpress.Printing.v20.1.Core, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
<Reference Include="DevExpress.Printing.v20.1.Core, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="DevExpress.RichEdit.v20.1.Core, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Data.Desktop.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
<Reference Include="DevExpress.RichEdit.v20.1.Core, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Data.Desktop.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="DevExpress.Utils.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
<Reference Include="DevExpress.Utils.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="DevExpress.Utils.v20.1.UI, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraBars.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
<Reference Include="DevExpress.Utils.v20.1.UI, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraBars.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
<Reference Include="DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="DevExpress.XtraPrinting.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
<Reference Include="DevExpress.XtraPrinting.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="DevExpress.XtraGrid.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
<Reference Include="DevExpress.XtraGrid.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="DevExpress.Charts.v20.1.Core, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraCharts.v20.1.Wizard, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraCharts.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.PivotGrid.v20.1.Core, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Sparkline.v20.1.Core, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.CodeParser.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraReports.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraReports.v20.1.Extensions, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Charts.v20.1.Core, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraCharts.v20.1.Wizard, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraCharts.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.PivotGrid.v20.1.Core, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Sparkline.v20.1.Core, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.CodeParser.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraReports.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraReports.v20.1.Extensions, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="System" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.configuration" />
@@ -201,6 +201,13 @@
<Compile Include="CharsetForm.Designer.cs">
<DependentUpon>CharsetForm.cs</DependentUpon>
</Compile>
<Compile Include="XGrid\XGridControl.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="XGrid\XGridView.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="XGrid\XGridView.LayoutPersister.cs" />
<EmbeddedResource Include="AboutForm.cs.resx">
<DependentUpon>AboutForm.cs</DependentUpon>
</EmbeddedResource>
@@ -540,6 +547,7 @@
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<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.

View File

@@ -0,0 +1,2 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=xgrid/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

View File

@@ -138,13 +138,13 @@
<value>btnCancel</value>
</data>
<data name="&gt;&gt;btnOk.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="gcCharset.Size" type="System.Drawing.Size, System.Drawing">
<value>433, 446</value>
</data>
<data name="&gt;&gt;gvCharset.Type" xml:space="preserve">
<value>DevExpress.XtraGrid.Views.Grid.GridView, DevExpress.XtraGrid.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraGrid.Views.Grid.GridView, DevExpress.XtraGrid.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>CharsetForm</value>
@@ -178,11 +178,11 @@
<data name="&gt;&gt;btnMyCountry.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<assembly alias="DevExpress.XtraEditors.v20.1" name="DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<assembly alias="DevExpress.XtraEditors.v20.1" name="DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<data name="gcCharset.EmbeddedNavigator.TextLocation" type="DevExpress.XtraEditors.NavigatorButtonsTextLocation, DevExpress.XtraEditors.v20.1">
<value>Center</value>
</data>
<assembly alias="DevExpress.Utils.v20.1" name="DevExpress.Utils.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<assembly alias="DevExpress.Utils.v20.1" name="DevExpress.Utils.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<data name="gcCharset.EmbeddedNavigator.ToolTipIconType" type="DevExpress.Utils.ToolTipIconType, DevExpress.Utils.v20.1">
<value>None</value>
</data>
@@ -196,7 +196,7 @@
<value>Top, Right</value>
</data>
<data name="&gt;&gt;btnMyCountry.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="gcCharset.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
@@ -211,10 +211,10 @@
<value>$this</value>
</data>
<data name="&gt;&gt;gcCharset.Type" xml:space="preserve">
<value>DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;btnCancel.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;colName.Name" xml:space="preserve">
<value>colName</value>
@@ -256,7 +256,7 @@
<value>gcCharset</value>
</data>
<data name="&gt;&gt;colCodePage.Type" xml:space="preserve">
<value>DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="btnMyCountry.Text" xml:space="preserve">
<value>Default character set for my country</value>
@@ -271,7 +271,7 @@
<value>353, 6</value>
</data>
<data name="&gt;&gt;colName.Type" xml:space="preserve">
<value>DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="btnCancel.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
@@ -331,7 +331,7 @@
<value>btnOk</value>
</data>
<data name="&gt;&gt;colDisplayName.Type" xml:space="preserve">
<value>DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>433, 483</value>
@@ -340,17 +340,17 @@
<value>142</value>
</data>
<data name="&gt;&gt;panelControl1.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.PanelControl, DevExpress.Utils.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.PanelControl, DevExpress.Utils.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="colName.Visible" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<assembly alias="DevExpress.Data.v20.1" name="DevExpress.Data.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<assembly alias="DevExpress.Data.v20.1" name="DevExpress.Data.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<data name="gcCharset.EmbeddedNavigator.AllowHtmlTextInToolTip" type="DevExpress.Utils.DefaultBoolean, DevExpress.Data.v20.1">
<value>Default</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v20.1, Version=20.1.4.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>

View File

@@ -120,7 +120,7 @@
<metadata name="sharedImageCollection1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<assembly alias="DevExpress.Utils.v20.1" name="DevExpress.Utils.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<assembly alias="DevExpress.Utils.v20.1" name="DevExpress.Utils.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<data name="rawImageCollection.ImageStream" type="DevExpress.Utils.ImageCollectionStreamer, DevExpress.Utils.v20.1" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLlV0aWxzLnYxOS4yLCBWZXJzaW9uPTE5LjIu

View File

@@ -32,9 +32,9 @@
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
this.splitContainerControl1 = new DevExpress.XtraEditors.SplitContainerControl();
this.grpOutputList = new DevExpress.XtraEditors.GroupControl();
this.gridLeft = new DevExpress.XtraGrid.GridControl();
this.gridLeft = new ChanSort.XGridControl();
this.dsChannels = new System.Windows.Forms.BindingSource(this.components);
this.gviewLeft = new DevExpress.XtraGrid.Views.Grid.GridView();
this.gviewLeft = new ChanSort.XGridView();
this.colIndex1 = new DevExpress.XtraGrid.Columns.GridColumn();
this.colOutSlot = new DevExpress.XtraGrid.Columns.GridColumn();
this.colOutName = new DevExpress.XtraGrid.Columns.GridColumn();
@@ -66,8 +66,8 @@
this.btnUp = new DevExpress.XtraEditors.SimpleButton();
this.btnRemoveLeft = new DevExpress.XtraEditors.SimpleButton();
this.grpInputList = new DevExpress.XtraEditors.GroupControl();
this.gridRight = new DevExpress.XtraGrid.GridControl();
this.gviewRight = new DevExpress.XtraGrid.Views.Grid.GridView();
this.gridRight = new ChanSort.XGridControl();
this.gviewRight = new ChanSort.XGridView();
this.colIndex = new DevExpress.XtraGrid.Columns.GridColumn();
this.colSlotOld = new DevExpress.XtraGrid.Columns.GridColumn();
this.colSlotNew = new DevExpress.XtraGrid.Columns.GridColumn();
@@ -159,6 +159,8 @@
this.miCharsetForm = new DevExpress.XtraBars.BarButtonItem();
this.miUtf8Charset = new DevExpress.XtraBars.BarButtonItem();
this.miIsoCharSets = new DevExpress.XtraBars.BarListItem();
this.miUtf16BigEndian = new DevExpress.XtraBars.BarButtonItem();
this.miUtf16LittleEndian = new DevExpress.XtraBars.BarButtonItem();
this.miShowWarningsAfterLoad = new DevExpress.XtraBars.BarCheckItem();
this.miAllowEditPredefinedLists = new DevExpress.XtraBars.BarButtonItem();
this.miExplorerIntegration = new DevExpress.XtraBars.BarButtonItem();
@@ -275,6 +277,7 @@
this.gridLeft.AllowDrop = true;
this.gridLeft.DataSource = this.dsChannels;
resources.ApplyResources(this.gridLeft, "gridLeft");
this.gridLeft.LayoutId = "MainForm.gridLeft";
this.gridLeft.MainView = this.gviewLeft;
this.gridLeft.Name = "gridLeft";
this.gridLeft.RepositoryItems.AddRange(new DevExpress.XtraEditors.Repository.RepositoryItem[] {
@@ -319,6 +322,7 @@
this.gviewLeft.OptionsCustomization.AllowQuickHideColumns = false;
this.gviewLeft.OptionsDetail.EnableMasterViewMode = false;
this.gviewLeft.OptionsLayout.LayoutVersion = "2";
this.gviewLeft.OptionsPersistence = ((ChanSort.XGridView.ColumnOptions)((ChanSort.XGridView.ColumnOptions.OrderAndVisibility | ChanSort.XGridView.ColumnOptions.SortingAndGrouping)));
this.gviewLeft.OptionsSelection.MultiSelect = true;
this.gviewLeft.OptionsView.ColumnAutoWidth = false;
this.gviewLeft.OptionsView.ShowAutoFilterRow = true;
@@ -594,6 +598,7 @@
this.gridRight.AllowDrop = true;
this.gridRight.DataSource = this.dsChannels;
resources.ApplyResources(this.gridRight, "gridRight");
this.gridRight.LayoutId = "MainForm.gridRight";
this.gridRight.MainView = this.gviewRight;
this.gridRight.Name = "gridRight";
this.gridRight.RepositoryItems.AddRange(new DevExpress.XtraEditors.Repository.RepositoryItem[] {
@@ -654,6 +659,7 @@
this.gviewRight.OptionsCustomization.AllowGroup = false;
this.gviewRight.OptionsDetail.EnableMasterViewMode = false;
this.gviewRight.OptionsLayout.LayoutVersion = "5";
this.gviewRight.OptionsPersistence = ((ChanSort.XGridView.ColumnOptions)((ChanSort.XGridView.ColumnOptions.OrderAndVisibility | ChanSort.XGridView.ColumnOptions.SortingAndGrouping)));
this.gviewRight.OptionsSelection.MultiSelect = true;
this.gviewRight.OptionsView.ColumnAutoWidth = false;
this.gviewRight.OptionsView.ShowAutoFilterRow = true;
@@ -1080,9 +1086,11 @@
this.miFontMedium,
this.miFontLarge,
this.miFontXLarge,
this.miFontXxLarge});
this.miFontXxLarge,
this.miUtf16BigEndian,
this.miUtf16LittleEndian});
this.barManager1.MainMenu = this.bar1;
this.barManager1.MaxItemId = 109;
this.barManager1.MaxItemId = 111;
this.barManager1.ShowFullMenus = true;
//
// bar1
@@ -1590,7 +1598,9 @@
this.mnuCharset.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] {
new DevExpress.XtraBars.LinkPersistInfo(this.miCharsetForm),
new DevExpress.XtraBars.LinkPersistInfo(this.miUtf8Charset, true),
new DevExpress.XtraBars.LinkPersistInfo(this.miIsoCharSets)});
new DevExpress.XtraBars.LinkPersistInfo(this.miIsoCharSets),
new DevExpress.XtraBars.LinkPersistInfo(this.miUtf16BigEndian, true),
new DevExpress.XtraBars.LinkPersistInfo(this.miUtf16LittleEndian)});
this.mnuCharset.Name = "mnuCharset";
this.mnuCharset.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionInMenu;
//
@@ -1608,7 +1618,7 @@
resources.ApplyResources(this.miUtf8Charset, "miUtf8Charset");
this.miUtf8Charset.Id = 99;
this.miUtf8Charset.Name = "miUtf8Charset";
this.miUtf8Charset.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.MiUtf8Charset_ItemClick);
this.miUtf8Charset.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.miUtf8Charset_ItemClick);
//
// miIsoCharSets
//
@@ -1619,6 +1629,20 @@
this.miIsoCharSets.ShowNumbers = true;
this.miIsoCharSets.ListItemClick += new DevExpress.XtraBars.ListItemClickEventHandler(this.miIsoCharSets_ListItemClick);
//
// miUtf16BigEndian
//
resources.ApplyResources(this.miUtf16BigEndian, "miUtf16BigEndian");
this.miUtf16BigEndian.Id = 109;
this.miUtf16BigEndian.Name = "miUtf16BigEndian";
this.miUtf16BigEndian.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.miUtf16BigEndian_ItemClick);
//
// miUtf16LittleEndian
//
resources.ApplyResources(this.miUtf16LittleEndian, "miUtf16LittleEndian");
this.miUtf16LittleEndian.Id = 110;
this.miUtf16LittleEndian.Name = "miUtf16LittleEndian";
this.miUtf16LittleEndian.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.miUtf16LittleEndian_ItemClick);
//
// miShowWarningsAfterLoad
//
resources.ApplyResources(this.miShowWarningsAfterLoad, "miShowWarningsAfterLoad");
@@ -2171,8 +2195,8 @@
#endregion
private DevExpress.LookAndFeel.DefaultLookAndFeel defaultLookAndFeel1;
private DevExpress.XtraGrid.GridControl gridRight;
private DevExpress.XtraGrid.Views.Grid.GridView gviewRight;
private XGridControl gridRight;
private XGridView gviewRight;
private System.Windows.Forms.BindingSource dsChannels;
private DevExpress.XtraGrid.Columns.GridColumn colIndex;
private DevExpress.XtraGrid.Columns.GridColumn colSlotOld;
@@ -2183,8 +2207,8 @@
private DevExpress.XtraEditors.SimpleButton btnRemoveLeft;
private DevExpress.XtraEditors.GroupControl grpInputList;
private DevExpress.XtraEditors.SimpleButton btnAdd;
private DevExpress.XtraGrid.GridControl gridLeft;
private DevExpress.XtraGrid.Views.Grid.GridView gviewLeft;
private XGridControl gridLeft;
private XGridView gviewLeft;
private DevExpress.XtraGrid.Columns.GridColumn colOutSlot;
private DevExpress.XtraGrid.Columns.GridColumn colOutName;
private DevExpress.XtraEditors.SimpleButton btnDown;
@@ -2353,6 +2377,8 @@
private DevExpress.XtraBars.BarButtonItem miFontLarge;
private DevExpress.XtraBars.BarButtonItem miFontXLarge;
private DevExpress.XtraBars.BarButtonItem miFontXxLarge;
}
private DevExpress.XtraBars.BarButtonItem miUtf16BigEndian;
private DevExpress.XtraBars.BarButtonItem miUtf16LittleEndian;
}
}

View File

@@ -3,7 +3,6 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Drawing;
using System.Globalization;
using System.IO;
@@ -27,7 +26,6 @@ using DevExpress.XtraGrid.Views.Base;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraGrid.Views.Grid.ViewInfo;
using DevExpress.XtraTab;
using Timer = System.Windows.Forms.Timer;
namespace ChanSort.Ui
{
@@ -662,9 +660,6 @@ namespace ChanSort.Ui
private void ShowChannelList(ChannelList channelList)
{
if (this.CurrentChannelList != null)
this.SaveInputGridLayout(this.CurrentChannelList.SignalSource);
this.CurrentChannelList = channelList;
this.Editor.ChannelList = channelList;
@@ -1303,6 +1298,17 @@ namespace ChanSort.Ui
break;
}
}
if (Config.Default.LeftGridLayout != null)
{
var xml = Config.Default.LeftGridLayout;
this.gviewLeft.LoadLayoutFromXml(xml);
}
if (Config.Default.RightGridLayout != null)
{
var xml = Config.Default.RightGridLayout;
this.gviewRight.LoadLayoutFromXml(xml);
}
}
#endregion
@@ -1440,20 +1446,6 @@ namespace ChanSort.Ui
private void LoadInputGridLayout()
{
#if false
// code disabled because it causes unpredictable column order when working with different file formats which may of may not show columns
string newLayout;
var newSource = list.SignalSource;
if ((newSource & SignalSource.Analog) != 0)
newLayout = Config.Default.InputGridLayoutAnalog;
else if ((newSource & SignalSource.DvbS) != 0)
newLayout = Config.Default.InputGridLayoutDvbS;
else
newLayout = Config.Default.InputGridLayoutDvbCT;
if (!string.IsNullOrEmpty(newLayout))
this.SetGridLayout(this.gviewRight, newLayout);
#endif
this.ShowGridColumns(this.gviewLeft);
this.ShowGridColumns(this.gviewRight);
this.ClearRightFilter();
@@ -1463,26 +1455,10 @@ namespace ChanSort.Ui
#region ShowGridColumns()
private void ShowGridColumns(GridView gview)
private void ShowGridColumns(XGridView gview)
{
var visIndex = 0;
foreach (GridColumn col in gview.Columns)
col.VisibleIndex = GetGridColumnVisibility(col) ? visIndex++ : -1;
}
#endregion
#region SaveInputGridLayout()
private void SaveInputGridLayout(SignalSource signalSource)
{
var currentLayout = GetGridLayout(this.gviewRight);
if ((signalSource & SignalSource.Analog) != 0)
Config.Default.InputGridLayoutAnalog = currentLayout;
else if ((signalSource & SignalSource.DvbS) != 0)
Config.Default.InputGridLayoutDvbS = currentLayout;
else //if ((signalSource & SignalSource.DvbCT) != 0)
Config.Default.InputGridLayoutDvbCT = currentLayout;
gview.SetColumnVisibility(col, GetGridColumnVisibility(col));
}
#endregion
@@ -2698,28 +2674,18 @@ namespace ChanSort.Ui
Config.Default.Encoding = this.defaultEncoding.WebName;
Config.Default.Language = Thread.CurrentThread.CurrentUICulture.Name;
Config.Default.LeftPanelWidth = this.splitContainerControl1.SplitterPosition.Unscale(this.absScaleFactor.Width);
Config.Default.OutputListLayout = GetGridLayout(this.gviewLeft);
if (this.CurrentChannelList != null)
SaveInputGridLayout(this.CurrentChannelList.SignalSource);
Config.Default.ShowWarningsAfterLoading = this.miShowWarningsAfterLoad.Checked;
Config.Default.CloseGaps = this.cbCloseGap.Checked;
Config.Default.MruFiles.Clear();
Config.Default.MruFiles.AddRange(this.mruFiles);
Config.Default.ExplorerIntegration = this.miExplorerIntegration.Down;
Config.Default.CheckForUpdates = this.miCheckUpdates.Down;
Config.Default.LeftGridLayout = this.gviewLeft.SaveLayoutToXml();
Config.Default.RightGridLayout = this.gviewRight.SaveLayoutToXml();
Config.Default.Save();
}
private string GetGridLayout(GridView grid)
{
var stream = new MemoryStream();
grid.SaveLayoutToStream(stream, OptionsLayoutBase.FullLayout);
stream.Seek(0, SeekOrigin.Begin);
using (var rdr = new StreamReader(stream, Encoding.UTF8))
return rdr.ReadToEnd();
}
#endregion
#region ClearLeftFilter(), ClearRightFilter()
@@ -2998,7 +2964,7 @@ namespace ChanSort.Ui
#region Character set menu
private void MiUtf8Charset_ItemClick(object sender, ItemClickEventArgs e)
private void miUtf8Charset_ItemClick(object sender, ItemClickEventArgs e)
{
TryExecute(() => this.SetDefaultEncoding(Encoding.UTF8));
}
@@ -3013,6 +2979,16 @@ namespace ChanSort.Ui
TryExecute(ShowCharsetForm);
}
private void miUtf16BigEndian_ItemClick(object sender, ItemClickEventArgs e)
{
TryExecute(() => this.SetDefaultEncoding(Encoding.BigEndianUnicode));
}
private void miUtf16LittleEndian_ItemClick(object sender, ItemClickEventArgs e)
{
TryExecute(() => this.SetDefaultEncoding(Encoding.Unicode));
}
private void charsetForm_EncodingChanged(object sender, EncodingChangedEventArgs e)
{
SetDefaultEncoding(e.Encoding);

View File

@@ -556,7 +556,7 @@ speziellen Anbieter, Satelliten oder Länderlisten aus.</value>
<data name="lblHotkeyLeft.Size" type="System.Drawing.Size, System.Drawing">
<value>333, 17</value>
</data>
<assembly alias="DevExpress.XtraBars.v20.1" name="DevExpress.XtraBars.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<assembly alias="DevExpress.XtraBars.v20.1" name="DevExpress.XtraBars.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<data name="barManager1.Categories" type="DevExpress.XtraBars.BarManagerCategory, DevExpress.XtraBars.v20.1" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxNS4yLCBWZXJzaW9uPTE1

View File

@@ -62,9 +62,9 @@
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<assembly alias="DevExpress.Data.v20.1" name="DevExpress.Data.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<assembly alias="DevExpress.XtraEditors.v20.1" name="DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<assembly alias="DevExpress.Utils.v20.1" name="DevExpress.Utils.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<assembly alias="DevExpress.Data.v20.1" name="DevExpress.Data.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<assembly alias="DevExpress.XtraEditors.v20.1" name="DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<assembly alias="DevExpress.Utils.v20.1" name="DevExpress.Utils.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<data name="colOutSlot.Caption" xml:space="preserve">
<value>Novo Pos</value>
</data>
@@ -329,7 +329,7 @@
<data name="colOutServiceType.Caption" xml:space="preserve">
<value>Tipo serviço</value>
</data>
<assembly alias="DevExpress.XtraBars.v20.1" name="DevExpress.XtraBars.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<assembly alias="DevExpress.XtraBars.v20.1" name="DevExpress.XtraBars.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<data name="barManager1.Categories" type="DevExpress.XtraBars.BarManagerCategory, DevExpress.XtraBars.v20.1" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxMi4yLCBWZXJzaW9uPTEy

File diff suppressed because it is too large Load Diff

View File

@@ -135,7 +135,7 @@
<value>labelControl1</value>
</data>
<data name="&gt;&gt;labelControl1.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;labelControl1.Parent" xml:space="preserve">
<value>$this</value>
@@ -162,7 +162,7 @@
<value>rbSortByNumber</value>
</data>
<data name="&gt;&gt;rbSortByNumber.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;rbSortByNumber.Parent" xml:space="preserve">
<value>$this</value>
@@ -186,7 +186,7 @@
<value>rbSortByName</value>
</data>
<data name="&gt;&gt;rbSortByName.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;rbSortByName.Parent" xml:space="preserve">
<value>$this</value>
@@ -210,7 +210,7 @@
<value>labelControl2</value>
</data>
<data name="&gt;&gt;labelControl2.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;labelControl2.Parent" xml:space="preserve">
<value>$this</value>
@@ -229,7 +229,7 @@
<data name="fontEdit1.Location" type="System.Drawing.Point, System.Drawing">
<value>106, 52</value>
</data>
<assembly alias="DevExpress.Utils.v20.1" name="DevExpress.Utils.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<assembly alias="DevExpress.Utils.v20.1" name="DevExpress.Utils.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<data name="fontEdit1.Properties.Buttons" type="DevExpress.XtraEditors.Controls.ButtonPredefines, DevExpress.Utils.v20.1">
<value>Combo</value>
</data>
@@ -243,7 +243,7 @@
<value>fontEdit1</value>
</data>
<data name="&gt;&gt;fontEdit1.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.FontEdit, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.FontEdit, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;fontEdit1.Parent" xml:space="preserve">
<value>$this</value>
@@ -270,7 +270,7 @@
<value>btnPreview</value>
</data>
<data name="&gt;&gt;btnPreview.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;btnPreview.Parent" xml:space="preserve">
<value>$this</value>
@@ -297,7 +297,7 @@
<value>btnCancel</value>
</data>
<data name="&gt;&gt;btnCancel.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;btnCancel.Parent" xml:space="preserve">
<value>$this</value>
@@ -330,7 +330,7 @@
<value>spinFontSize</value>
</data>
<data name="&gt;&gt;spinFontSize.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.SpinEdit, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.SpinEdit, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;spinFontSize.Parent" xml:space="preserve">
<value>$this</value>
@@ -363,7 +363,7 @@
<value>spinColumnCount</value>
</data>
<data name="&gt;&gt;spinColumnCount.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.SpinEdit, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.SpinEdit, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;spinColumnCount.Parent" xml:space="preserve">
<value>$this</value>
@@ -387,7 +387,7 @@
<value>labelControl3</value>
</data>
<data name="&gt;&gt;labelControl3.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;labelControl3.Parent" xml:space="preserve">
<value>$this</value>
@@ -414,6 +414,6 @@
<value>ReportOptionsDialog</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
</root>

View File

@@ -37,13 +37,9 @@ namespace ChanSort.Ui.Properties
public static Config Default { get; set; }
public string OutputListLayout { get; set; } = "";
public string Language { get; set; } = "";
public string Encoding { get; set; } = "";
public Size WindowSize { get; set; } = new Size(0,0);
public string InputGridLayoutAnalog { get; set; } = "";
public string InputGridLayoutDvbCT { get; set; } = "";
public string InputGridLayoutDvbS { get; set; } = "";
public int LeftPanelWidth { get; set; } = 0;
public bool ShowWarningsAfterLoading { get; set; } = false;
public bool CloseGaps { get; set; } = true;
@@ -56,17 +52,17 @@ namespace ChanSort.Ui.Properties
public bool ExplorerIntegration { get; set; } = false;
public bool CheckForUpdates { get; set; } = true;
public int FontSizeDelta { get; set; }
public string LeftGridLayout { get; set; }
public string RightGridLayout { get; set; }
public void Save()
{
var folder = Path.GetDirectoryName(ConfigFilePath);
Directory.CreateDirectory(folder);
using (var stream = new FileStream(ConfigFilePath, FileMode.Create))
using (var writer = new StreamWriter(stream, System.Text.Encoding.UTF8))
{
Serializer.Serialize(writer, this);
}
using var stream = new FileStream(ConfigFilePath, FileMode.Create);
using var writer = new StreamWriter(stream, System.Text.Encoding.UTF8);
Serializer.Serialize(writer, this);
}
}
}

View File

@@ -0,0 +1,6 @@
DevExpress.XtraBars.BarManager, DevExpress.XtraBars.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.ButtonEdit, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.PictureEdit, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.Repository.RepositoryItemTextEdit, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a

View File

@@ -135,7 +135,7 @@
<value>labelControl1</value>
</data>
<data name="&gt;&gt;labelControl1.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;labelControl1.Parent" xml:space="preserve">
<value>groupControl1</value>
@@ -153,7 +153,7 @@
<data name="edFile.Location" type="System.Drawing.Point, System.Drawing">
<value>132, 36</value>
</data>
<assembly alias="DevExpress.Utils.v20.1" name="DevExpress.Utils.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<assembly alias="DevExpress.Utils.v20.1" name="DevExpress.Utils.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<data name="edFile.Properties.Buttons" type="DevExpress.XtraEditors.Controls.ButtonPredefines, DevExpress.Utils.v20.1">
<value>Ellipsis</value>
</data>
@@ -194,7 +194,7 @@
<value>edFile</value>
</data>
<data name="&gt;&gt;edFile.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.ButtonEdit, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.ButtonEdit, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;edFile.Parent" xml:space="preserve">
<value>groupControl1</value>
@@ -202,7 +202,7 @@
<data name="&gt;&gt;edFile.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<assembly alias="DevExpress.XtraEditors.v20.1" name="DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<assembly alias="DevExpress.XtraEditors.v20.1" name="DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<data name="labelControl2.AutoSizeMode" type="DevExpress.XtraEditors.LabelAutoSizeMode, DevExpress.XtraEditors.v20.1">
<value>Vertical</value>
</data>
@@ -224,7 +224,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
<value>labelControl2</value>
</data>
<data name="&gt;&gt;labelControl2.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;labelControl2.Parent" xml:space="preserve">
<value>groupControl1</value>
@@ -251,7 +251,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
<value>rbAuto</value>
</data>
<data name="&gt;&gt;rbAuto.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;rbAuto.Parent" xml:space="preserve">
<value>groupControl2</value>
@@ -278,7 +278,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
<value>rbManual</value>
</data>
<data name="&gt;&gt;rbManual.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;rbManual.Parent" xml:space="preserve">
<value>groupControl2</value>
@@ -302,7 +302,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
<value>labelControl3</value>
</data>
<data name="&gt;&gt;labelControl3.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;labelControl3.Parent" xml:space="preserve">
<value>grpManual</value>
@@ -326,7 +326,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
<value>comboSource</value>
</data>
<data name="&gt;&gt;comboSource.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;comboSource.Parent" xml:space="preserve">
<value>grpManual</value>
@@ -350,7 +350,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
<value>comboTarget</value>
</data>
<data name="&gt;&gt;comboTarget.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;comboTarget.Parent" xml:space="preserve">
<value>grpManual</value>
@@ -374,7 +374,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
<value>labelControl4</value>
</data>
<data name="&gt;&gt;labelControl4.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;labelControl4.Parent" xml:space="preserve">
<value>grpManual</value>
@@ -398,7 +398,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
<value>cbTv</value>
</data>
<data name="&gt;&gt;cbTv.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;cbTv.Parent" xml:space="preserve">
<value>grpManual</value>
@@ -422,7 +422,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
<value>cbRadio</value>
</data>
<data name="&gt;&gt;cbRadio.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;cbRadio.Parent" xml:space="preserve">
<value>grpManual</value>
@@ -446,7 +446,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
<value>labelControl5</value>
</data>
<data name="&gt;&gt;labelControl5.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;labelControl5.Parent" xml:space="preserve">
<value>grpManual</value>
@@ -473,7 +473,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
<value>labelControl6</value>
</data>
<data name="&gt;&gt;labelControl6.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;labelControl6.Parent" xml:space="preserve">
<value>grpManual</value>
@@ -521,7 +521,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
<value>comboPrNr</value>
</data>
<data name="&gt;&gt;comboPrNr.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;comboPrNr.Parent" xml:space="preserve">
<value>grpManual</value>
@@ -548,7 +548,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
<value>cbData</value>
</data>
<data name="&gt;&gt;cbData.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;cbData.Parent" xml:space="preserve">
<value>grpManual</value>
@@ -572,7 +572,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
<value>cbConsecutive</value>
</data>
<data name="&gt;&gt;cbConsecutive.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;cbConsecutive.Parent" xml:space="preserve">
<value>grpManual</value>
@@ -596,7 +596,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
<value>cbIp</value>
</data>
<data name="&gt;&gt;cbIp.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;cbIp.Parent" xml:space="preserve">
<value>grpManual</value>
@@ -620,7 +620,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
<value>cbSat</value>
</data>
<data name="&gt;&gt;cbSat.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;cbSat.Parent" xml:space="preserve">
<value>grpManual</value>
@@ -644,7 +644,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
<value>labelControl11</value>
</data>
<data name="&gt;&gt;labelControl11.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;labelControl11.Parent" xml:space="preserve">
<value>grpManual</value>
@@ -668,7 +668,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
<value>cbAntenna</value>
</data>
<data name="&gt;&gt;cbAntenna.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;cbAntenna.Parent" xml:space="preserve">
<value>grpManual</value>
@@ -692,7 +692,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
<value>cbCable</value>
</data>
<data name="&gt;&gt;cbCable.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;cbCable.Parent" xml:space="preserve">
<value>grpManual</value>
@@ -716,7 +716,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
<value>labelControl9</value>
</data>
<data name="&gt;&gt;labelControl9.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;labelControl9.Parent" xml:space="preserve">
<value>grpManual</value>
@@ -740,7 +740,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
<value>cbAnalog</value>
</data>
<data name="&gt;&gt;cbAnalog.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;cbAnalog.Parent" xml:space="preserve">
<value>grpManual</value>
@@ -764,7 +764,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
<value>cbDigital</value>
</data>
<data name="&gt;&gt;cbDigital.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;cbDigital.Parent" xml:space="preserve">
<value>grpManual</value>
@@ -788,7 +788,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
<value>lblTargetInfo</value>
</data>
<data name="&gt;&gt;lblTargetInfo.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;lblTargetInfo.Parent" xml:space="preserve">
<value>grpManual</value>
@@ -812,7 +812,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
<value>lblSourceInfo</value>
</data>
<data name="&gt;&gt;lblSourceInfo.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;lblSourceInfo.Parent" xml:space="preserve">
<value>grpManual</value>
@@ -836,7 +836,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
<value>labelControl7</value>
</data>
<data name="&gt;&gt;labelControl7.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;labelControl7.Parent" xml:space="preserve">
<value>grpManual</value>
@@ -863,7 +863,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
<value>btnApply</value>
</data>
<data name="&gt;&gt;btnApply.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;btnApply.Parent" xml:space="preserve">
<value>grpManual</value>
@@ -890,7 +890,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
<value>grpManual</value>
</data>
<data name="&gt;&gt;grpManual.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;grpManual.Parent" xml:space="preserve">
<value>groupControl2</value>
@@ -917,7 +917,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
<value>btnOk</value>
</data>
<data name="&gt;&gt;btnOk.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;btnOk.Parent" xml:space="preserve">
<value>$this</value>
@@ -944,7 +944,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
<value>btnClose</value>
</data>
<data name="&gt;&gt;btnClose.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;btnClose.Parent" xml:space="preserve">
<value>$this</value>
@@ -971,7 +971,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
<value>linkWiki</value>
</data>
<data name="&gt;&gt;linkWiki.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.HyperlinkLabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.HyperlinkLabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;linkWiki.Parent" xml:space="preserve">
<value>groupControl1</value>
@@ -995,7 +995,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...)</value>
<value>groupControl1</value>
</data>
<data name="&gt;&gt;groupControl1.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;groupControl1.Parent" xml:space="preserve">
<value>$this</value>
@@ -1026,7 +1026,7 @@ This step can be repeated as needed.</value>
<value>labelControl10</value>
</data>
<data name="&gt;&gt;labelControl10.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;labelControl10.Parent" xml:space="preserve">
<value>groupControl2</value>
@@ -1054,7 +1054,7 @@ This step can be repeated as needed.</value>
<value>labelControl8</value>
</data>
<data name="&gt;&gt;labelControl8.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;labelControl8.Parent" xml:space="preserve">
<value>groupControl2</value>
@@ -1078,7 +1078,7 @@ This step can be repeated as needed.</value>
<value>groupControl2</value>
</data>
<data name="&gt;&gt;groupControl2.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;groupControl2.Parent" xml:space="preserve">
<value>$this</value>
@@ -1105,6 +1105,6 @@ This step can be repeated as needed.</value>
<value>ReferenceListForm</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
</root>

View File

@@ -145,7 +145,7 @@
<value>0, 14, 0, 14</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>DevExpress.XtraWaitForm.WaitForm, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraWaitForm.WaitForm, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>WaitForm1</value>
@@ -227,7 +227,7 @@
<value>Horizontal</value>
</data>
<data name="&gt;&gt;progressPanel1.Type" xml:space="preserve">
<value>DevExpress.XtraWaitForm.ProgressPanel, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
<value>DevExpress.XtraWaitForm.ProgressPanel, DevExpress.XtraEditors.v20.1, Version=20.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="progressPanel1.Appearance.GradientMode" type="System.Drawing.Drawing2D.LinearGradientMode, System.Drawing">
<value>Horizontal</value>

View File

@@ -0,0 +1,409 @@
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Windows.Forms;
using DevExpress.XtraEditors.Repository;
using DevExpress.XtraEditors.ViewInfo;
using DevExpress.XtraGrid;
using DevExpress.XtraGrid.Registrator;
using DevExpress.XtraGrid.Views.Base;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraGrid.Views.Grid.ViewInfo;
using DevExpress.XtraPrinting;
namespace ChanSort
{
[ToolboxItem(true)]
public class XGridControl : GridControl
{
private bool eventsInstalled;
private readonly Timer timerEditDelay;
#region ctor
public XGridControl()
{
this.advancedMouseHandling = true;
this.timerEditDelay = new Timer();
this.timerEditDelay.Interval = 250;
this.timerEditDelay.Tick += this.timerEditDelay_Tick;
}
#endregion
#region AdvancedMouseHandling
[DefaultValue(true)]
public bool AdvancedMouseHandling
{
get { return advancedMouseHandling; }
set
{
if (value == this.advancedMouseHandling) return;
advancedMouseHandling = value;
this.InstallEvents(this.advancedMouseHandling);
}
}
#endregion
[DefaultValue(null)]
public string LayoutId { get; set; }
[DefaultValue(true)]
public bool AllowDefaultLoadingLayout { get; set; } = true;
#region PrintHeader
[DefaultValue(null)]
public string PrintHeader { get; set; }
[DefaultValue(null)]
public string PrintHeader2 { get; set; }
#endregion
#region CreateDefaultView()
protected override BaseView CreateDefaultView()
{
return CreateView("XGridView");
}
#endregion
#region RegisterAvailableViewsCore()
protected override void RegisterAvailableViewsCore(InfoCollection collection)
{
base.RegisterAvailableViewsCore(collection);
collection.Add(new XGridViewInfoRegistrator());
}
#endregion
#region OnEndInit()
protected override void OnEndInit()
{
base.OnEndInit();
if (this.AdvancedMouseHandling)
this.InstallEvents(true);
}
#endregion
#region InstallEvents()
private void InstallEvents(bool install)
{
if (install == this.eventsInstalled) return;
GridView view = (GridView) this.MainView;
if (install)
{
view.MouseDown += gview_MouseDown;
view.MouseUp += gview_MouseUp;
view.ShowingEditor += gview_ShowingEditor;
}
else
{
view.MouseDown -= gview_MouseDown;
view.MouseUp -= gview_MouseUp;
view.ShowingEditor -= gview_ShowingEditor;
}
this.eventsInstalled = install;
}
#endregion
#region IsInputKey()
protected override bool IsInputKey(Keys keyData)
{
if (keyData == (Keys.Control | Keys.C))
return false;
return base.IsInputKey(keyData);
}
#endregion
#region OnHandleDestroyed()
protected override void OnHandleDestroyed(EventArgs e)
{
base.OnHandleDestroyed(e);
this.RaiseSaveLayout();
}
#endregion
#region Dispose()
protected override void Dispose(bool disposing)
{
if (disposing)
{
this.timerEditDelay.Dispose();
this.RaiseSaveLayout();
}
base.Dispose(disposing);
}
#endregion
#region Layout handling - RaiseLoadLayout(), RaiseSaveLayout()
/// <summary>
/// Raises the LoadLayout event. Requires that PopulateGrid() has been called before
/// </summary>
/// <returns>true if an eventhandler is installed </returns>
public bool RaiseLoadLayout()
{
GridLayoutEventArgs args = new GridLayoutEventArgs(this, this.LayoutId);
try
{
XGridView view = this.MainView as XGridView;
view?.SaveInitialLayout();
this.LoadingLayout?.Invoke(this, args);
if (!args.Handled && this.AllowDefaultLoadingLayout)
DefaultLoadingLayout?.Invoke(this, args);
}
catch { }
return args.Handled;
}
/// <summary>
/// Raises the SaveLayout event handler to save the grid's column width and ordering.
/// Requires that PopulateGrid() has been called before
/// </summary>
/// <returns>true if an event handler is installed</returns>
public bool RaiseSaveLayout()
{
GridLayoutEventArgs args = new GridLayoutEventArgs(this, this.LayoutId);
try
{
this.SavingLayout?.Invoke(this, args);
if (!args.Handled)
DefaultSavingLayout?.Invoke(this, args);
}
catch { }
return args.Handled;
}
#endregion
#region events DefaultSavingLayout, DefaultLoadingLayout, SavingLayout, LoadingLayout
public delegate void GridLayoutEventHandler(object sender, GridLayoutEventArgs e);
/// <summary>
/// This delegate gets called, when no SavingLayout handler is installed on the GridAdapter instance
/// </summary>
public static GridLayoutEventHandler DefaultSavingLayout;
/// <summary>
/// Gets called when the grid should load its layout
/// </summary>
public event GridLayoutEventHandler SavingLayout;
/// <summary>
/// This delegate gets called, when no LoadingLayout handler is installed on the GridAdapter instance
/// </summary>
public static GridLayoutEventHandler DefaultLoadingLayout;
/// <summary>
/// Gets called when the grid should save its layout
/// </summary>
public event GridLayoutEventHandler LoadingLayout;
private bool dontOpenEditor;
private bool advancedMouseHandling;
internal bool isExporting;
#endregion
#region gview_MouseDown, gview_MouseUp, timerEditDelay_Tick, gview_ShowingEditor
// these 4 event handler in combination override the default row-selection and editor-opening
// behavior of the grid control.
protected override void OnEnter(EventArgs e)
{
this.dontOpenEditor = MouseButtons != 0 && this.RectangleToScreen(this.Bounds).Contains(MousePosition);
base.OnEnter(e);
}
private void gview_MouseDown(object sender, MouseEventArgs e)
{
XGridView view = (XGridView)sender;
int focusedRowHandle = view.FocusedRowHandle;
var hit = view.CalcHitInfo(e.Location);
if (!view.IsDataRow(hit.RowHandle) && hit.RowHandle != NewItemRowHandle)
return;
if (e.Button == MouseButtons.Left)
{
if (ModifierKeys == Keys.None)
{
if (hit.RowHandle != focusedRowHandle)
{
// diese Zeile hat das Problem, dass wenn eine teilweise am unteren Rand sichtbare Zeile gewählt wird, die TopRow 2x geändert wird und man dann eine andere Zeile markiert
//SelectFocusedRow(view, hit.RowHandle);
this.BeginInvoke((Action)(() => view.SelectRow(hit.RowHandle)));
}
else if (e.Clicks == 1 && AllowOpenEditorOnMouseDown(view, hit, focusedRowHandle))
{
this.dontOpenEditor = false;
return;
}
this.timerEditDelay.Start();
}
else
{
if (ModifierKeys == Keys.Control && !view.IsRowSelected(hit.RowHandle))
this.BeginInvoke((Action)(() => view.SelectRow(hit.RowHandle)));
}
}
else if (e.Button == MouseButtons.Right)
{
if (!view.IsRowSelected(hit.RowHandle))
SelectFocusedRow(view, hit.RowHandle);
}
this.dontOpenEditor = true;
}
private bool AllowOpenEditorOnMouseDown(XGridView view, GridHitInfo gridHit, int focusedRowHandle)
{
if (gridHit == null || gridHit.Column == null || !(gridHit.Column.RealColumnEdit is RepositoryItemTextEdit))
return true;
// grid focused and cell focused
if (!this.dontOpenEditor && gridHit.RowHandle == focusedRowHandle && gridHit.Column == view.FocusedColumn)
return true; // !this.dontOpenEditor;
bool buttonVisible;
if (view.OptionsView.ShowButtonMode == ShowButtonModeEnum.ShowAlways)
buttonVisible = true;
else if (view.OptionsView.ShowButtonMode == ShowButtonModeEnum.ShowForFocusedRow)
buttonVisible = gridHit.RowHandle == focusedRowHandle;
else if (view.OptionsView.ShowButtonMode == ShowButtonModeEnum.ShowForFocusedCell)
buttonVisible = gridHit.RowHandle == focusedRowHandle && gridHit.Column == view.FocusedColumn;
else
buttonVisible = false;
if (!buttonVisible)
return false;
var gridViewInfo = view.ViewInfo;
var cellInfo = gridViewInfo.GetGridCellInfo(view.FocusedRowHandle, view.FocusedColumn);
ButtonEditViewInfo editViewInfo = cellInfo.ViewInfo as ButtonEditViewInfo;
if (editViewInfo == null)
return !this.dontOpenEditor; // standard text edit (w/o buttons)
var point = gridHit.HitPoint;
point.Offset(-cellInfo.Bounds.Left, -cellInfo.Bounds.Top);
var hit = editViewInfo.CalcHitInfo(point);
return hit.HitTest == EditHitTest.Button || hit.HitTest == EditHitTest.Button2;
}
private void gview_MouseUp(object sender, MouseEventArgs e)
{
this.timerEditDelay.Stop();
this.BeginInvoke((Action)(() => { this.dontOpenEditor = false; }));
}
private void timerEditDelay_Tick(object sender, EventArgs e)
{
this.timerEditDelay.Stop();
this.dontOpenEditor = false;
if (this.MainView != null)
this.MainView.ShowEditor();
}
private void gview_ShowingEditor(object sender, CancelEventArgs e)
{
if (this.dontOpenEditor)
e.Cancel = true;
}
#endregion
#region SelectFocusedRow()
private void SelectFocusedRow(GridView grid, int rowHandle)
{
try
{
grid.BeginSelection();
grid.ClearSelection();
grid.FocusedRowHandle = rowHandle;
}
catch (DevExpress.Utils.HideException) { }
finally
{
grid.SelectRow(grid.FocusedRowHandle);
grid.EndSelection();
}
}
#endregion
#region ShowExportDialog()
public void ShowExportDialog()
{
using (var dlg = new SaveFileDialog())
{
dlg.Title = "Tabelle exportieren";
dlg.RestoreDirectory = true;
dlg.AddExtension = true;
dlg.DefaultExt = ".xlsx";
dlg.Filter = "Excel Datei|*.xlsx|PDF-Dokument|*.pdf|CSV-Tabelle|*.csv|Rich-Text|*.rtf";
dlg.FilterIndex = 1;
dlg.AutoUpgradeEnabled = true;
dlg.CheckPathExists = true;
dlg.ValidateNames = true;
if (dlg.ShowDialog() != DialogResult.OK)
return;
try
{
this.isExporting = true;
switch ((Path.GetExtension(dlg.FileName) ?? "").ToLower())
{
case ".xlsx":
this.ExportToXlsx(dlg.FileName);
break;
case ".csv":
this.ExportToCsv(dlg.FileName);
break;
case ".pdf":
this.ExportToPdf(dlg.FileName);
break;
case ".rtf":
this.ExportToRtf(dlg.FileName);
break;
default:
TextExportOptions opt = new TextExportOptions();
opt.Separator = "\t";
this.ExportToText(dlg.FileName, opt);
break;
}
}
finally
{
this.isExporting = false;
}
ProcessStartInfo psi = new ProcessStartInfo();
psi.UseShellExecute = true;
psi.FileName = dlg.FileName;
Process.Start(psi);
}
}
#endregion
#region OnKeyDown()
protected override void OnKeyDown(KeyEventArgs e)
{
if (e.KeyData == (Keys.Add | Keys.Control))
e.Handled = ((XGridView) this.MainView).SmartExpand();
else if (e.KeyData == (Keys.Subtract | Keys.Control))
e.Handled = ((XGridView) this.MainView).SmartCollapse();
base.OnKeyDown(e);
}
#endregion
#region OnSizeChanged() / OnLayout()
protected override void OnSizeChanged(EventArgs e)
{
// attempt to work around a windows bug/limitation with kernel stack overflow when controls are nested too deeply:
// http://blogs.msdn.com/b/alejacma/archive/2008/11/20/controls-won-t-get-resized-once-the-nesting-hierarchy-of-windows-exceeds-a-certain-depth-x64.aspx?Redirected=true
if (this.IsHandleCreated)
this.BeginInvoke((Action)(() => base.OnSizeChanged(e)));
else
base.OnSizeChanged(e);
}
#endregion
}
}

View File

@@ -0,0 +1,272 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Text;
using System.Xml;
using DevExpress.Data;
using DevExpress.XtraGrid.Columns;
using DevExpress.XtraGrid.Views.Grid;
namespace ChanSort
{
#region class GridLayoutEventArgs
public class GridLayoutEventArgs : EventArgs
{
public readonly XGridControl GridControl;
public readonly XGridView GridView;
public readonly string ControlId;
public bool Handled = false;
public GridLayoutEventArgs(XGridControl gc, string controlId)
{
this.GridControl = gc;
this.GridView = (XGridView)gc.MainView;
this.ControlId = controlId;
}
}
#endregion
public partial class XGridView
{
#region enum ColumnOptions
[Flags]
public enum ColumnOptions
{
None = 0x00,
OrderAndVisibility = 0x01,
SortingAndGrouping = 0x02,
All = 0x03,
}
#endregion
#region class GridColumnInfo
internal class GridColumnInfo
{
public readonly string FieldName;
public int Width;
public int VisibleIndex;
public int InvisibleIndex;
public int SortIndex;
public ColumnSortOrder SortOrder;
public int GroupIndex;
public GridColumnInfo(string fieldName)
{
this.FieldName = fieldName;
this.SortIndex = -1;
this.GroupIndex = -1;
this.InvisibleIndex = -1;
}
}
#endregion
public static float ColumnWidthDpiScale = 1f; // used to work around the autoscaling of DevExpress 18.1 grid column width
#region SaveLayoutToXml()
/// <summary>
/// Save column widths and visible indices to a XmlWriter
/// </summary>
public string SaveLayoutToXml()
{
var gridView = this;
var sb = new StringBuilder();
var settings = new XmlWriterSettings();
settings.OmitXmlDeclaration = true;
using var xmlWriter = XmlWriter.Create(sb, settings);
xmlWriter.WriteStartElement("GridColumns");
xmlWriter.WriteAttributeString("widthScale", ColumnWidthDpiScale.ToString(NumberFormatInfo.InvariantInfo));
int count = gridView.Columns.Count;
for (int i = 0; i < count; i++)
{
GridColumn col = gridView.Columns[i];
xmlWriter.WriteRaw("\r\n");
xmlWriter.WriteStartElement("Column");
xmlWriter.WriteAttributeString("FieldName", col.FieldName);
xmlWriter.WriteElementString("GroupIndex", col.GroupIndex.ToString());
xmlWriter.WriteElementString("VisibleIndex", col.VisibleIndex.ToString());
xmlWriter.WriteElementString("InvisibleIndex", this.columnOrder.IndexOf(col).ToString());
xmlWriter.WriteElementString("Width", col.Width.ToString());
xmlWriter.WriteElementString("SortIndex", col.SortIndex.ToString());
xmlWriter.WriteElementString("SortOrder", col.SortOrder.ToString());
xmlWriter.WriteEndElement();
}
xmlWriter.WriteRaw("\r\n");
xmlWriter.WriteEndElement();
xmlWriter.Flush();
return sb.ToString();
}
#endregion
#region LoadLayoutFromXml()
/// <summary>
/// Load column widths and visible indices from a XmlReader
/// </summary>
public void LoadLayoutFromXml(string xml, ColumnOptions options = ColumnOptions.All)
{
if (string.IsNullOrEmpty(xml))
return;
var gridView = this;
XmlDocument doc = new XmlDocument();
doc.Load(new StringReader(xml));
XmlNode root = doc.FirstChild;
List<GridColumnInfo> cols = new List<GridColumnInfo>();
// gültiges Root-Element prüfen
if (!root.Name.Equals("GridColumns"))
return;
var ws = root.Attributes?["widthScale"]?.Value;
var storedScale = ws != null ? float.Parse(ws, CultureInfo.InvariantCulture) : ColumnWidthDpiScale;
float scaleCorrection = gridView.GridControl.ScaleFactor.Width / storedScale;
for (XmlNode node = root.FirstChild; node != null; node = node.NextSibling)
{
var ci = ReadColumnInfoAndSetWidth(node, gridView, scaleCorrection);
if (ci != null)
cols.Add(ci);
}
//gridView.BeginUpdate();
if ((options & ColumnOptions.OrderAndVisibility) != 0)
RestoreVisibleOrder(cols);
if ((options & ColumnOptions.SortingAndGrouping) != 0)
RestoreGroupingAndSorting(gridView, cols);
//gridView.EndUpdate();
}
#endregion
#region ReadColumnInfoAndSetWidth()
private static GridColumnInfo ReadColumnInfoAndSetWidth(XmlNode node, GridView gridView, float scaleCorrection)
{
if (!node.Name.Equals("Column"))
return null;
var fieldName = node.Attributes["FieldName"].Value;
var col = gridView.Columns[fieldName];
var ci = new GridColumnInfo(fieldName);
var conv = new EnumConverter(typeof(ColumnSortOrder));
for (XmlNode item = node.FirstChild; item != null; item = item.NextSibling)
{
if (item.Name.Equals("Width"))
{
ci.Width = Convert.ToInt32(item.InnerText);
if (col != null)
col.Width = (int) Math.Round(ci.Width * scaleCorrection, 0);
}
else if (item.Name.Equals("VisibleIndex"))
ci.VisibleIndex = Convert.ToInt32(item.InnerText);
else if (item.Name == "InvisibleIndex")
ci.InvisibleIndex = Convert.ToInt32(item.InnerText);
else if (item.Name.Equals("SortIndex"))
ci.SortIndex = Convert.ToInt32(item.InnerText);
else if (item.Name.Equals("SortOrder"))
ci.SortOrder = (ColumnSortOrder) conv.ConvertFromString(item.InnerText);
else if (item.Name.Equals("GroupIndex"))
ci.GroupIndex = int.Parse(item.InnerText);
}
return ci;
}
#endregion
#region RestoreVisibleOrder()
internal void RestoreVisibleOrder(List<GridColumnInfo> cols)
{
var gridView = this;
var frow = gridView.FocusedRowHandle;
var fcol = gridView.FocusedColumn;
gridView.BeginUpdate();
gridView.ClearGrouping();
var oldVisibleColumns = this.VisibleColumns.ToList();
foreach (GridColumn col in gridView.Columns)
col.VisibleIndex = -1;
// place new column based on the original order
int visIndex = 0;
var newVisList = new List<GridColumn>();
bool hasInvisOrder = cols.Any(ci => ci.InvisibleIndex >= 0);
var visibleColumns = new List<GridColumn>();
foreach (GridColumn col in this.columnOrder)
{
if (!cols.Any(c => c.FieldName == col.FieldName && (c.InvisibleIndex >= 0 || c.VisibleIndex >= 0)))
{
newVisList.Add(col);
if (oldVisibleColumns.Contains(col))
visibleColumns.Add(col);
}
else
{
while (visIndex < cols.Count)
{
var ci = cols.FirstOrDefault(c => hasInvisOrder ? c.InvisibleIndex == visIndex : c.VisibleIndex == visIndex);
visIndex++;
var visCol = ci != null ? this.Columns[ci.FieldName] : null;
if (visCol != null)
{
newVisList.Add(visCol);
if (ci.VisibleIndex >= 0)
visibleColumns.Add(visCol);
break;
}
}
}
}
visIndex = 0;
foreach (var col in newVisList)
col.VisibleIndex = visibleColumns.Contains(col) ? visIndex++ : -1;
this.columnOrder.Clear();
this.columnOrder.AddRange(newVisList);
gridView.FocusedRowHandle = frow;
if (fcol != null && fcol.Visible)
gridView.FocusedColumn = fcol;
gridView.EndUpdate();
}
#endregion
#region RestoreGroupingAndSorting()
private static void RestoreGroupingAndSorting(GridView gridView, List<GridColumnInfo> cols)
{
bool mayGroup = gridView.OptionsCustomization.AllowGroup;
int groupCount = 0;
List<GridColumnInfo> sortColumns = new List<GridColumnInfo>();
foreach (GridColumnInfo ci in cols.Where(ci => ci.SortIndex >= 0 || ci.GroupIndex >= 0).OrderBy(ci => ci.GroupIndex + (ci.SortIndex + 1) * 1000))
{
sortColumns.Add(ci);
if (ci.GroupIndex >= 0)
++groupCount;
}
GridColumnSortInfo[] sortInfo = new GridColumnSortInfo[sortColumns.Count];
int i = 0;
foreach (var ci in sortColumns)
sortInfo[i++] = new GridColumnSortInfo(gridView.Columns[ci.FieldName], ci.SortOrder);
gridView.SortInfo.ClearAndAddRange(sortInfo, mayGroup ? groupCount : 0);
gridView.OptionsView.ShowGroupPanel |= mayGroup && groupCount > 0;
}
#endregion
}
}

View File

@@ -0,0 +1,271 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Windows.Forms;
using ChanSort.Api;
using DevExpress.XtraEditors;
using DevExpress.XtraGrid;
using DevExpress.XtraGrid.Columns;
using DevExpress.XtraGrid.Registrator;
using DevExpress.XtraGrid.Views.Base;
using DevExpress.XtraGrid.Views.Base.Handler;
using DevExpress.XtraGrid.Views.Base.ViewInfo;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraGrid.Views.Grid.Handler;
using DevExpress.XtraGrid.Views.Grid.ViewInfo;
namespace ChanSort
{
public partial class XGridView : GridView
{
private byte[] initialLayout;
private readonly List<GridColumn> columnOrder = new List<GridColumn>();
protected override string ViewName => "XGridView";
private int expandLevel;
#region ctor
public XGridView() : this(null) { }
public XGridView(GridControl grid) : base(grid)
{
this.OptionsPersistence = XGridView.ColumnOptions.All;
this.AllowSmartExpand = true;
}
#endregion
public void StoreVisibleOrder()
{
// place invisible column based on the absolute order
this.columnOrder.Clear();
int visIndex = 0;
var comparer = new DelegateComparer<GridColumn>((a, b) => Tools.FirstNotDefault(a.VisibleIndex.CompareTo(b.VisibleIndex), a.AbsoluteIndex.CompareTo(b.AbsoluteIndex)));
var cleanVisList = this.Columns.Where(c => c.VisibleIndex >= 0).OrderBy(c => c, comparer).ToList();
foreach (GridColumn col in this.Columns)
{
if (!col.Visible)
this.columnOrder.Add(col);
else
{
this.columnOrder.Add(cleanVisList[visIndex]);
visIndex++;
}
}
}
public override void EndInit()
{
base.EndInit();
this.StoreVisibleOrder();
}
protected override void SetColumnVisibleIndex(GridColumn column, int newValue)
{
int oldVisIndex = column.VisibleIndex;
int newIdx = newValue > column.VisibleIndex ? newValue - 1 : newValue;
base.SetColumnVisibleIndex(column, newValue);
if (newIdx < 0 || oldVisIndex == newIdx)
{
// hide or no change: keep as-is
}
else if (newIdx >= 0)
{
// move
columnOrder.Remove(column);
if (newIdx == 0)
columnOrder.Insert(0, column);
else
{
var afterCol = this.VisibleColumns[column.VisibleIndex - 1];
columnOrder.Insert(columnOrder.IndexOf(afterCol) + 1, column);
}
}
}
protected override void OnColumnDeleted(GridColumn column)
{
this.columnOrder.Remove(column);
base.OnColumnDeleted(column);
}
protected override void OnColumnAdded(GridColumn column)
{
base.OnColumnAdded(column);
if (this.IsInitialized)
this.StoreVisibleOrder();
}
public void SetColumnVisibility(GridColumn column, bool visible)
{
if (column.Visible == visible)
return;
if (!visible)
{
column.Visible = false;
return;
}
int idx = 0;
foreach (var col in this.columnOrder)
{
if (col == column)
{
col.VisibleIndex = idx;
return;
}
if (col.Visible)
++idx;
}
// fallback
column.VisibleIndex = this.VisibleColumns.Count;
}
internal new GridViewInfo ViewInfo => base.ViewInfo;
#region AllowSmartExpand
[Browsable(true), DefaultValue(true)]
public bool AllowSmartExpand { get; set; }
#endregion
#region OptionsPersistence
[Browsable(true), Description("Options for persisting customization details")]
public ColumnOptions OptionsPersistence { get; set; }
#endregion
#region GetRowCellValue()
public override object GetRowCellValue(int rowHandle, GridColumn column)
{
// Workaround for "#N/A" text when exporting to Excel
var val = base.GetRowCellValue(rowHandle, column);
if (val != null && ((XGridControl)this.GridControl).isExporting)
{
var type = val.GetType();
if (!type.IsPrimitive && type != typeof(decimal) && type != typeof(DateTime))
return val.ToString();
}
return val;
}
#endregion
#region SaveInitialLayout(), RestoreInitialLayout()
internal void SaveInitialLayout()
{
if (this.initialLayout != null) return;
using (var strm = new MemoryStream())
{
this.SaveLayoutToStream(strm);
this.initialLayout = strm.GetBuffer();
}
if (this.columnOrder.Count == 0)
this.StoreVisibleOrder();
}
public void RestoreInitialLayout()
{
if (this.initialLayout == null) return;
using (var strm = new MemoryStream(this.initialLayout))
this.RestoreLayoutFromStream(strm);
this.StoreVisibleOrder();
}
#endregion
#region SmartExpand(), SmartCollapse()
public bool SmartExpand()
{
if (this.expandLevel >= this.GroupCount)
return false;
this.ExpandGroupLevel(this.expandLevel, false);
++expandLevel;
return true;
}
public bool SmartCollapse()
{
if (this.expandLevel == 0)
return false;
--expandLevel;
this.CollapseGroupLevel(this.expandLevel, false);
return true;
}
#endregion
#region ShowEditor()
public override void ShowEditor()
{
base.ShowEditor();
if (this.ActiveEditor == null)
return;
var textEdit = this.ActiveEditor as TextEdit;
if (textEdit != null)
textEdit.KeyDown += textEdit_KeyDown;
if (!this.IsNewItemRow(this.FocusedRowHandle))
return;
bool cleared = false;
if (this.SortedColumns.Count > 0)
{
this.ClearSorting();
cleared = true;
}
if (this.GroupCount > 0)
{
this.ClearGrouping();
cleared = true;
}
if (cleared)
this.GridControl.BeginInvoke((Action)this.EditFocusedRow);
}
#endregion
#region HideEditor()
public override void HideEditor()
{
var textEdit = this.ActiveEditor as TextEdit;
if (textEdit != null)
textEdit.KeyDown -= textEdit_KeyDown;
base.HideEditor();
}
#endregion
#region textEdit_KeyDown
private void textEdit_KeyDown(object sender, KeyEventArgs e)
{
var textEdit = (TextEdit)sender;
if (textEdit.SelectionStart == 0 && textEdit.SelectionLength == textEdit.Text.Length)
{
if (e.KeyData == Keys.Left)
textEdit.SelectionStart += textEdit.SelectionLength;
else if (e.KeyData == Keys.Right)
textEdit.SelectionLength = 0;
}
}
#endregion
#region EditFocusedRow()
private void EditFocusedRow()
{
this.FocusedRowHandle = GridControl.NewItemRowHandle;
this.ShowEditor();
}
#endregion
}
#region class XGridViewInfoRegistrator
internal class XGridViewInfoRegistrator : GridInfoRegistrator
{
public override string ViewName => "XGridView";
public override BaseView CreateView(GridControl grid) => new XGridView(grid);
public override BaseViewInfo CreateViewInfo(BaseView view) => new GridViewInfo(view as XGridView);
public override BaseViewHandler CreateHandler(BaseView view) => new GridHandler(view as XGridView);
}
#endregion
}

View File

@@ -1,7 +1,20 @@
ChanSort Change Log
===================
2020-05-15
2020-07-12
- added UTF-16 Big Endian and Little Endian options to character set menu
- Samsung .zip loader: auto-detect UTF-16 endianness and allow to change encoding after loading to UTF-16 LE/BE
(some files use Little Endian format and show chinese characters when loaded with the default Big Endian format)
- Customized column order is now preserved across file formats and input sources
- Note about LG WebOS 5 files (e.g. CX series):
It is still unclear what exact firmware version and conditions are needed to properly import a channel list.
Users reported about varying success of an import, reaching from not possible at all, only after a factory reset,
importing the same list twice or working just fine.
The problems is not related to ChanSort, as it can be reproduced by exporting a list to USB, swapping channels
in the TV's menu and trying to loading the previously exported list back. The TV may keep the swapped channels and
show inconsistencies between the channel list in the settings menu and the EPG.
2020-05-15 (inofficial)
- fixed more issues with the LG WebOS 5.0 format
2020-05-11

View File

@@ -22,8 +22,8 @@ for %%l in (%languages%) do (
)
mkdir "%target%\ReferenceLists" 2>nul
xcopy /sidy ChanSort\ReferenceLists\* "%target%\ReferenceLists"
xcopy /y ..\readme.md "%target%\readme.txt"
xcopy /y changelog.md "%target%\changelog.txt"
copy /y ..\readme.md "%target%\readme.txt"
copy /y changelog.md "%target%\changelog.txt"
for %%f in (Utils Data Data.Desktop DataAccess Printing XtraPrinting XtraReports XtraEditors XtraBars XtraGrid XtraLayout XtraTreeList) do call :copyDll %%f
call :CodeSigning