| 70 | |
| 71 | |
| 72 | class Script(scripts.Script): |
| 73 | def __init__(self): |
| 74 | super().__init__() |
| 75 | script_callbacks.on_app_started(lambda block, _: self.on_app_started(block)) |
| 76 | self.checkpoint_override = checkpoint_current |
| 77 | self.generate_button = None |
| 78 | self.enqueue_row = None |
| 79 | self.checkpoint_dropdown = None |
| 80 | self.submit_button = None |
| 81 | |
| 82 | def title(self): |
| 83 | return "Agent Scheduler" |
| 84 | |
| 85 | def show(self, is_img2img): |
| 86 | return scripts.AlwaysVisible |
| 87 | |
| 88 | def on_checkpoint_changed(self, checkpoint): |
| 89 | self.checkpoint_override = checkpoint |
| 90 | |
| 91 | def after_component(self, component, **_kwargs): |
| 92 | generate_id = "txt2img_generate" if self.is_txt2img else "img2img_generate" |
| 93 | generate_box = "txt2img_generate_box" if self.is_txt2img else "img2img_generate_box" |
| 94 | actions_column_id = "txt2img_actions_column" if self.is_txt2img else "img2img_actions_column" |
| 95 | neg_id = "txt2img_neg_prompt" if self.is_txt2img else "img2img_neg_prompt" |
| 96 | toprow_id = "txt2img_toprow" if self.is_txt2img else "img2img_toprow" |
| 97 | |
| 98 | def add_enqueue_row(elem_id): |
| 99 | parent = component.parent |
| 100 | while parent is not None: |
| 101 | if parent.elem_id == elem_id: |
| 102 | self.add_enqueue_button() |
| 103 | component.parent.children.pop() |
| 104 | parent.add(self.enqueue_row) |
| 105 | break |
| 106 | parent = parent.parent |
| 107 | |
| 108 | if component.elem_id == generate_id: |
| 109 | self.generate_button = component |
| 110 | if getattr(shared.opts, "compact_prompt_box", False): |
| 111 | add_enqueue_row(generate_box) |
| 112 | else: |
| 113 | if getattr(shared.opts, "queue_button_placement", placement_under_generate) == placement_under_generate: |
| 114 | add_enqueue_row(actions_column_id) |
| 115 | elif component.elem_id == neg_id: |
| 116 | if not getattr(shared.opts, "compact_prompt_box", False): |
| 117 | if getattr(shared.opts, "queue_button_placement", placement_under_generate) == placement_between_prompt_and_generate: |
| 118 | add_enqueue_row(toprow_id) |
| 119 | |
| 120 | def on_app_started(self, block): |
| 121 | if self.generate_button is not None: |
| 122 | self.bind_enqueue_button(block) |
| 123 | |
| 124 | def add_enqueue_button(self): |
| 125 | id_part = "img2img" if self.is_img2img else "txt2img" |
| 126 | with gr.Row(elem_id=f"{id_part}_enqueue_wrapper") as row: |
| 127 | self.enqueue_row = row |
| 128 | hide_checkpoint = getattr(shared.opts, "queue_button_hide_checkpoint", True) |
| 129 | self.checkpoint_dropdown = gr.Dropdown( |
nothing calls this directly
no outgoing calls
no test coverage detected