File size: 4,149 Bytes
194b4ef
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
import copy
import gradio as gr
from modules import script_callbacks, progress, shared, errors
from replacer.options import (EXT_NAME, EXT_NAME_LOWER, needHideSegmentAnythingAccordions,
    getDedicatedPagePath, on_ui_settings, needHideAnimateDiffAccordions, hideVideoInMainUI,
)
from replacer.ui.tools_ui import IS_WEBUI_1_5
from replacer.ui import replacer_main_ui
from replacer.tools import getReplacerFooter
from replacer.ui.tools_ui import watchOutputPanel, watchSetCustomScriptSourceForComponents
from replacer.extensions import replacer_extensions



def on_ui_tabs():
    result = []
    replacer_main_ui.reinitMainUIAfterUICreated()
    tab = replacer_main_ui.replacerMainUI.getReplacerTabUI()
    result.append((tab, EXT_NAME, EXT_NAME))
    if not hideVideoInMainUI():
        video_tab = replacer_main_ui.replacerMainUI.getReplacerVideoTabUI()
        video_title = f"{EXT_NAME} - video"
        result.append((video_tab, video_title, video_title))
    return result

script_callbacks.on_ui_tabs(on_ui_tabs)


def mountDedicatedPage(demo, app):
    try:
        path = getDedicatedPagePath()
        app.add_api_route(f"{path}/internal/progress",
            progress.progressapi, methods=["POST"],
            response_model=progress.ProgressResponse)
        replacer_extensions.image_comparison.preloadImageComparisonTab()

        with gr.Blocks(title=EXT_NAME, analytics_enabled=False) as replacerUi:
            gr.Textbox(elem_id="txt2img_prompt", visible=False) # triggers onUiLoaded
            gr.Textbox(value=shared.opts.dumpjson(), elem_id="settings_json", visible=False)

            with gr.Tabs(elem_id='tabs'): # triggers progressbar
                with gr.Tab(label=f"{EXT_NAME} dedicated", elem_id=f"tab_{EXT_NAME_LOWER}_dedicated"):
                    tab = replacer_main_ui.replacerMainUI_dedicated.getReplacerTabUI()
                    tab.render()
                with gr.Tab(label="Video", elem_id=f"tab_video"):
                    tab_video = replacer_main_ui.replacerMainUI_dedicated.getReplacerVideoTabUI()
                    tab_video.render()
                replacer_extensions.image_comparison.mountImageComparisonTab()

            footer = getReplacerFooter()
            gr.HTML(footer, elem_id="footer")

        loadsave = copy.copy(demo.ui_loadsave)
        loadsave.finalized_ui = False
        video_title = f"{EXT_NAME} - video"
        loadsave.add_block(tab, EXT_NAME)
        loadsave.add_block(tab_video, video_title)
        loadsave.dump_defaults()
        replacerUi.ui_loadsave = loadsave
        gr.mount_gradio_app(app, replacerUi, path=path)
    except Exception as e:
        errors.report(f'[{EXT_NAME}] error while creating dedicated page: {e}', exc_info=True)

script_callbacks.on_app_started(mountDedicatedPage)


def hideSegmentAnythingAccordions(component, **kwargs):
    if type(component) is gr.Accordion and\
        getattr(component, 'label', "") == "Segment Anything":

        component.visible = False
        print(f"[{EXT_NAME}] Segment Anything accordion has been hidden")

if needHideSegmentAnythingAccordions():
    script_callbacks.on_after_component(hideSegmentAnythingAccordions)


def hideAnimateDiffAccordions(component, **kwargs):
    if type(component) is gr.Accordion and\
        getattr(component, 'label', "") == "AnimateDiff":

        component.visible = False
        print(f"[{EXT_NAME}] AnimateDiff accordion has been hidden")

if needHideAnimateDiffAccordions():
    script_callbacks.on_after_component(hideAnimateDiffAccordions)


script_callbacks.on_before_ui(replacer_main_ui.initMainUI)
script_callbacks.on_after_component(replacer_extensions.controlnet.watchControlNetUI)
script_callbacks.on_after_component(replacer_extensions.soft_inpainting.watchSoftInpaintUI)
script_callbacks.on_after_component(watchOutputPanel)
script_callbacks.on_after_component(watchSetCustomScriptSourceForComponents)
script_callbacks.on_ui_settings(on_ui_settings)
script_callbacks.on_after_component(replacer_extensions.image_comparison.addButtonIntoComparisonTab)
script_callbacks.on_after_component(replacer_extensions.image_comparison.watchImageComparison)