Added CXMLReader for all XML-reading operations

Added GetIntValueRange to force a value to be in a specific range
This commit is contained in:
Flamefire committed 2013-02-21 17:07:09 +01:00
1 parent 1a644ab22c
commit 506d98bd3c
30 files changed
+1107 -1302

No files matched your search

+28 -41
View File
@@ -6,7 +6,6 @@ using System.IO;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using System.Xml.XPath;
using Vocaluxe.Menu;
using Vocaluxe.Menu.SingNotes;
@@ -176,45 +175,37 @@ namespace Vocaluxe.Menu
{
string file = Path.Combine(XmlPath, _ThemeName + ".xml");
XPathDocument xPathDoc = null;
XPathNavigator navigator = null;
CXMLReader xPathHelper = null;
bool loaded = false;
try
{
xPathDoc = new XPathDocument(file);
navigator = xPathDoc.CreateNavigator();
loaded = true;
xPathHelper = new CXMLReader(file);
}
catch (Exception e)
{
loaded = false;
if (navigator != null)
navigator = null;
if (xPathDoc != null)
xPathDoc = null;
if (xPathHelper != null)
xPathHelper = null;
_Base.Log.LogError("Error loading theme file " + file + ": " + e.Message);
}
bool VersionCheck = false;
if (loaded)
VersionCheck = CheckVersion(_ScreenVersion, navigator);
if (xPathHelper != null)
VersionCheck = CheckVersion(_ScreenVersion, xPathHelper);
int SkinIndex = _Base.Theme.GetSkinIndex(_PartyModeID);
if (loaded && VersionCheck && SkinIndex != -1)
if (xPathHelper != null && VersionCheck && SkinIndex != -1)
{
_ThemePath = XmlPath;
LoadThemeBasics(navigator, SkinIndex);
LoadThemeBasics(xPathHelper, SkinIndex);
if (_ThemeBackgrounds != null)
{
for (int i = 0; i < _ThemeBackgrounds.Length; i++)
{
CBackground background = new CBackground(_Base, _PartyModeID);
if (background.LoadTheme("//root/" + _ThemeName, _ThemeBackgrounds[i], navigator, SkinIndex))
if (background.LoadTheme("//root/" + _ThemeName, _ThemeBackgrounds[i], xPathHelper, SkinIndex))
{
_htBackgrounds.Add(_ThemeBackgrounds[i], AddBackground(background));
}
@@ -230,7 +221,7 @@ namespace Vocaluxe.Menu
for (int i = 0; i < _ThemeStatics.Length; i++)
{
CStatic stat = new CStatic(_Base, _PartyModeID);
if (stat.LoadTheme("//root/" + _ThemeName, _ThemeStatics[i], navigator, SkinIndex))
if (stat.LoadTheme("//root/" + _ThemeName, _ThemeStatics[i], xPathHelper, SkinIndex))
{
_htStatics.Add(_ThemeStatics[i], AddStatic(stat));
}
@@ -246,7 +237,7 @@ namespace Vocaluxe.Menu
for (int i = 0; i < _ThemeTexts.Length; i++)
{
CText text = new CText(_Base, _PartyModeID);
if (text.LoadTheme("//root/" + _ThemeName, _ThemeTexts[i], navigator, SkinIndex))
if (text.LoadTheme("//root/" + _ThemeName, _ThemeTexts[i], xPathHelper, SkinIndex))
{
_htTexts.Add(_ThemeTexts[i], AddText(text));
}
@@ -262,7 +253,7 @@ namespace Vocaluxe.Menu
for (int i = 0; i < _ThemeButtons.Length; i++)
{
CButton button = new CButton(_Base, _PartyModeID);
if (button.LoadTheme("//root/" + _ThemeName, _ThemeButtons[i], navigator, SkinIndex))
if (button.LoadTheme("//root/" + _ThemeName, _ThemeButtons[i], xPathHelper, SkinIndex))
{
_htButtons.Add(_ThemeButtons[i], AddButton(button));
}
@@ -278,7 +269,7 @@ namespace Vocaluxe.Menu
for (int i = 0; i < _ThemeSelectSlides.Length; i++)
{
CSelectSlide slide = new CSelectSlide(_Base, _PartyModeID);
if (slide.LoadTheme("//root/" + _ThemeName, _ThemeSelectSlides[i], navigator, SkinIndex))
if (slide.LoadTheme("//root/" + _ThemeName, _ThemeSelectSlides[i], xPathHelper, SkinIndex))
{
_htSelectSlides.Add(_ThemeSelectSlides[i], AddSelectSlide(slide));
}
@@ -294,7 +285,7 @@ namespace Vocaluxe.Menu
for (int i = 0; i < _ThemeSongMenus.Length; i++)
{
CSongMenu sm = new CSongMenu(_Base, _PartyModeID);
if (sm.LoadTheme("//root/" + _ThemeName, _ThemeSongMenus[i], navigator, SkinIndex))
if (sm.LoadTheme("//root/" + _ThemeName, _ThemeSongMenus[i], xPathHelper, SkinIndex))
{
_htSongMenus.Add(_ThemeSongMenus[i], AddSongMenu(sm));
}
@@ -310,7 +301,7 @@ namespace Vocaluxe.Menu
for (int i = 0; i < _ThemeLyrics.Length; i++)
{
CLyric lyric = new CLyric(_Base, _PartyModeID);
if (lyric.LoadTheme("//root/" + _ThemeName, _ThemeLyrics[i], navigator, SkinIndex))
if (lyric.LoadTheme("//root/" + _ThemeName, _ThemeLyrics[i], xPathHelper, SkinIndex))
{
_htLyrics.Add(_ThemeLyrics[i], AddLyric(lyric));
}
@@ -326,7 +317,7 @@ namespace Vocaluxe.Menu
for (int i = 0; i < _ThemeSingNotes.Length; i++)
{
CSingNotes notes = new CSingNotesClassic(_Base, _PartyModeID);
if (notes.LoadTheme("//root/" + _ThemeName, _ThemeSingNotes[i], navigator, SkinIndex))
if (notes.LoadTheme("//root/" + _ThemeName, _ThemeSingNotes[i], xPathHelper, SkinIndex))
{
_htSingNotes.Add(_ThemeSingNotes[i], AddSingNote(notes));
}
@@ -342,7 +333,7 @@ namespace Vocaluxe.Menu
for (int i = 0; i < _ThemeNameSelections.Length; i++)
{
CNameSelection nsel = new CNameSelection(_Base, _PartyModeID);
if (nsel.LoadTheme("//root/" + _ThemeName, _ThemeNameSelections[i], navigator, SkinIndex))
if (nsel.LoadTheme("//root/" + _ThemeName, _ThemeNameSelections[i], xPathHelper, SkinIndex))
{
_htNameSelections.Add(_ThemeNameSelections[i], AddNameSelection(nsel));
}
@@ -358,7 +349,7 @@ namespace Vocaluxe.Menu
for (int i = 0; i < _ThemeEqualizers.Length; i++)
{
CEqualizer eq = new CEqualizer(_Base, _PartyModeID);
if (eq.LoadTheme("//root/" + _ThemeName, _ThemeEqualizers[i], navigator, SkinIndex))
if (eq.LoadTheme("//root/" + _ThemeName, _ThemeEqualizers[i], xPathHelper, SkinIndex))
{
_htEqualizers.Add(_ThemeEqualizers[i], AddEqualizer(eq));
}
@@ -374,7 +365,7 @@ namespace Vocaluxe.Menu
for (int i = 0; i < _ThemePlaylists.Length; i++)
{
CPlaylist pls = new CPlaylist(_Base, _PartyModeID);
if (pls.LoadTheme("//root/" + _ThemeName, _ThemePlaylists[i], navigator, SkinIndex))
if (pls.LoadTheme("//root/" + _ThemeName, _ThemePlaylists[i], xPathHelper, SkinIndex))
{
_htPlaylists.Add(_ThemePlaylists[i], AddPlaylist(pls));
}
@@ -390,7 +381,7 @@ namespace Vocaluxe.Menu
for (int i = 0; i < _ThemeParticleEffects.Length; i++)
{
CParticleEffect pe = new CParticleEffect(_Base, _PartyModeID);
if (pe.LoadTheme("//root/" + _ThemeName, _ThemeParticleEffects[i], navigator, SkinIndex))
if (pe.LoadTheme("//root/" + _ThemeName, _ThemeParticleEffects[i], xPathHelper, SkinIndex))
{
_htParticleEffects.Add(_ThemeParticleEffects[i], AddParticleEffect(pe));
}
@@ -406,7 +397,7 @@ namespace Vocaluxe.Menu
for (int i = 0; i < _ThemeScreenSettings.Length; i++)
{
CScreenSetting se = new CScreenSetting(_Base, _PartyModeID);
if (se.LoadTheme("//root/" + _ThemeName, _ThemeScreenSettings[i], navigator, SkinIndex))
if (se.LoadTheme("//root/" + _ThemeName, _ThemeScreenSettings[i], xPathHelper, SkinIndex))
{
_htScreenSettings.Add(_ThemeScreenSettings[i], AddScreenSetting(se));
}
@@ -417,10 +408,6 @@ namespace Vocaluxe.Menu
}
}
}
else
{
}
}
public virtual void SaveTheme()
@@ -2516,10 +2503,10 @@ namespace Vocaluxe.Menu
}
}
private bool CheckVersion(int Version, XPathNavigator navigator)
private bool CheckVersion(int Version, CXMLReader xPathHelper)
{
int version = 0;
CHelper.TryGetIntValueFromXML("//root/" + _ThemeName + "/ScreenVersion", navigator, ref version);
xPathHelper.TryGetIntValue("//root/" + _ThemeName + "/ScreenVersion", ref version);
if (version == Version)
return true;
@@ -2537,14 +2524,14 @@ namespace Vocaluxe.Menu
return false;
}
private void LoadThemeBasics(XPathNavigator navigator, int SkinIndex)
private void LoadThemeBasics(CXMLReader xPathHelper, int SkinIndex)
{
string value = String.Empty;
// Backgrounds
CBackground background = new CBackground(_Base, _PartyModeID);
int i = 1;
while (background.LoadTheme("//root/" + _ThemeName, "Background" + i.ToString(), navigator, SkinIndex))
while (background.LoadTheme("//root/" + _ThemeName, "Background" + i.ToString(), xPathHelper, SkinIndex))
{
AddBackground(background);
background = new CBackground(_Base, _PartyModeID);
@@ -2554,7 +2541,7 @@ namespace Vocaluxe.Menu
// Statics
CStatic stat = new CStatic(_Base, _PartyModeID);
i = 1;
while (stat.LoadTheme("//root/" + _ThemeName, "Static" + i.ToString(), navigator, SkinIndex))
while (stat.LoadTheme("//root/" + _ThemeName, "Static" + i.ToString(), xPathHelper, SkinIndex))
{
AddStatic(stat);
stat = new CStatic(_Base, _PartyModeID);
@@ -2564,7 +2551,7 @@ namespace Vocaluxe.Menu
// Texts
CText text = new CText(_Base, _PartyModeID);
i = 1;
while (text.LoadTheme("//root/" + _ThemeName, "Text" + i.ToString(), navigator, SkinIndex))
while (text.LoadTheme("//root/" + _ThemeName, "Text" + i.ToString(), xPathHelper, SkinIndex))
{
AddText(text);
text = new CText(_Base, _PartyModeID);
@@ -2574,7 +2561,7 @@ namespace Vocaluxe.Menu
// ParticleEffects
CParticleEffect partef = new CParticleEffect(_Base, _PartyModeID);
i = 1;
while (partef.LoadTheme("//root/" + _ThemeName, "ParticleEffect" + i.ToString(), navigator, SkinIndex))
while (partef.LoadTheme("//root/" + _ThemeName, "ParticleEffect" + i.ToString(), xPathHelper, SkinIndex))
{
AddParticleEffect(partef);
partef = new CParticleEffect(_Base, _PartyModeID);