mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-14 08:04:40 +00:00
Merge pull request #1078 from Areloch/NilsUI_Updates_GuiClassTweaks
Various GUI class tweaks for Nils' UI work
This commit is contained in:
commit
f7d06dba80
9 changed files with 53 additions and 24 deletions
|
|
@ -68,11 +68,12 @@ ConsoleDocClass( GuiIconButtonCtrl,
|
||||||
" makeIconSquare = \"1\";\n"
|
" makeIconSquare = \"1\";\n"
|
||||||
" textLocation = \"Bottom\";\n"
|
" textLocation = \"Bottom\";\n"
|
||||||
" textMargin = \"-2\";\n"
|
" textMargin = \"-2\";\n"
|
||||||
" autoSize = \"0\";\n"
|
" bitmapMargin = \"0\";\n"
|
||||||
" text = \"Lag Icon\";\n"
|
" autoSize = \"0\";\n"
|
||||||
" textID = \"\"STR_LAG\"\";\n"
|
" text = \"Lag Icon\";\n"
|
||||||
" buttonType = \"PushButton\";\n"
|
" textID = \"\"STR_LAG\"\";\n"
|
||||||
" profile = \"GuiIconButtonProfile\";\n"
|
" buttonType = \"PushButton\";\n"
|
||||||
|
" profile = \"GuiIconButtonProfile\";\n"
|
||||||
"};\n"
|
"};\n"
|
||||||
"@endtsexample\n\n"
|
"@endtsexample\n\n"
|
||||||
|
|
||||||
|
|
@ -96,6 +97,8 @@ GuiIconButtonCtrl::GuiIconButtonCtrl()
|
||||||
|
|
||||||
mAutoSize = false;
|
mAutoSize = false;
|
||||||
|
|
||||||
|
mBitmapMargin = 0;
|
||||||
|
|
||||||
setExtent(140, 30);
|
setExtent(140, 30);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -134,6 +137,8 @@ void GuiIconButtonCtrl::initPersistFields()
|
||||||
"Options are 0 (None), 1 (Bottom), 2 (Right), 3 (Top), 4 (Left), 5 (Center).\n");
|
"Options are 0 (None), 1 (Bottom), 2 (Right), 3 (Top), 4 (Left), 5 (Center).\n");
|
||||||
addField( "textMargin", TypeS32, Offset( mTextMargin, GuiIconButtonCtrl ),"Margin between the icon and the text.\n");
|
addField( "textMargin", TypeS32, Offset( mTextMargin, GuiIconButtonCtrl ),"Margin between the icon and the text.\n");
|
||||||
addField( "autoSize", TypeBool, Offset( mAutoSize, GuiIconButtonCtrl ),"If true, the text and icon will be automatically sized to the size of the control.\n");
|
addField( "autoSize", TypeBool, Offset( mAutoSize, GuiIconButtonCtrl ),"If true, the text and icon will be automatically sized to the size of the control.\n");
|
||||||
|
addField( "bitmapMargin", TypeS32, Offset( mBitmapMargin, GuiIconButtonCtrl), "Margin between the icon and the border.\n");
|
||||||
|
|
||||||
Parent::initPersistFields();
|
Parent::initPersistFields();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -299,10 +304,16 @@ void GuiIconButtonCtrl::renderButton( Point2I &offset, const RectI& updateRect )
|
||||||
// Render the normal bitmap
|
// Render the normal bitmap
|
||||||
drawer->clearBitmapModulation();
|
drawer->clearBitmapModulation();
|
||||||
|
|
||||||
|
// Size of the bitmap
|
||||||
|
Point2I textureSize(mBitmap->getWidth(), mBitmap->getHeight());
|
||||||
|
|
||||||
|
// Reduce the size with the margin (if set)
|
||||||
|
textureSize.x = textureSize.x - (mBitmapMargin * 2);
|
||||||
|
textureSize.y = textureSize.y - (mBitmapMargin * 2);
|
||||||
|
|
||||||
// Maintain the bitmap size or fill the button?
|
// Maintain the bitmap size or fill the button?
|
||||||
if ( !mFitBitmapToButton )
|
if ( !mFitBitmapToButton )
|
||||||
{
|
{
|
||||||
Point2I textureSize(mBitmap->getWidth(), mBitmap->getHeight() );
|
|
||||||
iconRect.set( offset + mButtonMargin, textureSize );
|
iconRect.set( offset + mButtonMargin, textureSize );
|
||||||
|
|
||||||
if ( mIconLocation == IconLocRight )
|
if ( mIconLocation == IconLocRight )
|
||||||
|
|
@ -326,7 +337,11 @@ void GuiIconButtonCtrl::renderButton( Point2I &offset, const RectI& updateRect )
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
iconRect.set( offset + mButtonMargin, getExtent() - (Point2I(mAbs(mButtonMargin.x), mAbs(mButtonMargin.y)) * 2) );
|
// adding offset with the bitmap margin next to the button margin
|
||||||
|
Point2I bitMapOffset(mBitmapMargin, mBitmapMargin);
|
||||||
|
|
||||||
|
// set the offset
|
||||||
|
iconRect.set( offset + mButtonMargin + bitMapOffset, getExtent() - (Point2I(mAbs(mButtonMargin.x - (mBitmapMargin * 2)), mAbs(mButtonMargin.y - (mBitmapMargin * 2))) * 2) );
|
||||||
|
|
||||||
if ( mMakeIconSquare )
|
if ( mMakeIconSquare )
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -50,6 +50,9 @@ protected:
|
||||||
S32 mTextMargin;
|
S32 mTextMargin;
|
||||||
Point2I mButtonMargin;
|
Point2I mButtonMargin;
|
||||||
|
|
||||||
|
/// Margin between the icon and the button border
|
||||||
|
S32 mBitmapMargin;
|
||||||
|
|
||||||
/// Make the bitmap fill the button extent.
|
/// Make the bitmap fill the button extent.
|
||||||
bool mFitBitmapToButton;
|
bool mFitBitmapToButton;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -68,6 +68,8 @@ IMPLEMENT_CALLBACK( GuiWindowCtrl, onRestore, void, (), (),
|
||||||
"Called when the window is restored from minimized, maximized, or collapsed state." );
|
"Called when the window is restored from minimized, maximized, or collapsed state." );
|
||||||
IMPLEMENT_CALLBACK(GuiWindowCtrl, onResize, void, (S32 posX, S32 posY, S32 width, S32 height), (0, 0, 0, 0),
|
IMPLEMENT_CALLBACK(GuiWindowCtrl, onResize, void, (S32 posX, S32 posY, S32 width, S32 height), (0, 0, 0, 0),
|
||||||
"Called when the window is resized in a regular manner by mouse manipulation.");
|
"Called when the window is resized in a regular manner by mouse manipulation.");
|
||||||
|
IMPLEMENT_CALLBACK(GuiWindowCtrl, onMouseDragged, void, (), (),
|
||||||
|
"Called when the height has changed.");
|
||||||
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
@ -87,7 +89,8 @@ GuiWindowCtrl::GuiWindowCtrl()
|
||||||
mCollapseGroup(-1),
|
mCollapseGroup(-1),
|
||||||
mCollapseGroupNum(-1),
|
mCollapseGroupNum(-1),
|
||||||
mIsCollapsed(false),
|
mIsCollapsed(false),
|
||||||
mIsMouseResizing(false)
|
mIsMouseResizing(false),
|
||||||
|
mButtonOffset(0, 3)
|
||||||
{
|
{
|
||||||
// mTitleHeight will change in instanciation most likely...
|
// mTitleHeight will change in instanciation most likely...
|
||||||
mTitleHeight = 24;
|
mTitleHeight = 24;
|
||||||
|
|
@ -154,6 +157,8 @@ void GuiWindowCtrl::initPersistFields()
|
||||||
"Script code to execute when the window is closed." );
|
"Script code to execute when the window is closed." );
|
||||||
addField( "edgeSnap", TypeBool, Offset( mEdgeSnap,GuiWindowCtrl ),
|
addField( "edgeSnap", TypeBool, Offset( mEdgeSnap,GuiWindowCtrl ),
|
||||||
"If true, the window will snap to the edges of other windows when moved close to them." );
|
"If true, the window will snap to the edges of other windows when moved close to them." );
|
||||||
|
addField( "buttonOffset", TypePoint2I, Offset (mButtonOffset, GuiWindowCtrl),
|
||||||
|
"Margin between window edge and the button(s).");
|
||||||
|
|
||||||
endGroup( "Window" );
|
endGroup( "Window" );
|
||||||
|
|
||||||
|
|
@ -1019,6 +1024,9 @@ void GuiWindowCtrl::onMouseDragged(const GuiEvent &event)
|
||||||
}
|
}
|
||||||
else // Normal window sizing functionality
|
else // Normal window sizing functionality
|
||||||
resize(newPosition, newExtent);
|
resize(newPosition, newExtent);
|
||||||
|
|
||||||
|
// Add a callback for the GUI scripts
|
||||||
|
onMouseDragged_callback();
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
@ -1409,7 +1417,7 @@ void GuiWindowCtrl::onRender(Point2I offset, const RectI &updateRect)
|
||||||
}
|
}
|
||||||
|
|
||||||
drawUtil->clearBitmapModulation();
|
drawUtil->clearBitmapModulation();
|
||||||
drawUtil->drawBitmapSR(mTextureObject, offset + mCloseButton.point, mBitmapBounds[bmp]);
|
drawUtil->drawBitmapSR(mTextureObject, mButtonOffset + offset + mCloseButton.point, mBitmapBounds[bmp]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Draw the maximize button
|
// Draw the maximize button
|
||||||
|
|
@ -1428,7 +1436,7 @@ void GuiWindowCtrl::onRender(Point2I offset, const RectI &updateRect)
|
||||||
}
|
}
|
||||||
|
|
||||||
drawUtil->clearBitmapModulation();
|
drawUtil->clearBitmapModulation();
|
||||||
drawUtil->drawBitmapSR( mTextureObject, offset + mMaximizeButton.point, mBitmapBounds[bmp] );
|
drawUtil->drawBitmapSR( mTextureObject, mButtonOffset + offset + mMaximizeButton.point, mBitmapBounds[bmp] );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Draw the minimize button
|
// Draw the minimize button
|
||||||
|
|
@ -1447,7 +1455,7 @@ void GuiWindowCtrl::onRender(Point2I offset, const RectI &updateRect)
|
||||||
}
|
}
|
||||||
|
|
||||||
drawUtil->clearBitmapModulation();
|
drawUtil->clearBitmapModulation();
|
||||||
drawUtil->drawBitmapSR( mTextureObject, offset + mMinimizeButton.point, mBitmapBounds[bmp] );
|
drawUtil->drawBitmapSR( mTextureObject, mButtonOffset + offset + mMinimizeButton.point, mBitmapBounds[bmp] );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( !mMinimized )
|
if( !mMinimized )
|
||||||
|
|
|
||||||
|
|
@ -125,6 +125,8 @@ class GuiWindowCtrl : public GuiContainer
|
||||||
bool mCanDock; ///< Show a docking button on the title bar?
|
bool mCanDock; ///< Show a docking button on the title bar?
|
||||||
bool mEdgeSnap; ///< Should this window snap to other windows edges?
|
bool mEdgeSnap; ///< Should this window snap to other windows edges?
|
||||||
|
|
||||||
|
Point2I mButtonOffset;
|
||||||
|
|
||||||
/// @}
|
/// @}
|
||||||
|
|
||||||
bool mCloseButtonPressed;
|
bool mCloseButtonPressed;
|
||||||
|
|
@ -202,6 +204,7 @@ class GuiWindowCtrl : public GuiContainer
|
||||||
DECLARE_CALLBACK( void, onCollapse, () );
|
DECLARE_CALLBACK( void, onCollapse, () );
|
||||||
DECLARE_CALLBACK( void, onRestore, () );
|
DECLARE_CALLBACK( void, onRestore, () );
|
||||||
DECLARE_CALLBACK(void, onResize, (S32 posX, S32 posY, S32 width, S32 height));
|
DECLARE_CALLBACK(void, onResize, (S32 posX, S32 posY, S32 width, S32 height));
|
||||||
|
DECLARE_CALLBACK(void, onMouseDragged, ());
|
||||||
|
|
||||||
/// @}
|
/// @}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -412,7 +412,7 @@ void GuiSliderCtrl::onRender(Point2I offset, const RectI &updateRect)
|
||||||
PrimBuild::end();
|
PrimBuild::end();
|
||||||
// TODO: it would be nice, if the primitive builder were a little smarter,
|
// TODO: it would be nice, if the primitive builder were a little smarter,
|
||||||
// so that we could change colors midstream.
|
// so that we could change colors midstream.
|
||||||
PrimBuild::color4f(0.9f, 0.9f, 0.9f, 1.0f);
|
PrimBuild::color4f(0.6f, 0.6f, 0.6f, 1.0f);
|
||||||
PrimBuild::begin( GFXLineList, ( mTicks + 2 ) * 2 );
|
PrimBuild::begin( GFXLineList, ( mTicks + 2 ) * 2 );
|
||||||
// tick marks
|
// tick marks
|
||||||
for (U32 t = 0; t <= (mTicks+1); t++)
|
for (U32 t = 0; t <= (mTicks+1); t++)
|
||||||
|
|
|
||||||
|
|
@ -415,7 +415,7 @@ void GuiTextEditSliderBitmapCtrl::onRender(Point2I offset, const RectI &updateRe
|
||||||
|
|
||||||
// Draw the line that splits the number and bitmaps
|
// Draw the line that splits the number and bitmaps
|
||||||
GFX->getDrawUtil()->drawLine(Point2I(offset.x + getWidth() - 14 -2, offset.y + 1 ),
|
GFX->getDrawUtil()->drawLine(Point2I(offset.x + getWidth() - 14 -2, offset.y + 1 ),
|
||||||
Point2I(arrowUpStart.x -2, arrowUpStart.y + getExtent().y),
|
Point2I(arrowUpStart.x -2, arrowUpStart.y + getExtent().y + 2),
|
||||||
mProfile->mBorderColor);
|
mProfile->mBorderColor);
|
||||||
|
|
||||||
GFX->getDrawUtil()->clearBitmapModulation();
|
GFX->getDrawUtil()->clearBitmapModulation();
|
||||||
|
|
|
||||||
|
|
@ -360,12 +360,12 @@ void GuiTextEditSliderCtrl::onRender(Point2I offset, const RectI &updateRect)
|
||||||
GFXVertexBufferHandle<GFXVertexPCT> verts(GFX, 6, GFXBufferTypeVolatile);
|
GFXVertexBufferHandle<GFXVertexPCT> verts(GFX, 6, GFXBufferTypeVolatile);
|
||||||
verts.lock();
|
verts.lock();
|
||||||
|
|
||||||
verts[0].color.set( 0, 0, 0 );
|
verts[0].color.set(128, 128, 128);
|
||||||
verts[1].color.set( 0, 0, 0 );
|
verts[1].color.set(128, 128, 128);
|
||||||
verts[2].color.set( 0, 0, 0 );
|
verts[2].color.set(128, 128, 128);
|
||||||
verts[3].color.set( 0, 0, 0 );
|
verts[3].color.set(128, 128, 128);
|
||||||
verts[4].color.set( 0, 0, 0 );
|
verts[4].color.set(128, 128, 128);
|
||||||
verts[5].color.set( 0, 0, 0 );
|
verts[5].color.set(128, 128, 128);
|
||||||
|
|
||||||
if(mTextAreaHit == ArrowUp)
|
if(mTextAreaHit == ArrowUp)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -2873,7 +2873,7 @@ class GuiEditorRuler : public GuiControl
|
||||||
|
|
||||||
void onRender(Point2I offset, const RectI &updateRect)
|
void onRender(Point2I offset, const RectI &updateRect)
|
||||||
{
|
{
|
||||||
GFX->getDrawUtil()->drawRectFill(updateRect, ColorI::WHITE);
|
GFX->getDrawUtil()->drawRectFill(updateRect, ColorI::DARK);
|
||||||
|
|
||||||
Point2I choffset(0,0);
|
Point2I choffset(0,0);
|
||||||
if( mRefCtrl != NULL )
|
if( mRefCtrl != NULL )
|
||||||
|
|
@ -2893,7 +2893,7 @@ class GuiEditorRuler : public GuiControl
|
||||||
start = 4;
|
start = 4;
|
||||||
if(!(pos % 100))
|
if(!(pos % 100))
|
||||||
start = 1;
|
start = 1;
|
||||||
GFX->getDrawUtil()->drawLine(x, offset.y + start, x, offset.y + 10, ColorI::BLACK);
|
GFX->getDrawUtil()->drawLine(x, offset.y + start, x, offset.y + 10, ColorI::LIGHT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -2911,7 +2911,7 @@ class GuiEditorRuler : public GuiControl
|
||||||
start = 4;
|
start = 4;
|
||||||
if(!(pos % 100))
|
if(!(pos % 100))
|
||||||
start = 1;
|
start = 1;
|
||||||
GFX->getDrawUtil()->drawLine(offset.x + start, y, offset.x + 10, y, ColorI::BLACK);
|
GFX->getDrawUtil()->drawLine(offset.x + start, y, offset.x + 10, y, ColorI::LIGHT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1101,7 +1101,7 @@ GuiMenuBar::GuiMenuBar()
|
||||||
mVerticalMargin = 1; // Default number of pixels on the top and bottom of a menu's text
|
mVerticalMargin = 1; // Default number of pixels on the top and bottom of a menu's text
|
||||||
mBitmapMargin = 2; // Default number of pixels between a menu's bitmap and text
|
mBitmapMargin = 2; // Default number of pixels between a menu's bitmap and text
|
||||||
|
|
||||||
mMenubarHeight = 20;
|
mMenubarHeight = 24;
|
||||||
|
|
||||||
// Added:
|
// Added:
|
||||||
mouseDownSubmenu = NULL;
|
mouseDownSubmenu = NULL;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue