CHANGED: #1471 Buttons can now be selected in the NelGUI widget or the widget hierarchy widget, and they will become highlighted.

--HG--
branch : gsoc2012-gui-editor
This commit is contained in:
dfighter1985 2012-07-22 23:32:35 +02:00
parent 69a40421a7
commit 2cfd7820d0
7 changed files with 41 additions and 14 deletions

View file

@ -480,6 +480,8 @@ namespace NLGUI
const CEventDescriptorKey& getLastKeyEvent() const{ return lastKeyEvent; }
IParser* getParser() const{ return parser; }
void setCurrentEditorSelection( const std::string &name );
private:
CWidgetManager();
@ -557,6 +559,8 @@ namespace NLGUI
std::vector< INewScreenSizeHandler* > newScreenSizeHandlers;
std::vector< IOnWidgetsDrawnHandler* > onWidgetsDrawnHandlers;
std::string currentEditorSelection;
};
}

View file

@ -252,6 +252,12 @@ namespace NLGUI
if (CWidgetManager::getInstance()->getCapturePointerLeft() != this)
return false;
if( editorMode )
{
CWidgetManager::getInstance()->setCurrentEditorSelection( getId() );
return true;
}
if (_LeftDblClickHandled) // no effect on mouse up after double click has been handled
{
_LeftDblClickHandled = false;

View file

@ -218,10 +218,10 @@ namespace NLGUI
if ( _Over && !editorMode )
if ( ( _Over && !editorMode ) || editorSelected )
{
if ((lastOver == false) && (_AHOnOver != NULL))
if( !editorMode && (lastOver == false) && (_AHOnOver != NULL))
CAHManager::getInstance()->runActionHandler (_AHOnOver, this, _AHOverParams);
// the pointer is over the button

View file

@ -354,10 +354,14 @@ namespace NLGUI
rVR.drawRotFlipBitmap ( _RenderLayer, x+_BmpLeftW, y, txw, txh, 0, false, pTxId[1], color );
rVR.drawRotFlipBitmap ( _RenderLayer, x+_BmpLeftW+txw, y, _BmpRightW, txh, 0, false, pTxId[2], color );
CCtrlBase *capturePointerLeft = CWidgetManager::getInstance()->getCapturePointerLeft();
// *** Draw Over
if ( !editorMode && _Over && (_OverWhenPushed || !(_Pushed || CWidgetManager::getInstance()->getCapturePointerLeft() == this)))
if( editorSelected ||
( !editorMode && _Over && (_OverWhenPushed || !(_Pushed || capturePointerLeft == this ) ) )
)
{
if ((lastOver == false) && (_AHOnOver != NULL))
if( !editorMode && (lastOver == false) && (_AHOnOver != NULL) )
CAHManager::getInstance()->runActionHandler (_AHOnOver, this, _AHOverParams);
// the pointer is over the button.
@ -390,7 +394,7 @@ namespace NLGUI
}
}
// Setup ViewText color
if ( pTxId==_TextureIdNormal )
if ( pTxId==_TextureIdNormal || editorMode )
{
if(_TextHeaderColor) viewTextColor.A= _TextColorNormal.A;
else viewTextColor= _TextColorNormal;

View file

@ -3093,6 +3093,22 @@ namespace NLGUI
}
void CWidgetManager::setCurrentEditorSelection( const std::string &name )
{
CInterfaceElement *e = getElementFromId( name );
if( e != NULL )
{
if( !currentEditorSelection.empty() )
{
CInterfaceElement *prev = getElementFromId( currentEditorSelection );
if( prev != NULL )
prev->setEditorSelected( false );
}
e->setEditorSelected( true );
currentEditorSelection = name;
}
}
CWidgetManager::CWidgetManager()
{
@ -3127,6 +3143,8 @@ namespace NLGUI
inGame = false;
setScreenWH( 0, 0 );
currentEditorSelection = "";
}
CWidgetManager::~CWidgetManager()

View file

@ -127,17 +127,9 @@ namespace GUIEditor
void WidgetHierarchy::onItemDblClicked( QTreeWidgetItem *item )
{
CWidgetManager *mg = CWidgetManager::getInstance();
if( item->parent() == NULL )
return;
std::string name = item->text( 0 ).toStdString();
CInterfaceElement *e = mg->getElementFromId( makeFullName( item, name ) );
if( e != NULL )
{
}
CWidgetManager::getInstance()->setCurrentEditorSelection( makeFullName( item, item->text( 0 ).toStdString() ) );
}
}

View file

@ -43,6 +43,9 @@ namespace GUIEditor
private Q_SLOTS:
void onItemDblClicked( QTreeWidgetItem *item );
private:
std::string currentSelection;
};
}