AaronCameron.net
Because you all make me very, very tired.
Not a Member? - Login or Create an Account
Sunday the 20th of May 2012 @ 04:25pm
Front Page Journal Projects Your Profile About
[]

LibN2L-4 Library Code Reference

Classes
Compounds
Files
Members
Method Index
Full Reference

cGuiACSetProp.cpp

Go to the documentation of this file.
00001 /************************************************************************
00002 Nova-2 Library (libN2L, or simply n2l) Game development C++ Library
00003 Copyright (C) 2003  Aaron Cameron
00004 
00005 This library is free software; you can redistribute it and/or
00006 modify it under the terms of the GNU Lesser General Public
00007 License as published by the Free Software Foundation; either
00008 version 2.1 of the License, or (at your option) any later version.
00009 
00010 This library is distributed in the hope that it will be useful,
00011 but WITHOUT ANY WARRANTY; without even the implied warranty of
00012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013 Lesser General Public License for more details.
00014 
00015 You should have received a copy of the GNU Lesser General Public
00016 License along with this library; if not, write to the Free Software
00017 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
00018 
00019 A copy of the GNU Lesser General Public License has been provided with
00020 this library in the file 'COPYING'.
00021 
00022 Contact information for the author of this library has been provided
00023 with this library in the file 'AUTHOR'.
00024 ************************************************************************/
00025 #include "gui/cGuiACSetProp.h"
00026 
00027 #include "gui/cGuiSEFactory.h"
00028 
00029 /******************************************************************************/
00030 namespace n2l
00031 {
00032     /**************************************************************************/
00033     cGuiACSetProp::cGuiACSetProp()
00034     {
00035         init();
00036     }
00037 
00038     /**************************************************************************/
00039     cGuiACSetProp::cGuiACSetProp( const cDynVar &iDef )
00040     {
00041         init();
00042         load( iDef );
00043     }
00044 
00045     /**************************************************************************/
00046     cGuiACSetProp::~cGuiACSetProp()
00047     {
00048     }
00049 
00050     /**************************************************************************/
00051     void cGuiACSetProp::load( const cDynVar &iDef )
00052     {
00053         cGuiACInt::load( iDef );
00054 
00055         if (!iDef.keyExists("prop"))
00056             throw cBadDataUseException( "cGuiACSetProp::load",
00057                 "No key provided to set the value of." );
00058 
00059         mElementName = iDef.keyValueOr( "elementName", mElementName );
00060         mElementName = iDef.keyValueOr( "element", mElementName );
00061 
00062         mKey = iDef.keyValueOr( "prop", mKey );
00063         mInnerKey = iDef.keyValueOr( "innerKey", mInnerKey );
00064         
00065         mValue = iDef.keyValueOr( "value", mValue );
00066     }
00067 
00068     /**************************************************************************/
00069     void cGuiACSetProp::execute( cGuiElement *const ioElement,
00070         const tGuiActionType iType, const cDynVar &iData )
00071     {
00072         cGuiElement *target;
00073         if (!mElementName.empty()) {
00074             cGuiElement *tmp = ioElement;
00075             while (tmp->canvas()) tmp = tmp->canvas();
00076             cGuiCanvas *canvas = dynamic_cast<cGuiCanvas*>(tmp);
00077             if (!canvas)
00078                 throw cBadDataUseException("cGuiACSetProp::execute",
00079                     "Wanted to set property on \"" + mElementName +
00080                     "\" but our element has access to no canvas to search" );
00081 
00082             target = (canvas->mustGet(mElementName)).dumbPtr();
00083         } else
00084             target = ioElement;
00085 
00086         target->prop( mKey, mValue, mInnerKey );
00087     }
00088 
00089     /**************************************************************************/
00090     const cAutoPtr<cGuiACInt> cGuiACSetProp::clone() const
00091     {
00092         cAutoPtr<cGuiACSetProp> newElement( new cGuiACSetProp );
00093         cloneInto( newElement );
00094         return newElement;
00095     }
00096 
00097     /**************************************************************************/
00098     void cGuiACSetProp::cloneInto(
00099         const cAutoPtr<cGuiACSetProp> &ioElement ) const
00100     {
00101         cGuiACInt::cloneInto( ioElement );
00102         ioElement->mElementName = mElementName;
00103         ioElement->mKey = mKey;
00104         ioElement->mValue = mValue;
00105         ioElement->mInnerKey = mInnerKey;
00106     }
00107 
00108     /**************************************************************************/
00109     void cGuiACSetProp::init()
00110     {
00111         mValue = true;
00112     }
00113 
00114 }
©2012 Aaron Cameron