stable-diffusion-webui
65 строк · 2.4 Кб
1import gradio as gr2
3from modules import ui_extra_networks_user_metadata, sd_vae, shared4from modules.ui_common import create_refresh_button5
6
7class CheckpointUserMetadataEditor(ui_extra_networks_user_metadata.UserMetadataEditor):8def __init__(self, ui, tabname, page):9super().__init__(ui, tabname, page)10
11self.select_vae = None12
13def save_user_metadata(self, name, desc, notes, vae):14user_metadata = self.get_user_metadata(name)15user_metadata["description"] = desc16user_metadata["notes"] = notes17user_metadata["vae"] = vae18
19self.write_user_metadata(name, user_metadata)20
21def update_vae(self, name):22if name == shared.sd_model.sd_checkpoint_info.name_for_extra:23sd_vae.reload_vae_weights()24
25def put_values_into_components(self, name):26user_metadata = self.get_user_metadata(name)27values = super().put_values_into_components(name)28
29return [30*values[0:5],31user_metadata.get('vae', ''),32]33
34def create_editor(self):35self.create_default_editor_elems()36
37with gr.Row():38self.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")39create_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")40
41self.edit_notes = gr.TextArea(label='Notes', lines=4)42
43self.create_default_buttons()44
45viewed_components = [46self.edit_name,47self.edit_description,48self.html_filedata,49self.html_preview,50self.edit_notes,51self.select_vae,52]53
54self.button_edit\55.click(fn=self.put_values_into_components, inputs=[self.edit_name_input], outputs=viewed_components)\56.then(fn=lambda: gr.update(visible=True), inputs=[], outputs=[self.box])57
58edited_components = [59self.edit_description,60self.edit_notes,61self.select_vae,62]63
64self.setup_save_handler(self.button_save, self.save_user_metadata, edited_components)65self.button_save.click(fn=self.update_vae, inputs=[self.edit_name_input])66
67