diff --git a/modules/shared_options.py b/modules/shared_options.py index 51d51d8ee66..7b5cacca893 100644 --- a/modules/shared_options.py +++ b/modules/shared_options.py @@ -322,6 +322,7 @@ "txt2img_settings_accordion": OptionInfo(False, "Settings in txt2img hidden under Accordion").needs_reload_ui(), "img2img_settings_accordion": OptionInfo(False, "Settings in img2img hidden under Accordion").needs_reload_ui(), "interrupt_after_current": OptionInfo(True, "Don't Interrupt in the middle").info("when using Interrupt button, if generating more than one image, stop after the generation of an image has finished, instead of immediately"), + "xyz_plot_sort_alphabetical": OptionInfo(True, "Sort XYZ plot options alphabetically").needs_reload_ui(), })) options_templates.update(options_section(('ui', "User interface", "ui"), { diff --git a/scripts/xyz_grid.py b/scripts/xyz_grid.py index 606d72d42af..d5504f27408 100644 --- a/scripts/xyz_grid.py +++ b/scripts/xyz_grid.py @@ -417,7 +417,11 @@ def title(self): return "X/Y/Z plot" def ui(self, is_img2img): - self.current_axis_options = [x for x in axis_options if type(x) == AxisOption or x.is_img2img == is_img2img] + _axis_options = copy(axis_options) + if opts.xyz_plot_sort_alphabetical: + _axis_options.sort(key=lambda x: (x.label != "Nothing", x.label.lower())) # Sort by label, but keep "Nothing" first + + self.current_axis_options = [x for x in _axis_options if type(x) == AxisOption or x.is_img2img == is_img2img] with gr.Row(): with gr.Column(scale=19):