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
|
/*!
@file
@author Albert Semenov
@date 08/2008
*/
#include "Precompiled.h"
#include "TextureBrowseControl.h"
namespace tools
{
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, std::string_view /*_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, std::string_view /*_name*/)
{
eventEndDialog(this, false);
}
const std::string& TextureBrowseControl::getTextureName() const
{
return mCurrentTextureName;
}
void TextureBrowseControl::setTextureName(std::string_view _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 (const auto& _texture : _textures)
mTextures->addItem(_texture);
}
void TextureBrowseControl::notifyChangeItemPosition(MyGUI::ItemBox* _sender, size_t _index)
{
if (_index != MyGUI::ITEM_NONE)
mCurrentTextureName = *_sender->getItemDataAt<std::string>(_index);
else
mCurrentTextureName.clear();
}
void TextureBrowseControl::notifySelectItemAccept(MyGUI::ItemBox* _sender, size_t _index)
{
if (!mCurrentTextureName.empty())
eventEndDialog(this, true);
}
}
|