mirror of
https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
synced 2024-12-29 19:05:05 +08:00
c96e4750d8
- the setting for preferring opts.sd_vae has been inverted and reworded - resolve_vae function made easier to read and now returns an object rather than a tuple - if the checkbox for overriding per-model preferences is checked, opts.sd_vae overrides checkpoint user metadata - changing VAE in user metadata for currently loaded model immediately applies the selection
67 lines
2.4 KiB
Python
67 lines
2.4 KiB
Python
import gradio as gr
|
|
|
|
from modules import ui_extra_networks_user_metadata, sd_vae, shared
|
|
from modules.ui_common import create_refresh_button
|
|
|
|
|
|
class CheckpointUserMetadataEditor(ui_extra_networks_user_metadata.UserMetadataEditor):
|
|
def __init__(self, ui, tabname, page):
|
|
super().__init__(ui, tabname, page)
|
|
|
|
self.select_vae = None
|
|
|
|
def save_user_metadata(self, name, desc, notes, vae):
|
|
user_metadata = self.get_user_metadata(name)
|
|
user_metadata["description"] = desc
|
|
user_metadata["notes"] = notes
|
|
user_metadata["vae"] = vae
|
|
|
|
self.write_user_metadata(name, user_metadata)
|
|
|
|
def update_vae(self, name):
|
|
if name == shared.sd_model.sd_checkpoint_info.name_for_extra:
|
|
sd_vae.reload_vae_weights()
|
|
|
|
def put_values_into_components(self, name):
|
|
user_metadata = self.get_user_metadata(name)
|
|
values = super().put_values_into_components(name)
|
|
|
|
return [
|
|
*values[0:5],
|
|
user_metadata.get('vae', ''),
|
|
]
|
|
|
|
def create_editor(self):
|
|
self.create_default_editor_elems()
|
|
|
|
with gr.Row():
|
|
self.select_vae = gr.Dropdown(choices=["Automatic", "None"] + list(sd_vae.vae_dict), value="None", label="Preferred VAE", elem_id="checpoint_edit_user_metadata_preferred_vae")
|
|
create_refresh_button(self.select_vae, sd_vae.refresh_vae_list, lambda: {"choices": ["Automatic", "None"] + list(sd_vae.vae_dict)}, "checpoint_edit_user_metadata_refresh_preferred_vae")
|
|
|
|
self.edit_notes = gr.TextArea(label='Notes', lines=4)
|
|
|
|
self.create_default_buttons()
|
|
|
|
viewed_components = [
|
|
self.edit_name,
|
|
self.edit_description,
|
|
self.html_filedata,
|
|
self.html_preview,
|
|
self.edit_notes,
|
|
self.select_vae,
|
|
]
|
|
|
|
self.button_edit\
|
|
.click(fn=self.put_values_into_components, inputs=[self.edit_name_input], outputs=viewed_components)\
|
|
.then(fn=lambda: gr.update(visible=True), inputs=[], outputs=[self.box])
|
|
|
|
edited_components = [
|
|
self.edit_description,
|
|
self.edit_notes,
|
|
self.select_vae,
|
|
]
|
|
|
|
self.setup_save_handler(self.button_save, self.save_user_metadata, edited_components)
|
|
self.button_save.click(fn=self.update_vae, inputs=[self.edit_name_input])
|
|
|