123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- //-----------------------------------------------------------------------------
- // Copyright (c) 2013 GarageGames, LLC
- //
- // Permission is hereby granted, free of charge, to any person obtaining a copy
- // of this software and associated documentation files (the "Software"), to
- // deal in the Software without restriction, including without limitation the
- // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
- // sell copies of the Software, and to permit persons to whom the Software is
- // furnished to do so, subject to the following conditions:
- //
- // The above copyright notice and this permission notice shall be included in
- // all copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- // IN THE SOFTWARE.
- //-----------------------------------------------------------------------------
- #include "platform/menus/popupMenu.h"
- #include "console/consoleTypes.h"
- #include "gui/guiCanvas.h"
- #include "memory/safeDelete.h"
- #include "popupMenu_ScriptBinding.h"
- //////////////////////////////////////////////////////////////////////////
- // Constructor/Destructor
- //////////////////////////////////////////////////////////////////////////
- PopupMenu::PopupMenu()
- {
- createPlatformPopupMenuData();
- mSubmenus = new SimSet;
- mSubmenus->registerObject();
- mIsPopup = false;
- }
- PopupMenu::~PopupMenu()
- {
- // This searches the menu bar so is safe to call for menus
- // that aren't on it, since nothing will happen.
- removeFromMenuBar();
- SimSet::iterator i;
- while((i = mSubmenus->begin()) != mSubmenus->end())
- {
- (*i)->deleteObject();
- }
- mSubmenus->deleteObject();
- deletePlatformPopupMenuData();
- }
- IMPLEMENT_CONOBJECT(PopupMenu);
- //////////////////////////////////////////////////////////////////////////
- void PopupMenu::initPersistFields()
- {
- Parent::initPersistFields();
- // [neo, 5/7/2007 - #2973]
- // isPopup field corrected to TypeBool instead of TypeString which caused
- // a crash when reading field value e.g. in dump()
- addField( "isPopup", TypeBool, Offset(mIsPopup, PopupMenu));
- }
- //////////////////////////////////////////////////////////////////////////
- bool PopupMenu::onAdd()
- {
- if(! Parent::onAdd())
- return false;
- createPlatformMenu();
- return true;
- }
- void PopupMenu::onRemove()
- {
- Parent::onRemove();
- }
- //////////////////////////////////////////////////////////////////////////
- bool PopupMenu::onMessageReceived(StringTableEntry queue, const char* event, const char* data)
- {
- return Con::executef(this, 4, "onMessageReceived", queue, event, data);
- }
- bool PopupMenu::onMessageObjectReceived(StringTableEntry queue, Message *msg )
- {
- return Con::executef(this, 4, "onMessageReceived", queue, Con::getIntArg(msg->getId()));
- }
|