add image editor preference to scenedit

This commit is contained in:
2025-06-23 13:09:41 -05:00
parent 97e1263287
commit 965bfb2c55
2 changed files with 38 additions and 7 deletions

View File

@@ -8,12 +8,12 @@
<led name='nosound' relative='pos-in pos' rel-anchor='prev' top='10' left='0'>No UI Sounds</led> <led name='nosound' relative='pos-in pos' rel-anchor='prev' top='10' left='0'>No UI Sounds</led>
<text name='scale-head' size='large' relative='neg pos' rel-anchor='prev' top='17' left='10' width='260' height='17'>Scale UI:</text> <text name='scale-head' size='large' relative='neg pos' rel-anchor='prev' top='17' left='10' width='260' height='17'>Scale UI:</text>
<group name='scaleui'> <group name='scaleui'>
<led name='1' relative='pos-in pos' anchor='scale-head' top='4' left='15'>1</led> <led name='1' relative='neg pos' anchor='scale-head' top='4' left='20'>1</led>
<led name='1_5' relative='pos-in pos' anchor='scale-head' top='4' left='55'>1.5</led> <led name='1_5' relative='pos pos-in' rel-anchor='prev' top='0' left='3'>1.5</led>
<led name='2' relative='pos-in pos' anchor='scale-head' top='4' left='95'>2</led> <led name='2' relative='pos pos-in' rel-anchor='prev' top='0' left='3'>2</led>
<led name='3' relative='pos-in pos' anchor='scale-head' top='4' left='135'>3</led> <led name='3' relative='pos pos-in' rel-anchor='prev' top='0' left='3'>3</led>
<led name='4' relative='pos-in pos' anchor='scale-head' top='4' left='175'>4</led> <led name='4' relative='pos pos-in' rel-anchor='prev' top='0' left='3'>4</led>
<led name='other' relative='pos-in pos' anchor='scale-head' top='4' left='215'/> <led name='other' relative='pos pos-in' rel-anchor='prev' top='0' left='3'/>
</group> </group>
<text name='debug-party-head' size='large' relative='pos pos-in' anchor='nosound' top='0' left='50'>Debug Party:</text> <text name='debug-party-head' size='large' relative='pos pos-in' anchor='nosound' top='0' left='50'>Debug Party:</text>
@@ -21,6 +21,10 @@
<button name='choose-party' relative='pos neg' rel-anchor='prev' type='regular' top='3' left='2'>Choose</button> <button name='choose-party' relative='pos neg' rel-anchor='prev' type='regular' top='3' left='2'>Choose</button>
<led name='force-default-party' relative='pos-in pos' anchor='debug-party-head' top='2' left='0'>Force default party (ignore above)</led> <led name='force-default-party' relative='pos-in pos' anchor='debug-party-head' top='2' left='0'>Force default party (ignore above)</led>
<button name='okay' relative='abs pos' anchor='scale-head' type='regular' top='7' left='354'>OK</button> <text name='image-editor-head' size='large' relative='pos-in pos-in' anchor='force-default-party' top='30' left='0'>Image Editor:</text>
<field name='image-editor' type='text' relative='neg-in neg' rel-anchor='prev' top='2' left='5' width='100' height='15'/>
<button name='choose-image-editor' relative='pos neg' rel-anchor='prev' type='regular' top='3' left='2'>Choose</button>
<button name='okay' relative='abs pos' anchor='scale-head' type='regular' top='37' left='354'>OK</button>
<button name='cancel' relative='neg pos-in' anchor='okay' type='regular' top='0' left='73'>Cancel</button> <button name='cancel' relative='neg pos-in' anchor='okay' type='regular' top='0' left='73'>Cancel</button>
</dialog> </dialog>

View File

@@ -903,6 +903,7 @@ static bool prefs_event_filter (cDialog& me, std::string id, eKeyMod) {
set_pref("PlaySounds", dynamic_cast<cLed&>(me["nosound"]).getState() == led_off); set_pref("PlaySounds", dynamic_cast<cLed&>(me["nosound"]).getState() == led_off);
set_pref("ForceDefaultParty", dynamic_cast<cLed&>(me["force-default-party"]).getState() == led_red); set_pref("ForceDefaultParty", dynamic_cast<cLed&>(me["force-default-party"]).getState() == led_red);
set_pref("DefaultPartyPath", dynamic_cast<cTextField&>(me["party-path"]).getText()); set_pref("DefaultPartyPath", dynamic_cast<cTextField&>(me["party-path"]).getText());
set_pref("ImageEditor", dynamic_cast<cTextField&>(me["image-editor"]).getText());
} }
save_prefs(); save_prefs();
return true; return true;
@@ -974,6 +975,23 @@ void pick_preferences() {
return true; return true;
}); });
cTextField& image_editor_field = dynamic_cast<cTextField&>(prefsDlog["image-editor"]);
image_editor_field.setText(get_string_pref("ImageEditor"));
image_editor_field.attachFocusHandler([](cDialog& me, std::string id, bool losing) -> bool {
if(!losing) return true;
std::string image_editor = me[id].getText();
// Validate the debug party
if(!image_editor.empty()){
if(!fs::exists(image_editor)){
showError("Your chosen image editor cannot be found.", "", &me);
me[id].setText(get_string_pref("ImageEditor"));
return false;
}
}
return true;
});
cButton& choose_button = dynamic_cast<cButton&>(prefsDlog["choose-party"]); cButton& choose_button = dynamic_cast<cButton&>(prefsDlog["choose-party"]);
choose_button.attachClickHandler([&default_party_field](cDialog&, std::string, eKeyMod) -> bool { choose_button.attachClickHandler([&default_party_field](cDialog&, std::string, eKeyMod) -> bool {
fs::path new_path = nav_get_party(); fs::path new_path = nav_get_party();
@@ -983,6 +1001,15 @@ void pick_preferences() {
return true; return true;
}); });
cButton& choose_img_button = dynamic_cast<cButton&>(prefsDlog["choose-image-editor"]);
choose_img_button.attachClickHandler([&image_editor_field](cDialog&, std::string, eKeyMod) -> bool {
fs::path new_path = nav_get_rsrc({"exe", "app", ""});
if(!new_path.empty()){
image_editor_field.setText(new_path.string());
}
return true;
});
prefsDlog.run(); prefsDlog.run();
// Suppress the float comparison warning. // Suppress the float comparison warning.