1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
|
/*!
@file
@author Albert Semenov
@date 08/2008
*/
#include "Precompiled.h"
#include "TextureBrowseControl.h"
namespace tools
{
TextureBrowseControl::TextureBrowseControl() :
mOk(nullptr),
mCancel(nullptr),
mTextures(nullptr)
{
}
TextureBrowseControl::~TextureBrowseControl()
{
MyGUI::ItemBox* box = mTextures->getItemBox();
box->eventChangeItemPosition -= MyGUI::newDelegate(this, &TextureBrowseControl::notifyChangeItemPosition);
box->eventSelectItemAccept -= MyGUI::newDelegate(this, &TextureBrowseControl::notifySelectItemAccept);
}
void TextureBrowseControl::OnInitialise(Control* _parent, MyGUI::Widget* _place, const std::string& _layoutName)
{
Control::OnInitialise(_parent, _place, GetLayoutName(this));
InitialiseByAttributes(this);
setDialogRoot(mMainWidget);
assignBase(mTextures, "Textures");
mOk->eventMouseButtonClick += MyGUI::newDelegate(this, &TextureBrowseControl::notifyMouseButtonClickOk);
mCancel->eventMouseButtonClick += MyGUI::newDelegate(this, &TextureBrowseControl::notifyMouseButtonClickCancel);
MyGUI::Window* window = mMainWidget->castType<MyGUI::Window>(false);
if (window != nullptr)
window->eventWindowButtonPressed += MyGUI::newDelegate(this, &TextureBrowseControl::notifyWindowButtonPressed);
MyGUI::ItemBox* box = mTextures->getItemBox();
box->eventChangeItemPosition += MyGUI::newDelegate(this, &TextureBrowseControl::notifyChangeItemPosition);
box->eventSelectItemAccept += MyGUI::newDelegate(this, &TextureBrowseControl::notifySelectItemAccept);
mMainWidget->setVisible(false);
}
void TextureBrowseControl::onDoModal()
{
MyGUI::IntSize windowSize = mMainWidget->getSize();
MyGUI::IntSize parentSize = mMainWidget->getParentSize();
mMainWidget->setPosition((parentSize.width - windowSize.width) / 2, (parentSize.height - windowSize.height) / 2);
}
void TextureBrowseControl::onEndModal()
{
}
void TextureBrowseControl::notifyMouseButtonClickCancel(MyGUI::Widget* _sender)
{
eventEndDialog(this, false);
}
void TextureBrowseControl::notifyMouseButtonClickOk(MyGUI::Widget* _sender)
{
eventEndDialog(this, true);
}
void TextureBrowseControl::notifyWindowButtonPressed(MyGUI::Window* _sender, const std::string& _name)
{
eventEndDialog(this, false);
}
const std::string& TextureBrowseControl::getTextureName() const
{
return mCurrentTextureName;
}
void TextureBrowseControl::setTextureName(const std::string& _value)
{
mCurrentTextureName = _value;
MyGUI::ItemBox* box = mTextures->getItemBox();
size_t indexSelected = MyGUI::ITEM_NONE;
for (size_t index = 0; index < box->getItemCount(); ++index)
{
if (*box->getItemDataAt<std::string>(index) == mCurrentTextureName)
{
indexSelected = index;
break;
}
}
box->setIndexSelected(indexSelected);
}
void TextureBrowseControl::setTextures(const MyGUI::VectorString& _textures)
{
mTextures->removeAllItems();
for (MyGUI::VectorString::const_iterator item = _textures.begin(); item != _textures.end(); ++item)
mTextures->addItem((*item));
}
void TextureBrowseControl::notifyChangeItemPosition(MyGUI::ItemBox* _sender, size_t _index)
{
if (_index != MyGUI::ITEM_NONE)
mCurrentTextureName = *_sender->getItemDataAt<std::string>(_index);
else
mCurrentTextureName = "";
}
void TextureBrowseControl::notifySelectItemAccept(MyGUI::ItemBox* _sender, size_t _index)
{
if (mCurrentTextureName != "")
eventEndDialog(this, true);
}
}
|