more response to SliderWidget added

units to SliderWidget added
enhanced various dialogs with slider units
This commit is contained in:
thrust26 2018-01-28 14:37:31 +01:00
parent a0052e071f
commit 966ba155ed
12 changed files with 105 additions and 147 deletions

View File

@ -1010,6 +1010,9 @@ void FrameBuffer::VideoModeList::setZoom(uInt32 zoom)
*** Slider colors *** *** Slider colors ***
kSliderColor, kSliderColor,
kSliderColorHi kSliderColorHi
kSliderBGColor
kSliderBGColorHi
kSliderBGColorLo,
*** Debugger colors *** *** Debugger colors ***
kDbgChangedColor Background color for changed cells kDbgChangedColor Background color for changed cells
kDbgChangedTextColor Text color for changed cells kDbgChangedTextColor Text color for changed cells
@ -1019,6 +1022,8 @@ void FrameBuffer::VideoModeList::setZoom(uInt32 zoom)
kColorInfo TIA output position color kColorInfo TIA output position color
kColorTitleBar Title bar color kColorTitleBar Title bar color
kColorTitleText Title text color kColorTitleText Title text color
kColorTitleBarLo Disabled title bar color
kColorTitleTextLo Disabled title text color
*/ */
uInt32 FrameBuffer::ourGUIColors[3][kNumColors-256] = { uInt32 FrameBuffer::ourGUIColors[3][kNumColors-256] = {
// Standard // Standard
@ -1028,7 +1033,7 @@ uInt32 FrameBuffer::ourGUIColors[3][kNumColors-256] = {
0xac3410, 0xd55941, 0x686868, 0xdccfa5, 0xf0f0cf, 0xf0f0cf, // buttons 0xac3410, 0xd55941, 0x686868, 0xdccfa5, 0xf0f0cf, 0xf0f0cf, // buttons
0xac3410, // checkbox 0xac3410, // checkbox
0xac3410, 0xd55941, // scrollbar 0xac3410, 0xd55941, // scrollbar
0xac3410, 0xd55941, // slider 0xac3410, 0xd55941, 0xdccfa5, 0xf0f0cf, 0xa38c61, // slider
0xc80000, 0x00ff00, 0xc8c8ff, 0xc80000, // debugger 0xc80000, 0x00ff00, 0xc8c8ff, 0xc80000, // debugger
0xffffff, 0xac3410, 0xf0f0cf, 0x686868, 0xdccfa5 // other 0xffffff, 0xac3410, 0xf0f0cf, 0x686868, 0xdccfa5 // other
}, },
@ -1039,7 +1044,7 @@ uInt32 FrameBuffer::ourGUIColors[3][kNumColors-256] = {
0x000000, 0x000000, 0x686868, 0x00ff00, 0x20a020, 0x00ff00, // buttons 0x000000, 0x000000, 0x686868, 0x00ff00, 0x20a020, 0x00ff00, // buttons
0x20a020, // checkbox 0x20a020, // checkbox
0x20a020, 0x00ff00, // scrollbar 0x20a020, 0x00ff00, // scrollbar
0x20a020, 0x00ff00, // slider 0x20a020, 0x00ff00, 0x404040, 0x686868, 0x404040, // slider
0xc80000, 0x00ff00, 0xc8c8ff, 0xc80000, // debugger 0xc80000, 0x00ff00, 0xc8c8ff, 0xc80000, // debugger
0x20a020, 0x20a020, 0x000000, 0x686868, 0x404040 // other 0x20a020, 0x20a020, 0x000000, 0x686868, 0x404040 // other
}, },
@ -1050,7 +1055,7 @@ uInt32 FrameBuffer::ourGUIColors[3][kNumColors-256] = {
0xe1e1e1, 0xe5f1fb, 0x808080, 0x0078d7, 0x000000, 0x000000, // buttons 0xe1e1e1, 0xe5f1fb, 0x808080, 0x0078d7, 0x000000, 0x000000, // buttons
0x333333, // checkbox 0x333333, // checkbox
0xc0c0c0, 0x808080, // scrollbar 0xc0c0c0, 0x808080, // scrollbar
0x333333, 0x0078d7, // slider 0x333333, 0x0078d7, 0xc0c0c0, 0x808080, 0xe1e1e1, // slider
0xffc0c0, 0x000000, 0xe00000, 0xc00000, // debugger 0xffc0c0, 0x000000, 0xe00000, 0xc00000, // debugger
0xffffff, 0x333333, 0xf0f0f0, 0x808080, 0xc0c0c0 // other 0xffffff, 0x333333, 0xf0f0f0, 0x808080, 0xc0c0c0 // other
} }

View File

