-/* $Id$
-
-This file is part of libmspgltk
-Copyright © 2007 Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
-
#include "state.h"
using namespace std;
{
string str;
is>>str;
- if(str=="NORMAL")
- state=NORMAL;
- else if(str=="HOVER")
- state=HOVER;
- else if(str=="ACTIVE")
- state=ACTIVE;
- else if(str=="DISABLED")
- state=DISABLED;
- else
- is.setstate(ios_base::failbit);
+
+ unsigned start = 0;
+ state = NORMAL;
+
+ while(1)
+ {
+ string::size_type underscore = str.find('_', start);
+ if(!str.compare(start, underscore-start, "NORMAL"))
+ state |= NORMAL;
+ else if(!str.compare(start, underscore-start, "HOVER"))
+ state |= HOVER;
+ else if(!str.compare(start, underscore-start, "ACTIVE"))
+ state |= ACTIVE;
+ else if(!str.compare(start, underscore-start, "FOCUS"))
+ state |= FOCUS;
+ else if(!str.compare(start, underscore-start, "DISABLED"))
+ state |= DISABLED;
+ else
+ {
+ is.setstate(ios_base::failbit);
+ break;
+ }
+
+ if(underscore==std::string::npos)
+ break;
+ start = underscore+1;
+ }
return is;
}