From 42396aff6e7d1b3977ebc657cbcc5e3f2df4e60b Mon Sep 17 00:00:00 2001 From: hbeham Date: Sun, 23 Jun 2013 14:58:44 +0200 Subject: [PATCH] - Drag&Drop inside left list and from right to left list (only available when the left list is sorted by "New Pr#") - Simplified menu/tool bar - FIX: Moving multiple channels down now works correctly - FIX: +/- keys no longer open the cell-editor after moving a channel - Editor for "New Pr#" no longer opens when pressing non-numeric keys - Move up/down is now disabled when left list is not sorted by "New Pr#" --- ChanSort.Api/Controller/Editor.cs | 2 +- ChanSort.Loader.LG/Properties/licenses.licx | 2 + ChanSort.Loader.LG/TvSettingsForm.Designer.cs | 54 +- ChanSort.Loader.LG/TvSettingsForm.de.resx | 171 +--- ChanSort.Loader.LG/TvSettingsForm.resx | 942 ++++++++++-------- ChanSort/MainForm.Designer.cs | 52 +- ChanSort/MainForm.cs | 438 +++++--- ChanSort/MainForm.de.resx | 295 +----- ChanSort/MainForm.resx | 56 +- ChanSort/Properties/licenses.licx | 7 +- makeDistribZip.cmd | 11 +- readme.txt | 23 +- 12 files changed, 1017 insertions(+), 1036 deletions(-) diff --git a/ChanSort.Api/Controller/Editor.cs b/ChanSort.Api/Controller/Editor.cs index 6b82b51..e9d57e0 100644 --- a/ChanSort.Api/Controller/Editor.cs +++ b/ChanSort.Api/Controller/Editor.cs @@ -93,7 +93,7 @@ namespace ChanSort.Api return; int delta = (up ? - 1 : +1); - foreach (var channel in channels) + foreach (var channel in (up ? channels : channels.Reverse())) { int newProgramNr = channel.NewProgramNr + delta; ChannelInfo channelAtNewProgramNr = this.ChannelList.Channels.FirstOrDefault(ch => ch.NewProgramNr == newProgramNr); diff --git a/ChanSort.Loader.LG/Properties/licenses.licx b/ChanSort.Loader.LG/Properties/licenses.licx index ff18d72..1694bc1 100644 --- a/ChanSort.Loader.LG/Properties/licenses.licx +++ b/ChanSort.Loader.LG/Properties/licenses.licx @@ -1 +1,3 @@ +DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a diff --git a/ChanSort.Loader.LG/TvSettingsForm.Designer.cs b/ChanSort.Loader.LG/TvSettingsForm.Designer.cs index 59c7c86..6ade42c 100644 --- a/ChanSort.Loader.LG/TvSettingsForm.Designer.cs +++ b/ChanSort.Loader.LG/TvSettingsForm.Designer.cs @@ -64,32 +64,49 @@ // // grpOption // + resources.ApplyResources(this.grpOption, "grpOption"); this.grpOption.Controls.Add(this.cbHbbTv); this.grpOption.Controls.Add(this.cbCustomCountry); this.grpOption.Controls.Add(this.comboBoxEdit1); this.grpOption.Controls.Add(this.labelControl1); - resources.ApplyResources(this.grpOption, "grpOption"); this.grpOption.Name = "grpOption"; // // cbHbbTv // resources.ApplyResources(this.cbHbbTv, "cbHbbTv"); this.cbHbbTv.Name = "cbHbbTv"; + this.cbHbbTv.Properties.AccessibleDescription = resources.GetString("cbHbbTv.Properties.AccessibleDescription"); + this.cbHbbTv.Properties.AccessibleName = resources.GetString("cbHbbTv.Properties.AccessibleName"); + this.cbHbbTv.Properties.AutoHeight = ((bool)(resources.GetObject("cbHbbTv.Properties.AutoHeight"))); this.cbHbbTv.Properties.Caption = resources.GetString("cbHbbTv.Properties.Caption"); + this.cbHbbTv.Properties.DisplayValueChecked = resources.GetString("cbHbbTv.Properties.DisplayValueChecked"); + this.cbHbbTv.Properties.DisplayValueGrayed = resources.GetString("cbHbbTv.Properties.DisplayValueGrayed"); + this.cbHbbTv.Properties.DisplayValueUnchecked = resources.GetString("cbHbbTv.Properties.DisplayValueUnchecked"); // // cbCustomCountry // resources.ApplyResources(this.cbCustomCountry, "cbCustomCountry"); this.cbCustomCountry.Name = "cbCustomCountry"; + this.cbCustomCountry.Properties.AccessibleDescription = resources.GetString("cbCustomCountry.Properties.AccessibleDescription"); + this.cbCustomCountry.Properties.AccessibleName = resources.GetString("cbCustomCountry.Properties.AccessibleName"); + this.cbCustomCountry.Properties.AutoHeight = ((bool)(resources.GetObject("cbCustomCountry.Properties.AutoHeight"))); this.cbCustomCountry.Properties.Caption = resources.GetString("cbCustomCountry.Properties.Caption"); + this.cbCustomCountry.Properties.DisplayValueChecked = resources.GetString("cbCustomCountry.Properties.DisplayValueChecked"); + this.cbCustomCountry.Properties.DisplayValueGrayed = resources.GetString("cbCustomCountry.Properties.DisplayValueGrayed"); + this.cbCustomCountry.Properties.DisplayValueUnchecked = resources.GetString("cbCustomCountry.Properties.DisplayValueUnchecked"); this.cbCustomCountry.CheckedChanged += new System.EventHandler(this.cbCustomCountry_CheckedChanged); // // comboBoxEdit1 // resources.ApplyResources(this.comboBoxEdit1, "comboBoxEdit1"); this.comboBoxEdit1.Name = "comboBoxEdit1"; + this.comboBoxEdit1.Properties.AccessibleDescription = resources.GetString("comboBoxEdit1.Properties.AccessibleDescription"); + this.comboBoxEdit1.Properties.AccessibleName = resources.GetString("comboBoxEdit1.Properties.AccessibleName"); + this.comboBoxEdit1.Properties.AutoHeight = ((bool)(resources.GetObject("comboBoxEdit1.Properties.AutoHeight"))); this.comboBoxEdit1.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Controls.EditorButton(((DevExpress.XtraEditors.Controls.ButtonPredefines)(resources.GetObject("comboBoxEdit1.Properties.Buttons"))))}); + this.comboBoxEdit1.Properties.NullValuePrompt = resources.GetString("comboBoxEdit1.Properties.NullValuePrompt"); + this.comboBoxEdit1.Properties.NullValuePromptShowForEmptyValue = ((bool)(resources.GetObject("comboBoxEdit1.Properties.NullValuePromptShowForEmptyValue"))); this.comboBoxEdit1.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.DisableTextEditor; // // labelControl1 @@ -112,11 +129,11 @@ // // grpHotelMode // + resources.ApplyResources(this.grpHotelMode, "grpHotelMode"); this.grpHotelMode.Controls.Add(this.labelControl3); this.grpHotelMode.Controls.Add(this.labelControl2); this.grpHotelMode.Controls.Add(this.cbDtvUpdate); this.grpHotelMode.Controls.Add(this.cbHotelMode); - resources.ApplyResources(this.grpHotelMode, "grpHotelMode"); this.grpHotelMode.Name = "grpHotelMode"; // // labelControl3 @@ -133,30 +150,48 @@ // resources.ApplyResources(this.cbDtvUpdate, "cbDtvUpdate"); this.cbDtvUpdate.Name = "cbDtvUpdate"; + this.cbDtvUpdate.Properties.AccessibleDescription = resources.GetString("cbDtvUpdate.Properties.AccessibleDescription"); + this.cbDtvUpdate.Properties.AccessibleName = resources.GetString("cbDtvUpdate.Properties.AccessibleName"); + this.cbDtvUpdate.Properties.AutoHeight = ((bool)(resources.GetObject("cbDtvUpdate.Properties.AutoHeight"))); this.cbDtvUpdate.Properties.Caption = resources.GetString("cbDtvUpdate.Properties.Caption"); + this.cbDtvUpdate.Properties.DisplayValueChecked = resources.GetString("cbDtvUpdate.Properties.DisplayValueChecked"); + this.cbDtvUpdate.Properties.DisplayValueGrayed = resources.GetString("cbDtvUpdate.Properties.DisplayValueGrayed"); + this.cbDtvUpdate.Properties.DisplayValueUnchecked = resources.GetString("cbDtvUpdate.Properties.DisplayValueUnchecked"); // // cbHotelMode // resources.ApplyResources(this.cbHotelMode, "cbHotelMode"); this.cbHotelMode.Name = "cbHotelMode"; + this.cbHotelMode.Properties.AccessibleDescription = resources.GetString("cbHotelMode.Properties.AccessibleDescription"); + this.cbHotelMode.Properties.AccessibleName = resources.GetString("cbHotelMode.Properties.AccessibleName"); + this.cbHotelMode.Properties.AutoHeight = ((bool)(resources.GetObject("cbHotelMode.Properties.AutoHeight"))); this.cbHotelMode.Properties.Caption = resources.GetString("cbHotelMode.Properties.Caption"); + this.cbHotelMode.Properties.DisplayValueChecked = resources.GetString("cbHotelMode.Properties.DisplayValueChecked"); + this.cbHotelMode.Properties.DisplayValueGrayed = resources.GetString("cbHotelMode.Properties.DisplayValueGrayed"); + this.cbHotelMode.Properties.DisplayValueUnchecked = resources.GetString("cbHotelMode.Properties.DisplayValueUnchecked"); // // cbAutoChannelUpdate // resources.ApplyResources(this.cbAutoChannelUpdate, "cbAutoChannelUpdate"); this.cbAutoChannelUpdate.Name = "cbAutoChannelUpdate"; + this.cbAutoChannelUpdate.Properties.AccessibleDescription = resources.GetString("cbAutoChannelUpdate.Properties.AccessibleDescription"); + this.cbAutoChannelUpdate.Properties.AccessibleName = resources.GetString("cbAutoChannelUpdate.Properties.AccessibleName"); + this.cbAutoChannelUpdate.Properties.AutoHeight = ((bool)(resources.GetObject("cbAutoChannelUpdate.Properties.AutoHeight"))); this.cbAutoChannelUpdate.Properties.Caption = resources.GetString("cbAutoChannelUpdate.Properties.Caption"); + this.cbAutoChannelUpdate.Properties.DisplayValueChecked = resources.GetString("cbAutoChannelUpdate.Properties.DisplayValueChecked"); + this.cbAutoChannelUpdate.Properties.DisplayValueGrayed = resources.GetString("cbAutoChannelUpdate.Properties.DisplayValueGrayed"); + this.cbAutoChannelUpdate.Properties.DisplayValueUnchecked = resources.GetString("cbAutoChannelUpdate.Properties.DisplayValueUnchecked"); // // grpSetup // - this.grpSetup.Controls.Add(this.cbAutoChannelUpdate); resources.ApplyResources(this.grpSetup, "grpSetup"); + this.grpSetup.Controls.Add(this.cbAutoChannelUpdate); this.grpSetup.Name = "grpSetup"; // // grpInformation // - this.grpInformation.Controls.Add(this.labelControl4); resources.ApplyResources(this.grpInformation, "grpInformation"); + this.grpInformation.Controls.Add(this.labelControl4); this.grpInformation.Name = "grpInformation"; // // labelControl4 @@ -167,15 +202,22 @@ // lblHotelMenuAutoDetect // resources.ApplyResources(this.lblHotelMenuAutoDetect, "lblHotelMenuAutoDetect"); - this.lblHotelMenuAutoDetect.Appearance.ForeColor = ((System.Drawing.Color)(resources.GetObject("labelControl5.Appearance.ForeColor"))); + this.lblHotelMenuAutoDetect.Appearance.DisabledImage = ((System.Drawing.Image)(resources.GetObject("lblHotelMenuAutoDetect.Appearance.DisabledImage"))); + this.lblHotelMenuAutoDetect.Appearance.ForeColor = ((System.Drawing.Color)(resources.GetObject("lblHotelMenuAutoDetect.Appearance.ForeColor"))); + this.lblHotelMenuAutoDetect.Appearance.GradientMode = ((System.Drawing.Drawing2D.LinearGradientMode)(resources.GetObject("lblHotelMenuAutoDetect.Appearance.GradientMode"))); + this.lblHotelMenuAutoDetect.Appearance.HoverImage = ((System.Drawing.Image)(resources.GetObject("lblHotelMenuAutoDetect.Appearance.HoverImage"))); + this.lblHotelMenuAutoDetect.Appearance.Image = ((System.Drawing.Image)(resources.GetObject("lblHotelMenuAutoDetect.Appearance.Image"))); + this.lblHotelMenuAutoDetect.Appearance.PressedImage = ((System.Drawing.Image)(resources.GetObject("lblHotelMenuAutoDetect.Appearance.PressedImage"))); this.lblHotelMenuAutoDetect.Name = "lblHotelMenuAutoDetect"; this.lblHotelMenuAutoDetect.Click += new System.EventHandler(this.lblHotelMenuAutoDetect_Click); // // TvSettingsForm // this.AcceptButton = this.btnOk; - this.Appearance.Options.UseBackColor = true; resources.ApplyResources(this, "$this"); + this.Appearance.GradientMode = ((System.Drawing.Drawing2D.LinearGradientMode)(resources.GetObject("TvSettingsForm.Appearance.GradientMode"))); + this.Appearance.Image = ((System.Drawing.Image)(resources.GetObject("TvSettingsForm.Appearance.Image"))); + this.Appearance.Options.UseBackColor = true; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.CancelButton = this.btnCancel; this.Controls.Add(this.lblHotelMenuAutoDetect); diff --git a/ChanSort.Loader.LG/TvSettingsForm.de.resx b/ChanSort.Loader.LG/TvSettingsForm.de.resx index d0a9b38..c0a2826 100644 --- a/ChanSort.Loader.LG/TvSettingsForm.de.resx +++ b/ChanSort.Loader.LG/TvSettingsForm.de.resx @@ -117,65 +117,12 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - - - - - - True - HbbTV aktivieren (funktioniert nur mit den Ländereinstellungen DEU, FRA, NED und ESP) - - - - - - - - - - - - - - - - - True - Eigene Werte erlauben (auf eigene Gefahr!) - - - - - - - - - - - - - - - - - True - - - - - - False - 27, 13 @@ -183,14 +130,14 @@ Land: - - OPTION Menü - Abbrechen + + Hotel Modus + - HINWEIS: Bei aktivem Hotel-Modus kann man in der EPG nicht zum gewählten Sender wechseln und die Funktion "Werkseinstellungen" ist gesperrt. + HINWEIS: Bei aktivem Hotel-Modus kann man im EPG nicht zum gewählten Sender wechseln und die Funktion "Werkseinstellungen" ist gesperrt. 341, 13 @@ -198,127 +145,21 @@ Die folgenden Einstellungen funktionieren nur bei aktivem Hotel-Modus: - - - - - - - - True - D-TV Senderliste automatisch aktualisieren (empfohlen: AUS) - - - - - - - - - - - - - - - - - True - Hotel Modus aktivieren (empfohlen: EIN) - - - - - - - - - - - Hotel Modus - - - - - - - - - True - Senderliste automatisch aktualisieren (empfohlen: AUS) - - - - - - - - - - - EINST. Menü + + EINST. Menu Das Dateiformat Ihres TV-Modells wird nicht vollständig unterstützt. Deshalb sind viele Einstellungen in diesem Dialog gesperrt. - - - - - - - - True - - - - Default - - - False - - - - - - True - - - None - - - _ - - - True - - - True - - - False - - - - - - False - - - Horizontal - - - - TV Einstellungen diff --git a/ChanSort.Loader.LG/TvSettingsForm.resx b/ChanSort.Loader.LG/TvSettingsForm.resx index b6e45b5..1327f19 100644 --- a/ChanSort.Loader.LG/TvSettingsForm.resx +++ b/ChanSort.Loader.LG/TvSettingsForm.resx @@ -117,412 +117,192 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Top, Left, Right + + DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - 12, 64 - - - Enable HbbTV (only works with country settings DEU, FRA, NED and ESP) - - - 456, 19 - - - - 3 - - - cbHbbTv - - - DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - grpOption - - - 0 - - - Top, Left, Right - - - 150, 30 - - - allow custom value (at your own risk!) - - - 320, 19 - - - 2 - - - cbCustomCountry - - - DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - grpOption - - - 1 - - - 72, 29 - - - - Combo - 72, 20 - - 1 - - - comboBoxEdit1 - - - DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - grpOption - - - 2 - - - 12, 32 - - - 43, 13 - - - 0 - - - Country: - - - labelControl1 - - - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - grpOption - - - 3 - - - Top - - - 0, 142 - - - 480, 106 - - - 0 - - - OPTION Menu - - - grpOption - - - DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - $this - - 4 - - - Bottom, Right - - - 310, 413 - - - 75, 23 - - - 1 - - - Ok - - - btnOk - - - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - $this - - - 3 - - - Bottom, Right - - - 395, 413 - - - 75, 23 - - - 2 - - - Cancel - - - btnCancel - - - DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - $this - - - 2 + + OPTION Menu - + Vertical - - 12, 26 - - - 458, 26 - - - 7 - - - NOTE: When Hotel Mode is active, you can no longer activate a channel from inside the EPG and the "Factory Reset" function becomes disabled. - - - labelControl3 - - - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - grpHotelMode - - - 0 - - - 41, 93 - - - 315, 13 - - - 6 - - - The settings below are only effective when Hotel Mode is enabled - - - labelControl2 - - - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - grpHotelMode - - - 1 - - - Top, Left, Right - - - 39, 112 - - - Automatic D-TV channel update (recommended: OFF) - - - 431, 19 - - - 5 - - - cbDtvUpdate - - - DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - grpHotelMode - - - 2 - - - Top, Left, Right - - - 10, 58 - - - Enable Hotel Mode (recommended: ON) - - - 456, 19 - - - 4 - - - cbHotelMode - - - DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - grpHotelMode - - - 3 - - - Top + + 0, 248 - - 480, 151 + + 480, 71 - - 3 - - - Hotel Mode - - - grpHotelMode - - - DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - $this - - - 1 - - - Top, Left, Right - - - 12, 35 + + Automatic Channel Update (recommended: OFF) - - 456, 19 - - - 3 - - - cbAutoChannelUpdate - - - DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - grpSetup - - - 0 - - - Top - - - 0, 71 - - - 480, 71 - - - 5 - - - SETUP Menu - - - grpSetup - - - DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - $this - - - 5 - - - Vertical - - - 11, 29 - - - 458, 26 - - - 8 + + + True Your TV model's TLL file format is not fully supported. Therefore many features in this dialog are disabled. + + + + + + 310, 413 + + + 117, 13 + + + lblHotelMenuAutoDetect + + + 1 + + + + + + labelControl3 + + + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + 2 + + + $this + + + 431, 19 + + + + + + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + TV Settings + + + 3 + labelControl4 - + + 480, 106 + + + Information + + + NOTE: When Hotel Mode is active, you can no longer activate a channel from inside the EPG and the "Factory Reset" function becomes disabled. + + + True + + + 6 + + + grpOption + + + 6, 13 + + + 3 + + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - + + grpSetup + + + $this + + + True + + + $this + + + cbCustomCountry + + + Top, Left, Right + + + cbHbbTv + + + grpHotelMode + + + The settings below are only effective when Hotel Mode is enabled + + + DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + grpInformation - + + 11, 29 + + + Ok + + + Top, Left, Right + + + + + + + + + 315, 13 + + 0 - - Top + + - - 0, 0 + + DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + $this + + + 39, 112 + + + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + 480, 71 @@ -530,70 +310,416 @@ 6 - - Information + + allow custom value (at your own risk!) - - grpInformation + + DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - $this + + Top - - 6 + + Hotel Mode - - Bottom, Left + + btnCancel - + + 12, 32 + + LightGray - - 11, 422 + + Horizontal - - 117, 13 - - - 7 + + 3 Auto-Detect Hotel-Menu - - lblHotelMenuAutoDetect + + TvSettingsForm - - DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + grpHotelMode - - $this + + grpHotelMode - - 0 + + Top - - True - - - 6, 13 + + - - 480, 448 + + + + + grpInformation + + + comboBoxEdit1 + + + 2 + + + btnOk + + + 480, 151 + + + Top, Left, Right + + + + + + 2 + + + cbDtvUpdate + + + Bottom, Right CenterParent - - TV Settings + + DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - TvSettingsForm + + 72, 29 + + + + + + 456, 19 + + + Automatic D-TV channel update (recommended: OFF) + + + SETUP Menu + + + 11, 422 + + + 0 + + + Top, Left, Right + + + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + 7 + + + 0 + + + 0 + + + + + + 1 + + + Horizontal + + + 1 + + + labelControl1 + + + 2 + + + grpOption + + + grpHotelMode + + + Top, Left, Right + + + 0 + + + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + grpOption + + + grpHotelMode + + + 0, 142 + + + + + + 75, 23 + + + True + + + 12, 35 + + + + + + 0 + + + cbAutoChannelUpdate + + + Bottom, Left + + + 3 + + + + + + Cancel + + + Bottom, Right + + + DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + 0 + + + 5 + + + cbHotelMode + + + 1 + + + + + + 458, 26 DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + Enable Hotel Mode (recommended: ON) + + + 5 + + + 75, 23 + + + Top + + + Country: + + + + + + + + + Enable HbbTV (only works with country settings DEU, FRA, NED and ESP) + + + DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + 41, 93 + + + 4 + + + grpSetup + + + 8 + + + + + + 10, 58 + + + + + + 3 + + + 1 + + + DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + Vertical + + + 6 + + + 458, 26 + + + DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + 12, 64 + + + 7 + + + True + + + + + + grpOption + + + 0, 71 + + + + + + Top + + + True + + + 320, 19 + + + 480, 448 + + + 2 + + + DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + + + + 150, 30 + + + 43, 13 + + + $this + + + + Combo + + + 456, 19 + + + 0, 0 + + + False + + + $this + + + 456, 19 + + + DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + + + + + + + + + + 12, 26 + + + 3 + + + + + + grpOption + + + + + + 5 + + + 395, 413 + + + + + + labelControl2 + + + 4 + + + + + + True + \ No newline at end of file diff --git a/ChanSort/MainForm.Designer.cs b/ChanSort/MainForm.Designer.cs index 5d326a2..c1a1284 100644 --- a/ChanSort/MainForm.Designer.cs +++ b/ChanSort/MainForm.Designer.cs @@ -43,6 +43,7 @@ this.repositoryItemCheckedComboBoxEdit1 = new DevExpress.XtraEditors.Repository.RepositoryItemCheckedComboBoxEdit(); this.colUid1 = new DevExpress.XtraGrid.Columns.GridColumn(); this.colOutLock = new DevExpress.XtraGrid.Columns.GridColumn(); + this.repositoryItemTextEdit1 = new DevExpress.XtraEditors.Repository.RepositoryItemTextEdit(); this.lblHotkeyLeft = new DevExpress.XtraEditors.LabelControl(); this.pnlEditControls = new DevExpress.XtraEditors.PanelControl(); this.btnToggleLock = new DevExpress.XtraEditors.SimpleButton(); @@ -169,6 +170,7 @@ ((System.ComponentModel.ISupportInitialize)(this.dsChannels)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.gviewLeft)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.repositoryItemCheckedComboBoxEdit1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.repositoryItemTextEdit1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pnlEditControls)).BeginInit(); this.pnlEditControls.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.grpInputList)).BeginInit(); @@ -213,15 +215,20 @@ // // gridLeft // + this.gridLeft.AllowDrop = true; this.gridLeft.DataSource = this.dsChannels; resources.ApplyResources(this.gridLeft, "gridLeft"); this.gridLeft.MainView = this.gviewLeft; this.gridLeft.Name = "gridLeft"; this.gridLeft.RepositoryItems.AddRange(new DevExpress.XtraEditors.Repository.RepositoryItem[] { - this.repositoryItemCheckedComboBoxEdit1}); + this.repositoryItemCheckedComboBoxEdit1, + this.repositoryItemTextEdit1}); this.gridLeft.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] { this.gviewLeft}); this.gridLeft.ProcessGridKey += new System.Windows.Forms.KeyEventHandler(this.gridLeft_ProcessGridKey); + this.gridLeft.DragDrop += new System.Windows.Forms.DragEventHandler(this.gridLeft_DragDrop); + this.gridLeft.DragOver += new System.Windows.Forms.DragEventHandler(this.gridLeft_DragOver); + this.gridLeft.GiveFeedback += new System.Windows.Forms.GiveFeedbackEventHandler(this.grid_GiveFeedback); // // dsChannels // @@ -229,8 +236,12 @@ // // gviewLeft // + this.gviewLeft.Appearance.FocusedRow.Font = ((System.Drawing.Font)(resources.GetObject("gviewLeft.Appearance.FocusedRow.Font"))); + this.gviewLeft.Appearance.FocusedRow.Options.UseFont = true; this.gviewLeft.Appearance.HeaderPanel.Options.UseTextOptions = true; this.gviewLeft.Appearance.HeaderPanel.TextOptions.WordWrap = DevExpress.Utils.WordWrap.Wrap; + this.gviewLeft.Appearance.HideSelectionRow.Font = ((System.Drawing.Font)(resources.GetObject("gviewLeft.Appearance.HideSelectionRow.Font"))); + this.gviewLeft.Appearance.HideSelectionRow.Options.UseFont = true; this.gviewLeft.ColumnPanelRowHeight = 35; this.gviewLeft.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { this.colIndex1, @@ -244,6 +255,7 @@ this.gviewLeft.Name = "gviewLeft"; this.gviewLeft.OptionsBehavior.EditorShowMode = DevExpress.Utils.EditorShowMode.MouseDown; this.gviewLeft.OptionsCustomization.AllowGroup = false; + this.gviewLeft.OptionsCustomization.AllowQuickHideColumns = false; this.gviewLeft.OptionsLayout.LayoutVersion = "2"; this.gviewLeft.OptionsSelection.MultiSelect = true; this.gviewLeft.OptionsView.ColumnAutoWidth = false; @@ -258,12 +270,15 @@ this.gviewLeft.SelectionChanged += new DevExpress.Data.SelectionChangedEventHandler(this.gviewLeft_SelectionChanged); this.gviewLeft.ShowingEditor += new System.ComponentModel.CancelEventHandler(this.gview_ShowingEditor); this.gviewLeft.ShownEditor += new System.EventHandler(this.gview_ShownEditor); + this.gviewLeft.EndSorting += new System.EventHandler(this.gviewLeft_EndSorting); this.gviewLeft.FocusedRowChanged += new DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventHandler(this.gviewLeft_FocusedRowChanged); this.gviewLeft.CellValueChanged += new DevExpress.XtraGrid.Views.Base.CellValueChangedEventHandler(this.gviewLeft_CellValueChanged); this.gviewLeft.CustomColumnDisplayText += new DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventHandler(this.gviewLeft_CustomColumnDisplayText); this.gviewLeft.LayoutUpgrade += new DevExpress.Utils.LayoutUpgadeEventHandler(this.gviewLeft_LayoutUpgrade); + this.gviewLeft.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.gview_KeyPress); this.gviewLeft.MouseDown += new System.Windows.Forms.MouseEventHandler(this.gview_MouseDown); this.gviewLeft.MouseUp += new System.Windows.Forms.MouseEventHandler(this.gview_MouseUp); + this.gviewLeft.MouseMove += new System.Windows.Forms.MouseEventHandler(this.gview_MouseMove); this.gviewLeft.ValidatingEditor += new DevExpress.XtraEditors.Controls.BaseContainerValidateEditorEventHandler(this.gviewLeft_ValidatingEditor); // // colIndex1 @@ -282,6 +297,8 @@ // colOutSlot // resources.ApplyResources(this.colOutSlot, "colOutSlot"); + this.colOutSlot.DisplayFormat.FormatString = "d"; + this.colOutSlot.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Numeric; this.colOutSlot.FieldName = "NewProgramNr"; this.colOutSlot.Name = "colOutSlot"; this.colOutSlot.OptionsFilter.AllowAutoFilter = false; @@ -331,6 +348,16 @@ this.colOutLock.FieldName = "Lock"; this.colOutLock.Name = "colOutLock"; // + // repositoryItemTextEdit1 + // + resources.ApplyResources(this.repositoryItemTextEdit1, "repositoryItemTextEdit1"); + this.repositoryItemTextEdit1.DisplayFormat.FormatString = "d"; + this.repositoryItemTextEdit1.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Numeric; + this.repositoryItemTextEdit1.EditFormat.FormatString = "d"; + this.repositoryItemTextEdit1.EditFormat.FormatType = DevExpress.Utils.FormatType.Numeric; + this.repositoryItemTextEdit1.Mask.MaskType = ((DevExpress.XtraEditors.Mask.MaskType)(resources.GetObject("repositoryItemTextEdit1.Mask.MaskType"))); + this.repositoryItemTextEdit1.Name = "repositoryItemTextEdit1"; + // // lblHotkeyLeft // resources.ApplyResources(this.lblHotkeyLeft, "lblHotkeyLeft"); @@ -449,6 +476,7 @@ // // gridRight // + this.gridRight.AllowDrop = true; this.gridRight.DataSource = this.dsChannels; resources.ApplyResources(this.gridRight, "gridRight"); this.gridRight.MainView = this.gviewRight; @@ -458,11 +486,16 @@ this.gridRight.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] { this.gviewRight}); this.gridRight.ProcessGridKey += new System.Windows.Forms.KeyEventHandler(this.gridRight_ProcessGridKey); + this.gridRight.GiveFeedback += new System.Windows.Forms.GiveFeedbackEventHandler(this.grid_GiveFeedback); // // gviewRight // + this.gviewRight.Appearance.FocusedRow.Font = ((System.Drawing.Font)(resources.GetObject("gviewRight.Appearance.FocusedRow.Font"))); + this.gviewRight.Appearance.FocusedRow.Options.UseFont = true; this.gviewRight.Appearance.HeaderPanel.Options.UseTextOptions = true; this.gviewRight.Appearance.HeaderPanel.TextOptions.WordWrap = DevExpress.Utils.WordWrap.Wrap; + this.gviewRight.Appearance.HideSelectionRow.Font = ((System.Drawing.Font)(resources.GetObject("gviewRight.Appearance.HideSelectionRow.Font"))); + this.gviewRight.Appearance.HideSelectionRow.Options.UseFont = true; this.gviewRight.ColumnPanelRowHeight = 35; this.gviewRight.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { this.colIndex, @@ -514,8 +547,10 @@ this.gviewRight.CellValueChanged += new DevExpress.XtraGrid.Views.Base.CellValueChangedEventHandler(this.gviewRight_CellValueChanged); this.gviewRight.CustomColumnDisplayText += new DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventHandler(this.gviewRight_CustomColumnDisplayText); this.gviewRight.LayoutUpgrade += new DevExpress.Utils.LayoutUpgadeEventHandler(this.gviewRight_LayoutUpgrade); + this.gviewRight.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.gview_KeyPress); this.gviewRight.MouseDown += new System.Windows.Forms.MouseEventHandler(this.gview_MouseDown); this.gviewRight.MouseUp += new System.Windows.Forms.MouseEventHandler(this.gview_MouseUp); + this.gviewRight.MouseMove += new System.Windows.Forms.MouseEventHandler(this.gview_MouseMove); this.gviewRight.ValidatingEditor += new DevExpress.XtraEditors.Controls.BaseContainerValidateEditorEventHandler(this.gviewRight_ValidatingEditor); // // colIndex @@ -528,6 +563,8 @@ // colSlotOld // resources.ApplyResources(this.colSlotOld, "colSlotOld"); + this.colSlotOld.DisplayFormat.FormatString = "d"; + this.colSlotOld.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Numeric; this.colSlotOld.FieldName = "OldProgramNr"; this.colSlotOld.Name = "colSlotOld"; this.colSlotOld.OptionsColumn.AllowEdit = false; @@ -536,6 +573,8 @@ // colSlotNew // resources.ApplyResources(this.colSlotNew, "colSlotNew"); + this.colSlotNew.DisplayFormat.FormatString = "d"; + this.colSlotNew.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Numeric; this.colSlotNew.FieldName = "NewProgramNr"; this.colSlotNew.Name = "colSlotNew"; // @@ -837,11 +876,14 @@ this.miSaveReferenceFile, this.miRecentFiles, this.miExcelExport}); + this.barManager1.MainMenu = this.bar1; this.barManager1.MaxItemId = 60; + this.barManager1.ShowFullMenus = true; // // bar1 // this.bar1.BarName = "Tools"; + this.bar1.CanDockStyle = DevExpress.XtraBars.BarCanDockStyle.Top; this.bar1.DockCol = 0; this.bar1.DockRow = 0; this.bar1.DockStyle = DevExpress.XtraBars.BarDockStyle.Top; @@ -864,6 +906,12 @@ new DevExpress.XtraBars.LinkPersistInfo(this.barSubItem1), new DevExpress.XtraBars.LinkPersistInfo(this.mnuHelp, true), new DevExpress.XtraBars.LinkPersistInfo(this.miAbout)}); + this.bar1.OptionsBar.AllowQuickCustomization = false; + this.bar1.OptionsBar.DisableClose = true; + this.bar1.OptionsBar.DisableCustomization = true; + this.bar1.OptionsBar.DrawDragBorder = false; + this.bar1.OptionsBar.MultiLine = true; + this.bar1.OptionsBar.UseWholeRow = true; resources.ApplyResources(this.bar1, "bar1"); // // miFile @@ -1505,6 +1553,7 @@ ((System.ComponentModel.ISupportInitialize)(this.dsChannels)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.gviewLeft)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.repositoryItemCheckedComboBoxEdit1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.repositoryItemTextEdit1)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pnlEditControls)).EndInit(); this.pnlEditControls.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.grpInputList)).EndInit(); @@ -1664,6 +1713,7 @@ private DevExpress.XtraBars.BarButtonItem miSaveReferenceFile; private DevExpress.XtraBars.BarListItem miRecentFiles; private DevExpress.XtraBars.BarButtonItem miExcelExport; + private DevExpress.XtraEditors.Repository.RepositoryItemTextEdit repositoryItemTextEdit1; private DevExpress.XtraSplashScreen.SplashScreenManager splashScreenManager1; } } diff --git a/ChanSort/MainForm.cs b/ChanSort/MainForm.cs index cdb4d32..ee0e5db 100644 --- a/ChanSort/MainForm.cs +++ b/ChanSort/MainForm.cs @@ -24,7 +24,7 @@ namespace ChanSort.Ui { public partial class MainForm : XtraForm { - public const string AppVersion = "v2013-06-22"; + public const string AppVersion = "v2013-06-23"; private const int MaxMruEntries = 5; @@ -37,6 +37,22 @@ namespace ChanSort.Ui } #endregion + #region class DragDropInfo + private class DragDropInfo + { + public readonly GridView SourceView; + public readonly int SourceProgramNumber; + public EditMode EditMode; + public int DropRowHandle = -1; + + public DragDropInfo(GridView source, int sourceProgramNumber) + { + this.SourceView = source; + this.SourceProgramNumber = sourceProgramNumber; + } + } + #endregion + private readonly IList plugins; private string currentTvFile; private string currentCsvFile; @@ -53,6 +69,8 @@ namespace ChanSort.Ui private EditMode curEditMode = EditMode.InsertAfter; private bool dontOpenEditor; private readonly List mruFiles = new List(); + private DevExpress.XtraGrid.Views.Grid.ViewInfo.GridHitInfo downHit; + private DragDropInfo dragDropInfo; #region ctor() public MainForm() @@ -502,7 +520,16 @@ namespace ChanSort.Ui #endregion - + #region IsLeftGridSortedByNewProgNr + private bool IsLeftGridSortedByNewProgNr + { + get + { + return this.gviewLeft.SortedColumns.Count >= 1 && + this.gviewLeft.SortedColumns[0].FieldName == this.colOutSlot.FieldName; + } + } + #endregion #region ShowChannelList() private void ShowChannelList(ChannelList channelList) @@ -743,6 +770,7 @@ namespace ChanSort.Ui private void MoveChannels(bool up) { + if (!this.IsLeftGridSortedByNewProgNr) return; var selectedChannels = this.GetSelectedChannels(this.gviewLeft); if (selectedChannels.Count == 0) return; @@ -1214,10 +1242,11 @@ namespace ChanSort.Ui this.miMoveDown.Visibility = visLeft; this.miAddChannel.Visibility = visRight; + bool isLeftGridSortedByNewProgNr = this.IsLeftGridSortedByNewProgNr; var sel = this.gviewLeft.GetSelectedRows(); var channel = sel.Length == 0 ? null : (ChannelInfo) this.gviewRight.GetRow(sel[0]); - this.miMoveUp.Enabled = this.btnUp.Enabled = mayEdit && channel != null && channel.NewProgramNr > this.currentChannelList.FirstProgramNumber; - this.miMoveDown.Enabled = this.btnDown.Enabled = mayEdit; + this.miMoveUp.Enabled = this.btnUp.Enabled = mayEdit && isLeftGridSortedByNewProgNr && channel != null && channel.NewProgramNr > this.currentChannelList.FirstProgramNumber; + this.miMoveDown.Enabled = this.btnDown.Enabled = mayEdit && isLeftGridSortedByNewProgNr; this.miTvSettings.Enabled = this.currentTvSerializer != null; this.miCleanupChannels.Visibility = this.currentTvSerializer != null && @@ -1653,27 +1682,27 @@ namespace ChanSort.Ui private void gview_MouseDown(object sender, MouseEventArgs e) { GridView view = (GridView)sender; - var hit = view.CalcHitInfo(e.Location); - if (!view.IsDataRow(hit.RowHandle)) + this.downHit = view.CalcHitInfo(e.Location); + if (!view.IsDataRow(downHit.RowHandle)) return; if (e.Button == MouseButtons.Left) { if (ModifierKeys == Keys.None) { - if (hit.RowHandle != view.FocusedRowHandle) - SelectFocusedRow(view, hit.RowHandle); + if (downHit.RowHandle != view.FocusedRowHandle) + SelectFocusedRow(view, downHit.RowHandle); this.timerEditDelay.Start(); } else { - if (ModifierKeys == Keys.Control && !view.IsRowSelected(hit.RowHandle)) - this.BeginInvoke((Action) (() => view.SelectRow(hit.RowHandle))); + if (ModifierKeys == Keys.Control && !view.IsRowSelected(downHit.RowHandle)) + this.BeginInvoke((Action) (() => view.SelectRow(downHit.RowHandle))); } } else if (e.Button == MouseButtons.Right) { - if (!view.IsRowSelected(hit.RowHandle)) - SelectFocusedRow(view, hit.RowHandle); + if (!view.IsRowSelected(downHit.RowHandle)) + SelectFocusedRow(view, downHit.RowHandle); } this.dontOpenEditor = true; @@ -1690,7 +1719,11 @@ namespace ChanSort.Ui this.timerEditDelay.Stop(); this.dontOpenEditor = false; if (this.lastFocusedGrid != null) - this.lastFocusedGrid.ShowEditor(); + { + var hit = this.lastFocusedGrid.CalcHitInfo(this.lastFocusedGrid.GridControl.PointToClient(MousePosition)); + if (hit.Column == this.lastFocusedGrid.FocusedColumn && hit.RowHandle == this.lastFocusedGrid.FocusedRowHandle) + this.lastFocusedGrid.ShowEditor(); + } } private void gview_ShowingEditor(object sender, System.ComponentModel.CancelEventArgs e) @@ -1701,125 +1734,157 @@ namespace ChanSort.Ui } #endregion - #region gviewLeft_LayoutUpgrade, gviewRight_LayoutUpgrade - private void gviewLeft_LayoutUpgrade(object sender, LayoutUpgadeEventArgs e) + #region gview_ShownEditor, gview_KeyPress + + private void gview_ShownEditor(object sender, EventArgs e) { - this.gviewLeft.ClearGrouping(); - this.gviewLeft.OptionsCustomization.AllowGroup = false; + GridView view = (GridView)sender; + TextEdit edit = view.ActiveEditor as TextEdit; + if (edit == null) return; + edit.Properties.MaxLength = view.FocusedColumn.FieldName == "Name" ? this.currentChannelList.MaxChannelNameLength : 0; } - private void gviewRight_LayoutUpgrade(object sender, LayoutUpgadeEventArgs e) + private void gview_KeyPress(object sender, KeyPressEventArgs e) { - this.gviewRight.ClearGrouping(); - this.gviewRight.OptionsCustomization.AllowGroup = false; - } - #endregion - - #region gviewRight_FocusedRowChanged - private void gviewRight_FocusedRowChanged(object sender, FocusedRowChangedEventArgs e) - { - this.gviewRight.SelectRow(e.FocusedRowHandle); - } - #endregion - - #region gviewRight_CustomColumnDisplayText - private void gviewRight_CustomColumnDisplayText(object sender, CustomColumnDisplayTextEventArgs e) - { - if (e.Column == this.colSlotNew) - { - if (!(e.Value is int)) return; - if ((int) e.Value == -1) - e.DisplayText = string.Empty; - } - else if (e.Column == this.colFavorites) - { - if (!(e.Value is Favorites)) return; - if ((Favorites) e.Value == 0) - e.DisplayText = string.Empty; - } - } - #endregion - - #region gviewRight_RowCellStyle - private void gviewRight_RowCellStyle(object sender, RowCellStyleEventArgs e) - { - ChannelInfo channel = (ChannelInfo)this.gviewRight.GetRow(e.RowHandle); - if (channel == null) return; - if (channel.OldProgramNr == -1) - { - e.Appearance.ForeColor = Color.Red; - e.Appearance.Options.UseForeColor = true; - } - else if (channel.NewProgramNr != -1) - { - e.Appearance.ForeColor = Color.Gray; - e.Appearance.Options.UseForeColor = true; - } - } - #endregion - - #region gviewRight_RowClick - private void gviewRight_RowClick(object sender, RowClickEventArgs e) - { - if (e.Clicks == 2 && e.Button == MouseButtons.Left && this.gviewRight.IsDataRow(e.RowHandle)) - TryExecute(this.AddChannels); - } - #endregion - - #region gridRight_ProcessGridKey - private void gridRight_ProcessGridKey(object sender, KeyEventArgs e) - { - if (this.gviewRight.ActiveEditor != null) - return; - if (e.KeyCode == Keys.Enter && this.currentChannelList !=null && !this.currentChannelList.ReadOnly) - { - TryExecute(this.AddChannels); + var view = (GridView)sender; + if (view.FocusedColumn.DisplayFormat.FormatType == FormatType.Numeric && (e.KeyChar < '0' || e.KeyChar > '9')) e.Handled = true; - } } - #endregion - #region gviewRight_ValidatingEditor - private void gviewRight_ValidatingEditor(object sender, BaseContainerValidateEditorEventArgs e) + #region gview_MouseMove + private void gview_MouseMove(object sender, MouseEventArgs e) { try { - if (gviewRight.FocusedRowHandle == GridControl.AutoFilterRowHandle) + var view = (GridView)sender; + if (this.downHit == null || e.Button != MouseButtons.Left || view.ActiveEditor != null || ModifierKeys != Keys.None) return; - if (this.gviewRight.FocusedColumn == this.colSlotNew && e.Value is string) - e.Valid = this.SetSlotNumber((string)e.Value); - else if (this.gviewRight.FocusedColumn == this.colFavorites && e.Value is string) - e.Value = ChannelInfo.ParseFavString((string)e.Value); - else if (gviewRight.FocusedColumn == this.colName) + // drag/drop only allowed when left grid is sorted by NewSlotNr + if (!this.IsLeftGridSortedByNewProgNr) + return; + if (Math.Abs(e.Y - downHit.HitPoint.Y) < SystemInformation.DragSize.Height && + Math.Abs(e.X - downHit.HitPoint.X) < SystemInformation.DragSize.Width) + return; + + // start drag operation + var channel = (ChannelInfo)view.GetRow(downHit.RowHandle); + this.dragDropInfo = new DragDropInfo(view, channel.NewProgramNr); + view.GridControl.DoDragDrop(this.dragDropInfo, DragDropEffects.Move); + this.downHit = null; + } + catch (Exception ex) { HandleException(ex); } + } + #endregion + + #region grid_GiveFeedback + private void grid_GiveFeedback(object sender, GiveFeedbackEventArgs e) + { + // this event is called on the source of the drag operation + e.UseDefaultCursors = false; + if (e.Effect == DragDropEffects.Move) + { + if (this.dragDropInfo.EditMode == EditMode.InsertBefore) + Cursor.Current = Cursors.PanNE; + else if (this.dragDropInfo.EditMode == EditMode.InsertAfter) + Cursor.Current = Cursors.PanSE; + else + Cursor.Current = Cursors.HSplit; + } + else if (sender == this.gridRight) + Cursor.Current = Cursors.PanWest; + else + Cursor.Current = Cursors.No; + } + #endregion + + #region gridLeft_DragOver + private void gridLeft_DragOver(object sender, DragEventArgs e) + { + // this event is called on the current target of the drag operation + var point = this.gridLeft.PointToClient(MousePosition); + var hit = this.gviewLeft.CalcHitInfo(point); + if (hit.RowHandle >= 0) + { + var vi = (DevExpress.XtraGrid.Views.Grid.ViewInfo.GridViewInfo)this.gviewLeft.GetViewInfo(); + var rowInfo = vi.GetGridRowInfo(hit.RowHandle); + ChannelInfo dropChannel = (ChannelInfo)this.gviewLeft.GetRow(hit.RowHandle); + bool moveUp = this.dragDropInfo.SourceProgramNumber < 0 || dropChannel.NewProgramNr <= this.dragDropInfo.SourceProgramNumber; + if (moveUp && point.Y < rowInfo.Bounds.Top + rowInfo.Bounds.Height / 2) + this.dragDropInfo.EditMode = EditMode.InsertBefore; + else if (!moveUp && point.Y > rowInfo.Bounds.Top + rowInfo.Bounds.Height / 2) + this.dragDropInfo.EditMode = EditMode.InsertAfter; + else if (this.dragDropInfo.SourceView == this.gviewLeft) + this.dragDropInfo.EditMode = EditMode.Swap; + else if (moveUp) + this.dragDropInfo.EditMode = EditMode.InsertAfter; + else + this.dragDropInfo.EditMode = EditMode.InsertBefore; + + this.dragDropInfo.DropRowHandle = hit.RowHandle; + e.Effect = DragDropEffects.Move; + return; + } + + e.Effect = DragDropEffects.None; + this.dragDropInfo.DropRowHandle = GridControl.InvalidRowHandle; + } + #endregion + + #region gridLeft_DragDrop + private void gridLeft_DragDrop(object sender, DragEventArgs e) + { + try + { + if (this.dragDropInfo.DropRowHandle < 0) return; + this.curEditMode = this.dragDropInfo.EditMode; + var dropChannel = (ChannelInfo)this.gviewLeft.GetRow(this.dragDropInfo.DropRowHandle); + + var selectedChannels = this.GetSelectedChannels(this.dragDropInfo.SourceView); + int newProgNr; + if (this.dragDropInfo.EditMode != EditMode.InsertAfter || !this.cbCloseGap.Checked) + newProgNr = dropChannel.NewProgramNr; + else { - var ci = this.gviewRight.GetFocusedRow() as ChannelInfo; - this.VerifyChannelNameModified(ci, e.Value as string); - //this.BeginInvoke((Action) (() => RefreshGrid(this.gviewLeft))); + int numberOfChannelsToMoveDown = 0; + foreach (var channel in selectedChannels) + { + if (channel.NewProgramNr <= dropChannel.NewProgramNr) + ++numberOfChannelsToMoveDown; + } + newProgNr = dropChannel.NewProgramNr + 1 - numberOfChannelsToMoveDown; } - dataRoot.NeedsSaving = true; - } catch(Exception ex) { HandleException(ex); } + + this.editor.SetSlotNumber(selectedChannels, newProgNr, this.dragDropInfo.EditMode == EditMode.Swap, this.cbCloseGap.Checked); + this.RefreshGrid(this.gviewLeft, this.gviewRight); + } + catch (Exception ex) + { + HandleException(ex); + } } #endregion - #region gviewRight_CellValueChanged - private void gviewRight_CellValueChanged(object sender, CellValueChangedEventArgs e) + #region gridLeft_ProcessGridKey + private void gridLeft_ProcessGridKey(object sender, KeyEventArgs e) { - TryExecute(() => RefreshGrid(this.gviewLeft)); + if (this.currentChannelList != null && this.currentChannelList.ReadOnly) + return; + if (gviewLeft.ActiveEditor != null) + return; + if (e.KeyCode == Keys.Delete) + TryExecute(() => this.RemoveChannels(this.gviewLeft, this.cbCloseGap.Checked)); + else if (e.KeyCode == Keys.Add) + TryExecute(() => this.MoveChannels(false)); + else if (e.KeyCode == Keys.Subtract) + TryExecute(() => this.MoveChannels(true)); + else + return; + e.Handled = true; + e.SuppressKeyPress = true; } #endregion - #region gviewRight_PopupMenuShowing - private void gviewRight_PopupMenuShowing(object sender, PopupMenuShowingEventArgs e) - { - this.lastFocusedGrid = this.gviewRight; - this.UpdateMenu(); - if (e.MenuType == GridMenuType.Row) - this.mnuContext.ShowPopup(this.gridRight.PointToScreen(e.Point)); - } - #endregion - - #region gviewLeft_FocusedRowChanged private void gviewLeft_FocusedRowChanged(object sender, FocusedRowChangedEventArgs e) @@ -1880,11 +1945,11 @@ namespace ChanSort.Ui if (this.gviewLeft.FocusedColumn == this.colOutSlot && e.Value is string) e.Valid = this.SetSlotNumber((string)e.Value); else if (this.gviewLeft.FocusedColumn == this.colOutFav && e.Value is string) - e.Value = ChannelInfo.ParseFavString((string) e.Value); + e.Value = ChannelInfo.ParseFavString((string)e.Value); else if (gviewLeft.FocusedColumn == this.colOutName) { this.VerifyChannelNameModified(this.gviewLeft.GetFocusedRow() as ChannelInfo, e.Value as string); - this.BeginInvoke((Action) (() => RefreshGrid(this.gviewLeft))); + this.BeginInvoke((Action)(() => RefreshGrid(this.gviewLeft))); } dataRoot.NeedsSaving = true; } @@ -1915,31 +1980,138 @@ namespace ChanSort.Ui { if (e.Clicks == 2 && e.Button == MouseButtons.Left && this.gviewLeft.IsDataRow(e.RowHandle)) { - ChannelInfo channel = (ChannelInfo) this.gviewLeft.GetRow(e.RowHandle); + ChannelInfo channel = (ChannelInfo)this.gviewLeft.GetRow(e.RowHandle); this.NavigateToChannel(channel, this.gviewRight); } } #endregion - #region gridLeft_ProcessGridKey - private void gridLeft_ProcessGridKey(object sender, KeyEventArgs e) + #region gviewLeft_EndSorting + private void gviewLeft_EndSorting(object sender, EventArgs e) { - if (this.currentChannelList != null && this.currentChannelList.ReadOnly) - return; - if (gviewLeft.ActiveEditor != null) - return; - if (e.KeyCode == Keys.Delete) - TryExecute(() => this.RemoveChannels(this.gviewLeft, this.cbCloseGap.Checked)); - else if (e.KeyCode == Keys.Add) - TryExecute(() => this.MoveChannels(false)); - else if (e.KeyCode == Keys.Subtract) - TryExecute(() => this.MoveChannels(true)); - else - return; - e.Handled = true; + TryExecute(this.UpdateMenu); } #endregion + #region gviewLeft_LayoutUpgrade, gviewRight_LayoutUpgrade + private void gviewLeft_LayoutUpgrade(object sender, LayoutUpgadeEventArgs e) + { + this.gviewLeft.ClearGrouping(); + this.gviewLeft.OptionsCustomization.AllowGroup = false; + } + + private void gviewRight_LayoutUpgrade(object sender, LayoutUpgadeEventArgs e) + { + this.gviewRight.ClearGrouping(); + this.gviewRight.OptionsCustomization.AllowGroup = false; + } + #endregion + + #region gridRight_ProcessGridKey + private void gridRight_ProcessGridKey(object sender, KeyEventArgs e) + { + if (this.gviewRight.ActiveEditor != null) + return; + if (e.KeyCode == Keys.Enter && this.currentChannelList != null && !this.currentChannelList.ReadOnly) + { + TryExecute(this.AddChannels); + e.Handled = true; + } + } + + #endregion + + #region gviewRight_FocusedRowChanged + private void gviewRight_FocusedRowChanged(object sender, FocusedRowChangedEventArgs e) + { + this.gviewRight.SelectRow(e.FocusedRowHandle); + } + #endregion + + #region gviewRight_CustomColumnDisplayText + private void gviewRight_CustomColumnDisplayText(object sender, CustomColumnDisplayTextEventArgs e) + { + if (e.Column == this.colSlotNew) + { + if (!(e.Value is int)) return; + if ((int) e.Value == -1) + e.DisplayText = string.Empty; + } + else if (e.Column == this.colFavorites) + { + if (!(e.Value is Favorites)) return; + if ((Favorites) e.Value == 0) + e.DisplayText = string.Empty; + } + } + #endregion + + #region gviewRight_RowCellStyle + private void gviewRight_RowCellStyle(object sender, RowCellStyleEventArgs e) + { + ChannelInfo channel = (ChannelInfo)this.gviewRight.GetRow(e.RowHandle); + if (channel == null) return; + if (channel.OldProgramNr == -1) + { + e.Appearance.ForeColor = Color.Red; + e.Appearance.Options.UseForeColor = true; + } + else if (channel.NewProgramNr != -1) + { + e.Appearance.ForeColor = Color.Gray; + e.Appearance.Options.UseForeColor = true; + } + } + #endregion + + #region gviewRight_RowClick + private void gviewRight_RowClick(object sender, RowClickEventArgs e) + { + if (e.Clicks == 2 && e.Button == MouseButtons.Left && this.gviewRight.IsDataRow(e.RowHandle)) + TryExecute(this.AddChannels); + } + #endregion + + #region gviewRight_ValidatingEditor + private void gviewRight_ValidatingEditor(object sender, BaseContainerValidateEditorEventArgs e) + { + try + { + if (gviewRight.FocusedRowHandle == GridControl.AutoFilterRowHandle) + return; + if (this.gviewRight.FocusedColumn == this.colSlotNew && e.Value is string) + e.Valid = this.SetSlotNumber((string)e.Value); + else if (this.gviewRight.FocusedColumn == this.colFavorites && e.Value is string) + e.Value = ChannelInfo.ParseFavString((string)e.Value); + else if (gviewRight.FocusedColumn == this.colName) + { + var ci = this.gviewRight.GetFocusedRow() as ChannelInfo; + this.VerifyChannelNameModified(ci, e.Value as string); + //this.BeginInvoke((Action) (() => RefreshGrid(this.gviewLeft))); + } + dataRoot.NeedsSaving = true; + } catch(Exception ex) { HandleException(ex); } + } + #endregion + + #region gviewRight_CellValueChanged + private void gviewRight_CellValueChanged(object sender, CellValueChangedEventArgs e) + { + TryExecute(() => RefreshGrid(this.gviewLeft)); + } + #endregion + + #region gviewRight_PopupMenuShowing + private void gviewRight_PopupMenuShowing(object sender, PopupMenuShowingEventArgs e) + { + this.lastFocusedGrid = this.gviewRight; + this.UpdateMenu(); + if (e.MenuType == GridMenuType.Row) + this.mnuContext.ShowPopup(this.gridRight.PointToScreen(e.Point)); + } + #endregion + + #region rbInsertMode_CheckedChanged private void rbInsertMode_CheckedChanged(object sender, EventArgs e) { @@ -2121,13 +2293,5 @@ namespace ChanSort.Ui } #endregion - private void gview_ShownEditor(object sender, EventArgs e) - { - GridView view = (GridView) sender; - TextEdit edit = view.ActiveEditor as TextEdit; - if (edit == null) return; - edit.Properties.MaxLength = view.FocusedColumn.FieldName == "Name" ? this.currentChannelList.MaxChannelNameLength : 0; - } - } } diff --git a/ChanSort/MainForm.de.resx b/ChanSort/MainForm.de.resx index e8c7b33..1d66f4b 100644 --- a/ChanSort/MainForm.de.resx +++ b/ChanSort/MainForm.de.resx @@ -117,50 +117,6 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - - - - - - Default - - - Top, Left - - - - - - Tile - - - Inherit - - - - Center - - - - - - - None - - - - - - - Horizontal - - - - Neue Pr# @@ -173,34 +129,13 @@ Favoriten - - Default - - - - False - - - True - - - _ - - - True - - - True - - - False - Ge- sperrt Kindersicherung + 333, 17 @@ -288,6 +223,12 @@ Geräte&einstellungen... + + Senderliste bereinigen + + + Senderdatensätze neu organisieren und Duplikate entfernen + &Einstellungen @@ -353,126 +294,24 @@ WIeWYGkVXQEL - - Horizontal - - - - - - Horizontal - - - - - - Horizontal - - - - - - Horizontal - - - - Nach oben Nach unten - - - - - - - - Horizontal - - - - - - True - tauschen - - - - - - - - - - - - - - - - - True - dahinter - - - - - - - - - - - - - - - - - True - davor - - - - - - - - - - - - - - - - - True - Lücken beim Verschieben/Entfernen von Sendern schließen - - - - - - - - - Wenn aktiv, werden folgende Programmnummer automatisch vorgerückt @@ -482,18 +321,6 @@ Einfügemodus: - - - - - - - - Horizontal - - - - Keine Datei geladen @@ -503,54 +330,12 @@ Programplatz für Einfügen und Festlegen - - - - - - - - True - - - Default - - - False - - - True - - - _ - - - True - - - True - - - False - - - - - - False - ChanSort {0} - Senderlisten-Editor für Samsung, LG und Toshiba TVs Kindersicherung - - Horizontal - - - - Filter entfernen @@ -566,45 +351,6 @@ Sortierte Sender (.csv) - - - - - - - - Default - - - Top, Left - - - - - - Tile - - - Inherit - - - Center - - - - - - None - - - - - - Horizontal - - - - Alte Pr# @@ -626,27 +372,6 @@ Favoriten - - Default - - - False - - - True - - - _ - - - True - - - True - - - False - Ge- sperrt @@ -701,12 +426,6 @@ Aller derzeit nicht sortierten Sender ans Ende der Liste anhängen - - Horizontal - - - - Filter entfernen diff --git a/ChanSort/MainForm.resx b/ChanSort/MainForm.resx index cdae680..b766b63 100644 --- a/ChanSort/MainForm.resx +++ b/ChanSort/MainForm.resx @@ -123,7 +123,7 @@ - 0, 88 + 0, 81 361, 17 @@ -134,6 +134,12 @@ 2, 54 + + Tahoma, 8.25pt, style=Bold + + + Tahoma, 8.25pt, style=Bold + Pr. index @@ -221,8 +227,14 @@ 35 + + False + + + Numeric + - 382, 438 + 382, 445 1 @@ -243,7 +255,7 @@ Bottom - 2, 492 + 2, 499 2, 2, 2, 2 @@ -470,7 +482,7 @@ 0, 0 - 1474, 31 + 1474, 24 barDockControlTop @@ -509,10 +521,10 @@ Left - 0, 31 + 0, 24 - 0, 568 + 0, 575 barDockControlLeft @@ -530,10 +542,10 @@ Right - 1474, 31 + 1474, 24 - 0, 568 + 0, 575 barDockControlRight @@ -687,7 +699,7 @@ Top, Right - 1296, 8 + 1296, 4 Transparent @@ -816,7 +828,7 @@ Top - 0, 31 + 0, 24 1474, 57 @@ -905,6 +917,12 @@ DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + repositoryItemTextEdit1 + + + DevExpress.XtraEditors.Repository.RepositoryItemTextEdit, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + globalImageCollection1 @@ -1404,7 +1422,7 @@ DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - 05/26/2013 22:01:32 + 06/23/2013 14:48:34 16, 16 @@ -1719,7 +1737,7 @@ 0, 0 - 386, 511 + 386, 518 0 @@ -1748,6 +1766,12 @@ 2, 54 + + Tahoma, 8.25pt, style=Bold + + + Tahoma, 8.25pt, style=Bold + Pr. index @@ -2049,7 +2073,7 @@ Signal source - 1079, 438 + 1079, 445 1 @@ -2070,7 +2094,7 @@ Bottom - 2, 492 + 2, 499 2, 2, 2, 2 @@ -2238,7 +2262,7 @@ 0, 0 - 1083, 511 + 1083, 518 0 @@ -2262,7 +2286,7 @@ Panel2 - 1474, 511 + 1474, 518 5 diff --git a/ChanSort/Properties/licenses.licx b/ChanSort/Properties/licenses.licx index c04a81a..e0298cf 100644 --- a/ChanSort/Properties/licenses.licx +++ b/ChanSort/Properties/licenses.licx @@ -1,7 +1,8 @@ -DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraEditors.Repository.RepositoryItemTextEdit, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraTab.XtraTabControl, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a DevExpress.XtraSplashScreen.SplashScreenManager, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a DevExpress.XtraEditors.ButtonEdit, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a -DevExpress.XtraTab.XtraTabControl, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a -DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a DevExpress.XtraBars.BarManager, DevExpress.XtraBars.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a diff --git a/makeDistribZip.cmd b/makeDistribZip.cmd index 59bab7d..9b3525d 100644 --- a/makeDistribZip.cmd +++ b/makeDistribZip.cmd @@ -1,5 +1,7 @@ @echo off -set target=%cd%\..\Program +c:\cygwin\bin\date "+%%Y-%%m-%%d">%TEMP%\date.txt +set /p curdate=<%temp%\date.txt +set target=%cd%\..\ChanSort_%curdate% set DXversion=12.2 mkdir "%target%" 2>nul del /s /q "%target%\*" @@ -17,10 +19,9 @@ for %%f in (Utils Data XtraEditors XtraBars XtraGrid XtraLayout) do call :copyDl cd .. del Website\ChanSort.zip 2>nul copy Source\readme.txt %target% -cd %target% -c:\cygwin\bin\date "+%%Y-%%m-%%d">%TEMP%\date.txt -set /p curdate=<%temp%\date.txt -"c:\program files (x86)\7-Zip\7z.exe" a -tzip ChanSort_%curdate%.zip * +cd %target%\.. +"c:\program files\7-Zip\7z.exe" a -tzip ChanSort_%curdate%.zip ChanSort_%curdate% +rem c:\cygwin\bin\gzip --name -r -9 ChanSort_%curdate%.zip ChanSort%curdate% pause diff --git a/readme.txt b/readme.txt index 603d8c0..c87edf7 100644 --- a/readme.txt +++ b/readme.txt @@ -1,11 +1,13 @@ -Version v2013-06-22 ====================================================== +Version v2013-06-23 ====================================================== Changes: -- Showing separate DVB-C and DVB-T lists for LG TVs (LA series can have - both lists while prior models only had one) -- FIX: Lists for LG's LD,LE,LX,PK (except 950), PT, LW4500, LW5400 models - are now physically reordered -- Empty lists are no longer displayed +- Drag&Drop inside left list and from right to left list + (only available when the left list is sorted by "New Pr#") +- Simplified menu/tool bar +- FIX: Moving multiple channels down now works correctly +- FIX: +/- keys no longer open the cell-editor after moving a channel +- Editor for "New Pr#" no longer opens when pressing non-numeric keys +- Move up/down is now disabled when left list is not sorted by "New Pr#" The complete change log can be found at the end of this document @@ -103,6 +105,15 @@ OTHER DEALINGS IN THE SOFTWARE. Change log ================================================================ +2013-06-23 +- Drag&Drop inside left list and from right to left list + (only available when the left list is sorted by "New Pr#") +- Simplified menu/tool bar +- FIX: Moving multiple channels down now works correctly +- FIX: +/- keys no longer open the cell-editor after moving a channel +- Editor for "New Pr#" no longer opens when pressing non-numeric keys +- Move up/down is now disabled when left list is not sorted by "New Pr#" + 2013-06-22 - Showing separate DVB-C and DVB-T lists for LG TVs (LA series can have both lists while prior models only had one)