|
From: <cn...@us...> - 2009-06-30 02:53:12
|
Revision: 392
http://hgengine.svn.sourceforge.net/hgengine/?rev=392&view=rev
Author: cnlohr
Date: 2009-06-30 01:51:59 +0000 (Tue, 30 Jun 2009)
Log Message:
-----------
update preferences, crash mercury if something's wrong, handle booleans better.
Modified Paths:
--------------
Mercury2/src/MercuryNamedResource.cpp
Mercury2/src/MercuryPrefs.cpp
Mercury2/src/MercuryPrefs.h
Mercury2/src/MercuryUtil.cpp
Mercury2/src/MercuryUtil.h
Mercury2/src/X11Window.cpp
Modified: Mercury2/src/MercuryNamedResource.cpp
===================================================================
--- Mercury2/src/MercuryNamedResource.cpp 2009-06-30 01:22:24 UTC (rev 391)
+++ Mercury2/src/MercuryNamedResource.cpp 2009-06-30 01:51:59 UTC (rev 392)
@@ -43,7 +43,18 @@
{
MString tmpret;
if( GetValue( sDataPointer, tmpret ) )
+ {
+ tmpret = ToUpper( tmpret );
+ if( tmpret.compare( "TRUE" ) == 0 ) return 1;
+ if( tmpret.compare( "FALSE" ) == 0 ) return 0;
+ if( tmpret.compare( "ON" ) == 0 ) return 1;
+ if( tmpret.compare( "OFF" ) == 0 ) return 0;
+ if( tmpret.compare( "YES" ) == 0 ) return 1;
+ if( tmpret.compare( "NO" ) == 0 ) return 0;
+
return StrToInt( tmpret );
+ }
+
if( bSetValue )
SetValueB( sDataPointer, bDefaultValue );
Modified: Mercury2/src/MercuryPrefs.cpp
===================================================================
--- Mercury2/src/MercuryPrefs.cpp 2009-06-30 01:22:24 UTC (rev 391)
+++ Mercury2/src/MercuryPrefs.cpp 2009-06-30 01:51:59 UTC (rev 392)
@@ -12,6 +12,20 @@
MercuryPreferences::MercuryPreferences()
{
m_PrefsDoc = XMLDocument::Load("preferences.xml");
+ if( !m_PrefsDoc )
+ FAIL( "Could not load preferences.xml." );
+
+ m_PrefsNode = new XMLNode();
+
+ *m_PrefsNode = m_PrefsDoc->GetRootNode();
+
+ if( !m_PrefsNode->IsValid() )
+ FAIL( "Could not get root node in Preferences." );
+
+ *m_PrefsNode = m_PrefsNode->Child();
+
+ if( !m_PrefsNode->IsValid() )
+ FAIL( "Could not get Preferences node in Preferences." );
}
MercuryPreferences::~MercuryPreferences()
@@ -21,13 +35,9 @@
bool MercuryPreferences::GetValue( const MString & sDataPointer, MString & sReturn )
{
- return m_PrefsDoc->GetRootNode().GetValue( sDataPointer, sReturn );
+ return m_PrefsNode->GetValue( sDataPointer, sReturn );
}
-XMLNode MercuryPreferences::GetRootXML()
-{
- return m_PrefsDoc->GetRootNode();
-}
/****************************************************************************
* Copyright (C) 2009 by Charles Lohr *
Modified: Mercury2/src/MercuryPrefs.h
===================================================================
--- Mercury2/src/MercuryPrefs.h 2009-06-30 01:22:24 UTC (rev 391)
+++ Mercury2/src/MercuryPrefs.h 2009-06-30 01:51:59 UTC (rev 392)
@@ -17,9 +17,10 @@
static MercuryPreferences & GetInstance();
- XMLNode GetRootXML();
+ XMLNode * GetRootXML() { return m_PrefsNode; }
private:
- XMLDocument * m_PrefsDoc;
+ XMLNode * m_PrefsNode;
+ XMLDocument * m_PrefsDoc;
};
static InstanceCounter<MercuryPreferences> MPcounter("MercuryPreferences");
Modified: Mercury2/src/MercuryUtil.cpp
===================================================================
--- Mercury2/src/MercuryUtil.cpp 2009-06-30 01:22:24 UTC (rev 391)
+++ Mercury2/src/MercuryUtil.cpp 2009-06-30 01:51:59 UTC (rev 392)
@@ -36,6 +36,15 @@
#endif
return x;
}
+
+
+void fail_m( const char * message, const char * file, int line )
+{
+ //Probably should message box here somewhere in the event we're running on Windows.
+ fprintf( stderr, "Fatal Error: \"%s\" in %s:%d\n", message, file, line );
+ exit(-1);
+}
+
void* mmemalign(size_t align, size_t size, void*& mem)
{
uintptr_t mask = ~(uintptr_t)(align - 1);
Modified: Mercury2/src/MercuryUtil.h
===================================================================
--- Mercury2/src/MercuryUtil.h 2009-06-30 01:22:24 UTC (rev 391)
+++ Mercury2/src/MercuryUtil.h 2009-06-30 01:51:59 UTC (rev 392)
@@ -12,6 +12,9 @@
#define TO_ENDIAN( x )
+void fail_m( const char * message, const char * file, int line );
+#define FAIL( message ) fail_m( message, __FILE__, __LINE__ );
+
//returns an aligned pointer, mem is the actual (unaligned) pointer for freeing
void* mmemalign(size_t align, size_t size, void*& mem);
bool isAligned(size_t align, const void* mem);
Modified: Mercury2/src/X11Window.cpp
===================================================================
--- Mercury2/src/X11Window.cpp 2009-06-30 01:22:24 UTC (rev 391)
+++ Mercury2/src/X11Window.cpp 2009-06-30 01:51:59 UTC (rev 392)
@@ -1,6 +1,7 @@
#include <X11Window.h>
#include <MercuryMessageManager.h>
#include <MercuryInput.h>
+#include <MercuryPrefs.h>
Callback0R< MercuryWindow* > MercuryWindow::genWindowClbk(X11Window::GenX11Window); //Register window generation callback
@@ -91,7 +92,14 @@
MercuryWindow* X11Window::GenX11Window()
{
- return new X11Window("Mercury2 Tests", 640, 480, 24, 16, false);
+ return new X11Window(
+ PREFSMAN.GetValueS("Screen.Name", "Screen name not set." ),
+ PREFSMAN.GetValueI( "Screen.Width", 640 ),
+ PREFSMAN.GetValueI( "Screen.Height", 480 ),
+ 24,
+ PREFSMAN.GetValueI( "Screen.Depth", 16 ),
+ PREFSMAN.GetValueB( "Screen.FullScreen", 1 )
+ );
}
bool X11Window::SwapBuffers()
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|