GUI refactoring and improvements
This commit is contained in:
parent
01fa60c141
commit
850399d5c8
13 changed files with 424 additions and 331 deletions
|
@ -7065,7 +7065,7 @@ void inputdevice_default_prefs (struct uae_prefs *p)
|
|||
p->input_analog_joystick_mult = 15;
|
||||
p->input_analog_joystick_offset = -1;
|
||||
p->input_mouse_speed = amiberry_options.input_default_mouse_speed;
|
||||
p->input_autofire_linecnt = 0; //8 * 312; // Disable Autofire by default
|
||||
p->input_autofire_linecnt = 600;
|
||||
p->input_keyboard_type = 0;
|
||||
p->input_autoswitch = true;
|
||||
p->input_device_match_mask = -1;
|
||||
|
|
|
@ -387,21 +387,6 @@ static void gui_to_prefs(void)
|
|||
|
||||
static void after_leave_gui()
|
||||
{
|
||||
// Check if we have to set or clear autofire
|
||||
const auto new_af = changed_prefs.input_autofire_linecnt == 0 ? 0 : 1;
|
||||
auto update = 0;
|
||||
|
||||
for (auto num = 0; num < 2; ++num)
|
||||
{
|
||||
if (changed_prefs.jports[num].id < JSEM_MICE && changed_prefs.jports[num].autofire != new_af)
|
||||
{
|
||||
changed_prefs.jports[num].autofire = new_af;
|
||||
update = 1;
|
||||
}
|
||||
}
|
||||
if (update)
|
||||
inputdevice_updateconfig(nullptr, &changed_prefs);
|
||||
|
||||
inputdevice_copyconfig(&changed_prefs, &currprefs);
|
||||
inputdevice_config_change_test();
|
||||
}
|
||||
|
|
|
@ -222,32 +222,35 @@ static NavigationMap navMap[] =
|
|||
|
||||
// active move left move right move up move down
|
||||
//PanelSound
|
||||
{"sndDisable", "Sound", "Mono", "sldPaulaVol", "sndDisEmu"},
|
||||
{"sndDisEmu", "Sound", "Stereo", "sndDisable", "sndEmulate"},
|
||||
{"sndEmulate", "Sound", "Stereo", "sndDisEmu", "sndEmuBest"},
|
||||
{"sndEmuBest", "Sound", "Stereo", "sndEmulate", "cboFrequency"},
|
||||
{"Mono", "sndDisable", "Sound", "sldStereoDelay", "Stereo"},
|
||||
{"Stereo", "sndDisEmu", "Sound", "Mono", "cboFrequency"},
|
||||
{"cboFrequency", "Sound", "Sound", "sndEmuBest", "cboInterpol"},
|
||||
{"cboInterpol", "Sound", "Sound", "cboFrequency", "cboFilter"},
|
||||
{"cboFilter", "Sound", "Sound", "cboInterpol", "sldSeparation"},
|
||||
{"sldSeparation", "", "", "cboFilter", "sldStereoDelay"},
|
||||
{"sldStereoDelay", "", "", "sldSeparation", "sldPaulaVol"},
|
||||
{"sldPaulaVol", "", "", "sldStereoDelay", "sndDisable"},
|
||||
{"sndDisable", "Sound", "sldPaulaVol", "cboFrequency", "sndDisEmu"},
|
||||
{"sndDisEmu", "Sound", "sldPaulaVol", "sndDisable", "sndEmulate"},
|
||||
{"sndEmulate", "Sound", "sldPaulaVol", "sndDisEmu", "sndEmuBest"},
|
||||
{"sndEmuBest", "Sound", "sldPaulaVol", "sndEmulate", "cboChannelMode"},
|
||||
{"cboChannelMode", "Sound", "cboSeparation", "sndEmuBest", "cboFrequency"},
|
||||
{"cboFrequency", "Sound", "cboFilter", "cboChannelMode", "sndDisable"},
|
||||
{"cboInterpol", "cboSeparation", "Sound", "sldPaulaVol", "cboFilter"},
|
||||
{"cboFilter", "Sound", "Sound", "cboInterpol", "sldPaulaVol"},
|
||||
{"cboSeparation", "cboChannelMode", "cboInterpol", "sndEmuBest", "cboStereoDelay"},
|
||||
{"cboStereoDelay", "cboFrequency", "cboFilter", "cboSeparation", "sldPaulaVol"},
|
||||
{"sldPaulaVol", "", "", "cboStereoDelay", "cboInterpol"},
|
||||
|
||||
// active move left move right move up move down
|
||||
// PanelInput
|
||||
{"cboPort0", "Input", "cboPort0mode", "cboAutofire", "cboPort1"},
|
||||
{"cboPort0mode", "cboPort0", "Input", "cboTapDelay", "cboPort1mode"},
|
||||
{"cboPort1", "Input", "cboPort1mode", "cboPort0", "cboPort2"},
|
||||
{"cboPort1mode", "cboPort1", "Input", "cboPort0mode", "cboPort2"},
|
||||
{"cboPort2", "Input", "cboPort2mode", "cboPort1", "cboPort3"},
|
||||
{"cboPort3", "Input", "cboPort3mode", "cboPort2", "cboPort0mousemode"},
|
||||
{"cboPort0mousemode", "Input", "MouseSpeed", "cboPort3", "cboPort1mousemode"},
|
||||
{"cboPort1mousemode", "Input", "MouseSpeed", "cboPort0mousemode", "cboAutofire"},
|
||||
{"cboPort0", "Input", "Input", "cboAutofireRate", "cboPort0Autofire"},
|
||||
{"cboPort0Autofire", "Input", "cboPort0mode", "cboPort0", "cboPort1"},
|
||||
{"cboPort0mode", "cboPort0Autofire", "Input", "cboPort0", "cboPort1"},
|
||||
{"cboPort1", "Input", "Input", "cboPort0Autofire", "cboPort1Autofire"},
|
||||
{"cboPort1Autofire", "Input", "cboPort1mode", "cboPort1", "cboPort2"},
|
||||
{"cboPort1mode", "cboPort1Autofire", "Input", "cboPort1", "cboPort2"},
|
||||
{"cboPort2", "Input", "Input", "cboPort1Autofire", "cboPort2Autofire"},
|
||||
{"cboPort2Autofire", "Input", "Input", "cboPort2", "cboPort3"},
|
||||
{"cboPort3", "Input", "Input", "cboPort2Autofire", "cboPort3Autofire"},
|
||||
{"cboPort3Autofire", "Input", "Input", "cboPort3", "cboPort0mousemode"},
|
||||
{"cboPort0mousemode", "Input", "MouseSpeed", "cboPort3Autofire", "cboPort1mousemode"},
|
||||
{"cboPort1mousemode", "Input", "MouseSpeed", "cboPort0mousemode", "cboAutofireRate"},
|
||||
{"MouseSpeed", "", "", "cboPort3", "MouseHack"},
|
||||
{"MouseHack", "cboAutofire", "cboAutofire", "MouseSpeed", "cboPort0"},
|
||||
{"cboAutofire", "Input", "MouseHack", "cboPort1mousemode", "cboPort0"},
|
||||
{"MouseHack", "cboAutofireRate", "cboAutofireRate", "MouseSpeed", "cboPort0"},
|
||||
{"cboAutofireRate", "Input", "MouseHack", "cboPort1mousemode", "cboPort0"},
|
||||
|
||||
// PanelCustom
|
||||
{"0: Mouse", "Custom controls", "1: Joystick", "chkAnalogRemap", "None"},
|
||||
|
|
|
@ -274,16 +274,16 @@ void InitPanelCPU(const struct _ConfigCategory& category)
|
|||
|
||||
grpCPU = new gcn::Window("CPU");
|
||||
grpCPU->setPosition(DISTANCE_BORDER, DISTANCE_BORDER);
|
||||
grpCPU->add(optCPU68000, 5, 10);
|
||||
grpCPU->add(optCPU68010, 5, 40);
|
||||
grpCPU->add(optCPU68020, 5, 70);
|
||||
grpCPU->add(optCPU68030, 5, 100);
|
||||
grpCPU->add(optCPU68040, 5, 130);
|
||||
grpCPU->add(chk24Bit, 5, 170);
|
||||
grpCPU->add(chkCPUCompatible, 5, 200);
|
||||
grpCPU->add(chkJIT, 5, 230);
|
||||
grpCPU->add(optCPU68000, 10, 10);
|
||||
grpCPU->add(optCPU68010, 10, 40);
|
||||
grpCPU->add(optCPU68020, 10, 70);
|
||||
grpCPU->add(optCPU68030, 10, 100);
|
||||
grpCPU->add(optCPU68040, 10, 130);
|
||||
grpCPU->add(chk24Bit, 10, 170);
|
||||
grpCPU->add(chkCPUCompatible, 10, 200);
|
||||
grpCPU->add(chkJIT, 10, 230);
|
||||
grpCPU->setMovable(false);
|
||||
grpCPU->setSize(175, 285);
|
||||
grpCPU->setSize(chk24Bit->getWidth() + 20, 285);
|
||||
grpCPU->setTitleBarHeight(TITLEBAR_HEIGHT);
|
||||
grpCPU->setBaseColor(gui_baseCol);
|
||||
|
||||
|
@ -317,14 +317,14 @@ void InitPanelCPU(const struct _ConfigCategory& category)
|
|||
|
||||
grpFPU = new gcn::Window("FPU");
|
||||
grpFPU->setPosition(DISTANCE_BORDER + grpCPU->getWidth() + DISTANCE_NEXT_X, DISTANCE_BORDER);
|
||||
grpFPU->add(optFPUnone, 5, 10);
|
||||
grpFPU->add(optFPU68881, 5, 40);
|
||||
grpFPU->add(optFPU68882, 5, 70);
|
||||
grpFPU->add(optFPUinternal, 5, 100);
|
||||
grpFPU->add(chkFPUstrict, 5, 140);
|
||||
grpFPU->add(chkFPUJIT, 5, 170);
|
||||
grpFPU->add(optFPUnone, 10, 10);
|
||||
grpFPU->add(optFPU68881, 10, 40);
|
||||
grpFPU->add(optFPU68882, 10, 70);
|
||||
grpFPU->add(optFPUinternal, 10, 100);
|
||||
grpFPU->add(chkFPUstrict, 10, 140);
|
||||
grpFPU->add(chkFPUJIT, 10, 170);
|
||||
grpFPU->setMovable(false);
|
||||
grpFPU->setSize(185, 225);
|
||||
grpFPU->setSize(175, 225);
|
||||
grpFPU->setTitleBarHeight(TITLEBAR_HEIGHT);
|
||||
grpFPU->setBaseColor(gui_baseCol);
|
||||
|
||||
|
@ -359,14 +359,14 @@ void InitPanelCPU(const struct _ConfigCategory& category)
|
|||
|
||||
grpCPUSpeed = new gcn::Window("CPU Speed");
|
||||
grpCPUSpeed->setPosition(grpFPU->getX() + grpFPU->getWidth() + DISTANCE_NEXT_X, DISTANCE_BORDER);
|
||||
grpCPUSpeed->add(opt7Mhz, 5, 10);
|
||||
grpCPUSpeed->add(opt14Mhz, 5, 40);
|
||||
grpCPUSpeed->add(opt25Mhz, 5, 70);
|
||||
grpCPUSpeed->add(optFastest, 5, 100);
|
||||
grpCPUSpeed->add(lblCpuIdle, 5, 170);
|
||||
grpCPUSpeed->add(sldCpuIdle, lblCpuIdle->getWidth() + 10, 170);
|
||||
grpCPUSpeed->add(opt7Mhz, 10, 10);
|
||||
grpCPUSpeed->add(opt14Mhz, 10, 40);
|
||||
grpCPUSpeed->add(opt25Mhz, 10, 70);
|
||||
grpCPUSpeed->add(optFastest, 10, 100);
|
||||
grpCPUSpeed->add(lblCpuIdle, 10, 160);
|
||||
grpCPUSpeed->add(sldCpuIdle, lblCpuIdle->getWidth() + 20, 160);
|
||||
grpCPUSpeed->setMovable(false);
|
||||
grpCPUSpeed->setSize(180, 250);
|
||||
grpCPUSpeed->setSize(175, 225);
|
||||
grpCPUSpeed->setTitleBarHeight(TITLEBAR_HEIGHT);
|
||||
grpCPUSpeed->setBaseColor(gui_baseCol);
|
||||
|
||||
|
|
|
@ -223,7 +223,7 @@ void InitPanelChipset(const struct _ConfigCategory& category)
|
|||
lblChipset = new gcn::Label("Extra:");
|
||||
lblChipset->setAlignment(gcn::Graphics::RIGHT);
|
||||
cboChipset = new gcn::DropDown(&chipsetList);
|
||||
cboChipset->setSize(75, cboChipset->getHeight());
|
||||
cboChipset->setSize(100, cboChipset->getHeight());
|
||||
cboChipset->setBaseColor(gui_baseCol);
|
||||
cboChipset->setBackgroundColor(colTextboxBackground);
|
||||
cboChipset->setId("ChipsetExtra");
|
||||
|
@ -231,16 +231,16 @@ void InitPanelChipset(const struct _ConfigCategory& category)
|
|||
|
||||
grpChipset = new gcn::Window("Chipset");
|
||||
grpChipset->setPosition(DISTANCE_BORDER, DISTANCE_BORDER);
|
||||
grpChipset->add(optOCS, 5, 10);
|
||||
grpChipset->add(optECSAgnus, 5, 40);
|
||||
grpChipset->add(optECS, 5, 70);
|
||||
grpChipset->add(optAGA, 5, 100);
|
||||
grpChipset->add(chkNTSC, 5, 140);
|
||||
grpChipset->add(optOCS, 10, 10);
|
||||
grpChipset->add(optECSAgnus, 10, 40);
|
||||
grpChipset->add(optECS, 10, 70);
|
||||
grpChipset->add(optAGA, 10, 100);
|
||||
grpChipset->add(chkNTSC, 10, 140);
|
||||
grpChipset->add(lblChipset, 145, 10);
|
||||
grpChipset->add(cboChipset, 145 + lblChipset->getWidth() + 8, 10);
|
||||
grpChipset->add(cboChipset, 145 + lblChipset->getWidth() + 10, 10);
|
||||
|
||||
grpChipset->setMovable(false);
|
||||
grpChipset->setSize(optOCS->getWidth() + 125 + lblChipset->getWidth() + cboChipset->getWidth(), 195);
|
||||
grpChipset->setSize(optOCS->getWidth() + 125 + lblChipset->getWidth() + cboChipset->getWidth(), 205);
|
||||
grpChipset->setTitleBarHeight(TITLEBAR_HEIGHT);
|
||||
grpChipset->setBaseColor(gui_baseCol);
|
||||
|
||||
|
@ -256,17 +256,17 @@ void InitPanelChipset(const struct _ConfigCategory& category)
|
|||
optBlitImmed->setId("Immediate");
|
||||
optBlitImmed->addActionListener(blitterButtonActionListener);
|
||||
|
||||
optBlitWait = new gcn::RadioButton("Wait for blit.", "radiocblittergroup");
|
||||
optBlitWait = new gcn::RadioButton("Wait for blitter", "radiocblittergroup");
|
||||
optBlitWait->setId("BlitWait");
|
||||
optBlitWait->addActionListener(blitterButtonActionListener);
|
||||
|
||||
grpBlitter = new gcn::Window("Blitter");
|
||||
grpBlitter->setPosition(DISTANCE_BORDER + grpChipset->getWidth() + DISTANCE_NEXT_X, DISTANCE_BORDER);
|
||||
grpBlitter->add(optBlitNormal, 5, 10);
|
||||
grpBlitter->add(optBlitImmed, 5, 40);
|
||||
grpBlitter->add(optBlitWait, 5, 70);
|
||||
grpBlitter->add(optBlitNormal, 10, 10);
|
||||
grpBlitter->add(optBlitImmed, 10, 40);
|
||||
grpBlitter->add(optBlitWait, 10, 70);
|
||||
grpBlitter->setMovable(false);
|
||||
grpBlitter->setSize(optBlitWait->getWidth() + DISTANCE_BORDER, 125);
|
||||
grpBlitter->setSize(optBlitWait->getWidth() + DISTANCE_BORDER + 10, 125);
|
||||
grpBlitter->setTitleBarHeight(TITLEBAR_HEIGHT);
|
||||
grpBlitter->setBaseColor(gui_baseCol);
|
||||
|
||||
|
@ -281,9 +281,9 @@ void InitPanelChipset(const struct _ConfigCategory& category)
|
|||
grpCopper = new gcn::Window("Copper");
|
||||
grpCopper->setPosition(DISTANCE_BORDER + grpChipset->getWidth() + DISTANCE_NEXT_X,
|
||||
grpBlitter->getY() + grpBlitter->getHeight() + DISTANCE_NEXT_Y);
|
||||
grpCopper->add(chkFastCopper, 5, 10);
|
||||
grpCopper->add(chkFastCopper, 10, 10);
|
||||
grpCopper->setMovable(false);
|
||||
grpCopper->setSize(chkFastCopper->getWidth() + DISTANCE_BORDER, 65);
|
||||
grpCopper->setSize(grpBlitter->getWidth(), 65);
|
||||
grpCopper->setTitleBarHeight(TITLEBAR_HEIGHT);
|
||||
grpCopper->setBaseColor(gui_baseCol);
|
||||
|
||||
|
@ -309,12 +309,12 @@ void InitPanelChipset(const struct _ConfigCategory& category)
|
|||
|
||||
grpCollisionLevel = new gcn::Window("Collision Level");
|
||||
grpCollisionLevel->setPosition(DISTANCE_BORDER, DISTANCE_BORDER + grpChipset->getHeight() + DISTANCE_NEXT_Y);
|
||||
grpCollisionLevel->add(optCollNone, 5, 10);
|
||||
grpCollisionLevel->add(optCollSprites, 5, 40);
|
||||
grpCollisionLevel->add(optCollPlayfield, 5, 70);
|
||||
grpCollisionLevel->add(optCollFull, 5, 100);
|
||||
grpCollisionLevel->add(optCollNone, 10, 10);
|
||||
grpCollisionLevel->add(optCollSprites, 10, 40);
|
||||
grpCollisionLevel->add(optCollPlayfield, 10, 70);
|
||||
grpCollisionLevel->add(optCollFull, 10, 100);
|
||||
grpCollisionLevel->setMovable(false);
|
||||
grpCollisionLevel->setSize(optCollPlayfield->getWidth() + DISTANCE_BORDER, 155);
|
||||
grpCollisionLevel->setSize(grpChipset->getWidth(), 165);
|
||||
grpCollisionLevel->setTitleBarHeight(TITLEBAR_HEIGHT);
|
||||
grpCollisionLevel->setBaseColor(gui_baseCol);
|
||||
|
||||
|
|
|
@ -377,23 +377,23 @@ void InitPanelCustom(const struct _ConfigCategory& category)
|
|||
|
||||
grpPort = new gcn::Window("Joystick Port");
|
||||
grpPort->setPosition(DISTANCE_BORDER, DISTANCE_BORDER);
|
||||
grpPort->add(optPort0, 10, 5);
|
||||
grpPort->add(optPort1, 150, 5);
|
||||
grpPort->add(optPort2, 290, 5);
|
||||
grpPort->add(optPort3, 430, 5);
|
||||
grpPort->setSize(580, 50);
|
||||
grpPort->add(optPort0, 10, 10);
|
||||
grpPort->add(optPort1, optPort0->getX() + optPort0->getWidth() + DISTANCE_NEXT_X, optPort0->getY());
|
||||
grpPort->add(optPort2, optPort1->getX() + optPort1->getWidth() + DISTANCE_NEXT_X, optPort0->getY());
|
||||
grpPort->add(optPort3, optPort2->getX() + optPort2->getWidth() + DISTANCE_NEXT_X, optPort0->getY());
|
||||
grpPort->setSize(category.panel->getWidth() - DISTANCE_BORDER * 2, TITLEBAR_HEIGHT + optPort0->getHeight() * 3);
|
||||
grpPort->setTitleBarHeight(TITLEBAR_HEIGHT);
|
||||
grpPort->setBaseColor(gui_baseCol);
|
||||
|
||||
category.panel->add(grpPort);
|
||||
|
||||
grpFunction = new gcn::Window("Function Key");
|
||||
grpFunction->setPosition(DISTANCE_BORDER, 75);
|
||||
grpFunction->add(optMultiNone, 10, 5);
|
||||
grpFunction->add(optMultiSelect, 150, 5);
|
||||
grpFunction->setPosition(DISTANCE_BORDER, grpPort->getY() + grpPort->getHeight() + DISTANCE_NEXT_Y);
|
||||
grpFunction->add(optMultiNone, 10, 10);
|
||||
grpFunction->add(optMultiSelect, optMultiNone->getX() + optMultiNone->getWidth() + DISTANCE_NEXT_X, optMultiNone->getY());
|
||||
// grpFunction->add(optMultiLeft, 290, 5);
|
||||
// grpFunction->add(optMultiRight, 430, 5);
|
||||
grpFunction->setSize(580, 50);
|
||||
grpFunction->setSize(grpPort->getWidth(), grpPort->getHeight());
|
||||
grpFunction->setTitleBarHeight(TITLEBAR_HEIGHT);
|
||||
grpFunction->setBaseColor(gui_baseCol);
|
||||
|
||||
|
@ -446,7 +446,12 @@ void InitPanelCustom(const struct _ConfigCategory& category)
|
|||
cboCustomAction[i]->addActionListener(customActionListener);
|
||||
}
|
||||
|
||||
auto posY = 144 + 40;
|
||||
auto posY = grpFunction->getY() + grpFunction->getHeight() + DISTANCE_NEXT_Y;
|
||||
category.panel->add(lblPortInput, DISTANCE_BORDER, posY);
|
||||
category.panel->add(txtPortInput, lblPortInput->getX() + lblPortInput->getWidth() + DISTANCE_NEXT_X, posY);
|
||||
category.panel->add(lblRetroarch, txtPortInput->getX() + txtPortInput->getWidth() + DISTANCE_NEXT_X, posY);
|
||||
posY = txtPortInput->getY() + txtPortInput->getHeight() + DISTANCE_NEXT_Y * 2;
|
||||
|
||||
for (i = 0; i < 7; ++i)
|
||||
{
|
||||
category.panel->add(lblCustomAction[i], DISTANCE_BORDER / 2, posY);
|
||||
|
@ -454,7 +459,7 @@ void InitPanelCustom(const struct _ConfigCategory& category)
|
|||
posY = posY + DROPDOWN_HEIGHT + 6;
|
||||
}
|
||||
|
||||
posY = 144 + 40;
|
||||
posY = txtPortInput->getY() + txtPortInput->getHeight() + DISTANCE_NEXT_Y * 2;
|
||||
for (i = 7; i < 14; ++i)
|
||||
{
|
||||
category.panel->add(lblCustomAction[i], DISTANCE_BORDER + 290, posY);
|
||||
|
@ -465,10 +470,6 @@ void InitPanelCustom(const struct _ConfigCategory& category)
|
|||
category.panel->add(chkAnalogRemap, DISTANCE_BORDER + lblCustomAction[0]->getWidth(), posY);
|
||||
posY += chkAnalogRemap->getHeight() + DISTANCE_NEXT_Y;
|
||||
|
||||
category.panel->add(lblPortInput, DISTANCE_BORDER, 144);
|
||||
category.panel->add(txtPortInput, lblPortInput->getX() + lblPortInput->getWidth() + DISTANCE_NEXT_X, 144);
|
||||
category.panel->add(lblRetroarch, txtPortInput->getX() + txtPortInput->getWidth() + DISTANCE_NEXT_X, 144);
|
||||
|
||||
// optMultiLeft->setEnabled(false);
|
||||
// optMultiRight->setEnabled(false);
|
||||
|
||||
|
|
|
@ -229,7 +229,7 @@ void InitPanelDisplay(const struct _ConfigCategory& category)
|
|||
lblScreenmode = new gcn::Label("Screen mode:");
|
||||
lblScreenmode->setAlignment(gcn::Graphics::RIGHT);
|
||||
cboScreenmode = new gcn::DropDown(&fullscreen_modes_list);
|
||||
cboScreenmode->setSize(100, cboScreenmode->getHeight());
|
||||
cboScreenmode->setSize(125, cboScreenmode->getHeight());
|
||||
cboScreenmode->setBaseColor(gui_baseCol);
|
||||
cboScreenmode->setBackgroundColor(colTextboxBackground);
|
||||
cboScreenmode->setId("cboScreenmode");
|
||||
|
@ -290,7 +290,7 @@ void InitPanelDisplay(const struct _ConfigCategory& category)
|
|||
grpScalingMethod->add(optNearest, 5, 40);
|
||||
grpScalingMethod->add(optLinear, 5, 70);
|
||||
grpScalingMethod->setMovable(false);
|
||||
grpScalingMethod->setSize(optNearest->getWidth() + DISTANCE_BORDER,
|
||||
grpScalingMethod->setSize(grpAmigaScreen->getWidth(),
|
||||
optLinear->getY() + optLinear->getHeight() + DISTANCE_BORDER * 3);
|
||||
grpScalingMethod->setTitleBarHeight(TITLEBAR_HEIGHT);
|
||||
grpScalingMethod->setBaseColor(gui_baseCol);
|
||||
|
@ -319,7 +319,7 @@ void InitPanelDisplay(const struct _ConfigCategory& category)
|
|||
grpLineMode->add(optDouble, 5, 40);
|
||||
grpLineMode->add(optScanlines, 5, 70);
|
||||
grpLineMode->setMovable(false);
|
||||
grpLineMode->setSize(optScanlines->getWidth() + DISTANCE_BORDER,
|
||||
grpLineMode->setSize(grpCentering->getWidth(),
|
||||
optScanlines->getY() + optScanlines->getHeight() + DISTANCE_BORDER * 3);
|
||||
grpLineMode->setTitleBarHeight(TITLEBAR_HEIGHT);
|
||||
grpLineMode->setBaseColor(gui_baseCol);
|
||||
|
|
|
@ -371,7 +371,7 @@ void InitPanelFloppy(const struct _ConfigCategory& category)
|
|||
int posX;
|
||||
auto posY = DISTANCE_BORDER;
|
||||
int i;
|
||||
const auto textFieldWidth = category.panel->getWidth() - 2 * DISTANCE_BORDER - SMALL_BUTTON_WIDTH - DISTANCE_NEXT_X;
|
||||
const auto textFieldWidth = category.panel->getWidth() - 2 * DISTANCE_BORDER;
|
||||
|
||||
dfxCheckActionListener = new DFxCheckActionListener();
|
||||
driveTypeActionListener = new DriveTypeActionListener();
|
||||
|
@ -447,19 +447,19 @@ void InitPanelFloppy(const struct _ConfigCategory& category)
|
|||
lblDriveSpeedInfo = new gcn::Label(drive_speed_list[1]);
|
||||
|
||||
cmdSaveForDisk = new gcn::Button("Save config for disk");
|
||||
cmdSaveForDisk->setSize(cmdSaveForDisk->getWidth(), BUTTON_HEIGHT);
|
||||
cmdSaveForDisk->setSize(cmdSaveForDisk->getWidth() + 10, BUTTON_HEIGHT);
|
||||
cmdSaveForDisk->setBaseColor(gui_baseCol);
|
||||
cmdSaveForDisk->setId("SaveForDisk");
|
||||
cmdSaveForDisk->addActionListener(saveForDiskActionListener);
|
||||
|
||||
cmdCreateDDDisk = new gcn::Button("Create 3.5'' DD disk");
|
||||
cmdCreateDDDisk->setSize(cmdCreateDDDisk->getWidth(), BUTTON_HEIGHT);
|
||||
cmdCreateDDDisk->setSize(cmdCreateDDDisk->getWidth() + 10, BUTTON_HEIGHT);
|
||||
cmdCreateDDDisk->setBaseColor(gui_baseCol);
|
||||
cmdCreateDDDisk->setId("CreateDD");
|
||||
cmdCreateDDDisk->addActionListener(createDiskActionListener);
|
||||
|
||||
cmdCreateHDDisk = new gcn::Button("Create 3.5'' HD disk");
|
||||
cmdCreateHDDisk->setSize(cmdCreateHDDisk->getWidth(), BUTTON_HEIGHT);
|
||||
cmdCreateHDDisk->setSize(cmdCreateHDDisk->getWidth() + 10, BUTTON_HEIGHT);
|
||||
cmdCreateHDDisk->setBaseColor(gui_baseCol);
|
||||
cmdCreateHDDisk->setId("CreateHD");
|
||||
cmdCreateHDDisk->addActionListener(createDiskActionListener);
|
||||
|
@ -468,11 +468,11 @@ void InitPanelFloppy(const struct _ConfigCategory& category)
|
|||
{
|
||||
posX = DISTANCE_BORDER;
|
||||
category.panel->add(chkDFx[i], posX, posY);
|
||||
posX += 80;
|
||||
posX += chkDFx[i]->getWidth() + DISTANCE_NEXT_X * 2;
|
||||
category.panel->add(cboDFxType[i], posX, posY);
|
||||
posX += cboDFxType[i]->getWidth() + 2 * DISTANCE_NEXT_X;
|
||||
posX += cboDFxType[i]->getWidth() + DISTANCE_NEXT_X * 2;
|
||||
category.panel->add(chkDFxWriteProtect[i], posX, posY);
|
||||
posX += chkDFxWriteProtect[i]->getWidth() + 4 * DISTANCE_NEXT_X;
|
||||
posX += 3 + chkDFxWriteProtect[i]->getWidth() + 7 * DISTANCE_NEXT_X;
|
||||
//category.panel->add(cmdDFxInfo[i], posX, posY); //TODO disabled?
|
||||
//posX += cmdDFxInfo[i]->getWidth() + DISTANCE_NEXT_X;
|
||||
category.panel->add(cmdDFxEject[i], posX, posY);
|
||||
|
|
|
@ -398,19 +398,19 @@ void InitPanelHD(const struct _ConfigCategory& category)
|
|||
|
||||
cmdAddDirectory = new gcn::Button("Add Directory");
|
||||
cmdAddDirectory->setBaseColor(gui_baseCol);
|
||||
cmdAddDirectory->setSize(cmdAddDirectory->getWidth(), BUTTON_HEIGHT);
|
||||
cmdAddDirectory->setSize(cmdAddDirectory->getWidth() + 10, BUTTON_HEIGHT);
|
||||
cmdAddDirectory->setId("cmdAddDir");
|
||||
cmdAddDirectory->addActionListener(addVirtualHDActionListener);
|
||||
|
||||
cmdAddHardfile = new gcn::Button("Add Hardfile");
|
||||
cmdAddHardfile->setBaseColor(gui_baseCol);
|
||||
cmdAddHardfile->setSize(cmdAddHardfile->getWidth(), BUTTON_HEIGHT);
|
||||
cmdAddHardfile->setSize(cmdAddHardfile->getWidth() + 10, BUTTON_HEIGHT);
|
||||
cmdAddHardfile->setId("cmdAddHDF");
|
||||
cmdAddHardfile->addActionListener(addHardfileActionListener);
|
||||
|
||||
cmdCreateHardfile = new gcn::Button("Create Hardfile");
|
||||
cmdCreateHardfile->setBaseColor(gui_baseCol);
|
||||
cmdCreateHardfile->setSize(cmdCreateHardfile->getWidth(), BUTTON_HEIGHT);
|
||||
cmdCreateHardfile->setSize(cmdCreateHardfile->getWidth() + 10, BUTTON_HEIGHT);
|
||||
cmdCreateHardfile->setId("cmdCreateHDF");
|
||||
cmdCreateHardfile->addActionListener(createHardfileActionListener);
|
||||
|
||||
|
@ -492,7 +492,7 @@ void InitPanelHD(const struct _ConfigCategory& category)
|
|||
posY += cmdAddDirectory->getHeight() + DISTANCE_NEXT_Y;
|
||||
|
||||
category.panel->add(chkHDReadOnly, DISTANCE_BORDER, posY);
|
||||
category.panel->add(chkScsi, cmdCreateHardfile->getX() + cmdCreateHardfile->getWidth(), posY);
|
||||
category.panel->add(chkScsi, chkHDReadOnly->getX() + chkHDReadOnly->getWidth() + DISTANCE_NEXT_X * 3, posY);
|
||||
posY += chkHDReadOnly->getHeight() + DISTANCE_NEXT_Y;
|
||||
|
||||
category.panel->add(chkCD, DISTANCE_BORDER, posY + 2);
|
||||
|
|
|
@ -23,6 +23,11 @@ static gcn::DropDown* cboPort0;
|
|||
static gcn::Label* lblPort1;
|
||||
static gcn::DropDown* cboPort1;
|
||||
|
||||
static gcn::DropDown* cboPort0Autofire;
|
||||
static gcn::DropDown* cboPort1Autofire;
|
||||
static gcn::DropDown* cboPort2Autofire;
|
||||
static gcn::DropDown* cboPort3Autofire;
|
||||
|
||||
static gcn::DropDown* cboPort0mode;
|
||||
static gcn::DropDown* cboPort1mode;
|
||||
|
||||
|
@ -31,16 +36,14 @@ static gcn::DropDown* cboPort0mousemode;
|
|||
static gcn::Label* lblPort1mousemode;
|
||||
static gcn::DropDown* cboPort1mousemode;
|
||||
|
||||
static gcn::Label* lblParallelPortAdapter;
|
||||
static gcn::Label* lblPort2;
|
||||
static gcn::DropDown* cboPort2;
|
||||
static gcn::Label* lblPort3;
|
||||
static gcn::DropDown* cboPort3;
|
||||
|
||||
static gcn::DropDown* cboPort2mode;
|
||||
static gcn::DropDown* cboPort3mode;
|
||||
|
||||
static gcn::Label* lblAutofire;
|
||||
static gcn::DropDown* cboAutofire;
|
||||
static gcn::Label* lblAutofireRate;
|
||||
static gcn::DropDown* cboAutofireRate;
|
||||
static gcn::Label* lblMouseSpeed;
|
||||
static gcn::Label* lblMouseSpeedInfo;
|
||||
static gcn::Slider* sldMouseSpeed;
|
||||
|
@ -79,14 +82,17 @@ public:
|
|||
static StringListModel ctrlPortList(nullptr, 0);
|
||||
static int portListIDs[MAX_INPUT_DEVICES];
|
||||
|
||||
const char* autofireValues[] = {"Off", "Slow", "Medium", "Fast"};
|
||||
StringListModel autofireList(autofireValues, 4);
|
||||
const char* autoFireValues[] = { "No autofire", "Autofire", "Autofire (toggle)", "Autofire (always)" };
|
||||
StringListModel autoFireList(autoFireValues, 4);
|
||||
|
||||
const char* mousemapValues[] = {"None", "Left", "Right", "Both"};
|
||||
const char* autoFireRateValues[] = { "Off", "Slow", "Medium", "Fast" };
|
||||
StringListModel autoFireRateList(autoFireRateValues, 4);
|
||||
|
||||
const char* mousemapValues[] = { "None", "Left", "Right", "Both" };
|
||||
StringListModel ctrlPortMouseModeList(mousemapValues, 4);
|
||||
|
||||
const char* joyportmodes[] = {"Mouse", "Joystick", "CD32", "Default"};
|
||||
StringListModel ctrlPortModeList(joyportmodes, 4);
|
||||
const char* joyportmodes[] = { "Default", "Wheel Mouse", "Mouse", "Joystick", "Gamepad", "Analog Joystick", "CDTV remote mouse", "CD32 pad"};
|
||||
StringListModel ctrlPortModeList(joyportmodes, 8);
|
||||
|
||||
class InputActionListener : public gcn::ActionListener
|
||||
{
|
||||
|
@ -175,32 +181,25 @@ public:
|
|||
set_port(sel, current_port);
|
||||
}
|
||||
|
||||
else if (actionEvent.getSource() == cboPort0Autofire)
|
||||
changed_prefs.jports[0].autofire = cboPort0Autofire->getSelected();
|
||||
else if (actionEvent.getSource() == cboPort1Autofire)
|
||||
changed_prefs.jports[1].autofire = cboPort1Autofire->getSelected();
|
||||
else if (actionEvent.getSource() == cboPort2Autofire)
|
||||
changed_prefs.jports[2].autofire = cboPort2Autofire->getSelected();
|
||||
else if (actionEvent.getSource() == cboPort3Autofire)
|
||||
changed_prefs.jports[3].autofire = cboPort3Autofire->getSelected();
|
||||
|
||||
else if (actionEvent.getSource() == cboPort0mode)
|
||||
{
|
||||
if (cboPort0mode->getSelected() == 0)
|
||||
changed_prefs.jports[0].mode = JSEM_MODE_MOUSE;
|
||||
else if (cboPort0mode->getSelected() == 1)
|
||||
changed_prefs.jports[0].mode = JSEM_MODE_JOYSTICK;
|
||||
else if (cboPort0mode->getSelected() == 2)
|
||||
changed_prefs.jports[0].mode = JSEM_MODE_JOYSTICK_CD32;
|
||||
else
|
||||
changed_prefs.jports[0].mode = JSEM_MODE_DEFAULT;
|
||||
|
||||
changed_prefs.jports[0].mode = cboPort0mode->getSelected();
|
||||
inputdevice_updateconfig(nullptr, &changed_prefs);
|
||||
RefreshPanelInput();
|
||||
RefreshPanelCustom();
|
||||
}
|
||||
else if (actionEvent.getSource() == cboPort1mode)
|
||||
{
|
||||
if (cboPort1mode->getSelected() == 0)
|
||||
changed_prefs.jports[1].mode = JSEM_MODE_MOUSE;
|
||||
else if (cboPort1mode->getSelected() == 1)
|
||||
changed_prefs.jports[1].mode = JSEM_MODE_JOYSTICK;
|
||||
else if (cboPort1mode->getSelected() == 2)
|
||||
changed_prefs.jports[1].mode = JSEM_MODE_JOYSTICK_CD32;
|
||||
else
|
||||
changed_prefs.jports[1].mode = JSEM_MODE_DEFAULT;
|
||||
|
||||
changed_prefs.jports[1].mode = cboPort1mode->getSelected();
|
||||
inputdevice_updateconfig(nullptr, &changed_prefs);
|
||||
RefreshPanelInput();
|
||||
RefreshPanelCustom();
|
||||
|
@ -218,13 +217,13 @@ public:
|
|||
inputdevice_updateconfig(nullptr, &changed_prefs);
|
||||
}
|
||||
|
||||
else if (actionEvent.getSource() == cboAutofire)
|
||||
else if (actionEvent.getSource() == cboAutofireRate)
|
||||
{
|
||||
if (cboAutofire->getSelected() == 0)
|
||||
if (cboAutofireRate->getSelected() == 0)
|
||||
changed_prefs.input_autofire_linecnt = 0;
|
||||
else if (cboAutofire->getSelected() == 1)
|
||||
else if (cboAutofireRate->getSelected() == 1)
|
||||
changed_prefs.input_autofire_linecnt = 12 * 312;
|
||||
else if (cboAutofire->getSelected() == 2)
|
||||
else if (cboAutofireRate->getSelected() == 2)
|
||||
changed_prefs.input_autofire_linecnt = 8 * 312;
|
||||
else
|
||||
changed_prefs.input_autofire_linecnt = 4 * 312;
|
||||
|
@ -283,18 +282,45 @@ void InitPanelInput(const struct _ConfigCategory& category)
|
|||
}
|
||||
|
||||
inputActionListener = new InputActionListener();
|
||||
const auto textFieldWidth = category.panel->getWidth() - (2 * DISTANCE_BORDER - SMALL_BUTTON_WIDTH - DISTANCE_NEXT_X
|
||||
);
|
||||
const auto textFieldWidth = category.panel->getWidth() - 2 * DISTANCE_BORDER - 60;
|
||||
|
||||
lblPort0 = new gcn::Label("Port 0 [Mouse]:");
|
||||
lblPort0 = new gcn::Label("Port 0:");
|
||||
lblPort0->setAlignment(gcn::Graphics::RIGHT);
|
||||
cboPort0 = new gcn::DropDown(&ctrlPortList);
|
||||
cboPort0->setSize(textFieldWidth / 2, cboPort0->getHeight());
|
||||
cboPort0->setSize(textFieldWidth, cboPort0->getHeight());
|
||||
cboPort0->setBaseColor(gui_baseCol);
|
||||
cboPort0->setBackgroundColor(colTextboxBackground);
|
||||
cboPort0->setId("cboPort0");
|
||||
cboPort0->addActionListener(inputActionListener);
|
||||
|
||||
cboPort0Autofire = new gcn::DropDown(&autoFireList);
|
||||
cboPort0Autofire->setSize(150, cboPort0Autofire->getHeight());
|
||||
cboPort0Autofire->setBaseColor(gui_baseCol);
|
||||
cboPort0Autofire->setBackgroundColor(colTextboxBackground);
|
||||
cboPort0Autofire->setId("cboPort0Autofire");
|
||||
cboPort0Autofire->addActionListener(inputActionListener);
|
||||
|
||||
cboPort1Autofire = new gcn::DropDown(&autoFireList);
|
||||
cboPort1Autofire->setSize(150, cboPort1Autofire->getHeight());
|
||||
cboPort1Autofire->setBaseColor(gui_baseCol);
|
||||
cboPort1Autofire->setBackgroundColor(colTextboxBackground);
|
||||
cboPort1Autofire->setId("cboPort1Autofire");
|
||||
cboPort1Autofire->addActionListener(inputActionListener);
|
||||
|
||||
cboPort2Autofire = new gcn::DropDown(&autoFireList);
|
||||
cboPort2Autofire->setSize(150, cboPort2Autofire->getHeight());
|
||||
cboPort2Autofire->setBaseColor(gui_baseCol);
|
||||
cboPort2Autofire->setBackgroundColor(colTextboxBackground);
|
||||
cboPort2Autofire->setId("cboPort2Autofire");
|
||||
cboPort2Autofire->addActionListener(inputActionListener);
|
||||
|
||||
cboPort3Autofire = new gcn::DropDown(&autoFireList);
|
||||
cboPort3Autofire->setSize(150, cboPort3Autofire->getHeight());
|
||||
cboPort3Autofire->setBaseColor(gui_baseCol);
|
||||
cboPort3Autofire->setBackgroundColor(colTextboxBackground);
|
||||
cboPort3Autofire->setId("cboPort3Autofire");
|
||||
cboPort3Autofire->addActionListener(inputActionListener);
|
||||
|
||||
cboPort0mode = new gcn::DropDown(&ctrlPortModeList);
|
||||
cboPort0mode->setSize(cboPort0mode->getWidth(), cboPort0mode->getHeight());
|
||||
cboPort0mode->setBaseColor(gui_baseCol);
|
||||
|
@ -302,11 +328,11 @@ void InitPanelInput(const struct _ConfigCategory& category)
|
|||
cboPort0mode->setId("cboPort0mode");
|
||||
cboPort0mode->addActionListener(inputActionListener);
|
||||
|
||||
lblPort1 = new gcn::Label("Port 1 [Joystick]:");
|
||||
lblPort1 = new gcn::Label("Port 1:");
|
||||
lblPort1->setAlignment(gcn::Graphics::RIGHT);
|
||||
lblPort0->setSize(lblPort1->getWidth(), lblPort0->getHeight());
|
||||
cboPort1 = new gcn::DropDown(&ctrlPortList);
|
||||
cboPort1->setSize(textFieldWidth / 2, cboPort1->getHeight());
|
||||
cboPort1->setSize(textFieldWidth, cboPort1->getHeight());
|
||||
cboPort1->setBaseColor(gui_baseCol);
|
||||
cboPort1->setBackgroundColor(colTextboxBackground);
|
||||
cboPort1->setId("cboPort1");
|
||||
|
@ -319,19 +345,22 @@ void InitPanelInput(const struct _ConfigCategory& category)
|
|||
cboPort1mode->setId("cboPort1mode");
|
||||
cboPort1mode->addActionListener(inputActionListener);
|
||||
|
||||
lblPort2 = new gcn::Label("Port 2 [Parallel 1]:");
|
||||
lblParallelPortAdapter = new gcn::Label("Emulated parallel port joystick adapter");
|
||||
lblParallelPortAdapter->setAlignment(gcn::Graphics::LEFT);
|
||||
|
||||
lblPort2 = new gcn::Label("Port 2:");
|
||||
lblPort2->setAlignment(gcn::Graphics::LEFT);
|
||||
cboPort2 = new gcn::DropDown(&ctrlPortList);
|
||||
cboPort2->setSize(textFieldWidth / 2, cboPort2->getHeight());
|
||||
cboPort2->setSize(textFieldWidth, cboPort2->getHeight());
|
||||
cboPort2->setBaseColor(gui_baseCol);
|
||||
cboPort2->setBackgroundColor(colTextboxBackground);
|
||||
cboPort2->setId("cboPort2");
|
||||
cboPort2->addActionListener(inputActionListener);
|
||||
|
||||
lblPort3 = new gcn::Label("Port 3 [Parallel 2]:");
|
||||
lblPort3 = new gcn::Label("Port 3:");
|
||||
lblPort3->setAlignment(gcn::Graphics::LEFT);
|
||||
cboPort3 = new gcn::DropDown(&ctrlPortList);
|
||||
cboPort3->setSize(textFieldWidth / 2, cboPort3->getHeight());
|
||||
cboPort3->setSize(textFieldWidth, cboPort3->getHeight());
|
||||
cboPort3->setBaseColor(gui_baseCol);
|
||||
cboPort3->setBackgroundColor(colTextboxBackground);
|
||||
cboPort3->setId("cboPort3");
|
||||
|
@ -355,14 +384,14 @@ void InitPanelInput(const struct _ConfigCategory& category)
|
|||
cboPort1mousemode->setId("cboPort1mousemode");
|
||||
cboPort1mousemode->addActionListener(inputActionListener);
|
||||
|
||||
lblAutofire = new gcn::Label("Autofire Rate:");
|
||||
lblAutofire->setAlignment(gcn::Graphics::RIGHT);
|
||||
cboAutofire = new gcn::DropDown(&autofireList);
|
||||
cboAutofire->setSize(80, cboAutofire->getHeight());
|
||||
cboAutofire->setBaseColor(gui_baseCol);
|
||||
cboAutofire->setBackgroundColor(colTextboxBackground);
|
||||
cboAutofire->setId("cboAutofire");
|
||||
cboAutofire->addActionListener(inputActionListener);
|
||||
lblAutofireRate = new gcn::Label("Autofire Rate:");
|
||||
lblAutofireRate->setAlignment(gcn::Graphics::RIGHT);
|
||||
cboAutofireRate = new gcn::DropDown(&autoFireRateList);
|
||||
cboAutofireRate->setSize(80, cboAutofireRate->getHeight());
|
||||
cboAutofireRate->setBaseColor(gui_baseCol);
|
||||
cboAutofireRate->setBackgroundColor(colTextboxBackground);
|
||||
cboAutofireRate->setId("cboAutofireRate");
|
||||
cboAutofireRate->addActionListener(inputActionListener);
|
||||
|
||||
lblMouseSpeed = new gcn::Label("Mouse Speed:");
|
||||
lblMouseSpeed->setAlignment(gcn::Graphics::RIGHT);
|
||||
|
@ -382,22 +411,37 @@ void InitPanelInput(const struct _ConfigCategory& category)
|
|||
auto posY = DISTANCE_BORDER;
|
||||
category.panel->add(lblPort0, DISTANCE_BORDER, posY);
|
||||
category.panel->add(cboPort0, DISTANCE_BORDER + lblPort0->getWidth() + 8, posY);
|
||||
category.panel->add(cboPort0mode, cboPort0->getX() + cboPort0->getWidth() + DISTANCE_NEXT_X, posY);
|
||||
posY += cboPort0->getHeight() + DISTANCE_NEXT_Y;
|
||||
|
||||
category.panel->add(cboPort0Autofire, cboPort0->getX(), posY);
|
||||
category.panel->add(cboPort0mode, cboPort0Autofire->getX() + cboPort0Autofire->getWidth() + DISTANCE_NEXT_X, posY);
|
||||
posY += cboPort0Autofire->getHeight() + DISTANCE_NEXT_Y;
|
||||
|
||||
category.panel->add(lblPort1, DISTANCE_BORDER, posY);
|
||||
category.panel->add(cboPort1, DISTANCE_BORDER + lblPort1->getWidth() + 8, posY);
|
||||
category.panel->add(cboPort1mode, cboPort1->getX() + cboPort1->getWidth() + DISTANCE_NEXT_X, posY);
|
||||
posY += cboPort1->getHeight() + DISTANCE_NEXT_Y;
|
||||
|
||||
category.panel->add(cboPort1Autofire, cboPort1->getX(), posY);
|
||||
category.panel->add(cboPort1mode, cboPort1Autofire->getX() + cboPort1Autofire->getWidth() + DISTANCE_NEXT_X, posY);
|
||||
posY += cboPort1Autofire->getHeight() + DISTANCE_NEXT_Y * 2;
|
||||
|
||||
category.panel->add(lblParallelPortAdapter, DISTANCE_BORDER, posY);
|
||||
posY += lblParallelPortAdapter->getHeight() + DISTANCE_NEXT_Y;
|
||||
|
||||
category.panel->add(lblPort2, DISTANCE_BORDER, posY);
|
||||
category.panel->add(cboPort2, DISTANCE_BORDER + lblPort2->getWidth() + 8, posY);
|
||||
posY += cboPort2->getHeight() + DISTANCE_NEXT_Y;
|
||||
|
||||
category.panel->add(cboPort2Autofire, cboPort2->getX(), posY);
|
||||
posY += cboPort2Autofire->getHeight() + DISTANCE_NEXT_Y;
|
||||
|
||||
category.panel->add(lblPort3, DISTANCE_BORDER, posY);
|
||||
category.panel->add(cboPort3, DISTANCE_BORDER + lblPort3->getWidth() + 8, posY);
|
||||
posY += cboPort3->getHeight() + DISTANCE_NEXT_Y * 2;
|
||||
posY += cboPort3->getHeight() + DISTANCE_NEXT_Y;
|
||||
|
||||
category.panel->add(cboPort3Autofire, cboPort3->getX(), posY);
|
||||
posY += cboPort3Autofire->getHeight() + DISTANCE_NEXT_Y * 2;
|
||||
|
||||
category.panel->add(lblPort0mousemode, DISTANCE_BORDER, posY);
|
||||
category.panel->add(cboPort0mousemode, lblPort0mousemode->getX() + lblPort0mousemode->getWidth() + 8, posY);
|
||||
|
||||
|
@ -411,9 +455,9 @@ void InitPanelInput(const struct _ConfigCategory& category)
|
|||
category.panel->add(cboPort1mousemode, lblPort1mousemode->getX() + lblPort1mousemode->getWidth() + 8, posY);
|
||||
posY += lblPort1mousemode->getHeight() + DISTANCE_NEXT_Y * 2;
|
||||
|
||||
category.panel->add(lblAutofire, DISTANCE_BORDER, posY);
|
||||
category.panel->add(cboAutofire, DISTANCE_BORDER + lblAutofire->getWidth() + 8, posY);
|
||||
category.panel->add(chkMouseHack, cboAutofire->getX() + cboAutofire->getWidth() + DISTANCE_NEXT_X, posY);
|
||||
category.panel->add(lblAutofireRate, DISTANCE_BORDER, posY);
|
||||
category.panel->add(cboAutofireRate, DISTANCE_BORDER + lblAutofireRate->getWidth() + 8, posY);
|
||||
category.panel->add(chkMouseHack, cboAutofireRate->getX() + cboAutofireRate->getWidth() + DISTANCE_NEXT_X, posY);
|
||||
posY += chkMouseHack->getHeight() + DISTANCE_NEXT_Y;
|
||||
|
||||
RefreshPanelInput();
|
||||
|
@ -424,24 +468,30 @@ void ExitPanelInput()
|
|||
{
|
||||
delete lblPort0;
|
||||
delete cboPort0;
|
||||
delete cboPort0Autofire;
|
||||
delete cboPort0mode;
|
||||
delete lblPort0mousemode;
|
||||
delete cboPort0mousemode;
|
||||
|
||||
delete lblPort1;
|
||||
delete cboPort1;
|
||||
delete cboPort1Autofire;
|
||||
delete cboPort1mode;
|
||||
|
||||
delete lblPort1mousemode;
|
||||
delete cboPort1mousemode;
|
||||
|
||||
delete lblParallelPortAdapter;
|
||||
delete lblPort2;
|
||||
delete cboPort2;
|
||||
delete cboPort2Autofire;
|
||||
|
||||
delete lblPort3;
|
||||
delete cboPort3;
|
||||
|
||||
delete lblAutofire;
|
||||
delete cboAutofire;
|
||||
delete cboPort3Autofire;
|
||||
|
||||
delete lblAutofireRate;
|
||||
delete cboAutofireRate;
|
||||
delete lblMouseSpeed;
|
||||
delete sldMouseSpeed;
|
||||
delete lblMouseSpeedInfo;
|
||||
|
@ -503,33 +553,21 @@ void RefreshPanelInput()
|
|||
cboPort3->setSelected(idx);
|
||||
|
||||
if (changed_prefs.input_autofire_linecnt == 0)
|
||||
cboAutofire->setSelected(0);
|
||||
cboAutofireRate->setSelected(0);
|
||||
else if (changed_prefs.input_autofire_linecnt > 10 * 312)
|
||||
cboAutofire->setSelected(1);
|
||||
cboAutofireRate->setSelected(1);
|
||||
else if (changed_prefs.input_autofire_linecnt > 6 * 312)
|
||||
cboAutofire->setSelected(2);
|
||||
cboAutofireRate->setSelected(2);
|
||||
else
|
||||
cboAutofire->setSelected(3);
|
||||
cboAutofireRate->setSelected(3);
|
||||
|
||||
|
||||
if (changed_prefs.jports[0].mode == JSEM_MODE_MOUSE)
|
||||
cboPort0mode->setSelected(0);
|
||||
else if (changed_prefs.jports[0].mode == JSEM_MODE_JOYSTICK)
|
||||
cboPort0mode->setSelected(1);
|
||||
else if (changed_prefs.jports[0].mode == JSEM_MODE_JOYSTICK_CD32)
|
||||
cboPort0mode->setSelected(2);
|
||||
else
|
||||
cboPort0mode->setSelected(3);
|
||||
|
||||
|
||||
if (changed_prefs.jports[1].mode == JSEM_MODE_MOUSE)
|
||||
cboPort1mode->setSelected(0);
|
||||
else if (changed_prefs.jports[1].mode == JSEM_MODE_JOYSTICK)
|
||||
cboPort1mode->setSelected(1);
|
||||
else if (changed_prefs.jports[1].mode == JSEM_MODE_JOYSTICK_CD32)
|
||||
cboPort1mode->setSelected(2);
|
||||
else
|
||||
cboPort1mode->setSelected(3);
|
||||
cboPort0mode->setSelected(changed_prefs.jports[0].mode);
|
||||
cboPort1mode->setSelected(changed_prefs.jports[1].mode);
|
||||
|
||||
cboPort0Autofire->setSelected(changed_prefs.jports[0].autofire);
|
||||
cboPort1Autofire->setSelected(changed_prefs.jports[1].autofire);
|
||||
cboPort2Autofire->setSelected(changed_prefs.jports[2].autofire);
|
||||
cboPort3Autofire->setSelected(changed_prefs.jports[3].autofire);
|
||||
|
||||
// changed mouse map
|
||||
cboPort0mousemode->setSelected(changed_prefs.jports[0].mousemap);
|
||||
|
@ -582,7 +620,5 @@ bool HelpPanelInput(std::vector<std::string>& helptext)
|
|||
helptext.emplace_back("the mouse pointer to the exact position. This works very well on Workbench, ");
|
||||
helptext.emplace_back("but many games using their own mouse handling and will not profit from this mode.");
|
||||
helptext.emplace_back(" ");
|
||||
helptext.emplace_back("\"Tap Delay\" specifies the time between taping the screen and an emulated ");
|
||||
helptext.emplace_back("mouse button click.");
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -809,7 +809,7 @@ void InitPanelQuickstart(const struct _ConfigCategory& category)
|
|||
cmdDFxEject[i]->addActionListener(dfxButtonActionListener);
|
||||
|
||||
cmdDFxSelect[i] = new gcn::Button("Select file");
|
||||
cmdDFxSelect[i]->setSize(BUTTON_WIDTH + 8, SMALL_BUTTON_HEIGHT);
|
||||
cmdDFxSelect[i]->setSize(BUTTON_WIDTH + 10, SMALL_BUTTON_HEIGHT);
|
||||
cmdDFxSelect[i]->setBaseColor(gui_baseCol);
|
||||
snprintf(tmp, 20, "qscmdSel%d", i);
|
||||
cmdDFxSelect[i]->setId(tmp);
|
||||
|
@ -887,16 +887,12 @@ void InitPanelQuickstart(const struct _ConfigCategory& category)
|
|||
|
||||
for (auto i = 0; i < 2; ++i)
|
||||
{
|
||||
auto posX = DISTANCE_BORDER;
|
||||
category.panel->add(chkDFx[i], posX, posY);
|
||||
posX += DISTANCE_NEXT_X * 12;
|
||||
category.panel->add(chkDFxWriteProtect[i], posX, posY);
|
||||
posX += DISTANCE_NEXT_X * 13;
|
||||
category.panel->add(chkDFx[i], DISTANCE_BORDER, posY);
|
||||
category.panel->add(chkDFxWriteProtect[i], DISTANCE_BORDER + DISTANCE_NEXT_X * 8, posY);
|
||||
// category.panel->add(cmdDFxInfo[i], posX, posY);
|
||||
//posX += cmdDFxInfo[i]->getWidth() + DISTANCE_NEXT_X;
|
||||
category.panel->add(cmdDFxEject[i], posX, posY);
|
||||
posX += cmdDFxEject[i]->getWidth() + DISTANCE_NEXT_X;
|
||||
category.panel->add(cmdDFxSelect[i], posX, posY);
|
||||
category.panel->add(cmdDFxEject[i], DISTANCE_BORDER + DISTANCE_NEXT_X * 26, posY);
|
||||
category.panel->add(cmdDFxSelect[i], cmdDFxEject[i]->getX() + cmdDFxEject[i]->getWidth() + DISTANCE_NEXT_X, posY);
|
||||
posY += cmdDFxEject[i]->getHeight() + 8;
|
||||
|
||||
category.panel->add(cboDFxFile[i], DISTANCE_BORDER, posY);
|
||||
|
|
|
@ -197,44 +197,44 @@ void InitPanelRAM(const struct _ConfigCategory& category)
|
|||
grpRAM->setPosition(DISTANCE_BORDER, DISTANCE_BORDER);
|
||||
|
||||
int posY = 10;
|
||||
grpRAM->add(lblChipmem, 8, posY);
|
||||
grpRAM->add(lblChipmem, 10, posY);
|
||||
grpRAM->add(sldChipmem, lblA3000Lowmem->getWidth() + DISTANCE_NEXT_Y, posY);
|
||||
grpRAM->add(lblChipsize, lblA3000Lowmem->getWidth() + DISTANCE_NEXT_Y + sldChipmem->getWidth() + 12, posY);
|
||||
posY += sldChipmem->getHeight() + DISTANCE_NEXT_Y;
|
||||
|
||||
grpRAM->add(lblSlowmem, 8, posY);
|
||||
grpRAM->add(lblSlowmem, 10, posY);
|
||||
grpRAM->add(sldSlowmem, lblA3000Lowmem->getWidth() + DISTANCE_NEXT_Y, posY);
|
||||
grpRAM->add(lblSlowsize, lblA3000Lowmem->getWidth() + DISTANCE_NEXT_Y + sldSlowmem->getWidth() + 12, posY);
|
||||
posY += sldSlowmem->getHeight() + DISTANCE_NEXT_Y;
|
||||
|
||||
grpRAM->add(lblFastmem, 8, posY);
|
||||
grpRAM->add(lblFastmem, 10, posY);
|
||||
grpRAM->add(sldFastmem, lblA3000Lowmem->getWidth() + DISTANCE_NEXT_Y, posY);
|
||||
grpRAM->add(lblFastsize, lblA3000Lowmem->getWidth() + DISTANCE_NEXT_Y + sldFastmem->getWidth() + 12, posY);
|
||||
posY += sldFastmem->getHeight() + DISTANCE_NEXT_Y;
|
||||
|
||||
grpRAM->add(lblZ3mem, 8, posY);
|
||||
grpRAM->add(lblZ3mem, 10, posY);
|
||||
grpRAM->add(sldZ3mem, lblA3000Lowmem->getWidth() + DISTANCE_NEXT_Y, posY);
|
||||
grpRAM->add(lblZ3size, lblA3000Lowmem->getWidth() + DISTANCE_NEXT_Y + sldZ3mem->getWidth() + 12, posY);
|
||||
posY += sldZ3mem->getHeight() + DISTANCE_NEXT_Y;
|
||||
|
||||
grpRAM->add(lblGfxmem, 8, posY);
|
||||
grpRAM->add(lblGfxmem, 10, posY);
|
||||
grpRAM->add(sldGfxmem, lblA3000Lowmem->getWidth() + DISTANCE_NEXT_Y, posY);
|
||||
grpRAM->add(lblGfxsize, lblA3000Lowmem->getWidth() + DISTANCE_NEXT_Y + sldGfxmem->getWidth() + 12, posY);
|
||||
posY += sldGfxmem->getHeight() + DISTANCE_NEXT_Y;
|
||||
|
||||
grpRAM->add(lblA3000Lowmem, 8, posY);
|
||||
grpRAM->add(lblA3000Lowmem, 10, posY);
|
||||
grpRAM->add(sldA3000Lowmem, lblA3000Lowmem->getWidth() + DISTANCE_NEXT_Y, posY);
|
||||
grpRAM->add(lblA3000Lowsize, lblA3000Lowmem->getWidth() + DISTANCE_NEXT_Y + sldA3000Lowmem->getWidth() + 12, posY);
|
||||
posY += sldA3000Lowmem->getHeight() + DISTANCE_NEXT_Y;
|
||||
|
||||
grpRAM->add(lblA3000Highmem, 8, posY);
|
||||
grpRAM->add(lblA3000Highmem, 10, posY);
|
||||
grpRAM->add(sldA3000Highmem, lblA3000Lowmem->getWidth() + DISTANCE_NEXT_Y, posY);
|
||||
grpRAM->add(lblA3000Highsize, lblA3000Lowmem->getWidth() + DISTANCE_NEXT_Y + sldA3000Highmem->getWidth() + 12,
|
||||
posY);
|
||||
posY += sldA3000Highmem->getHeight() + DISTANCE_NEXT_Y;
|
||||
|
||||
grpRAM->setMovable(false);
|
||||
grpRAM->setSize(400, posY + DISTANCE_BORDER * 2);
|
||||
grpRAM->setSize(375, posY + DISTANCE_BORDER * 2);
|
||||
grpRAM->setTitleBarHeight(TITLEBAR_HEIGHT);
|
||||
grpRAM->setBaseColor(gui_baseCol);
|
||||
|
||||
|
|
|
@ -17,9 +17,9 @@ static gcn::RadioButton* optSoundDisabled;
|
|||
static gcn::RadioButton* optSoundDisabledEmu;
|
||||
static gcn::RadioButton* optSoundEmulated;
|
||||
static gcn::RadioButton* optSoundEmulatedBest;
|
||||
static gcn::Window* grpMode;
|
||||
static gcn::RadioButton* optMono;
|
||||
static gcn::RadioButton* optStereo;
|
||||
static gcn::Window* grpSettings;
|
||||
static gcn::Label* lblChannelMode;
|
||||
static gcn::DropDown* cboChannelMode;
|
||||
static gcn::Label* lblFrequency;
|
||||
static gcn::DropDown* cboFrequency;
|
||||
static gcn::Label* lblInterpolation;
|
||||
|
@ -27,11 +27,10 @@ static gcn::DropDown* cboInterpolation;
|
|||
static gcn::Label* lblFilter;
|
||||
static gcn::DropDown* cboFilter;
|
||||
static gcn::Label* lblSeparation;
|
||||
static gcn::Label* lblSeparationInfo;
|
||||
static gcn::Slider* sldSeparation;
|
||||
static gcn::DropDown* cboSeparation;
|
||||
static gcn::Label* lblStereoDelay;
|
||||
static gcn::Label* lblStereoDelayInfo;
|
||||
static gcn::Slider* sldStereoDelay;
|
||||
static gcn::DropDown* cboStereoDelay;
|
||||
static gcn::Window* grpVolume;
|
||||
static gcn::Label* lblPaulaVol;
|
||||
static gcn::Label* lblPaulaVolInfo;
|
||||
static gcn::Slider* sldPaulaVol;
|
||||
|
@ -40,6 +39,102 @@ static int curr_separation_idx;
|
|||
static int curr_stereodelay_idx;
|
||||
|
||||
|
||||
class ChannelModeListModel : public gcn::ListModel
|
||||
{
|
||||
std::vector<std::string> mode;
|
||||
|
||||
public:
|
||||
ChannelModeListModel()
|
||||
{
|
||||
mode.emplace_back("Mono");
|
||||
mode.emplace_back("Stereo");
|
||||
}
|
||||
|
||||
int getNumberOfElements() override
|
||||
{
|
||||
return mode.size();
|
||||
}
|
||||
|
||||
std::string getElementAt(int i) override
|
||||
{
|
||||
if (i < 0 || i >= static_cast<int>(mode.size()))
|
||||
return "---";
|
||||
return mode[i];
|
||||
}
|
||||
};
|
||||
|
||||
static ChannelModeListModel channelModeList;
|
||||
|
||||
class SeparationListModel : public gcn::ListModel
|
||||
{
|
||||
std::vector<std::string> mode;
|
||||
|
||||
public:
|
||||
SeparationListModel()
|
||||
{
|
||||
mode.emplace_back("100%");
|
||||
mode.emplace_back("90%");
|
||||
mode.emplace_back("80%");
|
||||
mode.emplace_back("70%");
|
||||
mode.emplace_back("60%");
|
||||
mode.emplace_back("50%");
|
||||
mode.emplace_back("40%");
|
||||
mode.emplace_back("30%");
|
||||
mode.emplace_back("20%");
|
||||
mode.emplace_back("10%");
|
||||
mode.emplace_back("0%");
|
||||
}
|
||||
|
||||
int getNumberOfElements() override
|
||||
{
|
||||
return mode.size();
|
||||
}
|
||||
|
||||
std::string getElementAt(int i) override
|
||||
{
|
||||
if (i < 0 || i >= static_cast<int>(mode.size()))
|
||||
return "---";
|
||||
return mode[i];
|
||||
}
|
||||
};
|
||||
|
||||
static SeparationListModel separationList;
|
||||
|
||||
class StereoDelayListModel : public gcn::ListModel
|
||||
{
|
||||
std::vector<std::string> mode;
|
||||
|
||||
public:
|
||||
StereoDelayListModel()
|
||||
{
|
||||
mode.emplace_back("-");
|
||||
mode.emplace_back("1");
|
||||
mode.emplace_back("2");
|
||||
mode.emplace_back("3");
|
||||
mode.emplace_back("4");
|
||||
mode.emplace_back("5");
|
||||
mode.emplace_back("6");
|
||||
mode.emplace_back("7");
|
||||
mode.emplace_back("8");
|
||||
mode.emplace_back("9");
|
||||
mode.emplace_back("10");
|
||||
}
|
||||
|
||||
int getNumberOfElements() override
|
||||
{
|
||||
return mode.size();
|
||||
}
|
||||
|
||||
std::string getElementAt(int i) override
|
||||
{
|
||||
if (i < 0 || i >= static_cast<int>(mode.size()))
|
||||
return "---";
|
||||
return mode[i];
|
||||
}
|
||||
};
|
||||
|
||||
static StereoDelayListModel stereoDelayList;
|
||||
|
||||
class FrequencyListModel : public gcn::ListModel
|
||||
{
|
||||
std::vector<std::string> freq;
|
||||
|
@ -143,10 +238,8 @@ public:
|
|||
else if (actionEvent.getSource() == optSoundEmulatedBest)
|
||||
changed_prefs.produce_sound = 3;
|
||||
|
||||
else if (actionEvent.getSource() == optMono)
|
||||
changed_prefs.sound_stereo = 0;
|
||||
else if (actionEvent.getSource() == optStereo)
|
||||
changed_prefs.sound_stereo = 1;
|
||||
else if (actionEvent.getSource() == cboChannelMode)
|
||||
changed_prefs.sound_stereo = cboChannelMode->getSelected();
|
||||
|
||||
else if (actionEvent.getSource() == cboFrequency)
|
||||
{
|
||||
|
@ -200,22 +293,22 @@ public:
|
|||
}
|
||||
}
|
||||
|
||||
else if (actionEvent.getSource() == sldSeparation)
|
||||
else if (actionEvent.getSource() == cboSeparation)
|
||||
{
|
||||
if (curr_separation_idx != static_cast<int>(sldSeparation->getValue())
|
||||
if (curr_separation_idx != static_cast<int>(cboSeparation->getSelected())
|
||||
&& changed_prefs.sound_stereo > 0)
|
||||
{
|
||||
curr_separation_idx = static_cast<int>(sldSeparation->getValue());
|
||||
curr_separation_idx = static_cast<int>(cboSeparation->getSelected());
|
||||
changed_prefs.sound_stereo_separation = 10 - curr_separation_idx;
|
||||
}
|
||||
}
|
||||
|
||||
else if (actionEvent.getSource() == sldStereoDelay)
|
||||
else if (actionEvent.getSource() == cboStereoDelay)
|
||||
{
|
||||
if (curr_stereodelay_idx != static_cast<int>(sldStereoDelay->getValue())
|
||||
if (curr_stereodelay_idx != static_cast<int>(cboStereoDelay->getSelected())
|
||||
&& changed_prefs.sound_stereo > 0)
|
||||
{
|
||||
curr_stereodelay_idx = static_cast<int>(sldStereoDelay->getValue());
|
||||
curr_stereodelay_idx = static_cast<int>(cboStereoDelay->getSelected());
|
||||
if (curr_stereodelay_idx > 0)
|
||||
changed_prefs.sound_mixed_stereo_delay = curr_stereodelay_idx;
|
||||
else
|
||||
|
@ -256,45 +349,28 @@ void InitPanelSound(const struct _ConfigCategory& category)
|
|||
optSoundEmulatedBest->setId("sndEmuBest");
|
||||
optSoundEmulatedBest->addActionListener(soundActionListener);
|
||||
|
||||
grpSound = new gcn::Window("Sound Emulation");
|
||||
grpSound->add(optSoundDisabled, 5, 10);
|
||||
grpSound->add(optSoundDisabledEmu, 5, 40);
|
||||
grpSound->add(optSoundEmulated, 5, 70);
|
||||
grpSound->add(optSoundEmulatedBest, 5, 100);
|
||||
grpSound->setMovable(false);
|
||||
grpSound->setSize(optSoundEmulatedBest->getWidth() + DISTANCE_BORDER, 150);
|
||||
grpSound->setTitleBarHeight(TITLEBAR_HEIGHT);
|
||||
grpSound->setBaseColor(gui_baseCol);
|
||||
|
||||
lblFrequency = new gcn::Label("Frequency:");
|
||||
lblFrequency->setAlignment(gcn::Graphics::RIGHT);
|
||||
cboFrequency = new gcn::DropDown(&frequencyTypeList);
|
||||
cboFrequency->setSize(160, cboFrequency->getHeight());
|
||||
cboFrequency->setSize(100, cboFrequency->getHeight());
|
||||
cboFrequency->setBaseColor(gui_baseCol);
|
||||
cboFrequency->setBackgroundColor(colTextboxBackground);
|
||||
cboFrequency->setId("cboFrequency");
|
||||
cboFrequency->addActionListener(soundActionListener);
|
||||
|
||||
optMono = new gcn::RadioButton("Mono", "radiosoundmodegroup");
|
||||
optMono->setId("Mono");
|
||||
optMono->addActionListener(soundActionListener);
|
||||
|
||||
optStereo = new gcn::RadioButton("Stereo", "radiosoundmodegroup");
|
||||
optStereo->setId("Stereo");
|
||||
optStereo->addActionListener(soundActionListener);
|
||||
|
||||
grpMode = new gcn::Window("Mode");
|
||||
grpMode->add(optMono, 5, 10);
|
||||
grpMode->add(optStereo, 5, 40);
|
||||
grpMode->setMovable(false);
|
||||
grpMode->setSize(90, 90);
|
||||
grpMode->setTitleBarHeight(TITLEBAR_HEIGHT);
|
||||
grpMode->setBaseColor(gui_baseCol);
|
||||
|
||||
lblChannelMode = new gcn::Label("Channel mode:");
|
||||
lblChannelMode->setAlignment(gcn::Graphics::RIGHT);
|
||||
cboChannelMode = new gcn::DropDown(&channelModeList);
|
||||
cboChannelMode->setSize(100, cboChannelMode->getHeight());
|
||||
cboChannelMode->setBaseColor(gui_baseCol);
|
||||
cboChannelMode->setBackgroundColor(colTextboxBackground);
|
||||
cboChannelMode->setId("cboChannelMode");
|
||||
cboChannelMode->addActionListener(soundActionListener);
|
||||
|
||||
lblInterpolation = new gcn::Label("Interpolation:");
|
||||
lblInterpolation->setAlignment(gcn::Graphics::RIGHT);
|
||||
cboInterpolation = new gcn::DropDown(&interpolationTypeList);
|
||||
cboInterpolation->setSize(160, cboInterpolation->getHeight());
|
||||
cboInterpolation->setSize(150, cboInterpolation->getHeight());
|
||||
cboInterpolation->setBaseColor(gui_baseCol);
|
||||
cboInterpolation->setBackgroundColor(colTextboxBackground);
|
||||
cboInterpolation->setId("cboInterpol");
|
||||
|
@ -303,7 +379,7 @@ void InitPanelSound(const struct _ConfigCategory& category)
|
|||
lblFilter = new gcn::Label("Filter:");
|
||||
lblFilter->setAlignment(gcn::Graphics::RIGHT);
|
||||
cboFilter = new gcn::DropDown(&filterTypeList);
|
||||
cboFilter->setSize(160, cboFilter->getHeight());
|
||||
cboFilter->setSize(150, cboFilter->getHeight());
|
||||
cboFilter->setBaseColor(gui_baseCol);
|
||||
cboFilter->setBackgroundColor(colTextboxBackground);
|
||||
cboFilter->setId("cboFilter");
|
||||
|
@ -311,64 +387,75 @@ void InitPanelSound(const struct _ConfigCategory& category)
|
|||
|
||||
lblSeparation = new gcn::Label("Stereo separation:");
|
||||
lblSeparation->setAlignment(gcn::Graphics::RIGHT);
|
||||
sldSeparation = new gcn::Slider(0, 10);
|
||||
sldSeparation->setSize(160, SLIDER_HEIGHT);
|
||||
sldSeparation->setBaseColor(gui_baseCol);
|
||||
sldSeparation->setMarkerLength(20);
|
||||
sldSeparation->setStepLength(1);
|
||||
sldSeparation->setId("sldSeparation");
|
||||
sldSeparation->addActionListener(soundActionListener);
|
||||
lblSeparationInfo = new gcn::Label("100%");
|
||||
|
||||
cboSeparation = new gcn::DropDown(&separationList);
|
||||
cboSeparation->setSize(150, cboSeparation->getHeight());
|
||||
cboSeparation->setBaseColor(gui_baseCol);
|
||||
cboSeparation->setBackgroundColor(colTextboxBackground);
|
||||
cboSeparation->setId("cboSeparation");
|
||||
cboSeparation->addActionListener(soundActionListener);
|
||||
|
||||
lblStereoDelay = new gcn::Label("Stereo delay:");
|
||||
lblStereoDelay->setAlignment(gcn::Graphics::RIGHT);
|
||||
sldStereoDelay = new gcn::Slider(0, 10);
|
||||
sldStereoDelay->setSize(160, SLIDER_HEIGHT);
|
||||
sldStereoDelay->setBaseColor(gui_baseCol);
|
||||
sldStereoDelay->setMarkerLength(20);
|
||||
sldStereoDelay->setStepLength(1);
|
||||
sldStereoDelay->setId("sldStereoDelay");
|
||||
sldStereoDelay->addActionListener(soundActionListener);
|
||||
lblStereoDelayInfo = new gcn::Label("10");
|
||||
cboStereoDelay = new gcn::DropDown(&stereoDelayList);
|
||||
cboStereoDelay->setSize(150, cboStereoDelay->getHeight());
|
||||
cboStereoDelay->setBaseColor(gui_baseCol);
|
||||
cboStereoDelay->setBackgroundColor(colTextboxBackground);
|
||||
cboStereoDelay->setId("cboSeparation");
|
||||
cboStereoDelay->addActionListener(soundActionListener);
|
||||
|
||||
lblPaulaVol = new gcn::Label("Paula Volume:");
|
||||
lblPaulaVol->setAlignment(gcn::Graphics::RIGHT);
|
||||
sldPaulaVol = new gcn::Slider(0, 100);
|
||||
sldPaulaVol->setSize(160, SLIDER_HEIGHT);
|
||||
sldPaulaVol->setSize(150, SLIDER_HEIGHT);
|
||||
sldPaulaVol->setBaseColor(gui_baseCol);
|
||||
sldPaulaVol->setMarkerLength(20);
|
||||
sldPaulaVol->setStepLength(10);
|
||||
sldPaulaVol->setId("sldPaulaVol");
|
||||
sldPaulaVol->addActionListener(soundActionListener);
|
||||
lblPaulaVolInfo = new gcn::Label("80 %");
|
||||
lblPaulaVolInfo = new gcn::Label("100 %");
|
||||
|
||||
grpSound = new gcn::Window("Sound Emulation");
|
||||
grpSound->add(optSoundDisabled, 10, 10);
|
||||
grpSound->add(optSoundDisabledEmu, 10, 40);
|
||||
grpSound->add(optSoundEmulated, 10, 70);
|
||||
grpSound->add(optSoundEmulatedBest, 10, 100);
|
||||
grpSound->setMovable(false);
|
||||
grpSound->setSize(optSoundEmulatedBest->getWidth() + DISTANCE_BORDER + 10, 160);
|
||||
grpSound->setTitleBarHeight(TITLEBAR_HEIGHT);
|
||||
grpSound->setBaseColor(gui_baseCol);
|
||||
|
||||
grpVolume = new gcn::Window("Volume");
|
||||
grpVolume->add(lblPaulaVol, 10, 10);
|
||||
grpVolume->add(sldPaulaVol, lblPaulaVol->getX() + lblPaulaVol->getWidth() + 10, lblPaulaVol->getY());
|
||||
grpVolume->add(lblPaulaVolInfo, sldPaulaVol->getX() + sldPaulaVol->getWidth() + 10, sldPaulaVol->getY());
|
||||
grpVolume->setMovable(false);
|
||||
grpVolume->setSize(category.panel->getWidth() - DISTANCE_BORDER * 2 - grpSound->getWidth() - DISTANCE_NEXT_X, grpSound->getHeight());
|
||||
grpVolume->setTitleBarHeight(TITLEBAR_HEIGHT);
|
||||
grpVolume->setBaseColor(gui_baseCol);
|
||||
|
||||
grpSettings = new gcn::Window("Settings");
|
||||
grpSettings->add(lblChannelMode, 10, 10);
|
||||
grpSettings->add(cboChannelMode, 10, lblChannelMode->getY() + lblChannelMode->getHeight() + 10);
|
||||
grpSettings->add(lblFrequency, 10, 70);
|
||||
grpSettings->add(cboFrequency, 10, lblFrequency->getY() + lblFrequency->getHeight() + 10);
|
||||
grpSettings->add(lblSeparation, cboChannelMode->getX() + cboChannelMode->getWidth() + DISTANCE_NEXT_X * 3, 10);
|
||||
grpSettings->add(cboSeparation, lblSeparation->getX(), lblSeparation->getY() + lblSeparation->getHeight() + 10);
|
||||
grpSettings->add(lblStereoDelay, cboSeparation->getX(), lblFrequency->getY());
|
||||
grpSettings->add(cboStereoDelay, lblStereoDelay->getX(), cboFrequency->getY());
|
||||
grpSettings->add(lblInterpolation, cboSeparation->getX() + cboSeparation->getWidth() + DISTANCE_NEXT_X * 3, 10);
|
||||
grpSettings->add(cboInterpolation, lblInterpolation->getX(), lblInterpolation->getY() + lblInterpolation->getHeight() + 10);
|
||||
grpSettings->add(lblFilter, lblInterpolation->getX(), lblFrequency->getY());
|
||||
grpSettings->add(cboFilter, cboInterpolation->getX(), cboFrequency->getY());
|
||||
grpSettings->setMovable(false);
|
||||
grpSettings->setSize(category.panel->getWidth() - DISTANCE_BORDER * 2, category.panel->getHeight() - grpSound->getHeight() -DISTANCE_NEXT_Y * 3);
|
||||
grpSettings->setTitleBarHeight(TITLEBAR_HEIGHT);
|
||||
grpSettings->setBaseColor(gui_baseCol);
|
||||
|
||||
auto posY = DISTANCE_BORDER;
|
||||
category.panel->add(grpSound, DISTANCE_BORDER, posY);
|
||||
category.panel->add(grpMode, grpSound->getX() + grpSound->getWidth() + DISTANCE_NEXT_X, posY);
|
||||
category.panel->add(grpVolume, grpSound->getX() + grpSound->getWidth() + DISTANCE_NEXT_X, posY);
|
||||
posY += grpSound->getHeight() + DISTANCE_NEXT_Y;
|
||||
category.panel->add(lblFrequency, DISTANCE_BORDER, posY);
|
||||
category.panel->add(cboFrequency, lblFrequency->getX() + lblFrequency->getWidth() + DISTANCE_NEXT_X, posY);
|
||||
posY += cboFrequency->getHeight() + DISTANCE_NEXT_Y;
|
||||
category.panel->add(lblInterpolation, DISTANCE_BORDER, posY);
|
||||
category.panel->add(cboInterpolation, lblInterpolation->getX() + lblInterpolation->getWidth() + DISTANCE_NEXT_X,
|
||||
posY);
|
||||
posY += cboInterpolation->getHeight() + DISTANCE_NEXT_Y;
|
||||
category.panel->add(lblFilter, DISTANCE_BORDER, posY);
|
||||
category.panel->add(cboFilter, lblFilter->getX() + lblFilter->getWidth() + DISTANCE_NEXT_X, posY);
|
||||
posY += cboFilter->getHeight() + DISTANCE_NEXT_Y;
|
||||
category.panel->add(lblSeparation, DISTANCE_BORDER, posY);
|
||||
category.panel->add(sldSeparation, lblSeparation->getX() + lblSeparation->getWidth() + DISTANCE_NEXT_X, posY);
|
||||
category.panel->add(lblSeparationInfo, sldSeparation->getX() + sldSeparation->getWidth() + DISTANCE_NEXT_X, posY);
|
||||
posY += SLIDER_HEIGHT + DISTANCE_NEXT_Y;
|
||||
category.panel->add(lblStereoDelay, DISTANCE_BORDER, posY);
|
||||
category.panel->add(sldStereoDelay, lblStereoDelay->getX() + lblStereoDelay->getWidth() + DISTANCE_NEXT_X, posY);
|
||||
category.panel->add(lblStereoDelayInfo, sldStereoDelay->getX() + sldStereoDelay->getWidth() + DISTANCE_NEXT_X,
|
||||
posY);
|
||||
posY += SLIDER_HEIGHT + DISTANCE_NEXT_Y;
|
||||
category.panel->add(lblPaulaVol, DISTANCE_BORDER, posY);
|
||||
category.panel->add(sldPaulaVol, lblPaulaVol->getX() + lblPaulaVol->getWidth() + DISTANCE_NEXT_X, posY);
|
||||
category.panel->add(lblPaulaVolInfo, sldPaulaVol->getX() + sldPaulaVol->getWidth() + DISTANCE_NEXT_X, posY);
|
||||
posY += SLIDER_HEIGHT + DISTANCE_NEXT_Y;
|
||||
category.panel->add(grpSettings, DISTANCE_BORDER, posY);
|
||||
|
||||
RefreshPanelSound();
|
||||
}
|
||||
|
@ -381,9 +468,10 @@ void ExitPanelSound()
|
|||
delete optSoundEmulated;
|
||||
delete optSoundEmulatedBest;
|
||||
delete grpSound;
|
||||
delete optMono;
|
||||
delete optStereo;
|
||||
delete grpMode;
|
||||
delete grpVolume;
|
||||
delete lblChannelMode;
|
||||
delete cboChannelMode;
|
||||
delete grpSettings;
|
||||
delete lblFrequency;
|
||||
delete cboFrequency;
|
||||
delete lblInterpolation;
|
||||
|
@ -391,11 +479,9 @@ void ExitPanelSound()
|
|||
delete lblFilter;
|
||||
delete cboFilter;
|
||||
delete lblSeparation;
|
||||
delete sldSeparation;
|
||||
delete lblSeparationInfo;
|
||||
delete cboSeparation;
|
||||
delete lblStereoDelay;
|
||||
delete sldStereoDelay;
|
||||
delete lblStereoDelayInfo;
|
||||
delete cboStereoDelay;
|
||||
delete soundActionListener;
|
||||
}
|
||||
|
||||
|
@ -422,11 +508,8 @@ void RefreshPanelSound()
|
|||
break;
|
||||
}
|
||||
|
||||
if (changed_prefs.sound_stereo == 0)
|
||||
optMono->setSelected(true);
|
||||
else if (changed_prefs.sound_stereo == 1)
|
||||
optStereo->setSelected(true);
|
||||
|
||||
cboChannelMode->setSelected(changed_prefs.sound_stereo);
|
||||
|
||||
switch (changed_prefs.sound_freq)
|
||||
{
|
||||
case 11025:
|
||||
|
@ -473,26 +556,17 @@ void RefreshPanelSound()
|
|||
curr_stereodelay_idx = changed_prefs.sound_mixed_stereo_delay > 0 ? changed_prefs.sound_mixed_stereo_delay : 0;
|
||||
}
|
||||
|
||||
sldSeparation->setValue(curr_separation_idx);
|
||||
sldSeparation->setEnabled(changed_prefs.sound_stereo >= 1);
|
||||
snprintf(tmp, 10, "%d%%", 100 - 10 * curr_separation_idx);
|
||||
lblSeparationInfo->setCaption(tmp);
|
||||
cboSeparation->setSelected(curr_separation_idx);
|
||||
cboSeparation->setEnabled(changed_prefs.sound_stereo >= 1);
|
||||
|
||||
cboStereoDelay->setSelected(curr_stereodelay_idx);
|
||||
cboStereoDelay->setEnabled(changed_prefs.sound_stereo >= 1);
|
||||
|
||||
sldStereoDelay->setValue(curr_stereodelay_idx);
|
||||
sldStereoDelay->setEnabled(changed_prefs.sound_stereo >= 1);
|
||||
if (curr_stereodelay_idx <= 0)
|
||||
lblStereoDelayInfo->setCaption("-");
|
||||
else
|
||||
{
|
||||
snprintf(tmp, 10, "%d", curr_stereodelay_idx);
|
||||
lblStereoDelayInfo->setCaption(tmp);
|
||||
}
|
||||
sldPaulaVol->setValue(100 - changed_prefs.sound_volume_paula);
|
||||
snprintf(tmp, sizeof tmp - 1, "%d %%", 100 - changed_prefs.sound_volume_paula);
|
||||
lblPaulaVolInfo->setCaption(tmp);
|
||||
|
||||
optMono->setEnabled(changed_prefs.produce_sound > 0);
|
||||
optStereo->setEnabled(changed_prefs.produce_sound > 0);
|
||||
cboChannelMode->setEnabled(changed_prefs.produce_sound > 0);
|
||||
lblFrequency->setEnabled(changed_prefs.produce_sound > 0);
|
||||
cboFrequency->setEnabled(changed_prefs.produce_sound > 0);
|
||||
lblInterpolation->setEnabled(changed_prefs.produce_sound > 0);
|
||||
|
@ -500,11 +574,9 @@ void RefreshPanelSound()
|
|||
lblFilter->setEnabled(changed_prefs.produce_sound > 0);
|
||||
cboFilter->setEnabled(changed_prefs.produce_sound > 0);
|
||||
lblSeparation->setEnabled(changed_prefs.produce_sound > 0);
|
||||
lblSeparationInfo->setEnabled(changed_prefs.produce_sound > 0);
|
||||
sldSeparation->setEnabled(changed_prefs.produce_sound > 0);
|
||||
cboSeparation->setEnabled(changed_prefs.produce_sound > 0);
|
||||
lblStereoDelay->setEnabled(changed_prefs.produce_sound > 0);
|
||||
lblStereoDelayInfo->setEnabled(changed_prefs.produce_sound > 0);
|
||||
sldStereoDelay->setEnabled(changed_prefs.produce_sound > 0);
|
||||
cboStereoDelay->setEnabled(changed_prefs.produce_sound > 0);
|
||||
lblPaulaVol->setEnabled(changed_prefs.produce_sound > 0);
|
||||
lblPaulaVolInfo->setEnabled(changed_prefs.produce_sound > 0);
|
||||
sldPaulaVol->setEnabled(changed_prefs.produce_sound > 0);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue