diff options
author | Jacek Antonelli | 2011-05-08 15:13:37 -0500 |
---|---|---|
committer | Jacek Antonelli | 2011-05-08 15:50:49 -0500 |
commit | 7278f0254a3944bd2bcbf1e855fb0d90c3086a27 (patch) | |
tree | 5d7ecb81ebf1a07482f0a7d3d13acd7f18360c0b /linden/indra/llxml | |
parent | Imprudence 1.3.1 released. (diff) | |
parent | Changed version to Experimental 2011.04.19 (diff) | |
download | meta-impy-7278f0254a3944bd2bcbf1e855fb0d90c3086a27.zip meta-impy-7278f0254a3944bd2bcbf1e855fb0d90c3086a27.tar.gz meta-impy-7278f0254a3944bd2bcbf1e855fb0d90c3086a27.tar.bz2 meta-impy-7278f0254a3944bd2bcbf1e855fb0d90c3086a27.tar.xz |
Merged Experimental branch (exp) back into main line (next).
Git thought many files (almost 100) had merge conflicts. But, after
resolving the conflicts (which were mostly trivial), almost all the
files turned out to be the same as in the exp branch. So, the
conflicts are not listed here. Check the diff between commit 244ffe8
and this commit to see what really changed.
Diffstat (limited to 'linden/indra/llxml')
-rw-r--r-- | linden/indra/llxml/llcontrol.cpp | 15 | ||||
-rw-r--r-- | linden/indra/llxml/llcontrol.h | 80 |
2 files changed, 95 insertions, 0 deletions
diff --git a/linden/indra/llxml/llcontrol.cpp b/linden/indra/llxml/llcontrol.cpp index 88eb2c3..452167e 100644 --- a/linden/indra/llxml/llcontrol.cpp +++ b/linden/indra/llxml/llcontrol.cpp | |||
@@ -1099,6 +1099,15 @@ U32 LLControlGroup::loadFromFile(const std::string& filename, bool set_default_v | |||
1099 | } | 1099 | } |
1100 | */ | 1100 | */ |
1101 | 1101 | ||
1102 | // [RLVa:KB] - Checked: 2010-06-20 (RLVa-1.1.2a) | Added: RLVa-1.1.2a | ||
1103 | // HACK-RLVa: bad code but it's just a temporary measure to provide a smooth changeover from the old to the new rebranded settings | ||
1104 | if ( (name.length() >= 14) && (0 == name.find("RestrainedLife")) ) | ||
1105 | { | ||
1106 | // Transparently convert the old settings name to the new one while preserving the user override | ||
1107 | name = "RestrainedLove" + name.substr(14); | ||
1108 | } | ||
1109 | // [/RLVa:KB] | ||
1110 | |||
1102 | // If the control exists just set the value from the input file. | 1111 | // If the control exists just set the value from the input file. |
1103 | LLControlVariable* existing_control = getControl(name); | 1112 | LLControlVariable* existing_control = getControl(name); |
1104 | if(existing_control) | 1113 | if(existing_control) |
@@ -1217,6 +1226,12 @@ void LLControlGroup::resetWarnings() | |||
1217 | } | 1226 | } |
1218 | } | 1227 | } |
1219 | 1228 | ||
1229 | template <> void jc_rebind::rebind_callback<S32>(const LLSD &data, S32 *reciever){ *reciever = data.asInteger(); } | ||
1230 | template <> void jc_rebind::rebind_callback<F32>(const LLSD &data, F32 *reciever){ *reciever = data.asReal(); } | ||
1231 | template <> void jc_rebind::rebind_callback<U32>(const LLSD &data, U32 *reciever){ *reciever = data.asInteger(); } | ||
1232 | template <> void jc_rebind::rebind_callback<std::string>(const LLSD &data, std::string *reciever){ *reciever = data.asString(); } | ||
1233 | template <> void jc_rebind::rebind_callback<LLColor4>(const LLSD &data, LLColor4 *reciever){ *reciever = LLColor4(LLColor4U(data)); } | ||
1234 | |||
1220 | //============================================================================ | 1235 | //============================================================================ |
1221 | 1236 | ||
1222 | #ifdef TEST_HARNESS | 1237 | #ifdef TEST_HARNESS |
diff --git a/linden/indra/llxml/llcontrol.h b/linden/indra/llxml/llcontrol.h index ba0a1c7..316de5c 100644 --- a/linden/indra/llxml/llcontrol.h +++ b/linden/indra/llxml/llcontrol.h | |||
@@ -242,4 +242,84 @@ public: | |||
242 | void resetWarnings(); | 242 | void resetWarnings(); |
243 | }; | 243 | }; |
244 | 244 | ||
245 | /////////////////////// | ||
246 | namespace jc_you_suck | ||
247 | { | ||
248 | class jc_rebind | ||
249 | { | ||
250 | template <typename REC> static void rebind_callback(const LLSD &data, REC *reciever){ *reciever = data; } | ||
251 | |||
252 | typedef boost::signal<void(const LLSD&)> signal_t; | ||
253 | |||
254 | public: | ||
255 | |||
256 | //#define binder_debug | ||
257 | |||
258 | template <typename RBTYPE> static RBTYPE* rebind_llcontrol(std::string name, LLControlGroup* controlgroup, bool init) | ||
259 | { | ||
260 | static std::map<LLControlGroup*, std::map<std::string, void*> > references; | ||
261 | |||
262 | #ifdef binder_debug | ||
263 | llinfos << "rebind_llcontrol" << llendl; | ||
264 | #endif | ||
265 | |||
266 | RBTYPE* type = NULL; | ||
267 | if(controlgroup) | ||
268 | { | ||
269 | if(references.find(controlgroup) == references.end()) | ||
270 | { | ||
271 | #ifdef binder_debug | ||
272 | llinfos << "was no map for a group, adding" << llendl; | ||
273 | #endif | ||
274 | references[controlgroup] = std::map<std::string, void*>(); | ||
275 | } | ||
276 | |||
277 | if(references[controlgroup].find(name) != references[controlgroup].end()) | ||
278 | { | ||
279 | #ifdef binder_debug | ||
280 | llinfos << "pulling type from map for " << name << llendl; | ||
281 | #endif | ||
282 | type = (RBTYPE*)(references[controlgroup][name]); | ||
283 | if(type == NULL)llerrs << "bad type stored" << llendl; | ||
284 | }else | ||
285 | { | ||
286 | #ifdef binder_debug | ||
287 | llinfos << "creating type in map for " << name << llendl; | ||
288 | #endif | ||
289 | type = new RBTYPE(); | ||
290 | references[controlgroup][name] = (void*)type; | ||
291 | LLControlVariable* control = controlgroup->getControl(name); | ||
292 | if(control) | ||
293 | { | ||
294 | #ifdef binder_debug | ||
295 | llinfos << "control there " << name << llendl; | ||
296 | #endif | ||
297 | signal_t* signal = control->getSignal(); | ||
298 | if(signal) | ||
299 | { | ||
300 | #ifdef binder_debug | ||
301 | llinfos << "signal there" << name << llendl; | ||
302 | #endif | ||
303 | signal->connect(boost::bind(&jc_rebind::rebind_callback<RBTYPE>, _1, type)); | ||
304 | if(init)jc_rebind::rebind_callback<RBTYPE>(control->getValue(),type); | ||
305 | }else llerrs << "no signal!" << llendl; | ||
306 | }else llerrs << "no control for " << name << "!" << llendl; | ||
307 | } | ||
308 | } | ||
309 | return type; | ||
310 | } | ||
311 | }; | ||
312 | |||
313 | template <> void jc_rebind::rebind_callback<S32>(const LLSD &data, S32 *reciever); | ||
314 | template <> void jc_rebind::rebind_callback<F32>(const LLSD &data, F32 *reciever); | ||
315 | template <> void jc_rebind::rebind_callback<U32>(const LLSD &data, U32 *reciever); | ||
316 | template <> void jc_rebind::rebind_callback<std::string>(const LLSD &data, std::string *reciever); | ||
317 | template <> void jc_rebind::rebind_callback<LLColor4>(const LLSD &data, LLColor4 *reciever); | ||
318 | |||
319 | } | ||
320 | using namespace jc_you_suck; | ||
321 | #define rebind_llcontrol jc_rebind::rebind_llcontrol | ||
322 | |||
323 | /////////////////////// | ||
324 | |||
245 | #endif | 325 | #endif |