Changeset 351 for trunk/src/gui/gui_style.cc
- Timestamp:
- 02/15/15 21:33:48 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/gui/gui_style.cc
r350 r351 21 21 } 22 22 23 bool style::get( element* e, const char* centry, std::string& s )23 bool style::get( element* e, const char* centry, const char* cselector, std::string& s ) 24 24 { 25 25 lua::stack_guard guard( m_lua ); 26 if ( !resolve( e->m_id.c_str(), e->m_class.c_str(), c entry, LUA_TSTRING ) ) return false;26 if ( !resolve( e->m_id.c_str(), e->m_class.c_str(), cselector, centry, LUA_TSTRING ) ) return false; 27 27 s = lua_tostring( m_lua, -1 ); 28 28 return true; 29 29 } 30 30 31 bool style::get( element* e, const char* centry, vec4& vec )31 bool style::get( element* e, const char* centry, const char* cselector, vec4& vec ) 32 32 { 33 33 lua::stack_guard guard( m_lua ); 34 if ( !resolve( e->m_id.c_str(), e->m_class.c_str(), c entry, LUA_TTABLE ) ) return false;34 if ( !resolve( e->m_id.c_str(), e->m_class.c_str(), cselector, centry, LUA_TTABLE ) ) return false; 35 35 vec = vec4(); 36 36 for (size_t i = 0; i < 4; ++i ) … … 44 44 } 45 45 46 bool style::get( element* e, const char* centry, int& i )46 bool style::get( element* e, const char* centry, const char* cselector, int& i ) 47 47 { 48 48 lua::stack_guard guard( m_lua ); 49 if ( !resolve( e->m_id.c_str(), e->m_class.c_str(), c entry, LUA_TNUMBER ) ) return false;49 if ( !resolve( e->m_id.c_str(), e->m_class.c_str(), cselector, centry, LUA_TNUMBER ) ) return false; 50 50 i = static_cast< int >( lua_tointeger( m_lua, -1 ) ); 51 51 return true; 52 52 } 53 53 54 bool style::get( element* e, const char* centry, double& d )54 bool style::get( element* e, const char* centry, const char* cselector, double& d ) 55 55 { 56 56 lua::stack_guard guard( m_lua ); 57 if ( !resolve( e->m_id.c_str(), e->m_class.c_str(), c entry, LUA_TNUMBER ) ) return false;57 if ( !resolve( e->m_id.c_str(), e->m_class.c_str(), cselector, centry, LUA_TNUMBER ) ) return false; 58 58 d = lua_tonumber( m_lua, -1 ); 59 59 return true; … … 64 64 } 65 65 66 bool style::resolve( const char* cid, const char* cclass, const char* centry, int type ) 66 bool style::find_entry( const char* cselector, const char* centry, int type ) 67 { 68 if ( lua_istable( m_lua, -1 ) ) 69 { 70 if ( cselector ) 71 { 72 lua_getfield( m_lua, -1, cselector ); 73 if ( lua_istable( m_lua, -1 ) ) 74 { 75 lua_getfield( m_lua, -1, centry ); 76 if ( lua_type( m_lua, -1 ) == type ) 77 { 78 return true; 79 } 80 lua_pop( m_lua, 1 ); 81 } 82 lua_pop( m_lua, 1 ); 83 } 84 85 lua_getfield( m_lua, -1, centry ); 86 if ( lua_type( m_lua, -1 ) == type ) return true; 87 } 88 return false; 89 } 90 91 bool style::resolve( const char* cid, const char* cclass, const char* cselector, const char* centry, int type ) 67 92 { 68 93 lua_getglobal( m_lua, "default" ); … … 71 96 // check id 72 97 lua_getfield( m_lua, -1, cid ); 73 if ( lua_istable( m_lua, -1 ) ) 74 { 75 lua_getfield( m_lua, -1, centry ); 76 if ( lua_type( m_lua, -1 ) == type ) return true; 77 } 98 if ( find_entry( cselector, centry, type ) ) return true; 78 99 lua_settop( m_lua, global ); 79 100 80 101 // check class 81 102 lua_getfield( m_lua, -1, cclass ); 82 if ( lua_istable( m_lua, -1 ) ) 83 { 84 lua_getfield( m_lua, -1, centry ); 85 if ( lua_type( m_lua, -1 ) == type ) return true; 86 } 103 if ( find_entry( cselector, centry, type ) ) return true; 87 104 lua_settop( m_lua, global ); 88 105 89 106 // check entry 90 lua_getfield( m_lua, -1, centry ); 91 if ( lua_type( m_lua, -1 ) == type ) return true; 107 if ( find_entry( cselector, centry, type ) ) return true; 92 108 return false; 93 109 }
Note: See TracChangeset
for help on using the changeset viewer.