ui_extra_networks_checkpoints_user_metadata.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import gradio as gr
  2. from modules import ui_extra_networks_user_metadata, sd_vae, shared
  3. from modules.ui_common import create_refresh_button
  4. class CheckpointUserMetadataEditor(ui_extra_networks_user_metadata.UserMetadataEditor):
  5. def __init__(self, ui, tabname, page):
  6. super().__init__(ui, tabname, page)
  7. self.select_vae = None
  8. def save_user_metadata(self, name, desc, notes, vae):
  9. user_metadata = self.get_user_metadata(name)
  10. user_metadata["description"] = desc
  11. user_metadata["notes"] = notes
  12. user_metadata["vae"] = vae
  13. self.write_user_metadata(name, user_metadata)
  14. def update_vae(self, name):
  15. if name == shared.sd_model.sd_checkpoint_info.name_for_extra:
  16. sd_vae.reload_vae_weights()
  17. def put_values_into_components(self, name):
  18. user_metadata = self.get_user_metadata(name)
  19. values = super().put_values_into_components(name)
  20. return [
  21. *values[0:5],
  22. user_metadata.get('vae', ''),
  23. ]
  24. def create_editor(self):
  25. self.create_default_editor_elems()
  26. with gr.Row():
  27. 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")
  28. 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")
  29. self.edit_notes = gr.TextArea(label='Notes', lines=4)
  30. self.create_default_buttons()
  31. viewed_components = [
  32. self.edit_name,
  33. self.edit_description,
  34. self.html_filedata,
  35. self.html_preview,
  36. self.edit_notes,
  37. self.select_vae,
  38. ]
  39. self.button_edit\
  40. .click(fn=self.put_values_into_components, inputs=[self.edit_name_input], outputs=viewed_components)\
  41. .then(fn=lambda: gr.update(visible=True), inputs=[], outputs=[self.box])
  42. edited_components = [
  43. self.edit_description,
  44. self.edit_notes,
  45. self.select_vae,
  46. ]
  47. self.setup_save_handler(self.button_save, self.save_user_metadata, edited_components)
  48. self.button_save.click(fn=self.update_vae, inputs=[self.edit_name_input])