@ -66,6 +66,9 @@ enum {
kScrollColorHi, kScrollColorHi,
kSliderColor, kSliderColor,
kSliderColorHi, kSliderColorHi,
kSliderBGColor,
kSliderBGColorHi,
kSliderBGColorLo,
kDbgChangedColor, kDbgChangedColor,
kDbgChangedTextColor, kDbgChangedTextColor,
kDbgColorHi, kDbgColorHi,

View File

@ -66,8 +66,8 @@ AudioDialog::AudioDialog(OSystem& osystem, DialogContainer& parent,
xpos += INDENT; xpos += INDENT;
// Volume // Volume
myVolumeSlider = new SliderWidget(this, font, xpos, ypos, myVolumeSlider = new SliderWidget(this, font, xpos, ypos, 11 * fontWidth + 5, lineHeight,
"Volume ", lwidth, 0, 3 * fontWidth); "Volume ", lwidth, 0, 4 * fontWidth, "%");
myVolumeSlider->setMinValue(1); myVolumeSlider->setMaxValue(100); myVolumeSlider->setMinValue(1); myVolumeSlider->setMaxValue(100);
wid.push_back(myVolumeSlider); wid.push_back(myVolumeSlider);
ypos += lineHeight + 4; ypos += lineHeight + 4;

View File

@ -310,8 +310,10 @@ void DeveloperDialog::addTimeMachineTab(const GUI::Font& font)
const int VBORDER = 8; const int VBORDER = 8;
const int VGAP = 4; const int VGAP = 4;
int ypos = VBORDER; int ypos = VBORDER;
int lineHeight = font.getLineHeight(); int lineHeight = font.getLineHeight(),
int fontHeight = font.getFontHeight(); fontHeight = font.getFontHeight(),
fontWidth = font.getMaxCharWidth(),
lwidth = fontWidth * 11;
WidgetArray wid; WidgetArray wid;
VariantList items; VariantList items;
int tabID = myTab->addTab("Time Machine"); int tabID = myTab->addTab("Time Machine");
@ -332,24 +334,21 @@ void DeveloperDialog::addTimeMachineTab(const GUI::Font& font)
wid.push_back(myTimeMachineWidget); wid.push_back(myTimeMachineWidget);
ypos += lineHeight + VGAP; ypos += lineHeight + VGAP;
myStateSizeWidget = new SliderWidget(myTab, font, HBORDER + INDENT * 2, ypos - 1, int swidth = fontWidth * 12 + 5; // width of PopUpWidgets below
"Buffer size (*) ", 0, kSizeChanged); myStateSizeWidget = new SliderWidget(myTab, font, HBORDER + INDENT * 2, ypos - 1, swidth, lineHeight,
"Buffer size (*) ", 0, kSizeChanged, lwidth, " states");
myStateSizeWidget->setMinValue(20); myStateSizeWidget->setMinValue(20);
myStateSizeWidget->setMaxValue(1000); myStateSizeWidget->setMaxValue(1000);
myStateSizeWidget->setStepValue(20); myStateSizeWidget->setStepValue(20);
wid.push_back(myStateSizeWidget); wid.push_back(myStateSizeWidget);
myStateSizeLabelWidget = new StaticTextWidget(myTab, font, myStateSizeWidget->getRight() + 4,
myStateSizeWidget->getTop() + 2, "100 ");
ypos += lineHeight + VGAP; ypos += lineHeight + VGAP;
myUncompressedWidget = new SliderWidget(myTab, font, HBORDER + INDENT * 2, ypos - 1, myUncompressedWidget = new SliderWidget(myTab, font, HBORDER + INDENT * 2, ypos - 1, swidth, lineHeight,
"Uncompressed size ", 0, kUncompressedChanged); "Uncompressed size ", 0, kUncompressedChanged, lwidth, " states");
myUncompressedWidget->setMinValue(0); myUncompressedWidget->setMinValue(0);
myUncompressedWidget->setMaxValue(1000); myUncompressedWidget->setMaxValue(1000);
myUncompressedWidget->setStepValue(20); myUncompressedWidget->setStepValue(20);
wid.push_back(myUncompressedWidget); wid.push_back(myUncompressedWidget);
myUncompressedLabelWidget = new StaticTextWidget(myTab, font, myUncompressedWidget->getRight() + 4,
myUncompressedWidget->getTop() + 2, "50 ");
ypos += lineHeight + VGAP; ypos += lineHeight + VGAP;
items.clear(); items.clear();
@ -425,29 +424,21 @@ void DeveloperDialog::addDebuggerTab(const GUI::Font& font)
// Debugger width and height // Debugger width and height
myDebuggerWidthSlider = new SliderWidget(myTab, font, xpos, ypos-1, "Debugger width (*) ", myDebuggerWidthSlider = new SliderWidget(myTab, font, xpos, ypos-1, "Debugger width (*) ",
0, kDWidthChanged); 0, 0, 6 * fontWidth, "px");
myDebuggerWidthSlider->setMinValue(DebuggerDialog::kSmallFontMinW); myDebuggerWidthSlider->setMinValue(DebuggerDialog::kSmallFontMinW);
myDebuggerWidthSlider->setMaxValue(ds.w); myDebuggerWidthSlider->setMaxValue(ds.w);
myDebuggerWidthSlider->setStepValue(10); myDebuggerWidthSlider->setStepValue(10);
wid.push_back(myDebuggerWidthSlider); wid.push_back(myDebuggerWidthSlider);
myDebuggerWidthLabel =
new StaticTextWidget(myTab, font,
xpos + myDebuggerWidthSlider->getWidth() + 4,
ypos + 1, 4 * fontWidth, fontHeight, "");
ypos += lineHeight + VGAP; ypos += lineHeight + VGAP;
myDebuggerHeightSlider = new SliderWidget(myTab, font, xpos, ypos-1, "Debugger height (*) ", myDebuggerHeightSlider = new SliderWidget(myTab, font, xpos, ypos-1, "Debugger height (*) ",
0, kDHeightChanged); 0, 0, 6 * fontWidth, "px");
myDebuggerHeightSlider->setMinValue(DebuggerDialog::kSmallFontMinH); myDebuggerHeightSlider->setMinValue(DebuggerDialog::kSmallFontMinH);
myDebuggerHeightSlider->setMaxValue(ds.h); myDebuggerHeightSlider->setMaxValue(ds.h);
myDebuggerHeightSlider->setStepValue(10); myDebuggerHeightSlider->setStepValue(10);
wid.push_back(myDebuggerHeightSlider); wid.push_back(myDebuggerHeightSlider);
myDebuggerHeightLabel =
new StaticTextWidget(myTab, font,
xpos + myDebuggerHeightSlider->getWidth() + 4,
ypos + 1, 4 * fontWidth, fontHeight, "");
ypos += lineHeight + VGAP * 4; ypos += lineHeight + VGAP * 4;
myGhostReadsTrapWidget = new CheckboxWidget(myTab, font, HBORDER, ypos + 1, myGhostReadsTrapWidget = new CheckboxWidget(myTab, font, HBORDER, ypos + 1,
"Trap on 'ghost' reads", kGhostReads); "Trap on 'ghost' reads", kGhostReads);
wid.push_back(myGhostReadsTrapWidget); wid.push_back(myGhostReadsTrapWidget);
@ -468,11 +459,8 @@ void DeveloperDialog::addDebuggerTab(const GUI::Font& font)
if(!debuggerAvailable) if(!debuggerAvailable)
{ {
myDebuggerWidthSlider->clearFlags(WIDGET_ENABLED); myDebuggerWidthSlider->clearFlags(WIDGET_ENABLED);
myDebuggerWidthLabel->clearFlags(WIDGET_ENABLED);
myDebuggerHeightSlider->clearFlags(WIDGET_ENABLED); myDebuggerHeightSlider->clearFlags(WIDGET_ENABLED);
myDebuggerHeightLabel->clearFlags(WIDGET_ENABLED);
} }
#else #else
new StaticTextWidget(myTab, font, 0, 20, _w - 20, font.getFontHeight(), new StaticTextWidget(myTab, font, 0, 20, _w - 20, font.getFontHeight(),
"Debugger support not included", TextAlign::Center); "Debugger support not included", TextAlign::Center);
@ -660,9 +648,7 @@ void DeveloperDialog::loadConfig()
w = ds.w; h = ds.h; w = ds.w; h = ds.h;
myDebuggerWidthSlider->setValue(w); myDebuggerWidthSlider->setValue(w);
myDebuggerWidthLabel->setValue(w);
myDebuggerHeightSlider->setValue(h); myDebuggerHeightSlider->setValue(h);
myDebuggerHeightLabel->setValue(h);
// Debugger font size // Debugger font size
string size = instance().settings().getString("dbg.fontsize"); string size = instance().settings().getString("dbg.fontsize");
@ -789,9 +775,7 @@ void DeveloperDialog::setDefaults()
uInt32 w = std::min(instance().frameBuffer().desktopSize().w, uInt32(DebuggerDialog::kMediumFontMinW)); uInt32 w = std::min(instance().frameBuffer().desktopSize().w, uInt32(DebuggerDialog::kMediumFontMinW));
uInt32 h = std::min(instance().frameBuffer().desktopSize().h, uInt32(DebuggerDialog::kMediumFontMinH)); uInt32 h = std::min(instance().frameBuffer().desktopSize().h, uInt32(DebuggerDialog::kMediumFontMinH));
myDebuggerWidthSlider->setValue(w); myDebuggerWidthSlider->setValue(w);
myDebuggerWidthLabel->setValue(w);
myDebuggerHeightSlider->setValue(h); myDebuggerHeightSlider->setValue(h);
myDebuggerHeightLabel->setValue(h);
myDebuggerFontSize->setSelected("medium"); myDebuggerFontSize->setSelected("medium");
myDebuggerFontStyle->setSelected("0"); myDebuggerFontStyle->setSelected("0");
@ -881,14 +865,6 @@ void DeveloperDialog::handleCommand(CommandSender* sender, int cmd, int data, in
break; break;
#ifdef DEBUGGER_SUPPORT #ifdef DEBUGGER_SUPPORT
case kDWidthChanged:
myDebuggerWidthLabel->setValue(myDebuggerWidthSlider->getValue());
break;
case kDHeightChanged:
myDebuggerHeightLabel->setValue(myDebuggerHeightSlider->getValue());
break;
case kDFontSizeChanged: case kDFontSizeChanged:
handleFontSize(); handleFontSize();
break; break;
@ -961,11 +937,7 @@ void DeveloperDialog::handleTimeMachine()
bool enable = myTimeMachineWidget->getState(); bool enable = myTimeMachineWidget->getState();
myStateSizeWidget->setEnabled(enable); myStateSizeWidget->setEnabled(enable);
myStateSizeLabelWidget->setEnabled(enable);
myUncompressedWidget->setEnabled(enable); myUncompressedWidget->setEnabled(enable);
myUncompressedLabelWidget->setEnabled(enable);
myStateIntervalWidget->setEnabled(enable); myStateIntervalWidget->setEnabled(enable);
uInt32 size = myStateSizeWidget->getValue(); uInt32 size = myStateSizeWidget->getValue();
@ -990,7 +962,6 @@ void DeveloperDialog::handleSize()
if(horizon == -1) if(horizon == -1)
horizon = 0; horizon = 0;
myStateSizeLabelWidget->setValue(size);
// adapt horizon and interval // adapt horizon and interval
do do
{ {
@ -1020,8 +991,6 @@ void DeveloperDialog::handleUncompressed()
uInt32 size = myStateSizeWidget->getValue(); uInt32 size = myStateSizeWidget->getValue();
uInt32 uncompressed = myUncompressedWidget->getValue(); uInt32 uncompressed = myUncompressedWidget->getValue();
myUncompressedLabelWidget->setValue(myUncompressedWidget->getValue());
if(size < uncompressed) if(size < uncompressed)
myStateSizeWidget->setValue(uncompressed); myStateSizeWidget->setValue(uncompressed);
myStateHorizonWidget->setEnabled(myTimeMachineWidget->getState() && size > uncompressed); myStateHorizonWidget->setEnabled(myTimeMachineWidget->getState() && size > uncompressed);
@ -1219,16 +1188,10 @@ void DeveloperDialog::handleFontSize()
myDebuggerWidthSlider->setMinValue(minW); myDebuggerWidthSlider->setMinValue(minW);
if(minW > uInt32(myDebuggerWidthSlider->getValue())) if(minW > uInt32(myDebuggerWidthSlider->getValue()))
{
myDebuggerWidthSlider->setValue(minW); myDebuggerWidthSlider->setValue(minW);
myDebuggerWidthLabel->setValue(minW);
}
myDebuggerHeightSlider->setMinValue(minH); myDebuggerHeightSlider->setMinValue(minH);
if(minH > uInt32(myDebuggerHeightSlider->getValue())) if(minH > uInt32(myDebuggerHeightSlider->getValue()))
{
myDebuggerHeightSlider->setValue(minH); myDebuggerHeightSlider->setValue(minH);
myDebuggerHeightLabel->setValue(minH);
}
#endif #endif
} }

View File

@ -74,8 +74,6 @@ class DeveloperDialog : public Dialog
kPFColourChangedCmd = 'GOpf', kPFColourChangedCmd = 'GOpf',
kBLColourChangedCmd = 'GObl', kBLColourChangedCmd = 'GObl',
#ifdef DEBUGGER_SUPPORT #ifdef DEBUGGER_SUPPORT
kDWidthChanged = 'UIdw',
kDHeightChanged = 'UIdh',
kDFontSizeChanged = 'UIfs', kDFontSizeChanged = 'UIfs',
kGhostReads = 'Dbgh' kGhostReads = 'Dbgh'
#endif #endif
@ -120,18 +118,14 @@ class DeveloperDialog : public Dialog
RadioButtonGroup* mySettingsGroup2; RadioButtonGroup* mySettingsGroup2;
CheckboxWidget* myTimeMachineWidget; CheckboxWidget* myTimeMachineWidget;
SliderWidget* myStateSizeWidget; SliderWidget* myStateSizeWidget;
StaticTextWidget* myStateSizeLabelWidget;
SliderWidget* myUncompressedWidget; SliderWidget* myUncompressedWidget;
StaticTextWidget* myUncompressedLabelWidget;
PopUpWidget* myStateIntervalWidget; PopUpWidget* myStateIntervalWidget;
PopUpWidget* myStateHorizonWidget; PopUpWidget* myStateHorizonWidget;
#ifdef DEBUGGER_SUPPORT #ifdef DEBUGGER_SUPPORT
// Debugger UI widgets // Debugger UI widgets
SliderWidget* myDebuggerWidthSlider; SliderWidget* myDebuggerWidthSlider;
StaticTextWidget* myDebuggerWidthLabel;
SliderWidget* myDebuggerHeightSlider; SliderWidget* myDebuggerHeightSlider;
StaticTextWidget* myDebuggerHeightLabel;
PopUpWidget* myDebuggerFontSize; PopUpWidget* myDebuggerFontSize;
PopUpWidget* myDebuggerFontStyle; PopUpWidget* myDebuggerFontStyle;
CheckboxWidget* myGhostReadsTrapWidget; CheckboxWidget* myGhostReadsTrapWidget;

View File

@ -55,7 +55,7 @@ GameInfoDialog::GameInfoDialog(
const int hSpace = 10; const int hSpace = 10;
const int VGAP = 4; const int VGAP = 4;
int xpos, ypos, lwidth, fwidth, pwidth, tabID; int xpos, ypos, lwidth, fwidth, pwidth, swidth, tabID;
WidgetArray wid; WidgetArray wid;
VariantList items, ports, ctrls; VariantList items, ports, ctrls;
StaticTextWidget* t; StaticTextWidget* t;
@ -178,7 +178,7 @@ GameInfoDialog::GameInfoDialog(
ypos = vBorder; ypos = vBorder;
pwidth = font.getStringWidth("Paddles_IAxis"); pwidth = font.getStringWidth("Paddles_IAxis");
myP0Label = new StaticTextWidget(myTab, font, hSpace, ypos+1, "P0 Controller "); myP0Label = new StaticTextWidget(myTab, font, hSpace, ypos+1, "P0 controller ");
ctrls.clear(); ctrls.clear();
VarList::push_back(ctrls, "Joystick", "JOYSTICK" ); VarList::push_back(ctrls, "Joystick", "JOYSTICK" );
VarList::push_back(ctrls, "Paddles", "PADDLES" ); VarList::push_back(ctrls, "Paddles", "PADDLES" );
@ -203,18 +203,18 @@ GameInfoDialog::GameInfoDialog(
ypos += lineHeight + VGAP; ypos += lineHeight + VGAP;
pwidth = font.getStringWidth("Paddles_IAxis"); pwidth = font.getStringWidth("Paddles_IAxis");
myP1Label = new StaticTextWidget(myTab, font, hSpace, ypos+1, "P1 Controller "); myP1Label = new StaticTextWidget(myTab, font, hSpace, ypos+1, "P1 controller ");
myP1Controller = new PopUpWidget(myTab, font, myP1Label->getRight(), myP1Label->getTop()-1, myP1Controller = new PopUpWidget(myTab, font, myP1Label->getRight(), myP1Label->getTop()-1,
pwidth, lineHeight, ctrls, "", 0, kRightCChanged); pwidth, lineHeight, ctrls, "", 0, kRightCChanged);
wid.push_back(myP1Controller); wid.push_back(myP1Controller);
//ypos += lineHeight + VGAP; //ypos += lineHeight + VGAP;
mySwapPorts = new CheckboxWidget(myTab, font, myP0Controller->getRight() + fontWidth*4, myP0Controller->getTop()+1, mySwapPorts = new CheckboxWidget(myTab, font, myP0Controller->getRight() + fontWidth*4, myP0Controller->getTop()+1,
"Swap Ports"); "Swap ports");
wid.push_back(mySwapPorts); wid.push_back(mySwapPorts);
//ypos += lineHeight + VGAP; //ypos += lineHeight + VGAP;
mySwapPaddles = new CheckboxWidget(myTab, font, myP1Controller->getRight() + fontWidth*4, myP1Controller->getTop()+1, mySwapPaddles = new CheckboxWidget(myTab, font, myP1Controller->getRight() + fontWidth*4, myP1Controller->getTop()+1,
"Swap Paddles"); "Swap paddles");
wid.push_back(mySwapPaddles); wid.push_back(mySwapPaddles);
// EEPROM erase button for P0/P1 // EEPROM erase button for P0/P1
@ -259,7 +259,7 @@ GameInfoDialog::GameInfoDialog(
xpos = hSpace; ypos += lineHeight + VGAP; xpos = hSpace; ypos += lineHeight + VGAP;
lwidth = font.getStringWidth("Mouse axis range "); lwidth = font.getStringWidth("Mouse axis range ");
myMouseRange = new SliderWidget(myTab, font, hSpace, ypos, myMouseRange = new SliderWidget(myTab, font, hSpace, ypos,
"Mouse axis range ", lwidth, 0, fontWidth * 3); "Mouse axis range ", lwidth, 0, fontWidth * 4, "%");
myMouseRange->setMinValue(1); myMouseRange->setMaxValue(100); myMouseRange->setMinValue(1); myMouseRange->setMaxValue(100);
wid.push_back(myMouseRange); wid.push_back(myMouseRange);
@ -287,24 +287,21 @@ GameInfoDialog::GameInfoDialog(
wid.push_back(myFormat); wid.push_back(myFormat);
ypos += lineHeight + VGAP; ypos += lineHeight + VGAP;
t = new StaticTextWidget(myTab, font, hSpace, ypos+1, "YStart "); swidth = myFormat->getWidth();
myYStart = new SliderWidget(myTab, font, t->getRight(), ypos, t = new StaticTextWidget(myTab, font, hSpace, ypos+1, "Y-Start ");
"", 0, kYStartChanged); myYStart = new SliderWidget(myTab, font, t->getRight(), ypos, swidth, lineHeight,
"", 0, kYStartChanged, 4 * fontWidth, "px");
myYStart->setMinValue(TIAConstants::minYStart-1); myYStart->setMinValue(TIAConstants::minYStart-1);
myYStart->setMaxValue(TIAConstants::maxYStart); myYStart->setMaxValue(TIAConstants::maxYStart);
wid.push_back(myYStart); wid.push_back(myYStart);
myYStartLabel = new StaticTextWidget(myTab, font, myYStart->getRight() + 4,
ypos+1, 5*fontWidth, fontHeight);
ypos += lineHeight + VGAP; ypos += lineHeight + VGAP;
t = new StaticTextWidget(myTab, font, hSpace, ypos+1, "Height "); t = new StaticTextWidget(myTab, font, hSpace, ypos+1, "Height ");
myHeight = new SliderWidget(myTab, font, t->getRight(), ypos, myHeight = new SliderWidget(myTab, font, t->getRight(), ypos, swidth, lineHeight,
"", 0, kHeightChanged); "", 0, kHeightChanged, 5 * fontWidth, "px");
myHeight->setMinValue(TIAConstants::minViewableHeight-1); myHeight->setMinValue(TIAConstants::minViewableHeight-1);
myHeight->setMaxValue(TIAConstants::maxViewableHeight); myHeight->setMaxValue(TIAConstants::maxViewableHeight);
wid.push_back(myHeight); wid.push_back(myHeight);
myHeightLabel = new StaticTextWidget(myTab, font, myHeight->getRight() + 4,
ypos+1, 5*fontWidth, fontHeight);
// Phosphor // Phosphor
ypos += lineHeight + VGAP*4; ypos += lineHeight + VGAP*4;
@ -313,13 +310,10 @@ GameInfoDialog::GameInfoDialog(
myPPBlend = new SliderWidget(myTab, font, myPPBlend = new SliderWidget(myTab, font,
myPhosphor->getRight() + fontWidth * 3, myPhosphor->getTop()-2, myPhosphor->getRight() + fontWidth * 3, myPhosphor->getTop()-2,
"Blend ", 0, kPPBlendChanged); "Blend ", 0, kPPBlendChanged, 7 * fontWidth, "%");
myPPBlend->setMinValue(0); myPPBlend->setMaxValue(100); myPPBlend->setMinValue(0); myPPBlend->setMaxValue(100);
wid.push_back(myPPBlend); wid.push_back(myPPBlend);
myPPBlendLabel = new StaticTextWidget(myTab, font,
myPPBlend->getRight() + 4, myPhosphor->getTop(), " ");
// Add items for tab 3 // Add items for tab 3
addToFocusList(wid, myTab, tabID); addToFocusList(wid, myTab, tabID);
@ -425,20 +419,22 @@ void GameInfoDialog::loadView()
const string& ystart = myGameProperties.get(Display_YStart); const string& ystart = myGameProperties.get(Display_YStart);
myYStart->setValue(atoi(ystart.c_str())); myYStart->setValue(atoi(ystart.c_str()));
myYStartLabel->setLabel(ystart == "0" ? "Auto" : ystart); myYStart->setValueLabel(ystart == "0" ? "Auto" : ystart);
myYStart->setValueUnit(ystart == "0" ? "" : "px");
const string& height = myGameProperties.get(Display_Height); const string& height = myGameProperties.get(Display_Height);
myHeight->setValue(atoi(height.c_str())); myHeight->setValue(atoi(height.c_str()));
myHeightLabel->setLabel(height == "0" ? "Auto" : height); myHeight->setValueLabel(height == "0" ? "Auto" : height);
myHeight->setValueUnit(height == "0" ? "" : "px");
bool usePhosphor = myGameProperties.get(Display_Phosphor) == "YES"; bool usePhosphor = myGameProperties.get(Display_Phosphor) == "YES";
myPhosphor->setState(usePhosphor); myPhosphor->setState(usePhosphor);
myPPBlend->setEnabled(usePhosphor); myPPBlend->setEnabled(usePhosphor);
myPPBlendLabel->setEnabled(usePhosphor);
const string& blend = myGameProperties.get(Display_PPBlend); const string& blend = myGameProperties.get(Display_PPBlend);
myPPBlend->setValue(atoi(blend.c_str())); myPPBlend->setValue(atoi(blend.c_str()));
myPPBlendLabel->setLabel(blend == "0" ? "Auto" : blend); myPPBlend->setValueLabel(blend == "0" ? "Default" : blend);
myPPBlend->setValueUnit(blend == "0" ? "" : "%");
myTab->loadConfig(); myTab->loadConfig();
} }
@ -481,14 +477,14 @@ void GameInfoDialog::saveConfig()
// Display properties // Display properties
myGameProperties.set(Display_Format, myFormat->getSelectedTag().toString()); myGameProperties.set(Display_Format, myFormat->getSelectedTag().toString());
myGameProperties.set(Display_YStart, myYStartLabel->getLabel() == "Auto" ? "0" : myGameProperties.set(Display_YStart, myYStart->getValueLabel() == "Auto" ? "0" :
myYStartLabel->getLabel()); myYStart->getValueLabel());
myGameProperties.set(Display_Height, myHeightLabel->getLabel() == "Auto" ? "0" : myGameProperties.set(Display_Height, myHeight->getValueLabel() == "Auto" ? "0" :
myHeightLabel->getLabel()); myHeight->getValueLabel());
myGameProperties.set(Display_Phosphor, myPhosphor->getState() ? "YES" : "NO"); myGameProperties.set(Display_Phosphor, myPhosphor->getState() ? "YES" : "NO");
myGameProperties.set(Display_PPBlend, myPPBlendLabel->getLabel() == "Auto" ? "0" : myGameProperties.set(Display_PPBlend, myPPBlend->getValueLabel() == "Default" ? "0" :
myPPBlendLabel->getLabel()); myPPBlend->getValueLabel());
// Determine whether to add or remove an entry from the properties set // Determine whether to add or remove an entry from the properties set
if(myDefaultsSelected) if(myDefaultsSelected)
@ -609,29 +605,38 @@ void GameInfoDialog::handleCommand(CommandSender* sender, int cmd,
{ {
bool status = myPhosphor->getState(); bool status = myPhosphor->getState();
myPPBlend->setEnabled(status); myPPBlend->setEnabled(status);
myPPBlendLabel->setEnabled(status);
break; break;
} }
case kYStartChanged: case kYStartChanged:
if(myYStart->getValue() == TIAConstants::minYStart-1) if(myYStart->getValue() == TIAConstants::minYStart-1)
myYStartLabel->setLabel("Auto"); {
myYStart->setValueLabel("Auto");
myYStart->setValueUnit("");
}
else else
myYStartLabel->setValue(myYStart->getValue()); myYStart->setValueUnit("px");
break; break;
case kHeightChanged: case kHeightChanged:
if(myHeight->getValue() == TIAConstants::minViewableHeight-1) if(myHeight->getValue() == TIAConstants::minViewableHeight-1)
myHeightLabel->setLabel("Auto"); {
myHeight->setValueLabel("Auto");
myHeight->setValueUnit("");
}
else else
myHeightLabel->setValue(myHeight->getValue()); myHeight->setValueUnit("px");
break; break;
case kPPBlendChanged: case kPPBlendChanged:
if(myPPBlend->getValue() == 0) if(myPPBlend->getValue() == 0)
myPPBlendLabel->setLabel("Auto"); {
myPPBlend->setValueLabel("Default");
myPPBlend->setValueUnit("");
}
else else
myPPBlendLabel->setValue(myPPBlend->getValue()); myPPBlend->setValueUnit("%");
break; break;
case kMCtrlChanged: case kMCtrlChanged:

View File

@ -85,12 +85,9 @@ class GameInfoDialog : public Dialog, public CommandSender
// Display properties // Display properties
PopUpWidget* myFormat; PopUpWidget* myFormat;
SliderWidget* myYStart; SliderWidget* myYStart;
StaticTextWidget* myYStartLabel;
SliderWidget* myHeight; SliderWidget* myHeight;
StaticTextWidget* myHeightLabel;
CheckboxWidget* myPhosphor; CheckboxWidget* myPhosphor;
SliderWidget* myPPBlend; SliderWidget* myPPBlend;
StaticTextWidget* myPPBlendLabel;
enum { enum {
kLeftCChanged = 'LCch', kLeftCChanged = 'LCch',

View File

@ -132,27 +132,19 @@ UIDialog::UIDialog(OSystem& osystem, DialogContainer& parent,
// Launcher width and height // Launcher width and height
myLauncherWidthSlider = new SliderWidget(myTab, font, xpos, ypos, "Launcher Width ", myLauncherWidthSlider = new SliderWidget(myTab, font, xpos, ypos, "Launcher Width ",
lwidth, kLWidthChanged); lwidth, 0, 6 * fontWidth, "px");
myLauncherWidthSlider->setMinValue(FrameBuffer::kFBMinW); myLauncherWidthSlider->setMinValue(FrameBuffer::kFBMinW);
myLauncherWidthSlider->setMaxValue(ds.w); myLauncherWidthSlider->setMaxValue(ds.w);
myLauncherWidthSlider->setStepValue(10); myLauncherWidthSlider->setStepValue(10);
wid.push_back(myLauncherWidthSlider); wid.push_back(myLauncherWidthSlider);
myLauncherWidthLabel =
new StaticTextWidget(myTab, font,
xpos + myLauncherWidthSlider->getWidth() + 4,
ypos + 1, 4 * fontWidth, fontHeight, "");
ypos += lineHeight + 4; ypos += lineHeight + 4;
myLauncherHeightSlider = new SliderWidget(myTab, font, xpos, ypos, "Launcher Height ", myLauncherHeightSlider = new SliderWidget(myTab, font, xpos, ypos, "Launcher Height ",
lwidth, kLHeightChanged); lwidth, 0, 6 * fontWidth, "px");
myLauncherHeightSlider->setMinValue(FrameBuffer::kFBMinH); myLauncherHeightSlider->setMinValue(FrameBuffer::kFBMinH);
myLauncherHeightSlider->setMaxValue(ds.h); myLauncherHeightSlider->setMaxValue(ds.h);
myLauncherHeightSlider->setStepValue(10); myLauncherHeightSlider->setStepValue(10);
wid.push_back(myLauncherHeightSlider); wid.push_back(myLauncherHeightSlider);
myLauncherHeightLabel =
new StaticTextWidget(myTab, font,
xpos + myLauncherHeightSlider->getWidth() + 4,
ypos + 1, 4 * fontWidth, fontHeight, "", TextAlign::Left);
ypos += lineHeight + 4; ypos += lineHeight + 4;
// Launcher font // Launcher font
@ -215,9 +207,7 @@ void UIDialog::loadConfig()
h = std::min(h, instance().frameBuffer().desktopSize().h); h = std::min(h, instance().frameBuffer().desktopSize().h);
myLauncherWidthSlider->setValue(w); myLauncherWidthSlider->setValue(w);
myLauncherWidthLabel->setValue(w);
myLauncherHeightSlider->setValue(h); myLauncherHeightSlider->setValue(h);
myLauncherHeightLabel->setValue(h);
// Launcher font // Launcher font
const string& font = instance().settings().getString("launcherfont"); const string& font = instance().settings().getString("launcherfont");
@ -290,9 +280,7 @@ void UIDialog::setDefaults()
uInt32 w = std::min(instance().frameBuffer().desktopSize().w, 900u); uInt32 w = std::min(instance().frameBuffer().desktopSize().w, 900u);
uInt32 h = std::min(instance().frameBuffer().desktopSize().h, 600u); uInt32 h = std::min(instance().frameBuffer().desktopSize().h, 600u);
myLauncherWidthSlider->setValue(w); myLauncherWidthSlider->setValue(w);
myLauncherWidthLabel->setValue(w);
myLauncherHeightSlider->setValue(h); myLauncherHeightSlider->setValue(h);
myLauncherHeightLabel->setValue(h);
myLauncherFontPopup->setSelected("medium", ""); myLauncherFontPopup->setSelected("medium", "");
myRomViewerPopup->setSelected("1", ""); myRomViewerPopup->setSelected("1", "");
myLauncherExitWidget->setState(false); myLauncherExitWidget->setState(false);
@ -317,14 +305,6 @@ void UIDialog::handleCommand(CommandSender* sender, int cmd, int data, int id)
{ {
switch(cmd) switch(cmd)
{ {
case kLWidthChanged:
myLauncherWidthLabel->setValue(myLauncherWidthSlider->getValue());
break;
case kLHeightChanged:
myLauncherHeightLabel->setValue(myLauncherHeightSlider->getValue());
break;
case GuiObject::kOKCmd: case GuiObject::kOKCmd:
saveConfig(); saveConfig();
close(); close();

View File

@ -48,9 +48,7 @@ class UIDialog : public Dialog
// Launcher options // Launcher options
SliderWidget* myLauncherWidthSlider; SliderWidget* myLauncherWidthSlider;
StaticTextWidget* myLauncherWidthLabel;
SliderWidget* myLauncherHeightSlider; SliderWidget* myLauncherHeightSlider;
StaticTextWidget* myLauncherHeightLabel;
CheckboxWidget* myLauncherExitWidget; CheckboxWidget* myLauncherExitWidget;
PopUpWidget* myLauncherFontPopup; PopUpWidget* myLauncherFontPopup;
PopUpWidget* myRomViewerPopup; PopUpWidget* myRomViewerPopup;
@ -60,11 +58,6 @@ class UIDialog : public Dialog
PopUpWidget* myListDelayPopup; PopUpWidget* myListDelayPopup;
PopUpWidget* myWheelLinesPopup; PopUpWidget* myWheelLinesPopup;
enum {
kLWidthChanged = 'UIlw',
kLHeightChanged = 'UIlh',
};
private: private:
// Following constructors and assignment operators not supported // Following constructors and assignment operators not supported
UIDialog() = delete; UIDialog() = delete;

View File

@ -55,7 +55,7 @@ VideoDialog::VideoDialog(OSystem& osystem, DialogContainer& parent,
VariantList items; VariantList items;
// Set real dimensions // Set real dimensions
_w = std::min(55 * fontWidth + HBORDER * 2, max_w); _w = std::min(57 * fontWidth + HBORDER * 2, max_w);
_h = std::min((16-2) * (lineHeight + VGAP) + 14 + _th, max_h); _h = std::min((16-2) * (lineHeight + VGAP) + 14 + _th, max_h);
// The tab widget // The tab widget
@ -91,6 +91,13 @@ VideoDialog::VideoDialog(OSystem& osystem, DialogContainer& parent,
wid.push_back(myTIAZoom); wid.push_back(myTIAZoom);
ypos += lineHeight + VGAP; ypos += lineHeight + VGAP;
SliderWidget* s = new SliderWidget(myTab, font, xpos, ypos - 1, swidth, lineHeight,
"TIA zoom", lwidth, 0, fontWidth * 4, "%");
s->setMinValue(200); s->setMaxValue(500);
wid.push_back(s);
ypos += lineHeight + VGAP;
// TIA interpolation // TIA interpolation
myTIAInterpolate = new CheckboxWidget(myTab, font, xpos, ypos + 1, "TIA interpolation "); myTIAInterpolate = new CheckboxWidget(myTab, font, xpos, ypos + 1, "TIA interpolation ");
wid.push_back(myTIAInterpolate); wid.push_back(myTIAInterpolate);
@ -100,7 +107,7 @@ VideoDialog::VideoDialog(OSystem& osystem, DialogContainer& parent,
myNAspectRatio = myNAspectRatio =
new SliderWidget(myTab, font, xpos, ypos-1, swidth, lineHeight, new SliderWidget(myTab, font, xpos, ypos-1, swidth, lineHeight,
"NTSC aspect ", lwidth, 0, "NTSC aspect ", lwidth, 0,
fontWidth * 3); fontWidth * 4, "%");
myNAspectRatio->setMinValue(80); myNAspectRatio->setMaxValue(120); myNAspectRatio->setMinValue(80); myNAspectRatio->setMaxValue(120);
wid.push_back(myNAspectRatio); wid.push_back(myNAspectRatio);
ypos += lineHeight + VGAP; ypos += lineHeight + VGAP;
@ -109,7 +116,7 @@ VideoDialog::VideoDialog(OSystem& osystem, DialogContainer& parent,
myPAspectRatio = myPAspectRatio =
new SliderWidget(myTab, font, xpos, ypos-1, swidth, lineHeight, new SliderWidget(myTab, font, xpos, ypos-1, swidth, lineHeight,
"PAL aspect ", lwidth, 0, "PAL aspect ", lwidth, 0,
fontWidth * 3); fontWidth * 4, "%");
myPAspectRatio->setMinValue(80); myPAspectRatio->setMaxValue(120); myPAspectRatio->setMinValue(80); myPAspectRatio->setMaxValue(120);
wid.push_back(myPAspectRatio); wid.push_back(myPAspectRatio);
ypos += lineHeight + VGAP; ypos += lineHeight + VGAP;
@ -117,7 +124,7 @@ VideoDialog::VideoDialog(OSystem& osystem, DialogContainer& parent,
// Framerate // Framerate
myFrameRate = myFrameRate =
new SliderWidget(myTab, font, xpos, ypos-1, swidth, lineHeight, new SliderWidget(myTab, font, xpos, ypos-1, swidth, lineHeight,
"Frame rate ", lwidth, 0, fontWidth * 4); "Frame rate ", lwidth, kFrameRateChanged, fontWidth * 6, "fps");
myFrameRate->setMinValue(0); myFrameRate->setMaxValue(900); myFrameRate->setMinValue(0); myFrameRate->setMaxValue(900);
myFrameRate->setStepValue(10); myFrameRate->setStepValue(10);
wid.push_back(myFrameRate); wid.push_back(myFrameRate);
@ -213,7 +220,7 @@ VideoDialog::VideoDialog(OSystem& osystem, DialogContainer& parent,
#define CREATE_CUSTOM_SLIDERS(obj, desc) \ #define CREATE_CUSTOM_SLIDERS(obj, desc) \
myTV ## obj = \ myTV ## obj = \
new SliderWidget(myTab, font, xpos, ypos-1, swidth, lineHeight, \ new SliderWidget(myTab, font, xpos, ypos-1, swidth, lineHeight, \
desc, lwidth, 0, fontWidth*3); \ desc, lwidth, 0, fontWidth*4, "%"); \
myTV ## obj->setMinValue(0); myTV ## obj->setMaxValue(100); \ myTV ## obj->setMinValue(0); myTV ## obj->setMaxValue(100); \
wid.push_back(myTV ## obj); \ wid.push_back(myTV ## obj); \
ypos += lineHeight + VGAP; ypos += lineHeight + VGAP;
@ -325,6 +332,7 @@ void VideoDialog::loadConfig()
myFrameRate->setValue(rate < 0 ? 0 : rate); myFrameRate->setValue(rate < 0 ? 0 : rate);
myFrameRate->setValueLabel(rate <= 0 ? "Auto" : myFrameRate->setValueLabel(rate <= 0 ? "Auto" :
instance().settings().getString("framerate")); instance().settings().getString("framerate"));
myFrameRate->setValueUnit(rate <= 0 ? "" : "fps");
// Fullscreen // Fullscreen
myFullscreen->setState(instance().settings().getBool("fullscreen")); myFullscreen->setState(instance().settings().getBool("fullscreen"));
@ -581,6 +589,7 @@ void VideoDialog::handleCommand(CommandSender* sender, int cmd,
case kFrameRateChanged: case kFrameRateChanged:
if(myFrameRate->getValue() == 0) if(myFrameRate->getValue() == 0)
myFrameRate->setValueLabel("Auto"); myFrameRate->setValueLabel("Auto");
myFrameRate->setValueUnit(myFrameRate->getValue() == 0 ? "" : "fps");
break; break;
case kTVModeChanged: case kTVModeChanged:

View File

@ -627,9 +627,9 @@ void CheckboxWidget::drawWidget(bool hilite)
SliderWidget::SliderWidget(GuiObject* boss, const GUI::Font& font, SliderWidget::SliderWidget(GuiObject* boss, const GUI::Font& font,
int x, int y, int w, int h, int x, int y, int w, int h,
const string& label, int labelWidth, int cmd, const string& label, int labelWidth, int cmd,
int valueLabelWidth, int valueLabelGap) int valueLabelWidth, const string& valueUnit, int valueLabelGap)
: ButtonWidget(boss, font, x, y, w, h, label, cmd), : ButtonWidget(boss, font, x, y, w, h, label, cmd),
_value(0), _value(-1),
_stepValue(1), _stepValue(1),
_valueMin(0), _valueMin(0),
_valueMax(100), _valueMax(100),
@ -637,7 +637,8 @@ SliderWidget::SliderWidget(GuiObject* boss, const GUI::Font& font,
_labelWidth(labelWidth), _labelWidth(labelWidth),
_valueLabelGap(valueLabelGap), _valueLabelGap(valueLabelGap),
_valueLabelWidth(valueLabelWidth), _valueLabelWidth(valueLabelWidth),
_valueLabel("") _valueLabel(""),
_valueUnit(valueUnit)
{ {
_flags = WIDGET_ENABLED | WIDGET_TRACK_MOUSE; _flags = WIDGET_ENABLED | WIDGET_TRACK_MOUSE;
_bgcolor = kDlgColor; _bgcolor = kDlgColor;
@ -656,9 +657,9 @@ SliderWidget::SliderWidget(GuiObject* boss, const GUI::Font& font,
SliderWidget::SliderWidget(GuiObject* boss, const GUI::Font& font, SliderWidget::SliderWidget(GuiObject* boss, const GUI::Font& font,
int x, int y, int x, int y,
const string& label, int labelWidth, int cmd, const string& label, int labelWidth, int cmd,
int valueLabelWidth, int valueLabelGap) int valueLabelWidth, const string& valueUnit, int valueLabelGap)
: SliderWidget(boss, font, x, y, font.getMaxCharWidth() * 10, font.getLineHeight(), : SliderWidget(boss, font, x, y, font.getMaxCharWidth() * 10, font.getLineHeight(),
label, labelWidth, cmd, valueLabelWidth, valueLabelGap) label, labelWidth, cmd, valueLabelWidth, valueUnit, valueLabelGap)
{ {
} }
@ -700,7 +701,6 @@ void SliderWidget::setStepValue(int value)
void SliderWidget::setValueLabel(const string& valueLabel) void SliderWidget::setValueLabel(const string& valueLabel)
{ {
_valueLabel = valueLabel; _valueLabel = valueLabel;
setDirty(); setDirty();
} }
@ -714,6 +714,13 @@ void SliderWidget::setValueLabel(int value)
setDirty(); setDirty();
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void SliderWidget::setValueUnit(const string& valueUnit)
{
_valueUnit = valueUnit;
setDirty();
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void SliderWidget::handleMouseMoved(int x, int y) void SliderWidget::handleMouseMoved(int x, int y)
{ {
@ -805,7 +812,7 @@ void SliderWidget::drawWidget(bool hilite)
// Fill the box // Fill the box
s.fillRect(x, y, _w - _labelWidth - _valueLabelGap - _valueLabelWidth, h, s.fillRect(x, y, _w - _labelWidth - _valueLabelGap - _valueLabelWidth, h,
!isEnabled() ? kBGColorHi : kBGColorLo); !isEnabled() ? kSliderBGColorLo : hilite ? kSliderBGColorHi : kSliderBGColor);
// Draw the 'bar' // Draw the 'bar'
s.fillRect(x, y, p, h, s.fillRect(x, y, p, h,
!isEnabled() ? kColor : hilite ? kSliderColorHi : kSliderColor); !isEnabled() ? kColor : hilite ? kSliderColorHi : kSliderColor);
@ -814,7 +821,7 @@ void SliderWidget::drawWidget(bool hilite)
!isEnabled() ? kColor : hilite ? kSliderColorHi : kSliderColor); !isEnabled() ? kColor : hilite ? kSliderColorHi : kSliderColor);
if(_valueLabelWidth > 0) if(_valueLabelWidth > 0)
s.drawString(_font, _valueLabel, _x + _w - _valueLabelWidth, _y + 2, s.drawString(_font, _valueLabel + _valueUnit, _x + _w - _valueLabelWidth, _y + 2,
_valueLabelWidth, isEnabled() ? kTextColor : kColor); _valueLabelWidth, isEnabled() ? kTextColor : kColor);
} }

View File

@ -308,11 +308,11 @@ class SliderWidget : public ButtonWidget
SliderWidget(GuiObject* boss, const GUI::Font& font, SliderWidget(GuiObject* boss, const GUI::Font& font,
int x, int y, int w, int h, int x, int y, int w, int h,
const string& label = "", int labelWidth = 0, int cmd = 0, const string& label = "", int labelWidth = 0, int cmd = 0,
int valueLabelWidth = 0, int valueLabelGap = 4); int valueLabelWidth = 0, const string& valueUnit = "", int valueLabelGap = 4);
SliderWidget(GuiObject* boss, const GUI::Font& font, SliderWidget(GuiObject* boss, const GUI::Font& font,
int x, int y, int x, int y,
const string& label = "", int labelWidth = 0, int cmd = 0, const string& label = "", int labelWidth = 0, int cmd = 0,
int valueLabelWidth = 0, int valueLabelGap = 4); int valueLabelWidth = 0, const string& valueUnit = "", int valueLabelGap = 4);
void setValue(int value); void setValue(int value);
int getValue() const { return _value; } int getValue() const { return _value; }
@ -326,6 +326,7 @@ class SliderWidget : public ButtonWidget
void setValueLabel(const string& valueLabel); void setValueLabel(const string& valueLabel);
void setValueLabel(int value); void setValueLabel(int value);
const string& getValueLabel() const { return _valueLabel; } const string& getValueLabel() const { return _valueLabel; }
void setValueUnit(const string& valueUnit);
protected: protected:
void handleMouseMoved(int x, int y) override; void handleMouseMoved(int x, int y) override;
@ -345,6 +346,7 @@ class SliderWidget : public ButtonWidget
bool _isDragging; bool _isDragging;
int _labelWidth; int _labelWidth;
string _valueLabel; string _valueLabel;
string _valueUnit;
int _valueLabelWidth; int _valueLabelWidth;
int _valueLabelGap; int _valueLabelGap;