From a77a1ffa13dfdb8772e105b4708f8c49e152da40 Mon Sep 17 00:00:00 2001 From: Horst Beham Date: Mon, 26 Jul 2021 22:23:24 +0200 Subject: [PATCH] - cleaned up readme (moved file formats to separate file) - improved performance for Linux/wine/winetricks --- readme.md | 137 +++++++-------------------- readme_de.md | 136 +++++++------------------- source/ChanSort.sln | 2 + source/ChanSort/ChanSort.csproj | 1 + source/ChanSort/MainForm.Designer.cs | 6 ++ source/ChanSort/MainForm.cs | 54 ++++++++--- source/ChanSort/MainForm.resx | 21 ++-- source/ChanSort/Program.cs | 2 +- source/ChanSort/Win32.cs | 34 +++++++ source/changelog.md | 5 +- source/fileformats.md | 97 +++++++++++++++++++ source/fileformats_de.md | 94 ++++++++++++++++++ 12 files changed, 363 insertions(+), 226 deletions(-) create mode 100644 source/ChanSort/Win32.cs create mode 100644 source/fileformats.md create mode 100644 source/fileformats_de.md diff --git a/readme.md b/readme.md index 0e84a27..20b1621 100644 --- a/readme.md +++ b/readme.md @@ -9,7 +9,7 @@ Links About ChanSort -------------- -ChanSort is a Windows application that allows you to reorder your TV's channel list. +ChanSort is a PC application that allows you to reorder your TV's channel list. Most modern TVs can transfer channel lists via USB stick, which you can plug into your PC. ChanSort supports various file formats from Samsung, LG, Panasonic, Sony, Philips, Hisense, Toshiba, Grundig, Sharp, Dyon, Blaupunkt, SatcoDX (used by ITT, Medion, Nabo, ok., PEAQ, Schaub-Lorenz, Silva-Schneider, Telefunken), @@ -22,10 +22,11 @@ Features - Reorder channels (change numbers directly, move up/down, drag&drop, double-click) - Use another channel list as a reference to apply the same ordering - Multi-selection for editing multiple channels at once +- Single-list view (showing assigned channels first and then all unassigned channels) - Side-by-side view of new/sorted list and original/complete list (similar to playlist and library) - Rename or delete channels - Manage favorites, parental lock, channel skipping (when zapping), channel hiding -- User interface in English, German, Spanish, and partially in Turkish, Portuguese and Russian +- User interface in English, German, Spanish, Turkish, Portuguese, Russian and Romanian - Unicode character support for channel names (Latin, Cyrillic, Greek, ...) NOT supported: @@ -45,116 +46,46 @@ Hisense is the only manufacturer who provided technical information and a test d System requirements ------------------- -- [Microsoft .NET Framework 4.8](https://dotnet.microsoft.com/download/dotnet-framework) - (When running under Linux, you need Winetricks, select a 32bit wineprefix and install the "dotnet48" package) -- [Microsoft Visual C++ 2010 Redistributable Package (x86)](http://www.microsoft.com/en-us/download/details.aspx?id=8328) - required to edit SQLite lists (Hisense, Panasonic, Toshiba and Samsung .zip format) -- USB stick/SD-card to transfer the channel list between your TV and PC (FAT32 file system recommended) +**Windows**: +- Windows 7 SP1, Windows 8.1, Windows 10 v1606 or later, Windows 11 (with x86, x64 or ARM CPU) +- [Microsoft .NET Framework 4.8](https://dotnet.microsoft.com/download/dotnet-framework) +- The .NET FW 4.8 does NOT work with Windows 7 without SP1, Windows 8 or Windows 10 prior to v1606 +**Linux**: +- wine (sudo apt-get install wine) +- winetricks (sudo apt-get install winetricks) +- start winetricks, select or create a wineprefix (32 bit or 64 bit), select + "Install Windows DLL or component" and install the "dotnet48" package and ignore dozens of message boxes +- right-click on ChanSort.exe and select "open with", "all applications", "A wine application" + +**Hardware**: +- USB stick/SD-card to transfer the channel list between your TV and PC. A stick <= 32 GB with FAT32 file system +is STRONGLY recommended. (Some TVs write gargabe to NTFS and don't support exFAT at all) Supported TV models ------------------- - -**Samsung** -- .scm files: B (2009)*, B (2013), C, D, E, F, H, J series -- .zip files (Tizen OS): H, J, K, M, N and Q, R series - -\*: The "clone.bin" format is not supported. In the "*.scm" format -the "Air Analog"-list of the 2009 B-series doesn't support all -editing features due to a lack of test files. - -Instructions for transferring the channel list can be found on: -https://github.com/PredatH0r/ChanSort/wiki/Samsung - -**LG** -- Series based on NetCast OS exporting a xx\*.TLL file: - CS, DM, LA, LB\*, LD, LE, LF, LH, LK, LM+, LN, LP#, LS, LT, LV, LW, LX, PM, PN, PT, UB\* -- Series based on webOS 2-5 exporting a GlobalClone00001.TLL file - -\*: Some devices behave erroneously due to firmware issues. -+: See system requirements for LM-series. xxLM640T is not supported due to its firmware limitations. -\#: Only satellite channels supported. - -Models with the NetCast operating system don't have the export/import function in the menu. Instead you need to press+hold the -settings button on the remote control until the settings disappear again, then enter 1105 and select the "TV Link Loader" menu. -With the latest firmware for the LM series the special "service remote control" is no longer needed, "1105" works now too. - -IMPORTANT: It is REQUIRED to select special options during the channel search on the TV. If you select a provider / country / -satellite specific list, it will be pre-ordered and your TV will behave erratic after an export+import. -Always select "none / other / all" and never your cable TV provider or something like "Astra 19.2E list" and blindscan. - -**Panasonic** -Most Viera models since 2011 with a channel list formats -- svl.bin -- svl.db - -**Sony** -- Android-TVs "sdb.xml" files using format "FormateVer" 1.1.0 -- KDL 2012/2014 "sdb.xml" files using "FormatVer" 1.0.0, 1.1.0 and 1.2.0 - -**Philips** -Philips uses countless incompatible file formats for various TV models. -ChanSort currently supports the formats: -- PhilipsChannelMaps\ChannelMap_45, 100, 105 and 110 -- Repair\ChannelList\channellib\\\*Table and s2channellib\\\*.dat -- Repair\CM_TPM1013E_LA_CK.xml (sometimes that file is hidden and only a .bin file is visible) - -**Hisense** -- Some older models like LTDN40D50TS use the same .csv files as Sharp. See "Sharp" for instructions. -- 2016 "Smart" models with a channel.db file, i.e. H65M5500 -- 2017 models with a servicelist.db file - -Special thanks to Hisense for supporting ChanSort with technical information and a test device! - -**Toshiba** -- Models that export a .zip file containing chmgt.db, dvbSysData.db and dvbMainData.db files. -(e.g. RL, SL, TL, UL, VL, WL, XL, YL models of series 8xx/9xx) -- Models with a settingsDB.db file - -**Grundig** -- Models that export files named dvb\*_config.xml. -- Models that export a cvt_database.dat file, e.g. 24 GHB 5944: see "Sharp" below - -**SatcoDX (OEM for ITT, Medion, Nabo, ok., PEAQ, Schaub-Lorenz, Silva-Schneider, Telefunken)** -Various brands use the same hardware for DVB-S, which exports .sdx files - -**Sharp (and some models from Dyon, Blaupunkt, Hisense, Changhong, alphatronics, JTC Genesis)** -Some of these TV share similar hardware and can export/import a .csv file allowing to change the channel order: -- DVBS_Program.csv (alongside cvt_database.dat) -- DVBS_CHANNEL_TABLE.csv (alongside dtv_cmdb\*.bin) -- MS\*_DVBS_CHANNEL_TABLE.csv (alongside MS\*_HOTELMODE_TABLE.json) - -Blaupunkt B40A148TCSFHD, B32B133T2CSHD, ... -Changhong LED32E2200ST2, ... -Dyon Live 22 Pro, Live 24 Pro, ENTER 32 Pro X, ... -Hisense LTDN40D50TS, ... -Sharp LC-xxCFE4142E, LC-xxCFF6002E, LC-xxFI5542E, LC-xxFG5242E, LC-xxUI7552E, LC-xxUI7652E, xxBJ1E, xxBJ3E, xxBJ5E, ... -Grundig 24 GHB 5944 - -Depending on the actual TV the import/export function can be part of the regular user menu, a hotel menu or a service menu -and the exported files may be different. Some models like Sharp Aquos xxBJ1E have a sub menu for exporting. You need to -export all 4 type of files for the import to work. -To access the secret hotel / service menus, there are several possible key combinations on the remote control: -hotel menu: MENU 7906 / MENU 4588 -service menu: MENU 1147 / MENU 11471147 / SOURCE 2580 -Do not make any changes in the service menu, as this could damage your TV. Only use the import/export functions. - -**VDR (Linux Video Disk Recorder)** -Supports the channels.conf file format. -Implementation for this was provided by TCr82 from the VDR project. - -**m3u (SAT>IP)** -Supports SAT>IP .m3u files with extended information holding channel names and program numbers. - -**Enigma2 (Dreambox, VU+ and many other Linux based receivers)** -Requires a local copy of the files "lamedb", "bouquets.\*" and "userbouquet.\*" from /etc/Enigma2/. - +ChanSort supports a large number of file formats, but it's impossible to tell for every brand and TV model +what file format it uses (with may even change with firmware updates). +This list gives some examples of what should be supported, but even if your model or brand is not in this list, +it may work anyway: +- [Samsung](source/fileformats.md#samsung) +- [LG](source/fileformats.md#lg) +- [Sony](source/fileformats.md#sony) +- [Hisense](source/fileformats.md#hisense) +- [Panasonic](source/fileformats.md#panasonic) +- [Philips](source/fileformats.md#philips) +- [Sharp, Dyon, Blaupunkt, Hisense, Changhong, Grundig, alphatronics, JTC Genesis, ...](source/fileformats.md#sharp) +- [Toshiba](source/fileformats.md#toshiba) +- [Grundig](source/fileformats.md#grundig) +- [SatcoDX: ITT, Medion, Nabo, ok., PEAQ, Schaub-Lorenz, Silva-Schneider, Telefunken, ...](source/fileformats.md#satcodx) +- [VDR](source/fileformats.md#vdr) +- [SAT>IP m3u](source/fileformats.md#m3u) +- [Enigma2](source/fileformats.md#enigma2) Build from source ----------------- See [build.md](source/build.md) - License (GPLv3) --------------- GNU General Public Licence, Version 3: http://www.gnu.org/licenses/gpl.html diff --git a/readme_de.md b/readme_de.md index e047c9f..ba34263 100644 --- a/readme_de.md +++ b/readme_de.md @@ -9,7 +9,7 @@ Links Über ChanSort -------------- -ChanSort ist eine Windows-Anwendung, die das Sortieren von Fernsehsenderlisten erlaubt. +ChanSort ist eine PC Anwendung, die das Sortieren von Fernsehsenderlisten erlaubt. Die meisten modernen Fernseher können Senderlisten auf einen USB-Stick übertragen, den man danach am PC anschließt. ChanSort unterstützt diverse Dateiformate von Samsung, LG, Panasonic, Sony, Philips, Hisense, Toshiba, Grundig, Sharp, Dyon, Blaupunkt, SatcoDX (verwendet von Medion, Nabo, ok., PEAQ, Schaub-Lorenz, Silva-Schneider, Telefunken), @@ -22,10 +22,11 @@ Funktionen - Umreihen von Sendern (direkte Nummerneingabe, auf/ab verschieben, drag&drop, Doppelklick) - Übernahme der Reihenfolge aus einer Vorlagedatei - Mehrfachauswahl um mehrere Sender gleichzeitig zu bearbeiten +- Einfache Listenansicht (mit eingereihten Sender zuerst und dahinter alle uneingereihten) - Nebeneinander-Ansicht von umsortierter und ursprünglicher Liste (ähnlich wie Playlist und Medienbibliothek) - Umbenennen und Löschen von Sendern - Verwalten von Favoriten, Kindersperre, Überspringen und Verstecken von Sendern -- Benutzeroberfläche in Deutsch, Englisch, Spanisch und teilweise in Türkisch, Portugiesisch und Russisch +- Benutzeroberfläche in Deutsch, Englisch, Spanisch, Türkisch, Portugiesisch, Russisch und Rumänisch - Unicode-Zeichensatzunterstützung für Sendernamen (latein, kyrillisch, griechisch, ...) NICHT unterstützt: @@ -45,116 +46,47 @@ Hisense ist der einzige Hersteller, der Informationen und ein Testger Systemvoraussetzungen ------------------- +**Windows**: +- Windows 7 SP1, Windows 8.1, Windows 10 v1606 or later, Windows 11 (mit x86, x64 oder ARM CPU) - [Microsoft .NET Framework 4.8](https://dotnet.microsoft.com/download/dotnet-framework) - (Unter Linux wird Winetricks mit einem 32bit wineprefix benötigt, wo das "dotnet48" Paket installiert ist) -- [Microsoft Visual C++ 2010 Redistributable Package (x86)](http://www.microsoft.com/en-us/download/details.aspx?id=8328) - Wird benötigt um SQLite-Senderlisten zu bearbeiten (Hisense, Panasonic, Toshiba und Samsung J-Serie) -- USB Stick/SD-Karte zur Übertragung der Senderliste zwischen TV und PC (FAT32-Formatierung empfohlen) +- Das .NET FW 4.8 funktioniert NICHT unter Windows 7 ohne SP1, Windows 8 oder Windows 10 vor v1606 + +**Linux**: +- wine (sudo apt-get install wine) +- winetricks (sudo apt-get install winetricks) +- Starte winetricks, wähle oder erstelle ein wineprefix (32 bit oder 64 bit), wähle + "Installiere Windows DLL oder Komponente", installiere das "dotnet48" Paket and ignore dutzende Popup-Dialoge +- Rechtsklick auf ChanSort.exe, wähle "Öffnen mit", "Alle Anwendungen", "Eine wine Anwendung" + +**Hardware**: +- USB Stick/SD-Karte zur Übertragung der Senderliste zwischen TV und PC (Ein Stick <= 32 GB mit FAT32-Formatierung +ist DRINGEND empfohlen. (Einige TVs schreiben Müll auf NTFS bzw. unterstützen exFAT gar nicht) Unterstützte TV-Modelle --------------------- - -**Samsung** -- .scm Dateien: Serien B (2009)*, B (2013), C, D, E, F, H, J -- .zip Dateien: Serien H, J, K, M, N, Q, R - -\*: Das "clone.bin"-Format ist nicht unterstützt. Im "*.scm"-Format -der 2009 B-series werden in der "Air Analog"-Liste nicht alle Bearbeitungsfunktionen -unterstützt. - -Eine Anleitung zum Transfer der Senderliste befindet sich hier: -https://github.com/PredatH0r/ChanSort/wiki/Samsung - -**LG** -- Serien basierend auf Netcast OS, die eine xx\*.TLL-Datei exportieren: - CS, DM, LA, LB\*, LD, LE, LF, LH, LK, LM+, LN, LP#, LS, LT, LV, LW, LX, PM, PN, PT, UB\* -- Serien basierend auf webOS 2-5, die eine GlobalClone00001.TLL-Datei exportieren - -\*: Einige Geräte verhalten sich fehlerhaft aufgrund Probleme in deren Firmware. -+: Siehe Systemanforderungen für die LM-Serie. xxLM640T kann aufgrund von Firmwaremängeln nicht unterstützt werden. -\#: Nur Satellitensender werden unterstützt. - -Modelle mit NetCast Betriebssytem beinhalten keine Import/Export Funktion im normalen Menü. Um das Geheimmenü aufzurufen, -halten Sie die Settings Taste auf der Fernbedienung solange gedrückt, bis das Menü wieder verschwindet und dann drücken Sie "1105". -Im "TV Link Loader" Menü befinden sich dann die Import/Export-Funktionen. - -WICHTIG: Es ist NOTWENDIG bei der Sendersuche spezielle Optionen auszuwählen. Wenn ein Anbieter / Land / Satellit bei der Suche -ausgewählt wird, erhält man eine vorsortierte Liste und der TV verhält sich nach einem Export+Import fehlerhaft. -Wählen Sie immer "Keiner / Anderer / Alle" aus bzw. "Blindsuche", und nie einen Kabelanbieter oder "Astra 19.2 Liste". - -**Panasonic** -Die meisten Viera-Modelle seit 2011 mit Senderlisten im Format -- svl.bin -- svl.db - -**Sony** -- Android-TV "sdb.xml" Dateien mit Version "FormateVer" 1.1.0 -- KDL 2012/2014 "sdb.xml" mit "FormatVer" 1.0.0, 1.1.0 and 1.2.0 - -**Philips** -Philips verwendet unzählige unterschiedliche Dateiformate für diverse TV-Modelle. -ChanSort unterstützt derzeit folgende Formate: -- PhilipsChannelMaps\ChannelMap_45, 100, 105 und 110 -- Repair\ChannelList\channellib\\\*Table and s2channellib\\\*.dat -- Repair\CM_TPM1013E_LA_CK.xml (diese Datei ist oft versteckt und nur eine .bin Datei sichtbar) - -**Hisense** -- Einige ältere Modelle wie LTDN40D50TS verwenden die gleichen .csv Dateien wie Sharp. Siehe "Sharp" für eine Anleitung. -- Smart-Modelle (2016) mit channel.db Dateiformat, z.B. H65M5500 -- 2017 Modelle mit einem servicelist.db Dateiformat - -Besonderen Dank verdient Hisense für die Bereitstellung von technischen Informationen und einem Testgerät! - -**Toshiba** -- Modelle, die eine .zip-Datei mit folgendem Inhalt: chmgt.db, dvbSysData.db und dvbMainData.db. -(z.B. RL, SL, TL, UL, VL, WL, XL, YL models of series 8xx/9xx) -- Modelle mit einer settingsDB.db Datei - -**Grundig** -- Modelle die Dateien mit Namen dvb\*_config.xml exportieren. -- Modelle die eine cvt_database.dat Datei exportieren, z.B. 24 GHB 5944: siehe "Sharp" - -**SatcoDX (OEM für ITT, Medion, Nabo, ok., PEAQ, Schaub-Lorenz, Silva-Schneider, Telefunken)** -Mehrere Marken nutzen die gleiche Hardware für DVB-S und exportieren .sdx Dateien - -**Sharp (and some models from Dyon, Blaupunkt, Hisense, Changhong, alphatronics, JTC Genesis)** -Einige dieser TVs verwenden ähnliche Hardware und können .csv Dateien exportieren/importieren, um die Reihenfolge zu ändern: -- DVBS_Program.csv (mit cvt_database.dat) -- DVBS_CHANNEL_TABLE.csv (mit dtv_cmdb\*.bin) -- MS\*_DVBS_CHANNEL_TABLE.csv (mit MS\*_HOTELMODE_TABLE.json) - -Blaupunkt B40A148TCSFHD, B32B133T2CSHD, ... -Changhong LED32E2200ST2, ... -Dyon Live 22 Pro, Live 24 Pro, ENTER 32 Pro X, ... -Hisense LTDN40D50TS, ... -Sharp LC-xxCFE4142E, LC-xxCFF6002E, LC-xxFI5542E, LC-xxFG5242E, LC-xxUI7552E, LC-xxUI7652E, xxBJ1E, xxBJ3E, xxBJ5E, ... -Grundig 24 GHB 5944 - -Abhängig vom konkreten TV-Modell kann die Import/Export-Funktion Teil des normalen Menüs, eines Hotel-Menüs oder Service-Menüs sein -und die exportieren Dateien unterschiedlich sein. Einige Modelle wie Sharp Aquos xxBJ1E haben ein Untermenü für den Export. Hier -sind alle 4 Typen von Dateien für einen Import nötig. -Um in das geheime Hotel- / Service-Menü zu gelangen, gibt es verschiedene Tastenkombinationen auf der Fernbedienung: -Hotelmenu: MENU 7906 / MENU 4588 -Servicemenu: MENU 1147 / MENU 11471147 / SOURCE 2580 -Ändern Sie keine Werte im Servicemenü, dies könnte den Fernseher beschädigen. Nutzen Sie nur die Import/Export-Funktionen. - -**VDR (Linux Video Disk Recorder)** -Unterstützung des channels.conf Dateiformats. -Die Implementation hierfür wurde vom Mitglied "TCr82" des VDR Projekts beigesteuert. - -**m3u (SAT>IP)** -Unterstützt SAT>IP .m3u Dateien mit erweiterten Informationen zu Sendernamen und Programmnummern. - -**Enigma2 (Dreambox, VU+ und viele andere Linux basierende Empfänger)** -Erfordert eine lokale Kopie der Dateien "lamedb", "bouquets.\*" and "userbouquet.\*" aus /etc/Enigma2/. - +ChanSort unterstützt eine große Anzahl an Dateiformaten, aber es ist unmöglich für jede Marke und jedes Modell zu +sagen, welches Format verwendet wird (was sich auch durch Firmware-Updates ändern kann). +Diese unvollständige Liste führt einige Beispiele an, die unterstützt werden, aber selbst wenn ein Modell oder Marke +hier nicht angeführt ist, könnte es trotzdem funktiontionieren: +- [Samsung](source/fileformats.md#samsung) +- [LG](source/fileformats.md#lg) +- [Sony](source/fileformats.md#sony) +- [Hisense](source/fileformats.md#hisense) +- [Panasonic](source/fileformats.md#panasonic) +- [Philips](source/fileformats.md#philips) +- [Sharp, Dyon, Blaupunkt, Hisense, Changhong, Grundig, alphatronics, JTC Genesis, ...](source/fileformats.md#sharp) +- [Toshiba](source/fileformats.md#toshiba) +- [Grundig](source/fileformats.md#grundig) +- [SatcoDX: ITT, Medion, Nabo, ok., PEAQ, Schaub-Lorenz, Silva-Schneider, Telefunken, ...](source/fileformats.md#satcodx) +- [VDR](source/fileformats.md#vdr) +- [SAT>IP m3u](source/fileformats.md#m3u) +- [Enigma2](source/fileformats.md#enigma2) Quellcode selbst übersetzen ----------------- Siehe [build.md](source/build.md) - Lizenz (GPLv3) --------------- GNU General Public Licence, Version 3: http://www.gnu.org/licenses/gpl.html diff --git a/source/ChanSort.sln b/source/ChanSort.sln index 32a6032..5026c7f 100644 --- a/source/ChanSort.sln +++ b/source/ChanSort.sln @@ -23,6 +23,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution ProjectSection(SolutionItems) = preProject build.md = build.md changelog.md = changelog.md + fileformats.md = fileformats.md + fileformats_de.md = fileformats_de.md ..\readme.md = ..\readme.md ..\readme_de.md = ..\readme_de.md EndProjectSection diff --git a/source/ChanSort/ChanSort.csproj b/source/ChanSort/ChanSort.csproj index 2e37e07..24c2a2d 100644 --- a/source/ChanSort/ChanSort.csproj +++ b/source/ChanSort/ChanSort.csproj @@ -207,6 +207,7 @@ CharsetForm.cs + Component diff --git a/source/ChanSort/MainForm.Designer.cs b/source/ChanSort/MainForm.Designer.cs index 17f5b74..b7f563e 100644 --- a/source/ChanSort/MainForm.Designer.cs +++ b/source/ChanSort/MainForm.Designer.cs @@ -217,6 +217,7 @@ this.pageProgNr = new DevExpress.XtraTab.XtraTabPage(); this.popupInputSource = new DevExpress.XtraBars.PopupMenu(this.components); this.popupFavList = new DevExpress.XtraBars.PopupMenu(this.components); + this.timerSelectFocusedRow = new System.Windows.Forms.Timer(this.components); ((System.ComponentModel.ISupportInitialize)(this.splitContainerControl1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.splitContainerControl1.Panel1)).BeginInit(); this.splitContainerControl1.Panel1.SuspendLayout(); @@ -2185,6 +2186,10 @@ this.popupFavList.Name = "popupFavList"; this.popupFavList.ShowCaption = true; // + // timerSelectFocusedRow + // + this.timerSelectFocusedRow.Tick += new System.EventHandler(this.timerSelectFocusedRow_Tick); + // // MainForm // this.AllowDrop = true; @@ -2437,6 +2442,7 @@ private DevExpress.XtraEditors.SimpleButton btnSearchLeft; private DevExpress.XtraBars.BarButtonItem miSplitView; private DevExpress.XtraBars.BarButtonItem miTheme; + private System.Windows.Forms.Timer timerSelectFocusedRow; } } diff --git a/source/ChanSort/MainForm.cs b/source/ChanSort/MainForm.cs index cd1c4b4..455b16b 100644 --- a/source/ChanSort/MainForm.cs +++ b/source/ChanSort/MainForm.cs @@ -66,6 +66,8 @@ namespace ChanSort.Ui InitializeComponent(); + this.DoubleBuffered = true; + var version = this.GetType().Assembly.GetName().Version; AppVersion = new DateTime(2000, 1, 1).AddDays(version.Build).ToString("yyyy-MM-dd"); AppVersionFull = new DateTime(2000, 1, 1).AddDays(version.Build).AddSeconds(version.Revision * 2).ToString("yyyy-MM-dd_HHmm"); @@ -1026,7 +1028,7 @@ namespace ChanSort.Ui this.gviewRight.BeginUpdate(); this.gviewRight.ClearSelection(); this.gviewRight.FocusedRowHandle = Math.Min(rh, this.gviewRight.RowCount - 1); - this.gviewRight.SelectRow(this.gviewRight.FocusedRowHandle); + this.EnsureFocusedRowIsSelected(); this.gviewRight.EndUpdate(); })); } @@ -1095,7 +1097,6 @@ namespace ChanSort.Ui this.UpdateMenu(); } } - #endregion #region SwapChannels() @@ -1179,15 +1180,34 @@ namespace ChanSort.Ui #endregion - #region SelectFocusedRow() + #region SelectFocusedRow(), EnsureFocusedRowIsSelected(), timerSelectFocusedRow_Tick private void SelectFocusedRow(GridView grid, int rowHandle) { - grid.BeginSelection(); - grid.ClearSelection(); + //grid.BeginSelection(); + //grid.ClearSelection(); grid.FocusedRowHandle = rowHandle; - grid.SelectRow(rowHandle); - grid.EndSelection(); + //grid.SelectRow(rowHandle); + //grid.EndSelection(); + this.EnsureFocusedRowIsSelected(); + } + + private void EnsureFocusedRowIsSelected() + { + // Directly calling gviewRight.SelectRow(e.RowHanle) causes MASSIVE lags on Linux/Wine (in a Hyper-V VM). + // When delayed with a timer, the row might get automatically selected by DevExpress without lags + // or a different row gets focused in the meantime anyway + this.timerSelectFocusedRow.Stop(); + this.timerSelectFocusedRow.Start(); + } + + private void timerSelectFocusedRow_Tick(object sender, EventArgs e) + { + this.timerSelectFocusedRow.Stop(); + if (!this.gviewLeft.IsRowSelected(this.gviewLeft.FocusedRowHandle)) + this.gviewLeft.SelectRow(this.gviewLeft.FocusedRowHandle); + if (!this.gviewRight.IsRowSelected(this.gviewRight.FocusedRowHandle)) + this.gviewRight.SelectRow(this.gviewRight.FocusedRowHandle); } #endregion @@ -1483,7 +1503,7 @@ namespace ChanSort.Ui if (this.CurrentChannelList != null) this.CurrentChannelList.InsertProgramNumber = programNr; this.UpdateInsertSlotTextBox(); - this.gviewLeft.SelectRow(this.gviewLeft.FocusedRowHandle); + this.EnsureFocusedRowIsSelected(); } #endregion @@ -2517,7 +2537,7 @@ namespace ChanSort.Ui private void gviewRight_FocusedRowChanged(object sender, FocusedRowChangedEventArgs e) { - this.gviewRight.SelectRow(e.FocusedRowHandle); + this.EnsureFocusedRowIsSelected(); this.UpdateMenu(); } @@ -3145,6 +3165,7 @@ namespace ChanSort.Ui { var split = this.splitView = this.miSplitView.Down; + Win32.SuspendRedraw(this); this.SuspendRedraw(); this.SuspendLayout(); @@ -3162,7 +3183,7 @@ namespace ChanSort.Ui var rowIndex = this.gviewRight.GetDataSourceRowIndex(this.gviewRight.FocusedRowHandle); this.gviewLeft.ClearSelection(); this.gviewLeft.FocusedRowHandle = Math.Max(0, this.gviewLeft.GetRowHandle(rowIndex)); - this.gviewLeft.SelectRow(this.gviewLeft.FocusedRowHandle); + this.EnsureFocusedRowIsSelected(); } else { @@ -3181,7 +3202,7 @@ namespace ChanSort.Ui var rowIndex = this.gviewLeft.GetDataSourceRowIndex(this.gviewLeft.FocusedRowHandle); this.gviewRight.ClearSelection(); this.gviewRight.FocusedRowHandle = Math.Max(0, this.gviewRight.GetRowHandle(rowIndex)); - this.gviewRight.SelectRow(this.gviewRight.FocusedRowHandle); + this.EnsureFocusedRowIsSelected(); this.lastFocusedGrid = this.gviewRight; } @@ -3189,9 +3210,14 @@ namespace ChanSort.Ui this.grpInputList.ShowCaption = split; this.lblInsertMode.Enabled = this.rbInsertAfter.Enabled = this.rbInsertBefore.Enabled = this.rbInsertSwap.Enabled = split; - this.ResumeLayout(); + this.ResumeLayout(true); this.ResumeRedraw(); - this.UpdateMenu(); + + this.BeginInvoke((Action)(() => + { + Win32.ResumeRedraw(this); + this.UpdateMenu(); + })); } #endregion @@ -3643,5 +3669,7 @@ namespace ChanSort.Ui } } #endregion + + } } \ No newline at end of file diff --git a/source/ChanSort/MainForm.resx b/source/ChanSort/MainForm.resx index 5e184ee..284fbd1 100644 --- a/source/ChanSort/MainForm.resx +++ b/source/ChanSort/MainForm.resx @@ -276,7 +276,7 @@ gridLeft - ChanSort.XGridControl, ChanSort, Version=1.0.7877.1039, Culture=neutral, PublicKeyToken=null + ChanSort.XGridControl, ChanSort, Version=1.0.7877.25236, Culture=neutral, PublicKeyToken=null grpOutputList @@ -1207,7 +1207,7 @@ gviewLeft - ChanSort.XGridView, ChanSort, Version=1.0.7877.1039, Culture=neutral, PublicKeyToken=null + ChanSort.XGridView, ChanSort, Version=1.0.7877.25236, Culture=neutral, PublicKeyToken=null colIndex1 @@ -1291,13 +1291,13 @@ globalImageCollection1 - ChanSort.Ui.GlobalImageCollection, ChanSort, Version=1.0.7877.1039, Culture=neutral, PublicKeyToken=null + ChanSort.Ui.GlobalImageCollection, ChanSort, Version=1.0.7877.25236, Culture=neutral, PublicKeyToken=null gviewRight - ChanSort.XGridView, ChanSort, Version=1.0.7877.1039, Culture=neutral, PublicKeyToken=null + ChanSort.XGridView, ChanSort, Version=1.0.7877.25236, Culture=neutral, PublicKeyToken=null colIndex @@ -2043,6 +2043,12 @@ DevExpress.XtraBars.PopupMenu, DevExpress.XtraBars.v21.1, Version=21.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + timerSelectFocusedRow + + + System.Windows.Forms.Timer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + MainForm @@ -2050,7 +2056,7 @@ DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v21.1, Version=21.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - 07/26/2021 00:37:28 + 07/26/2021 14:06:54 16, 16 @@ -2921,7 +2927,7 @@ gridRight - ChanSort.XGridControl, ChanSort, Version=1.0.7877.1039, Culture=neutral, PublicKeyToken=null + ChanSort.XGridControl, ChanSort, Version=1.0.7877.25236, Culture=neutral, PublicKeyToken=null grpInputList @@ -3220,4 +3226,7 @@ 1029, 17 + + 1153, 17 + \ No newline at end of file diff --git a/source/ChanSort/Program.cs b/source/ChanSort/Program.cs index c8bb0fc..431209a 100644 --- a/source/ChanSort/Program.cs +++ b/source/ChanSort/Program.cs @@ -32,7 +32,7 @@ namespace ChanSort.Ui WindowsFormsSettings.EnableFormSkins(); //WindowsFormsSettings.ForcePaintApiDiagnostics(PaintApiDiagnosticsLevel.Default); BarAndDockingController.Default.PropertiesBar.ScaleIcons = false; - WindowsFormsSettings.DefaultFont = new Font("Tahoma", 8.25f); + //WindowsFormsSettings.DefaultFont = new Font("Tahoma", 8.25f); //DevExpress.Skins.SkinManager.EnableFormSkins(); Application.EnableVisualStyles(); diff --git a/source/ChanSort/Win32.cs b/source/ChanSort/Win32.cs new file mode 100644 index 0000000..c95a495 --- /dev/null +++ b/source/ChanSort/Win32.cs @@ -0,0 +1,34 @@ +using System; +using System.Runtime.InteropServices; +using System.Windows.Forms; + +public static class Win32 +{ + #region enum Msgs + public enum Msgs + { + WM_SETREDRAW = 0x000B, + } + #endregion + + #region User32 + + [DllImport("User32.dll", CharSet = CharSet.Auto)] + public static extern int SendMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam); + + #endregion + + #region SuspendRedraw() / ResumeRedraw() + public static void SuspendRedraw(this Control control) + { + Win32.SendMessage(control.Handle, (int)Win32.Msgs.WM_SETREDRAW, IntPtr.Zero, IntPtr.Zero); + } + + public static void ResumeRedraw(this Control control) + { + Win32.SendMessage(control.Handle, (int)Win32.Msgs.WM_SETREDRAW, (IntPtr)1, IntPtr.Zero); + control.Refresh(); + } + #endregion + +} \ No newline at end of file diff --git a/source/changelog.md b/source/changelog.md index ff04b4f..e531b95 100644 --- a/source/changelog.md +++ b/source/changelog.md @@ -1,6 +1,9 @@ ChanSort Change Log =================== +TBD +- improved Linux/Wine performance + 2021-07-26 - user interface can now be toggled between - **split view**: classic ChanSort UI with new/ordered and old/full list side-by-side @@ -8,7 +11,7 @@ ChanSort Change Log When you choose to "Modify current list", the single-table view is used by default, otherwise the split view. But you can always toggle between them. - added option to select a color theme. The UI now uses the "Office 2019 Colorful" theme by default, - the old theme was "Office 2016 Blue". + the old theme was "Office 2010 Blue". - improved many keyboard shortcuts (open the drop-down menus to see the shortcuts) 2021-07-25 diff --git a/source/fileformats.md b/source/fileformats.md new file mode 100644 index 0000000..4bcaec4 --- /dev/null +++ b/source/fileformats.md @@ -0,0 +1,97 @@ +Supported TV models +------------------- + +**Samsung** +- .scm files: B (2009)*, B (2013), C, D, E, F, H, J series +- .zip files (Tizen OS): H, J, K, M, N and Q, R series + +\*: The "clone.bin" format is not supported. In the "*.scm" format +the "Air Analog"-list of the 2009 B-series doesn't support all +editing features due to a lack of test files. + +Instructions for transferring the channel list can be found on: +https://github.com/PredatH0r/ChanSort/wiki/Samsung + +**LG** +- Series based on NetCast OS exporting a xx\*.TLL file: + CS, DM, LA, LB\*, LD, LE, LF, LH, LK, LM+, LN, LP#, LS, LT, LV, LW, LX, PM, PN, PT, UB\* +- Series based on webOS 2-5 exporting a GlobalClone00001.TLL file + +\*: Some devices behave erroneously due to firmware issues. ++: See system requirements for LM-series. xxLM640T is not supported due to its firmware limitations. +\#: Only satellite channels supported. + +Models with the NetCast operating system don't have the export/import function in the menu. Instead you need to press+hold the +settings button on the remote control until the settings disappear again, then enter 1105 and select the "TV Link Loader" menu. +With the latest firmware for the LM series the special "service remote control" is no longer needed, "1105" works now too. + +IMPORTANT: It is REQUIRED to select special options during the channel search on the TV. If you select a provider / country / +satellite specific list, it will be pre-ordered and your TV will behave erratic after an export+import. +Always select "none / other / all" and never your cable TV provider or something like "Astra 19.2E list" and blindscan. + +**Sony** +- Android-TVs "sdb.xml" files using format "FormateVer" 1.1.0 +- KDL 2012/2014 "sdb.xml" files using "FormatVer" 1.0.0, 1.1.0 and 1.2.0 + +**Hisense** +- Some older models like LTDN40D50TS use the same .csv files as Sharp. See [Sharp](#sharp) for instructions. +- 2016 "Smart" models with a channel.db file, i.e. H65M5500 +- 2017 models with a servicelist.db file + +Special thanks to Hisense for supporting ChanSort with technical information and a test device! + +**Panasonic** +Most Viera models since 2011 with a channel list formats +- svl.bin +- svl.db + +**Philips** +Philips uses countless incompatible file formats for various TV models. +ChanSort currently supports the formats: +- PhilipsChannelMaps\ChannelMap_45, 100, 105 and 110 +- Repair\ChannelList\channellib\\\*Table and s2channellib\\\*.dat +- Repair\CM_TPM1013E_LA_CK.xml (sometimes that file is hidden and only a .bin file is visible) + +**Sharp (and some models from Dyon, Blaupunkt, Hisense, Changhong, Grundig, alphatronics, JTC Genesis)** +Some of these TV share similar hardware and can export/import a .csv file allowing to change the channel order: +- DVBS_Program.csv (alongside cvt_database.dat) +- DVBS_CHANNEL_TABLE.csv (alongside dtv_cmdb\*.bin) +- MS\*_DVBS_CHANNEL_TABLE.csv (alongside MS\*_HOTELMODE_TABLE.json) + +Blaupunkt B40A148TCSFHD, B32B133T2CSHD, ... +Changhong LED32E2200ST2, ... +Dyon Live 22 Pro, Live 24 Pro, ENTER 32 Pro X, ... +Hisense LTDN40D50TS, ... +Sharp LC-xxCFE4142E, LC-xxCFF6002E, LC-xxFI5542E, LC-xxFG5242E, LC-xxUI7552E, LC-xxUI7652E, xxBJ1E, xxBJ3E, xxBJ5E, ... +Grundig 24 GHB 5944 + +Depending on the actual TV the import/export function can be part of the regular user menu, a hotel menu or a service menu +and the exported files may be different. Some models like Sharp Aquos xxBJ1E have a sub menu for exporting. You need to +export all 4 type of files for the import to work. +To access the secret hotel / service menus, there are several possible key combinations on the remote control: +hotel menu: MENU 7906 / MENU 4588 +service menu: MENU 1147 / MENU 11471147 / SOURCE 2580 +Do not make any changes in the service menu, as this could damage your TV. Only use the import/export functions. + +**Toshiba** +- Models that export a .zip file containing chmgt.db, dvbSysData.db and dvbMainData.db files. +(e.g. RL, SL, TL, UL, VL, WL, XL, YL models of series 8xx/9xx) +- Models with a settingsDB.db file + +**Grundig** +- Models that export files named dvb\*_config.xml. +- Models that export a cvt_database.dat file, e.g. 24 GHB 5944: see [Sharp](#Sharp) + +**SatcoDX (supplier for ITT, Medion, Nabo, ok., PEAQ, Schaub-Lorenz, Silva-Schneider, Telefunken)** +Various brands use the same hardware for DVB-S, which exports .sdx files + +**VDR (Linux Video Disk Recorder)** +Supports the channels.conf file format. +Implementation for this was provided by TCr82 from the VDR project. + +**m3u (SAT>IP)** +Supports SAT>IP .m3u files with extended information holding channel names and program numbers. + +**Enigma2 (Dreambox, VU+ and many other Linux based receivers)** +Requires a local copy of the files "lamedb", "bouquets.\*" and "userbouquet.\*" from /etc/Enigma2/. + diff --git a/source/fileformats_de.md b/source/fileformats_de.md new file mode 100644 index 0000000..f6a8e7a --- /dev/null +++ b/source/fileformats_de.md @@ -0,0 +1,94 @@ +**Samsung** +- .scm Dateien: Serien B (2009)*, B (2013), C, D, E, F, H, J +- .zip Dateien: Serien H, J, K, M, N, Q, R + +\*: Das "clone.bin"-Format ist nicht unterstützt. Im "*.scm"-Format +der 2009 B-series werden in der "Air Analog"-Liste nicht alle Bearbeitungsfunktionen +unterstützt. + +Eine Anleitung zum Transfer der Senderliste befindet sich hier: +https://github.com/PredatH0r/ChanSort/wiki/Samsung + +**LG** +- Serien basierend auf Netcast OS, die eine xx\*.TLL-Datei exportieren: + CS, DM, LA, LB\*, LD, LE, LF, LH, LK, LM+, LN, LP#, LS, LT, LV, LW, LX, PM, PN, PT, UB\* +- Serien basierend auf webOS 2-5, die eine GlobalClone00001.TLL-Datei exportieren + +\*: Einige Geräte verhalten sich fehlerhaft aufgrund Probleme in deren Firmware. ++: Siehe Systemanforderungen für die LM-Serie. xxLM640T kann aufgrund von Firmwaremängeln nicht unterstützt werden. +\#: Nur Satellitensender werden unterstützt. + +Modelle mit NetCast Betriebssytem beinhalten keine Import/Export Funktion im normalen Menü. Um das Geheimmenü aufzurufen, +halten Sie die Settings Taste auf der Fernbedienung solange gedrückt, bis das Menü wieder verschwindet und dann drücken Sie "1105". +Im "TV Link Loader" Menü befinden sich dann die Import/Export-Funktionen. + +WICHTIG: Es ist NOTWENDIG bei der Sendersuche spezielle Optionen auszuwählen. Wenn ein Anbieter / Land / Satellit bei der Suche +ausgewählt wird, erhält man eine vorsortierte Liste und der TV verhält sich nach einem Export+Import fehlerhaft. +Wählen Sie immer "Keiner / Anderer / Alle" aus bzw. "Blindsuche", und nie einen Kabelanbieter oder "Astra 19.2 Liste". + +**Sony** +- Android-TV "sdb.xml" Dateien mit Version "FormateVer" 1.1.0 +- KDL 2012/2014 "sdb.xml" mit "FormatVer" 1.0.0, 1.1.0 and 1.2.0 + +**Hisense** +- Einige ältere Modelle wie LTDN40D50TS verwenden die gleichen .csv Dateien wie Sharp. Siehe "Sharp" für eine Anleitung. +- Smart-Modelle (2016) mit channel.db Dateiformat, z.B. H65M5500 +- 2017 Modelle mit einem servicelist.db Dateiformat + +Besonderen Dank verdient Hisense für die Bereitstellung von technischen Informationen und einem Testgerät! + +**Panasonic** +Die meisten Viera-Modelle seit 2011 mit Senderlisten im Format +- svl.bin +- svl.db + +**Philips** +Philips verwendet unzählige unterschiedliche Dateiformate für diverse TV-Modelle. +ChanSort unterstützt derzeit folgende Formate: +- PhilipsChannelMaps\ChannelMap_45, 100, 105 und 110 +- Repair\ChannelList\channellib\\\*Table and s2channellib\\\*.dat +- Repair\CM_TPM1013E_LA_CK.xml (diese Datei ist oft versteckt und nur eine .bin Datei sichtbar) + +**Sharp (and some models from Dyon, Blaupunkt, Hisense, Changhong, alphatronics, JTC Genesis)** +Einige dieser TVs verwenden ähnliche Hardware und können .csv Dateien exportieren/importieren, um die Reihenfolge zu ändern: +- DVBS_Program.csv (mit cvt_database.dat) +- DVBS_CHANNEL_TABLE.csv (mit dtv_cmdb\*.bin) +- MS\*_DVBS_CHANNEL_TABLE.csv (mit MS\*_HOTELMODE_TABLE.json) + +Blaupunkt B40A148TCSFHD, B32B133T2CSHD, ... +Changhong LED32E2200ST2, ... +Dyon Live 22 Pro, Live 24 Pro, ENTER 32 Pro X, ... +Hisense LTDN40D50TS, ... +Sharp LC-xxCFE4142E, LC-xxCFF6002E, LC-xxFI5542E, LC-xxFG5242E, LC-xxUI7552E, LC-xxUI7652E, xxBJ1E, xxBJ3E, xxBJ5E, ... +Grundig 24 GHB 5944 + +Abhängig vom konkreten TV-Modell kann die Import/Export-Funktion Teil des normalen Menüs, eines Hotel-Menüs oder Service-Menüs sein +und die exportieren Dateien unterschiedlich sein. Einige Modelle wie Sharp Aquos xxBJ1E haben ein Untermenü für den Export. Hier +sind alle 4 Typen von Dateien für einen Import nötig. +Um in das geheime Hotel- / Service-Menü zu gelangen, gibt es verschiedene Tastenkombinationen auf der Fernbedienung: +Hotelmenu: MENU 7906 / MENU 4588 +Servicemenu: MENU 1147 / MENU 11471147 / SOURCE 2580 +Ändern Sie keine Werte im Servicemenü, dies könnte den Fernseher beschädigen. Nutzen Sie nur die Import/Export-Funktionen. + +**Toshiba** +- Modelle, die eine .zip-Datei mit folgendem Inhalt: chmgt.db, dvbSysData.db und dvbMainData.db. +(z.B. RL, SL, TL, UL, VL, WL, XL, YL models of series 8xx/9xx) +- Modelle mit einer settingsDB.db Datei + +**Grundig** +- Modelle die Dateien mit Namen dvb\*_config.xml exportieren. +- Modelle die eine cvt_database.dat Datei exportieren, z.B. 24 GHB 5944: siehe "Sharp" + +**SatcoDX (Lieferant für ITT, Medion, Nabo, ok., PEAQ, Schaub-Lorenz, Silva-Schneider, Telefunken)** +Mehrere Marken nutzen die gleiche Hardware für DVB-S und exportieren .sdx Dateien + +**VDR (Linux Video Disk Recorder)** +Unterstützung des channels.conf Dateiformats. +Die Implementation hierfür wurde vom Mitglied "TCr82" des VDR Projekts beigesteuert. + +**m3u (SAT>IP)** +Unterstützt SAT>IP .m3u Dateien mit erweiterten Informationen zu Sendernamen und Programmnummern. + +**Enigma2 (Dreambox, VU+ und viele andere Linux basierende Empfänger)** +Erfordert eine lokale Kopie der Dateien "lamedb", "bouquets.\*" and "userbouquet.\*" aus /etc/Enigma2/. +