diff --git a/extensions-builtin/sdnext-kanvas b/extensions-builtin/sdnext-kanvas new file mode 120000 index 000000000..994c8a3b0 --- /dev/null +++ b/extensions-builtin/sdnext-kanvas @@ -0,0 +1 @@ +/home/vlado/dev/kanvas \ No newline at end of file diff --git a/extensions-builtin/sdnext-modernui b/extensions-builtin/sdnext-modernui index 5bf81ed7f..eea48d6a2 160000 --- a/extensions-builtin/sdnext-modernui +++ b/extensions-builtin/sdnext-modernui @@ -1 +1 @@ -Subproject commit 5bf81ed7fad61833272b6b9523640942c5227351 +Subproject commit eea48d6a2ee513f3d7640616675027a399d211ad diff --git a/installer.py b/installer.py index 6e7aad790..fb195112f 100644 --- a/installer.py +++ b/installer.py @@ -1452,7 +1452,18 @@ def get_version(force=False): version['ui'] = branch_ui except Exception: version['ui'] = 'unknown' - os.chdir(cwd) + finally: + os.chdir(cwd) + try: + os.chdir('extensions-builtin/sdnext-kanvas') + res = subprocess.run('git rev-parse --abbrev-ref HEAD', stdout = subprocess.PIPE, stderr = subprocess.PIPE, shell=True, check=True) + branch_kanvas = res.stdout.decode(encoding = 'utf8', errors='ignore') if len(res.stdout) > 0 else '' + branch_kanvas = 'dev' if 'dev' in branch_kanvas else 'main' + version['kanvas'] = branch_kanvas + except Exception: + version['kanvas'] = 'unknown' + finally: + os.chdir(cwd) ts('version', t_start) return version diff --git a/modules/ui_control.py b/modules/ui_control.py index af5de9882..f474a6ee2 100644 --- a/modules/ui_control.py +++ b/modules/ui_control.py @@ -187,10 +187,6 @@ def create_ui(_blocks: gr.Blocks=None): with gr.Tab('Image', id='in-image') as tab_image: input_image = gr.Image(label="Input", show_label=False, type="pil", interactive=True, tool="editor", height=gr_height, image_mode='RGB', elem_id='control_input_select', elem_classes=['control-image']) btn_interrogate = ui_sections.create_interrogate_button('control', what='input') - with gr.Tab('Inpaint', id='in-inpaint') as _tab_inpaint: - input_inpaint = gr.Image(label="Input", show_label=False, type="pil", interactive=True, tool="sketch", height=gr_height, image_mode='RGB', elem_id='control_input_inpaint', brush_radius=32, mask_opacity=0.6, elem_classes=['control-image']) - with gr.Tab('Outpaint', id='in-outpaint') as _tab_outpaint: - input_resize = gr.Image(label="Input", show_label=False, type="pil", interactive=True, tool="select", height=gr_height, image_mode='RGB', elem_id='control_input_resize', elem_classes=['control-image']) with gr.Tab('Video', id='in-video') as tab_video: input_video = gr.Video(label="Input", show_label=False, interactive=True, height=gr_height, elem_classes=['control-image']) with gr.Tab('Batch', id='in-batch') as tab_batch: @@ -251,7 +247,7 @@ def create_ui(_blocks: gr.Blocks=None): select_dict = dict( fn=helpers.select_input, _js="controlInputMode", - inputs=[input_mode, input_image, init_image, input_type, input_resize, input_inpaint, input_video, input_batch, input_folder], + inputs=[input_mode, input_image, init_image, input_type, input_video, input_batch, input_folder], outputs=[output_tabs, preview_process, result_txt, width_before, height_before], show_progress=False, queue=False, @@ -260,14 +256,11 @@ def create_ui(_blocks: gr.Blocks=None): prompt.submit(**select_dict) negative.submit(**select_dict) btn_generate.click(**select_dict) - for ctrl in [input_image, input_resize, input_video, input_batch, input_folder, init_image, init_video, init_batch, init_folder, tab_image, tab_video, tab_batch, tab_folder, tab_image_init, tab_video_init, tab_batch_init, tab_folder_init]: + for ctrl in [input_image, input_video, input_batch, input_folder, init_image, init_video, init_batch, init_folder, tab_image, tab_video, tab_batch, tab_folder, tab_image_init, tab_video_init, tab_batch_init, tab_folder_init]: if hasattr(ctrl, 'change'): ctrl.change(**select_dict) if hasattr(ctrl, 'clear'): ctrl.clear(**select_dict) - for ctrl in [input_inpaint]: # gradio image mode inpaint triggeres endless loop on change event - if hasattr(ctrl, 'upload'): - ctrl.upload(**select_dict) tabs_state = gr.Textbox(value='none', visible=False) input_fields = [ @@ -410,7 +403,7 @@ def create_ui(_blocks: gr.Blocks=None): generation_parameters_copypaste.add_paste_fields("control", input_image, paste_fields, override_settings) bindings = generation_parameters_copypaste.ParamBinding(paste_button=btn_paste, tabname="control", source_text_component=prompt, source_image_component=output_gallery) generation_parameters_copypaste.register_paste_params_button(bindings) - masking.bind_controls([input_image, input_inpaint, input_resize], preview_process, output_image) + masking.bind_controls([input_image], preview_process, output_image) if os.environ.get('SD_CONTROL_DEBUG', None) is not None: # debug only from modules.control.test import test_processors, test_controlnets, test_adapters, test_xs, test_lite diff --git a/modules/ui_control_helpers.py b/modules/ui_control_helpers.py index 05e31bf1c..40a6a55e4 100644 --- a/modules/ui_control_helpers.py +++ b/modules/ui_control_helpers.py @@ -74,15 +74,12 @@ def get_video(filepath: str): return msg -def select_input(input_mode, input_image, init_image, init_type, input_resize, input_inpaint, input_video, input_batch, input_folder): +def select_input(input_mode, input_image, init_image, init_type, input_video, input_batch, input_folder): global busy, input_source, input_init, input_mask # pylint: disable=global-statement busy = True - if input_mode == 'Image': + selected_input = input_image + if input_mode == 'Kanvas': selected_input = input_image - elif input_mode == 'Outpaint': - selected_input = input_resize - elif input_mode == 'Inpaint': - selected_input = input_inpaint elif input_mode == 'Video': selected_input = input_video elif input_mode == 'Batch': diff --git a/modules/ui_extensions.py b/modules/ui_extensions.py index 43158211a..f5f81229d 100644 --- a/modules/ui_extensions.py +++ b/modules/ui_extensions.py @@ -11,7 +11,7 @@ from modules import extensions, shared, paths, errors, ui_symbols, call_queue debug = shared.log.debug if os.environ.get('SD_EXT_DEBUG', None) is not None else lambda *args, **kwargs: None extensions_index = "https://vladmandic.github.io/sd-data/pages/extensions.json" hide_tags = ["localization"] -exclude_extensions = ['sdnext-modernui'] +exclude_extensions = ['sdnext-modernui', 'sdnext-kanvas'] extensions_list = [] sort_ordering = { "default": (True, lambda x: x.get('sort_default', '')), diff --git a/modules/ui_javascript.py b/modules/ui_javascript.py index c17e1ad14..1897d1b58 100644 --- a/modules/ui_javascript.py +++ b/modules/ui_javascript.py @@ -20,12 +20,18 @@ def html_head(): skip = ['login.js'] for js in main: script_js = os.path.join(script_path, "javascript", js) - head += f'\n' + if '.esm' in js or '.mjs' in js: + head += f'\n' + else: + head += f'\n' added = [] for script in modules.scripts_manager.list_scripts("javascript", ".js"): if script.filename in main or script.filename in skip: continue - head += f'\n' + if '.esm' in js or '.mjs' in js: + head += f'\n' + else: + head += f'\n' added.append(script.path) for script in modules.scripts_manager.list_scripts("javascript", ".mjs"): head += f'\n' @@ -96,8 +102,8 @@ def reload_javascript(): css_base = theme.reload_gradio_theme() css_timesheet = "timesheet.css" - - css = html_css([css_base, css_timesheet]) + css_kanvas = "kanvas.css" + css = html_css([css_base, css_timesheet, css_kanvas]) body = html_body() def template_response(*args, **kwargs): @@ -111,8 +117,6 @@ def reload_javascript(): for line in lines: if 'meta name="twitter:' in line: res.body = res.body.replace(line.encode("utf8"), b'') - # if 'href="https://fonts.googleapis.com"' in line or 'href="https://fonts.gstatic.com"' in line: - # res.body = res.body.replace(line.encode("utf8"), b'') if 'iframeResizer.contentWindow.min.js' in line: res.body = res.body.replace(line.encode("utf8"), b'src="file=javascript/iframeResizer.min.js"') res.init_headers() diff --git a/wiki b/wiki index 6fc069677..3e40abb7e 160000 --- a/wiki +++ b/wiki @@ -1 +1 @@ -Subproject commit 6fc0696770923e78e1ae07cb849942568ec11dde +Subproject commit 3e40abb7ea2530d91f376c676a61d119434f9551