Add cancel button to advanced scenario details (re #685)

This commit is contained in:
2025-05-17 11:07:52 -05:00
parent f5e84b6e37
commit cba95554f1
2 changed files with 16 additions and 14 deletions

View File

@@ -1,7 +1,7 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?> <?xml version='1.0' encoding='UTF-8' standalone='no'?>
<!-- NOTE: This file should be updated to use relative positioning the next time it changes. --> <!-- NOTE: This file should be updated to use relative positioning the next time it changes. -->
<?xml-stylesheet href="dialog.xsl" type="text/xsl"?> <?xml-stylesheet href="dialog.xsl" type="text/xsl"?>
<dialog defbtn='okay'> <dialog defbtn='okay' escbtn='cancel'>
<pict type='dlog' num='16' top='8' left='8'/> <pict type='dlog' num='16' top='8' left='8'/>
<text size='large' top='6' left='50' width='256' height='17'>Scenario Advanced Details</text> <text size='large' top='6' left='50' width='256' height='17'>Scenario Advanced Details</text>
@@ -32,4 +32,5 @@
<button name='bg-fight' type='tiny' top='235' left='180'>In combat:</button> <button name='bg-fight' type='tiny' top='235' left='180'>In combat:</button>
<button name='okay' type='regular' top='304' left='395'>OK</button> <button name='okay' type='regular' top='304' left='395'>OK</button>
<button name='cancel' type='regular' relative='neg pos-in' rel-anchor='prev' top='0' left='73'>Cancel</button>
</dialog> </dialog>

View File

@@ -2819,21 +2819,11 @@ static void put_scen_details_in_dlog(cDialog& me) {
me["contact"].setText(scenario.contact_info[1]); me["contact"].setText(scenario.contact_info[1]);
} }
static bool save_scen_adv_details(cDialog& me, std::string, eKeyMod) { static bool save_scen_adv_details(cDialog& me, std::string item_hit, eKeyMod) {
if(!me.toast(true)) return true; me.toast(item_hit == "okay");
scenario.adjust_diff = dynamic_cast<cLed&>(me["adjust"]).getState() != led_red;
scenario.campaign_id = me["cpnid"].getText();
scenario.bg_out = boost::lexical_cast<int>(me["bg-out"].getText().substr(10));
scenario.bg_town = boost::lexical_cast<int>(me["bg-town"].getText().substr(10));
scenario.bg_dungeon = boost::lexical_cast<int>(me["bg-dungeon"].getText().substr(13));
scenario.bg_fight = boost::lexical_cast<int>(me["bg-fight"].getText().substr(11));
scenario.init_spec = me["oninit"].getTextAsNum();
return true; return true;
} }
static void put_scen_adv_details_in_dlog(cDialog& me) { static void put_scen_adv_details_in_dlog(cDialog& me) {
dynamic_cast<cLed&>(me["adjust"]).setState(scenario.adjust_diff ? led_red : led_off); dynamic_cast<cLed&>(me["adjust"]).setState(scenario.adjust_diff ? led_red : led_off);
me["cpnid"].setText(scenario.campaign_id); me["cpnid"].setText(scenario.campaign_id);
@@ -2887,12 +2877,23 @@ void edit_scen_details() {
void edit_scen_adv_details() { void edit_scen_adv_details() {
cDialog info_dlg(*ResMgr::dialogs.get("edit-scenario-advanced")); cDialog info_dlg(*ResMgr::dialogs.get("edit-scenario-advanced"));
info_dlg["okay"].attachClickHandler(save_scen_adv_details); info_dlg.attachClickHandlers(save_scen_adv_details, {"okay", "cancel"});
info_dlg.attachClickHandlers(edit_scen_default_bgs, {"bg-out", "bg-town", "bg-dungeon", "bg-fight"}); info_dlg.attachClickHandlers(edit_scen_default_bgs, {"bg-out", "bg-town", "bg-dungeon", "bg-fight"});
info_dlg["pickinit"].attachClickHandler(edit_scen_init_spec); info_dlg["pickinit"].attachClickHandler(edit_scen_init_spec);
put_scen_adv_details_in_dlog(info_dlg); put_scen_adv_details_in_dlog(info_dlg);
info_dlg.run(); info_dlg.run();
if(info_dlg.accepted()){
scenario.adjust_diff = dynamic_cast<cLed&>(info_dlg["adjust"]).getState() != led_red;
scenario.campaign_id = info_dlg["cpnid"].getText();
scenario.bg_out = boost::lexical_cast<int>(info_dlg["bg-out"].getText().substr(10));
scenario.bg_town = boost::lexical_cast<int>(info_dlg["bg-town"].getText().substr(10));
scenario.bg_dungeon = boost::lexical_cast<int>(info_dlg["bg-dungeon"].getText().substr(13));
scenario.bg_fight = boost::lexical_cast<int>(info_dlg["bg-fight"].getText().substr(11));
scenario.init_spec = info_dlg["oninit"].getTextAsNum();
}
} }
bool edit_make_scen_1(std::string& author,std::string& title,bool& grass) { bool edit_make_scen_1(std::string& author,std::string& title,bool& grass) {