Skip to content

Commit

Permalink
Support for more languages in Teletext (patch from arion_p)
Browse files Browse the repository at this point in the history
  • Loading branch information
SilentException committed Nov 24, 2011
1 parent dae49a0 commit 41effbc
Show file tree
Hide file tree
Showing 9 changed files with 1,309 additions and 218 deletions.
1,061 changes: 852 additions & 209 deletions TvEngine3/TVLibrary/TvPlugin/TvPlugin/teletext/TeletextPageRenderer.cs

Large diffs are not rendered by default.

Expand Up @@ -19,6 +19,7 @@
#endregion #endregion


using MediaPortal.GUI.Library; using MediaPortal.GUI.Library;
using MediaPortal.Dialogs;


namespace TvPlugin namespace TvPlugin
{ {
Expand Down Expand Up @@ -82,12 +83,101 @@ public override void OnAction(Action action)
// Rerender the image // Rerender the image
RequestUpdate(false); RequestUpdate(false);
break; break;
case Action.ActionType.ACTION_CONTEXT_MENU:
ShowContextMenu();
return;
} }
base.OnAction(action); base.OnAction(action);
} }


#endregion #endregion


#region Context Menu
private void ShowContextMenu()
{
GUIDialogMenu dlg = (GUIDialogMenu)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_MENU);
if (dlg == null || _renderer == null)
{
GUIWindowManager.ShowPreviousWindow();
return;
}

dlg.Reset();
dlg.SetHeading(1441); // Teletext

dlg.AddLocalizedString(1439); // Change default language
dlg.AddLocalizedString(970); // Previous window

dlg.DoModal(GetID);

if (dlg.SelectedId == -1)
return;
switch (dlg.SelectedId)
{
case 1439: // Change default language
{
dlg.Reset();
dlg.SetHeading(1438); // Change default Teletext language

dlg.AddLocalizedString(1400); // Latin
dlg.AddLocalizedString(1401); // Latin / Polish
dlg.AddLocalizedString(1402); // Latin / Turkish
dlg.AddLocalizedString(1403); // Latin: sb/cr/sl/ro
dlg.AddLocalizedString(1404); // Cyrilic
dlg.AddLocalizedString(1405); // Greek / Turkish
dlg.AddLocalizedString(1406); // Arabic
dlg.AddLocalizedString(1407); // Hebrew / Arabic

if (DefaultCharSetDesignation <= 4 && DefaultCharSetDesignation >= 0)
dlg.SelectedLabel = DefaultCharSetDesignation;
else if (DefaultCharSetDesignation == 6)
dlg.SelectedLabel = 5;
else if (DefaultCharSetDesignation == 8)
dlg.SelectedLabel = 6;
else if (DefaultCharSetDesignation == 10)
dlg.SelectedLabel = 7;

dlg.DoModal(GetID);

if (dlg.SelectedId == -1)
return;
switch (dlg.SelectedId)
{
case 1400:
DefaultCharSetDesignation = 0;
break;
case 1401:
DefaultCharSetDesignation = 1;
break;
case 1402:
DefaultCharSetDesignation = 2;
break;
case 1403:
DefaultCharSetDesignation = 3;
break;
case 1404:
DefaultCharSetDesignation = 4;
break;
case 1405:
DefaultCharSetDesignation = 6;
break;
case 1406:
DefaultCharSetDesignation = 8;
break;
case 1407:
DefaultCharSetDesignation = 10;
break;
}
//SaveSettings();
return;
}
case 970: // Previous window
GUIWindowManager.ShowPreviousWindow();
return;
}
}
#endregion

#region Rendering method #region Rendering method


public override void Render(float timePassed) public override void Render(float timePassed)
Expand Down
67 changes: 67 additions & 0 deletions TvEngine3/TVLibrary/TvPlugin/TvPlugin/teletext/TvTeletext.cs
Expand Up @@ -21,6 +21,7 @@
using System; using System;
using MediaPortal.GUI.Library; using MediaPortal.GUI.Library;
using Action = MediaPortal.GUI.Library.Action; using Action = MediaPortal.GUI.Library.Action;
using MediaPortal.Dialogs;


namespace TvPlugin.teletext namespace TvPlugin.teletext
{ {
Expand All @@ -37,6 +38,7 @@ public class TVTeletext : TvTeletextBase
[SkinControl(505)] protected GUIToggleButtonControl btnHidden = null; [SkinControl(505)] protected GUIToggleButtonControl btnHidden = null;
[SkinControl(506)] protected GUISelectButtonControl btnSubPage = null; [SkinControl(506)] protected GUISelectButtonControl btnSubPage = null;
[SkinControl(507)] protected GUIButtonControl btnFullscreen = null; [SkinControl(507)] protected GUIButtonControl btnFullscreen = null;
[SkinControl(508)] protected GUIButtonControl btnLanguage = null;


#endregion #endregion


Expand Down Expand Up @@ -153,9 +155,74 @@ protected override void OnClicked(int controlId, GUIControl control, Action.Acti
GUIGraphicsContext.IsFullScreenVideo = true; GUIGraphicsContext.IsFullScreenVideo = true;
GUIWindowManager.ActivateWindow((int)Window.WINDOW_FULLSCREEN_TELETEXT); GUIWindowManager.ActivateWindow((int)Window.WINDOW_FULLSCREEN_TELETEXT);
} }
if (control == btnLanguage)
{
SelectLanguage();
}
base.OnClicked(controlId, control, actionType); base.OnClicked(controlId, control, actionType);
} }


private void SelectLanguage()
{
GUIDialogMenu dlg = (GUIDialogMenu)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_MENU);
if (dlg == null || _renderer == null)
return;

dlg.Reset();
dlg.SetHeading(1438); // Change default Teletext language

dlg.AddLocalizedString(1400); // Latin
dlg.AddLocalizedString(1401); // Latin / Polish
dlg.AddLocalizedString(1402); // Latin / Turkish
dlg.AddLocalizedString(1403); // Latin: sb/cr/sl/ro
dlg.AddLocalizedString(1404); // Cyrilic
dlg.AddLocalizedString(1405); // Greek / Turkish
dlg.AddLocalizedString(1406); // Arabic
dlg.AddLocalizedString(1407); // Hebrew / Arabic

if (DefaultCharSetDesignation <= 4 && DefaultCharSetDesignation >= 0)
dlg.SelectedLabel = DefaultCharSetDesignation;
else if (DefaultCharSetDesignation == 6)
dlg.SelectedLabel = 5;
else if (DefaultCharSetDesignation == 8)
dlg.SelectedLabel = 6;
else if (DefaultCharSetDesignation == 10)
dlg.SelectedLabel = 7;

dlg.DoModal(GetID);

if (dlg.SelectedId == -1)
return;
switch (dlg.SelectedId)
{
case 1400:
DefaultCharSetDesignation = 0;
break;
case 1401:
DefaultCharSetDesignation = 1;
break;
case 1402:
DefaultCharSetDesignation = 2;
break;
case 1403:
DefaultCharSetDesignation = 3;
break;
case 1404:
DefaultCharSetDesignation = 4;
break;
case 1405:
DefaultCharSetDesignation = 6;
break;
case 1406:
DefaultCharSetDesignation = 8;
break;
case 1407:
DefaultCharSetDesignation = 10;
break;
}
//SaveSettings();
return;
}
#endregion #endregion


public override void Render(float timePassed) public override void Render(float timePassed)
Expand Down
113 changes: 110 additions & 3 deletions TvEngine3/TVLibrary/TvPlugin/TvPlugin/teletext/TvTeletextBase.cs
Expand Up @@ -80,7 +80,8 @@ public class TvTeletextBase : GUIInternalWindow
protected bool _redrawForeground = true; protected bool _redrawForeground = true;
protected bool _showFirstAvailableSubPage = false; protected bool _showFirstAvailableSubPage = false;
protected DateTime _trottling = DateTime.MinValue; protected DateTime _trottling = DateTime.MinValue;

protected int _defaultCharSetDesignation = 0;
protected System.Drawing.Text.TextRenderingHint _textRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixelGridFit;
#endregion #endregion


#region Properties #region Properties
Expand All @@ -91,6 +92,26 @@ public override bool IsTv
{ {
return true; return true;
} }
}

public int DefaultCharSetDesignation
{
get
{
return _defaultCharSetDesignation;
}
set
{
if (_defaultCharSetDesignation != value)
{
_defaultCharSetDesignation = value;
if (_renderer != null)
{
_renderer.DefaultCharSetDesignation = _defaultCharSetDesignation;
}
_numberOfRequestedUpdates++;
}
}
} }


public bool Waiting public bool Waiting
Expand Down Expand Up @@ -142,6 +163,10 @@ protected void InitializeWindow(bool fullscreenMode)
_renderer.HiddenMode = _hiddenMode; _renderer.HiddenMode = _hiddenMode;
_renderer.PageSelectText = Convert.ToString(currentPageNumber, 16); _renderer.PageSelectText = Convert.ToString(currentPageNumber, 16);
_renderer.PercentageOfMaximumHeight = _percentageOfMaximumHeight; _renderer.PercentageOfMaximumHeight = _percentageOfMaximumHeight;
_renderer.DefaultCharSetDesignation = _defaultCharSetDesignation;
_renderer.TextRenderingHint = _textRenderingHint;
// For now second G0 charset designation is always Latin
_renderer.SecondCharSetDesignation = 0;


_waiting = false; _waiting = false;


Expand Down Expand Up @@ -587,6 +612,7 @@ protected void UpdatePage()
Log.Error(ex); Log.Error(ex);
} }
}*/ }*/

protected void Redraw() protected void Redraw()
{ {
Bitmap bitmap; Bitmap bitmap;
Expand Down Expand Up @@ -730,10 +756,63 @@ protected void LoadSettings()
{ {
using (Settings xmlreader = new MPSettings()) using (Settings xmlreader = new MPSettings())
{ {
string strValue;
_hiddenMode = xmlreader.GetValueAsBool("mytv", "teletextHidden", false); _hiddenMode = xmlreader.GetValueAsBool("mytv", "teletextHidden", false);
_transparentMode = xmlreader.GetValueAsBool("mytv", "teletextTransparent", false); _transparentMode = xmlreader.GetValueAsBool("mytv", "teletextTransparent", false);
_rememberLastValues = xmlreader.GetValueAsBool("mytv", "teletextRemember", true); _rememberLastValues = xmlreader.GetValueAsBool("mytv", "teletextRemember", true);
_percentageOfMaximumHeight = xmlreader.GetValueAsInt("mytv", "teletextMaxFontSize", 100); _percentageOfMaximumHeight = xmlreader.GetValueAsInt("mytv", "teletextMaxFontSize", 100);

// Read language setting
strValue = xmlreader.GetValueAsString("myteletext", "defaultLanguage", "latin1");
switch (strValue.ToLower())
{
case "latin1":
_defaultCharSetDesignation = 0;
break;
case "latin2":
_defaultCharSetDesignation = 1;
break;
case "latin3":
_defaultCharSetDesignation = 2;
break;
case "latin4":
_defaultCharSetDesignation = 3;
break;
case "cyrillic":
_defaultCharSetDesignation = 4;
break;
case "greek":
_defaultCharSetDesignation = 6;
break;
case "arabic":
_defaultCharSetDesignation = 8;
break;
case "hebrew":
_defaultCharSetDesignation = 10;
break;
default:
_defaultCharSetDesignation = 0;
break;
}
strValue = xmlreader.GetValueAsString("myteletext", "fontQuality", "normal-gridfit");
switch (strValue.ToLower())
{
case "normal":
_textRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixel;
break;
case "normal-gridfit":
_textRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixelGridFit;
break;
case "smooth":
_textRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
break;
case "smooth-gridfit":
_textRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAliasGridFit;
break;
default:
_textRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixelGridFit;
break;
}
} }
} }


Expand All @@ -742,12 +821,40 @@ protected void LoadSettings()
/// </summary> /// </summary>
protected void SaveSettings() protected void SaveSettings()
{ {
using (Settings xmlwriter = new MPSettings())
{
if (_rememberLastValues) if (_rememberLastValues)
{ {
using (Settings xmlreader = new MPSettings()) using (Settings xmlreader = new MPSettings())
xmlwriter.SetValueAsBool("mytv", "teletextHidden", _hiddenMode);
xmlwriter.SetValueAsBool("mytv", "teletextTransparent", _transparentMode);
}
switch (_defaultCharSetDesignation)
{ {
xmlreader.SetValueAsBool("mytv", "teletextHidden", _hiddenMode); case 0:
xmlreader.SetValueAsBool("mytv", "teletextTransparent", _transparentMode); xmlwriter.SetValue("myteletext", "defaultLanguage", "latin1");
break;
case 1:
xmlwriter.SetValue("myteletext", "defaultLanguage", "latin2");
break;
case 2:
xmlwriter.SetValue("myteletext", "defaultLanguage", "latin3");
break;
case 3:
xmlwriter.SetValue("myteletext", "defaultLanguage", "latin4");
break;
case 4:
xmlwriter.SetValue("myteletext", "defaultLanguage", "cyrillic");
break;
case 6:
xmlwriter.SetValue("myteletext", "defaultLanguage", "greek");
break;
case 8:
xmlwriter.SetValue("myteletext", "defaultLanguage", "arabic");
break;
case 10:
xmlwriter.SetValue("myteletext", "defaultLanguage", "hebrew");
break;
} }
} }
} }
Expand Down

0 comments on commit 41effbc

Please sign in to comment.