From f9a57195f612291711b17f76ca93e32f48661067 Mon Sep 17 00:00:00 2001 From: joonsun01 Date: Sat, 29 Jul 2023 21:06:56 +0900 Subject: [PATCH] =?UTF-8?q?recipe=20=EC=88=98=EC=A0=95=20nsfw=20filter=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20basemodel=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit recipe 수정 nsfw filter 추가 basemodel 추가 shortcut browser 위치 변경 가능하게 추가 --- README.KR.md | 7 + README.md | 7 + img/card-no-preview.png | Bin 0 -> 84440 bytes img/nsfw-no-preview.png | Bin 0 -> 80738 bytes .../civitai_gallery_action.py | 30 +- .../civitai_shortcut_action.py | 90 +++- .../civitai_manager_libs/ishortcut_action.py | 16 +- scripts/civitai_manager_libs/recipe.py | 110 +++-- scripts/civitai_manager_libs/recipe_action.py | 393 ++++++++++++------ .../recipe_browser_page.py | 355 ++++++++++++++++ .../civitai_manager_libs/sc_browser_page.py | 36 +- scripts/civitai_manager_libs/setting.py | 77 +++- .../civitai_manager_libs/setting_action.py | 19 +- scripts/civitai_shortcut.py | 6 +- 14 files changed, 966 insertions(+), 180 deletions(-) create mode 100644 img/card-no-preview.png create mode 100644 img/nsfw-no-preview.png create mode 100644 scripts/civitai_manager_libs/recipe_browser_page.py diff --git a/README.KR.md b/README.KR.md index 0dacbcc..28dc662 100644 --- a/README.KR.md +++ b/README.KR.md @@ -70,6 +70,13 @@ Civitai 사이트의 모델 URL을 저장하여 나중에 참조하고 보관할 * CivitaiShortCutBackupUrl.json : Shortcut 등록시의 URL을 백업하는 파일 # Change Log +v 1.6.0 +* NSFW Filter 기능 추가 +* prompt recipe 리뉴얼 +* prompt recipe에 reference model을 등록 할수 있는 tab추가 +* prompt recipe 검색기능 보강 +* shortcut broswer의 검색창의 위치를 섬네일 목록의 상/하중 원하는 위치로 변경할 수 있도록 setting 에 추가. + v 1.5.8 * 모델 인포메이션에 personal note 항목을 추가, 검색에서 "@" 를 이용해서 검색가능 diff --git a/README.md b/README.md index d5837c8..5490188 100644 --- a/README.md +++ b/README.md @@ -67,6 +67,13 @@ Four folders and five JSON files will be created, each serving the following rol * CivitaiShortCutBackupUrl.json : JSON file for backing up the URL during shortcut registration. # Change Log +v 1.6.0 +* Adding NSFW Filter function +* Revamping prompt recipe +* Adding a tab to register reference models in the prompt recipe +* Enhancing the search function for prompt recipes +* Added a setting in the shortcut browser to allow users to change the position of the search bar to their desired location, either above or below the thumbnail list. + v 1.5.8 * Add a 'Personal Note' section to the model information, and make it searchable using '@' in the search. diff --git a/img/card-no-preview.png b/img/card-no-preview.png new file mode 100644 index 0000000000000000000000000000000000000000..e2beb2692067db56ac5f7bd5bfc3d895d9063371 GIT binary patch literal 84440 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 # Negative prompt: ng_deepnegative_v1_75t, badhandv4 (worst quality:2), (low quality:2), (normal quality:2), lowres, bad anatomy, bad hands, normal quality, ((monochrome)), ((grayscale)), ng_deepnegative_v1_75t, badhandv4 (worst quality:2), (low quality:2), (normal quality:2), lowres, bad anatomy, bad hands, normal quality, ((monochrome)), ((grayscale)), @@ -23,14 +27,15 @@ def on_ui(recipe_input, civitai_tabs): with gr.Column(scale=setting.shortcut_browser_screen_split_ratio): with gr.Tabs(): with gr.TabItem("Prompt Recipe List"): - recipe_classification_list = gr.Dropdown(label="Prompt Recipe Classification", choices=[setting.PLACEHOLDER] + recipe.get_classifications(), value=setting.PLACEHOLDER, interactive=True, multiselect=False) - recipe_list = gr.Dropdown(label="Prompt Recipe List", choices=[setting.NEWRECIPE] + recipe.get_list(), value=setting.NEWRECIPE, interactive=True, multiselect=None) - recipe_drop_image = gr.Image(type="pil", label="Drop image").style(height='100%') + recipe_new_btn = gr.Button(value="New Recipe", variant="primary") + recipe_list, recipe_gallery, refresh_recipe_browser = recipe_browser_page.on_ui() + with gr.TabItem("Generate Prompt From Image"): + recipe_drop_image = gr.Image(type="pil", label="Drop image").style(height='100%') with gr.Column(scale=(setting.shortcut_browser_screen_split_ratio_max-setting.shortcut_browser_screen_split_ratio)): with gr.Accordion(label=setting.NEWRECIPE, open=True) as recipe_title_name: with gr.Row(): - with gr.Column(scale=5): + with gr.Column(scale=4): recipe_name = gr.Textbox(label="Name", value="", interactive=True, lines=1, placeholder="Please enter the prompt recipe name.").style(container=True) recipe_desc = gr.Textbox(label="Description", value="",interactive=True, lines=3, placeholder="Please enter the prompt recipe description.").style(container=True, show_copy_button=True) recipe_prompt = gr.Textbox(label="Prompt", placeholder="Prompt", value="", lines=3 ,interactive=True).style(container=True, show_copy_button=True) @@ -50,32 +55,76 @@ def on_ui(recipe_input, civitai_tabs): recipe_update_btn = gr.Button(value="Update", variant="primary", visible=False) with gr.Accordion("Delete Prompt Recipe", open=False): recipe_delete_btn = gr.Button(value="Delete", variant="primary") - with gr.Column(scale=2): + with gr.Column(scale=2): gr.Markdown("###") - recipe_image = gr.Image(type="pil", interactive=True, label="Prompt recipe image").style(height='100%') - gr.Markdown("This image does not influence the prompt on the left. You can choose any image that matches the created prompt.") - # recipe_image_info = gr.Textbox(label="Ganerate Infomation", lines=6, visible=True) + with gr.Tabs(): + with gr.TabItem("Reference Image"): + recipe_image = gr.Image(type="pil", interactive=True, label="Prompt recipe image").style(height='100%') + gr.Markdown("This image does not influence the prompt on the left. You can choose any image that matches the created prompt.") + # recipe_image_info = gr.Textbox(label="Ganerate Infomation", lines=6, visible=True) + with gr.TabItem("Reference Models"): + reference_gallery = gr.Gallery(elem_id="reference_gallery", show_label=False).style(grid=[2], height="full", object_fit=setting.gallery_thumbnail_image_style, preview=False) + reference_delete = gr.Checkbox(label="Delete from references when selecting a thumbnail.", value=False) + with gr.Accordion("Add Reference Shortcut Items", open=False): + reference_sc_gallery, refresh_reference_sc_browser, refresh_reference_sc_gallery = sc_browser_page.on_ui() with gr.Row(visible=False): - refresh_recipe = gr.Textbox() - recipe_generate_data = gr.Textbox() + selected_recipe_name = gr.Textbox() + refresh_recipe = gr.Textbox() + recipe_generate_data = gr.Textbox() + + reference_shortcuts = gr.State() + refresh_reference_gallery = gr.Textbox() try: modules.generation_parameters_copypaste.bind_buttons(send_to_buttons, recipe_image, recipe_output) except: pass + + # reference shortcuts + reference_gallery.select( + fn=on_reference_gallery_select, + inputs=[ + reference_shortcuts, + reference_delete + ], + outputs=[ + reference_shortcuts, + refresh_reference_gallery, + reference_gallery, + shortcut_input + ], + show_progress=False + ) + + refresh_reference_gallery.change( + fn=on_reference_gallery_loading, + inputs=[ + reference_shortcuts, + ], + outputs=[ + reference_gallery + ], + show_progress=False + ) + + reference_sc_gallery.select( + fn=on_reference_sc_gallery_select, + inputs=[ + reference_shortcuts + ], + outputs=[ + reference_shortcuts, + refresh_reference_gallery, + ], + show_progress=False + ) + # reference shortcuts recipe_prompt.blur(generate_prompt,[recipe_prompt,recipe_negative,recipe_option],recipe_output) recipe_negative.blur(generate_prompt,[recipe_prompt,recipe_negative,recipe_option],recipe_output) recipe_option.blur(generate_prompt,[recipe_prompt,recipe_negative,recipe_option],recipe_output) - recipe_classification_list.change( - fn=on_recipe_classification_list_change, - inputs=recipe_classification_list, - outputs=[ - recipe_list - ] - ) - + # 이렇게 합시다. # send to reciepe -> recipe_input : input drop image, reciep image, call recipe_generate_data(drop image) -> recipe_generate_data: img info 생성 ,분석, 갱신 # drop image -> recipe_drop_image.upload(drop image) : reciep image, call recipe_generate_data(drop image) -> recipe_generate_data: img info 생성 ,분석, 갱신 @@ -101,6 +150,8 @@ def on_ui(recipe_input, civitai_tabs): recipe_input ], outputs=[ + selected_recipe_name, + recipe_drop_image, recipe_image, recipe_generate_data, @@ -108,13 +159,14 @@ def on_ui(recipe_input, civitai_tabs): civitai_tabs, # 새 레시피 상태로 만든다. - recipe_list, recipe_name, recipe_desc, recipe_classification, recipe_title_name, recipe_create_btn, - recipe_update_btn + recipe_update_btn, + reference_shortcuts, + refresh_reference_gallery ], cancels=recipe_drop_image_upload ) @@ -134,32 +186,42 @@ def on_ui(recipe_input, civitai_tabs): refresh_recipe.change( fn=on_refresh_recipe_change, - inputs=[ - recipe_classification_list, - recipe_list - ], + inputs=None, outputs=[ - recipe_classification_list, - recipe_list, - # recipe_name, - # recipe_desc, - # recipe_prompt, - # recipe_negative, - # recipe_option, - # recipe_output, - # recipe_classification, - # recipe_title_name, - # recipe_image, - # recipe_create_btn, - # recipe_update_btn + refresh_reference_sc_browser, + refresh_recipe_browser ], show_progress=False ) - recipe_list.select( - fn=on_recipe_list_select, + # recipe_list.select( + # fn=on_recipe_list_select, + # inputs=None, + # outputs=[ + # selected_recipe_name, + # recipe_name, + # recipe_desc, + # recipe_prompt, + # recipe_negative, + # recipe_option, + # recipe_output, + # recipe_classification, + # recipe_title_name, + # recipe_image, + # recipe_drop_image, + # recipe_create_btn, + # recipe_update_btn, + # reference_shortcuts, + # refresh_reference_gallery + # ], + # cancels=recipe_drop_image_upload + # ) + + recipe_gallery.select( + fn=on_recipe_gallery_select, inputs=None, outputs=[ + selected_recipe_name, recipe_name, recipe_desc, recipe_prompt, @@ -171,67 +233,90 @@ def on_ui(recipe_input, civitai_tabs): recipe_image, recipe_drop_image, recipe_create_btn, - recipe_update_btn + recipe_update_btn, + reference_shortcuts, + refresh_reference_gallery ], cancels=recipe_drop_image_upload + ) + + recipe_new_btn.click( + fn=on_recipe_new_btn_click, + inputs=None, + outputs=[ + selected_recipe_name, + recipe_name, + recipe_desc, + recipe_prompt, + recipe_negative, + recipe_option, + recipe_output, + recipe_classification, + recipe_title_name, + recipe_image, + recipe_drop_image, + recipe_create_btn, + recipe_update_btn, + reference_shortcuts, + refresh_reference_gallery + ] ) - + recipe_create_btn.click( fn=on_recipe_create_btn_click, inputs=[ - recipe_classification_list, recipe_name, recipe_desc, recipe_prompt, recipe_negative, recipe_option, recipe_classification, - recipe_image + recipe_image, + reference_shortcuts ], outputs=[ - recipe_classification_list, - recipe_list, + selected_recipe_name, recipe_classification, recipe_title_name, recipe_create_btn, - recipe_update_btn + recipe_update_btn, + refresh_recipe_browser ] ) recipe_update_btn.click( fn=on_recipe_update_btn_click, inputs=[ - recipe_classification_list, - recipe_list, + selected_recipe_name, recipe_name, recipe_desc, recipe_prompt, recipe_negative, recipe_option, recipe_classification, - recipe_image + recipe_image, + reference_shortcuts ], outputs=[ - recipe_classification_list, - recipe_list, + selected_recipe_name, recipe_classification, - recipe_title_name, + recipe_title_name, + refresh_recipe_browser ] ) recipe_delete_btn.click( fn=on_recipe_delete_btn_click, inputs=[ - recipe_classification_list, - recipe_list, + selected_recipe_name ], - outputs=[ - recipe_classification_list, - recipe_list, + outputs=[ + selected_recipe_name, recipe_classification, recipe_title_name, recipe_create_btn, - recipe_update_btn + recipe_update_btn, + refresh_recipe_browser ] ) @@ -329,17 +414,19 @@ def get_recipe_information(select_name): return description, Prompt, negativePrompt, options, gen_string, classification, imagefile def on_recipe_input_change(recipe_input): - if recipe_input: - current_time = datetime.datetime.now() - return recipe_input, recipe_input, current_time, None, gr.update(selected="Recipe"),\ - gr.update(value=setting.NEWRECIPE), gr.update(value=""), gr.update(value=""), \ + current_time = datetime.datetime.now() + if recipe_input: + return gr.update(value=""), recipe_input, recipe_input, current_time, None, gr.update(selected="Recipe"),\ + gr.update(value=""), gr.update(value=""), \ gr.update(choices=[setting.PLACEHOLDER] + recipe.get_classifications(), value=setting.PLACEHOLDER) ,gr.update(label=setting.NEWRECIPE),\ - gr.update(visible=True), gr.update(visible=False) + gr.update(visible=True), gr.update(visible=False),\ + None, current_time - return gr.update(visible=True),gr.update(visible=True),gr.update(visible=False),gr.update(visible=False),gr.update(selected="Recipe"),\ - gr.update(visible=True), gr.update(value=""), gr.update(value=""), \ + return gr.update(visible=False),gr.update(visible=True),gr.update(visible=True),gr.update(visible=False),gr.update(visible=False),gr.update(selected="Recipe"),\ + gr.update(value=""), gr.update(value=""), \ gr.update(choices=[setting.PLACEHOLDER] + recipe.get_classifications(), value=setting.PLACEHOLDER), gr.update(label=setting.NEWRECIPE),\ - gr.update(visible=True), gr.update(visible=False) + gr.update(visible=True), gr.update(visible=False),\ + None, current_time def on_recipe_drop_image_upload(recipe_img): if recipe_img: @@ -359,42 +446,50 @@ def on_recipe_generate_data_change(recipe_img): return gr.update(value=positivePrompt), gr.update(value=negativePrompt), gr.update(value=options), gr.update(value=gen_string) return gr.update(value=""), gr.update(value=""), gr.update(value=""), gr.update(value="") -def on_recipe_classification_list_change(recipe_classification): - if recipe_classification and recipe_classification != setting.PLACEHOLDER: - return gr.update(choices=[setting.NEWRECIPE] + recipe.get_list(recipe_classification)) - return gr.update(choices=[setting.NEWRECIPE] + recipe.get_list()) +def on_refresh_recipe_change(): + current_time = datetime.datetime.now() + return current_time, current_time -def on_refresh_recipe_change(selected_classification, select_name): - return gr.update(choices=[setting.PLACEHOLDER] + recipe.get_classifications()), gr.update(choices=[setting.NEWRECIPE] + recipe.get_list(selected_classification) if selected_classification != setting.PLACEHOLDER else recipe.get_list()) - -# def on_refresh_recipe_change(select_classification, select_name): -# if select_name != setting.NEWRECIPE: - -# description, Prompt, negativePrompt, options, gen_string, classification, imagefile = get_recipe_information(select_name) +# def on_recipe_list_select(evt: gr.SelectData): +# current_time = datetime.datetime.now() +# select_name = evt.value + +# description, Prompt, negativePrompt, options, gen_string, classification, imagefile = get_recipe_information(select_name) + +# if imagefile: # if not os.path.isfile(imagefile): # imagefile = None - -# return gr.update(choices=[setting.PLACEHOLDER] + recipe.get_classifications(), value=select_classification), gr.update(choices=[setting.NEWRECIPE] + recipe.get_list(select_classification) if select_classification != setting.PLACEHOLDER else recipe.get_list(), value=select_name),gr.update(value=select_name), gr.update(value=description), gr.update(value=Prompt), gr.update(value=negativePrompt), gr.update(value=options), gr.update(value=gen_string), gr.update(choices=[setting.PLACEHOLDER] + recipe.get_classifications(), value=classification) ,gr.update(label=select_name),imagefile,\ -# gr.update(visible=False), gr.update(visible=True) -# return gr.update(choices=[setting.PLACEHOLDER] + recipe.get_classifications(), value=select_classification), gr.update(choices=[setting.NEWRECIPE] + recipe.get_list(select_classification) if select_classification != setting.PLACEHOLDER else recipe.get_list(), value=setting.NEWRECIPE), gr.update(value=""), gr.update(value=""), gr.update(value=""), gr.update(value=""), gr.update(value=""), gr.update(value=""), gr.update(choices=[setting.PLACEHOLDER] + recipe.get_classifications(), value=setting.PLACEHOLDER), gr.update(label=setting.NEWRECIPE),None,\ -# gr.update(visible=True), gr.update(visible=False) + +# shortcuts = recipe.get_recipe_shortcuts(select_name) + +# return gr.update(value=select_name),gr.update(value=select_name),gr.update(value=description), gr.update(value=Prompt), gr.update(value=negativePrompt), gr.update(value=options), gr.update(value=gen_string), gr.update(choices=[setting.PLACEHOLDER] + recipe.get_classifications(), value=classification), gr.update(label=select_name),imagefile,None,\ +# gr.update(visible=False), gr.update(visible=True),\ +# shortcuts, current_time -def on_recipe_list_select(evt: gr.SelectData): - if evt.value != setting.NEWRECIPE: - select_name = evt.value +def on_recipe_gallery_select(evt: gr.SelectData): + current_time = datetime.datetime.now() + select_name = evt.value + + description, Prompt, negativePrompt, options, gen_string, classification, imagefile = get_recipe_information(select_name) + + if imagefile: + if not os.path.isfile(imagefile): + imagefile = None + + shortcuts = recipe.get_recipe_shortcuts(select_name) + + return gr.update(value=select_name),gr.update(value=select_name),gr.update(value=description), gr.update(value=Prompt), gr.update(value=negativePrompt), gr.update(value=options), gr.update(value=gen_string), gr.update(choices=[setting.PLACEHOLDER] + recipe.get_classifications(), value=classification), gr.update(label=select_name),imagefile,None,\ + gr.update(visible=False), gr.update(visible=True),\ + shortcuts, current_time + +def on_recipe_new_btn_click(): + current_time = datetime.datetime.now() + return gr.update(value=""),gr.update(value=""),gr.update(value=""), gr.update(value=""), gr.update(value=""), gr.update(value=""), gr.update(value=""), gr.update(choices=[setting.PLACEHOLDER] + recipe.get_classifications(), value=setting.PLACEHOLDER), gr.update(label=setting.NEWRECIPE), None, None,\ + gr.update(visible=True), gr.update(visible=False),\ + None, current_time - description, Prompt, negativePrompt, options, gen_string, classification, imagefile = get_recipe_information(select_name) - - if imagefile: - if not os.path.isfile(imagefile): - imagefile = None - - return gr.update(value=select_name),gr.update(value=description), gr.update(value=Prompt), gr.update(value=negativePrompt), gr.update(value=options), gr.update(value=gen_string), gr.update(choices=[setting.PLACEHOLDER] + recipe.get_classifications(), value=classification), gr.update(label=select_name),imagefile,None,\ - gr.update(visible=False), gr.update(visible=True) - return gr.update(value=""),gr.update(value=""), gr.update(value=""), gr.update(value=""), gr.update(value=""), gr.update(value=""), gr.update(choices=[setting.PLACEHOLDER] + recipe.get_classifications(), value=setting.PLACEHOLDER), gr.update(label=setting.NEWRECIPE), None, None,\ - gr.update(visible=True), gr.update(visible=False) - -def on_recipe_create_btn_click(selected_classification, recipe_name, recipe_desc, recipe_prompt, recipe_negative, recipe_option, recipe_classification, recipe_image=None): +def on_recipe_create_btn_click(recipe_name, recipe_desc, recipe_prompt, recipe_negative, recipe_option, recipe_classification, recipe_image=None, recipe_shortcuts=None): + current_time = datetime.datetime.now() s_classification = setting.PLACEHOLDER if recipe_name and len(recipe_name.strip()) > 0 and recipe_name != setting.NEWRECIPE: pmt = dict() @@ -421,20 +516,23 @@ def on_recipe_create_btn_click(selected_classification, recipe_name, recipe_desc recipe_imgfile = os.path.join(setting.shortcut_recipe_folder,unique_filename) recipe_image.save(recipe_imgfile) recipe.update_recipe_image(recipe_name,unique_filename) - - return gr.update(choices=[setting.PLACEHOLDER] + recipe.get_classifications()), gr.update(choices=[setting.NEWRECIPE] + recipe.get_list(selected_classification) if selected_classification != setting.PLACEHOLDER else recipe.get_list(), value=recipe_name),\ + recipe.update_recipe_shortcuts(recipe_name, recipe_shortcuts) + + return gr.update(value=recipe_name),\ gr.update(choices=[setting.PLACEHOLDER] + recipe.get_classifications(), value=s_classification), gr.update(label=recipe_name),\ - gr.update(visible=False),gr.update(visible=True) - return gr.update(visible=True), gr.update(visible=True), \ + gr.update(visible=False),gr.update(visible=True),\ + current_time + return gr.update(value=""),\ gr.update(choices=[setting.PLACEHOLDER] + recipe.get_classifications(), value=s_classification), gr.update(label=setting.NEWRECIPE),\ - gr.update(visible=True),gr.update(visible=False) + gr.update(visible=True),gr.update(visible=False),\ + gr.update(visible=False) -def on_recipe_update_btn_click(selected_classification, recipe_list, recipe_name ,recipe_desc, recipe_prompt, recipe_negative, recipe_option, recipe_classification, recipe_image=None): +def on_recipe_update_btn_click(select_name, recipe_name ,recipe_desc, recipe_prompt, recipe_negative, recipe_option, recipe_classification, recipe_image=None, recipe_shortcuts=None): chg_name = setting.NEWRECIPE s_classification = setting.PLACEHOLDER - if recipe_list and recipe_list != setting.NEWRECIPE and recipe_name and recipe_name != setting.NEWRECIPE: + if select_name and select_name != setting.NEWRECIPE and recipe_name and recipe_name != setting.NEWRECIPE: pmt = dict() pmt['prompt'] = recipe_prompt @@ -452,7 +550,7 @@ def on_recipe_update_btn_click(selected_classification, recipe_list, recipe_name recipe_classification = recipe_classification.strip() s_classification = recipe_classification - if recipe.update_recipe(recipe_list, recipe_name, recipe_desc, pmt, recipe_classification): + if recipe.update_recipe(select_name, recipe_name, recipe_desc, pmt, recipe_classification): chg_name = recipe_name if recipe_image: if not os.path.exists(setting.shortcut_recipe_folder): @@ -464,24 +562,77 @@ def on_recipe_update_btn_click(selected_classification, recipe_list, recipe_name else: recipe.update_recipe_image(recipe_name,None) - if not recipe.is_classifications(selected_classification): - selected_classification = setting.PLACEHOLDER - - return gr.update(choices=[setting.PLACEHOLDER] + recipe.get_classifications(), value=selected_classification), gr.update(choices=[setting.NEWRECIPE] + recipe.get_list(selected_classification) if selected_classification != setting.PLACEHOLDER else recipe.get_list(), value=chg_name), \ - gr.update(choices=[setting.PLACEHOLDER] + recipe.get_classifications(), value=s_classification), gr.update(label=chg_name) + recipe.update_recipe_shortcuts(recipe_name, recipe_shortcuts) + + current_time = datetime.datetime.now() + return gr.update(value=chg_name), gr.update(choices=[setting.PLACEHOLDER] + recipe.get_classifications(), value=s_classification), gr.update(label=chg_name), current_time -def on_recipe_delete_btn_click(selected_classification, select_name): - if select_name and select_name.strip() != setting.NEWRECIPE: +def on_recipe_delete_btn_click(select_name): + if select_name: recipe.delete_recipe(select_name) - - if not recipe.is_classifications(selected_classification): - selected_classification = setting.PLACEHOLDER - - return gr.update(choices=[setting.PLACEHOLDER] + recipe.get_classifications(), value=selected_classification), gr.update(choices=[setting.NEWRECIPE] + recipe.get_list(selected_classification) if selected_classification != setting.PLACEHOLDER else recipe.get_list(), value=setting.NEWRECIPE), \ + + current_time = datetime.datetime.now() + return gr.update(value=""),\ gr.update(choices=[setting.PLACEHOLDER] + recipe.get_classifications(), value=setting.PLACEHOLDER), gr.update(label=setting.NEWRECIPE),\ - gr.update(visible=True),gr.update(visible=False) - + gr.update(visible=True),gr.update(visible=False),\ + current_time + +# reference shortcuts +def on_reference_gallery_loading(shortcuts): + ISC = ishortcut.load() + if not ISC: + return None + shotcutlist = list() + + if shortcuts: + result_list = list() + for mid in shortcuts: + mid = str(mid) + if mid in ISC: + result_list.append(ISC[mid]) + + for v in result_list: + if v: + if ishortcut.is_sc_image(v['id']): + shotcutlist.append((os.path.join(setting.shortcut_thumbnail_folder,f"{v['id']}{setting.preview_image_ext}"),setting.set_shortcutname(v['name'],v['id']))) + else: + shotcutlist.append((setting.no_card_preview_image,setting.set_shortcutname(v['name'],v['id']))) + + return shotcutlist + +def on_reference_sc_gallery_select(evt: gr.SelectData, shortcuts): + clf = None + current_time = datetime.datetime.now() + + if evt.value: + + shortcut = evt.value + sc_model_id = setting.get_modelid_from_shortcutname(shortcut) + if not shortcuts: + shortcuts = list() + + if sc_model_id not in shortcuts: + shortcuts.append(sc_model_id) + + return shortcuts, current_time + return shortcuts, None + +def on_reference_gallery_select(evt: gr.SelectData, shortcuts, delete_opt=True): + if evt.value: + shortcut = evt.value + sc_model_id = setting.get_modelid_from_shortcutname(shortcut) + current_time = datetime.datetime.now() + + if not shortcuts: + shortcuts = list() + + if sc_model_id in shortcuts: + if delete_opt: + shortcuts.remove(sc_model_id) + + return shortcuts, current_time, None, gr.update(visible=False) if delete_opt else sc_model_id + return shortcuts, None, None, gr.update(visible=False) \ No newline at end of file diff --git a/scripts/civitai_manager_libs/recipe_browser_page.py b/scripts/civitai_manager_libs/recipe_browser_page.py new file mode 100644 index 0000000..604a29c --- /dev/null +++ b/scripts/civitai_manager_libs/recipe_browser_page.py @@ -0,0 +1,355 @@ +import gradio as gr +import math +import os +import datetime + +from . import util +from . import setting +from . import recipe +from . import ishortcut + +from PIL import Image + +def on_ui(): + + recipe_thumb_list, thumb_list , thumb_totals, thumb_max_page = get_recipe_list(None,None,None,1) + reference_list, reference_totals, reference_max_page = get_recipe_reference_list(1) + + recipe_list = gr.Dropdown(label="Recipe List", choices=recipe_thumb_list, interactive=True, multiselect=None, visible=False) + recipe_gallery_page = gr.Slider(minimum=1, maximum=thumb_max_page, value=1, step=1, label=f"Total {thumb_max_page} Pages", interactive=True, visible=True) + recipe_gallery = gr.Gallery(value=thumb_list, show_label=False).style(grid=[setting.shortcut_column], height="full", object_fit=setting.gallery_thumbnail_image_style, preview=False) + + with gr.Accordion(label="Search Recipe", open=True): + recipe_search = gr.Textbox(label="Search", value="", placeholder="Search name, #description ....",interactive=True, lines=1) + recipe_classification_list = gr.Dropdown(label="Filter Recipe Classification", choices=[setting.PLACEHOLDER] + recipe.get_classifications(), value=setting.PLACEHOLDER, interactive=True, multiselect=False) + + with gr.Accordion(label="Filter Reference Shortcut Items", open=False): + recipe_reference_select_gallery = gr.Gallery(elem_id="recipe_select_reference_gallery", label="Filter Reference Models").style(grid=[setting.shortcut_column], height="full", object_fit=setting.gallery_thumbnail_image_style, preview=False) + recipe_reference_gallery_page = gr.Slider(minimum=1, maximum=reference_max_page, value=1, step=1, label=f"Total {reference_max_page} Pages", interactive=True, visible=True) + recipe_reference_gallery = gr.Gallery(value=reference_list, show_label=False).style(grid=[setting.shortcut_column], height="full", object_fit=setting.gallery_thumbnail_image_style, preview=False) + + with gr.Row(visible=False): + # recipe_browser 갱신 트리거 + refresh_recipe_browser = gr.Textbox() + + # 강제 검색 트리거 + refresh_recipe_search = gr.Textbox() + + # recipe_reference_gallery 갱신 트리거 + refresh_recipe_reference_select_gallery = gr.Textbox() + + # 현재 선택된 리퍼런스를 저장하는 곳 + recipe_reference_select = gr.State() + + # recipe_reference_select_shortcuts_gallery 에서 선택할때 작용 + recipe_reference_select_gallery.select( + fn=on_recipe_reference_select_gallery_select, + inputs=[ + recipe_reference_select + ], + outputs=[ + recipe_reference_select, + recipe_reference_select_gallery, + refresh_recipe_reference_select_gallery, + ], + show_progress=False + ) + + # recipe_reference_select_gallery를 recipe_reference_select 값에서 갱신 + refresh_recipe_reference_select_gallery.change( + fn=on_recipe_reference_select_gallery_loading, + inputs=[ + recipe_reference_select, + ], + outputs=[ + recipe_reference_select_gallery, + refresh_recipe_search + ], + show_progress=False + ) + + # recipe_reference_shortcuts_gallery를 선택할때 작용 + recipe_reference_gallery.select( + fn=on_recipe_reference_gallery_select, + inputs=[ + recipe_reference_select + ], + outputs=[ + recipe_reference_select, + refresh_recipe_reference_select_gallery, + ], + show_progress=False + ) + + recipe_reference_gallery_page.release( + fn = on_recipe_reference_gallery_page, + inputs = [ + recipe_reference_gallery_page + ], + outputs=[ + recipe_reference_gallery, + refresh_recipe_reference_select_gallery + ] + ) + + #============================== + + recipe_gallery_page.release( + fn = on_recipe_gallery_page, + inputs = [ + recipe_search, + recipe_classification_list, + recipe_reference_select, + recipe_gallery_page + ], + outputs=[ + recipe_gallery + ] + ) + + refresh_recipe_search.change( + fn=on_recipe_list_search, + inputs=[ + recipe_search, + recipe_classification_list, + recipe_reference_select + ], + outputs=[ + recipe_list, + recipe_gallery + ] + ) + + refresh_recipe_browser.change( + fn=on_refresh_recipe_browser_change, + inputs= [ + recipe_search, + recipe_classification_list, + recipe_reference_select, + recipe_gallery_page, + + recipe_reference_gallery_page + ], + outputs=[ + recipe_classification_list, + recipe_list, + recipe_gallery, + recipe_gallery_page, + + recipe_reference_gallery, + recipe_reference_gallery_page + ], + show_progress=False + ) + + recipe_search.submit( + fn=on_recipe_list_search, + inputs=[ + recipe_search, + recipe_classification_list, + recipe_reference_select + ], + outputs=[ + recipe_list, + recipe_gallery + ] + ) + + recipe_classification_list.change( + fn=on_recipe_list_search, + inputs=[ + recipe_search, + recipe_classification_list, + recipe_reference_select + ], + outputs=[ + recipe_list, + recipe_gallery + ] + ) + + return recipe_list, recipe_gallery, refresh_recipe_browser + +def on_recipe_reference_gallery_page(page): + reference_list, reference_totals, reference_max_page = get_recipe_reference_list(page) + return gr.update(value=reference_list), reference_list + +def on_recipe_gallery_page(search, classification, shortcut, page = 0): + recipe_thumb_list, thumb_list , thumb_totals, thumb_max_page = get_recipe_list(search, classification, shortcut,page) + return gr.update(value=thumb_list) + +def get_recipe_reference_list(page = 0): + + total = 0 + max_page = 1 + shortlist = None + result = None + + reference_list = recipe.get_reference_shortcuts() + + if not reference_list: + return None, total, max_page + + if reference_list: + total = len(reference_list) + shortlist = reference_list + + if total > 0: + # page 즉 페이징이 아닌 전체가 필요할때도 총페이지 수를 구할때도 있으므로.. + # page == 0 은 전체 리스트를 반환한다 + if setting.shortcut_count_per_page > 0: + max_page = math.ceil(total / setting.shortcut_count_per_page) + + if page > 0 and setting.shortcut_count_per_page > 0: + item_start = setting.shortcut_count_per_page * (page - 1) + item_end = (setting.shortcut_count_per_page * page) + if total < item_end: + item_end = total + + shortlist = reference_list[item_start:item_end] + + if shortlist: + result = list() + for shortcut in shortlist: + v = ishortcut.get_shortcut_model(str(shortcut)) + if v: + if ishortcut.is_sc_image(v['id']): + result.append((os.path.join(setting.shortcut_thumbnail_folder,f"{v['id']}{setting.preview_image_ext}"), setting.set_shortcutname(v['name'],v['id']))) + else: + result.append((setting.no_card_preview_image,setting.set_shortcutname(v['name'],v['id']))) + + return result, total, max_page + +def get_recipe_list(search=None, classification=None, shortcut=None, page = 0): + + total = 0 + max_page = 1 + shortlist = None + result = None + txtlist = list() + + if classification == setting.PLACEHOLDER: + classification = None + + recipe_list = recipe.get_list(search, classification, shortcut) + + if not recipe_list: + return txtlist, None, total, max_page + + if recipe_list: + total = len(recipe_list) + shortlist = recipe_list + + if total > 0: + # page 즉 페이징이 아닌 전체가 필요할때도 총페이지 수를 구할때도 있으므로.. + # page == 0 은 전체 리스트를 반환한다 + if setting.shortcut_count_per_page > 0: + max_page = math.ceil(total / setting.shortcut_count_per_page) + + if page > 0 and setting.shortcut_count_per_page > 0: + item_start = setting.shortcut_count_per_page * (page - 1) + item_end = (setting.shortcut_count_per_page * page) + if total < item_end: + item_end = total + shortlist = recipe_list[item_start:item_end] + + if shortlist: + result = list() + txtlist = list() + for shortcut in shortlist: + re = recipe.get_recipe(shortcut) + if re: + if re["image"]: + dpimage = os.path.join(setting.shortcut_recipe_folder,f"{re['image']}") + + if os.path.isfile(dpimage): + result.append((dpimage,shortcut)) + else: + result.append((setting.no_card_preview_image,shortcut)) + else: + result.append((setting.no_card_preview_image,shortcut)) + txtlist.append(shortcut) + + return txtlist, result, total, max_page + +def on_recipe_list_search(search, classification, shortcut): + thumb_list = None + thumb_totals = 0 + thumb_max_page = 1 + + recipe_thumb_list, thumb_list , thumb_totals, thumb_max_page = get_recipe_list(search, classification, shortcut,1) + + return gr.update(choices=recipe_thumb_list), gr.update(value=thumb_list) + +def on_refresh_recipe_browser_change(search, classification, shortcut, sc_page, rs_page): + thumb_list = None + thumb_totals = 0 + thumb_max_page = 1 + + recipe_thumb_list, thumb_list , thumb_totals, thumb_max_page = get_recipe_list(search, classification, shortcut, sc_page) + + if not recipe.is_classifications(classification): + classification = setting.PLACEHOLDER + + reference_list, reference_totals, reference_max_page = get_recipe_reference_list(rs_page) + return gr.update(choices=[setting.PLACEHOLDER] + recipe.get_classifications(), value=classification), gr.update(choices=recipe_thumb_list), gr.update(value=thumb_list), gr.update(minimum=1, maximum=thumb_max_page, value=sc_page, step=1, label=f"Total {thumb_max_page} Pages"), \ + reference_list, gr.update(minimum=1, maximum=reference_max_page, value=rs_page, step=1, label=f"Total {reference_max_page} Pages") + +def on_recipe_reference_select_gallery_select(evt: gr.SelectData, shortcuts): + if evt.value: + shortcut = evt.value + sc_model_id = setting.get_modelid_from_shortcutname(shortcut) + current_time = datetime.datetime.now() + + if not shortcuts: + shortcuts = list() + + if sc_model_id in shortcuts: + shortcuts.remove(sc_model_id) + + return shortcuts, None, current_time + return shortcuts, None, None + +def on_recipe_reference_select_gallery_loading(shortcuts): + ISC = ishortcut.load() + if not ISC: + return None, gr.update(visible=False) + + shotcutlist = list() + + if shortcuts: + result_list = list() + for mid in shortcuts: + mid = str(mid) + if mid in ISC: + result_list.append(ISC[mid]) + + for v in result_list: + if v: + if ishortcut.is_sc_image(v['id']): + shotcutlist.append((os.path.join(setting.shortcut_thumbnail_folder,f"{v['id']}{setting.preview_image_ext}"),setting.set_shortcutname(v['name'],v['id']))) + else: + shotcutlist.append((setting.no_card_preview_image,setting.set_shortcutname(v['name'],v['id']))) + + current_time = datetime.datetime.now() + + return shotcutlist, current_time + +def on_recipe_reference_gallery_select(evt: gr.SelectData, shortcuts): + clf = None + current_time = datetime.datetime.now() + + if evt.value: + + shortcut = evt.value + sc_model_id = setting.get_modelid_from_shortcutname(shortcut) + + if not shortcuts: + shortcuts = list() + + if sc_model_id not in shortcuts: + shortcuts.append(str(sc_model_id)) + + return shortcuts, current_time + return shortcuts, None + diff --git a/scripts/civitai_manager_libs/sc_browser_page.py b/scripts/civitai_manager_libs/sc_browser_page.py index 879d725..9288976 100644 --- a/scripts/civitai_manager_libs/sc_browser_page.py +++ b/scripts/civitai_manager_libs/sc_browser_page.py @@ -96,18 +96,32 @@ def on_sc_gallery_page(sc_types, sc_search, sc_basemodels, sc_classifications, s def on_ui(): thumb_list , thumb_totals, thumb_max_page = get_thumbnail_list(None,False,None,None,None,1) - - with gr.Accordion("Search", open=True): - shortcut_type = gr.Dropdown(label='Filter Model Type', multiselect=True, choices=[k for k in setting.ui_typenames], interactive=True) - sc_search = gr.Textbox(label="Search", value="", placeholder="Search name, #tags, @personal note ....",interactive=True, lines=1) - sc_classification_list = gr.Dropdown(label='Classification',info="The selection options of classification are subject to the AND operation.", multiselect=True, choices=classification.get_list(), interactive=True) - shortcut_basemodel = gr.Dropdown(label='Filter Model BaseModel', multiselect=True, choices=[k for k in setting.model_basemodels], interactive=True) - show_downloaded_sc = gr.Checkbox(label="Show downloaded model's shortcut only", value=False) - # show_downloaded_sc = gr.Dropdown(label='Filter Downloaded Model View', multiselect=False, choices=[ALL_DOWNLOADED_MODEL,DOWNLOADED_MODEL,NOT_DOWNLOADED_MODEL], value=ALL_DOWNLOADED_MODEL, interactive=True) + + if setting.shortcut_browser_search_up: + with gr.Accordion("Search", open=True): + shortcut_type = gr.Dropdown(label='Filter Model Type', multiselect=True, choices=[k for k in setting.ui_typenames], interactive=True) + sc_search = gr.Textbox(label="Search", value="", placeholder="Search name, #tags, @personal note ....",interactive=True, lines=1) + sc_classification_list = gr.Dropdown(label='Classification',info="The selection options of classification are subject to the AND operation.", multiselect=True, choices=classification.get_list(), interactive=True) + shortcut_basemodel = gr.Dropdown(label='Filter Model BaseModel', multiselect=True, choices=[k for k in setting.model_basemodels], interactive=True) + show_downloaded_sc = gr.Checkbox(label="Show downloaded model's shortcut only", value=False) + # show_downloaded_sc = gr.Dropdown(label='Filter Downloaded Model View', multiselect=False, choices=[ALL_DOWNLOADED_MODEL,DOWNLOADED_MODEL,NOT_DOWNLOADED_MODEL], value=ALL_DOWNLOADED_MODEL, interactive=True) + + sc_gallery_page = gr.Slider(minimum=1, maximum=thumb_max_page, value=1, step=1, label=f"Total {thumb_max_page} Pages", interactive=True, visible=True if setting.shortcut_count_per_page > 0 else False) + # elem_id 를 안써줘야 옆의 인포와 연동이 안된다. 인포쪽에는 써줘야 할것.... + sc_gallery = gr.Gallery(show_label=False, value=thumb_list).style(grid=[setting.shortcut_column], height=["fit" if setting.shortcut_count_per_page != 0 else "auto"], object_fit=setting.gallery_thumbnail_image_style) + else: + sc_gallery_page = gr.Slider(minimum=1, maximum=thumb_max_page, value=1, step=1, label=f"Total {thumb_max_page} Pages", interactive=True, visible=True if setting.shortcut_count_per_page > 0 else False) + # elem_id 를 안써줘야 옆의 인포와 연동이 안된다. 인포쪽에는 써줘야 할것.... + sc_gallery = gr.Gallery(show_label=False, value=thumb_list).style(grid=[setting.shortcut_column], height=["fit" if setting.shortcut_count_per_page != 0 else "auto"], object_fit=setting.gallery_thumbnail_image_style) - sc_gallery_page = gr.Slider(minimum=1, maximum=thumb_max_page, value=1, step=1, label=f"Total {thumb_max_page} Pages", interactive=True, visible=True if setting.shortcut_count_per_page > 0 else False) - # elem_id 를 안써줘야 옆의 인포와 연동이 안된다. 인포쪽에는 써줘야 할것.... - sc_gallery = gr.Gallery(show_label=False, value=thumb_list).style(grid=[setting.shortcut_column], height=["fit" if setting.shortcut_count_per_page != 0 else "auto"], object_fit=setting.gallery_thumbnail_image_style) + with gr.Accordion("Search", open=True): + shortcut_type = gr.Dropdown(label='Filter Model Type', multiselect=True, choices=[k for k in setting.ui_typenames], interactive=True) + sc_search = gr.Textbox(label="Search", value="", placeholder="Search name, #tags, @personal note ....",interactive=True, lines=1) + sc_classification_list = gr.Dropdown(label='Classification',info="The selection options of classification are subject to the AND operation.", multiselect=True, choices=classification.get_list(), interactive=True) + shortcut_basemodel = gr.Dropdown(label='Filter Model BaseModel', multiselect=True, choices=[k for k in setting.model_basemodels], interactive=True) + show_downloaded_sc = gr.Checkbox(label="Show downloaded model's shortcut only", value=False) + # show_downloaded_sc = gr.Dropdown(label='Filter Downloaded Model View', multiselect=False, choices=[ALL_DOWNLOADED_MODEL,DOWNLOADED_MODEL,NOT_DOWNLOADED_MODEL], value=ALL_DOWNLOADED_MODEL, interactive=True) + with gr.Row(visible=False): refresh_sc_browser = gr.Textbox() diff --git a/scripts/civitai_manager_libs/setting.py b/scripts/civitai_manager_libs/setting.py index e25d36c..005e949 100644 --- a/scripts/civitai_manager_libs/setting.py +++ b/scripts/civitai_manager_libs/setting.py @@ -12,7 +12,7 @@ extension_base = scripts.basedir() headers={'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36 Edg/112.0.1722.68'} Extensions_Name = "Civitai Shortcut" -Extensions_Version = "v 1.5.8" +Extensions_Version = "v 1.6.0" PLACEHOLDER = "[No Select]" NORESULT = "[No Result]" @@ -24,7 +24,7 @@ CREATE_MODEL_FOLDER = "Create a model folder to download the model" model_exts = (".bin", ".pt", ".safetensors", ".ckpt") -model_basemodels = ("SD 1.4", "SD 1.5", "SD 2.0", "SD 2.0 768", "SD 2.1", "SD 2.1 768", "SD 2.1 Unclip", "SDXL 0.9", "Other") +model_basemodels = ("SD 1.4", "SD 1.5", "SD 2.0", "SD 2.0 768", "SD 2.1", "SD 2.1 768", "SD 2.1 Unclip", "SDXL 0.9", "SDXL 1.0", "Other") # civitai model type -> folder path model_folders = { @@ -101,6 +101,8 @@ information_gallery_height = "auto" # auto , fit shortcut_browser_screen_split_ratio = 3 shortcut_browser_screen_split_ratio_max = 10 +shortcut_browser_search_up = False + # 갤러리 ui설정 gallery_column = 7 shortcut_column = 5 @@ -135,9 +137,65 @@ shortcut_info_folder = "sc_infos" shortcut_gallery_folder = "sc_gallery" no_card_preview_image = os.path.join(root_path,"html","card-no-preview.png") +nsfw_disable_image = os.path.join(extension_base,"img","nsfw-no-preview.png") + +NSFW_filtering_enable = True +NSFW_level = { "None":True, "Soft":False, "Mature":False, "X":False } # None, Soft, Mature, X shortcut_env = dict() +def set_NSFW(enable, level="None"): + global NSFW_filtering_enable + global NSFW_level + + NSFW_filtering_enable = enable + + if level == "Soft": + NSFW_level["None"] = True + NSFW_level["Soft"] = True + NSFW_level["Mature"] = False + NSFW_level["X"] = False + elif level == "Mature": + NSFW_level["None"] = True + NSFW_level["Soft"] = True + NSFW_level["Mature"] = True + NSFW_level["X"] = False + elif level == "X": + NSFW_level["None"] = True + NSFW_level["Soft"] = True + NSFW_level["Mature"] = True + NSFW_level["X"] = True + else: + # level == 1 + NSFW_level["None"] = True + NSFW_level["Soft"] = False + NSFW_level["Mature"] = False + NSFW_level["X"] = False + +def get_NSFW_Level(): + prev = "None" + for level, v in NSFW_level.items(): + if not v: + return prev + else: + prev = level + + return prev + +def save_NSFW(): + global NSFW_filtering_enable + + environment = load() + if not environment: + environment = dict() + + nsfw_filter = dict() + nsfw_filter['nsfw_filter_enable'] = NSFW_filtering_enable + nsfw_filter['nsfw_level'] = get_NSFW_Level() + environment['NSFW_filter'] = nsfw_filter + + save(environment) + def init(): global extension_base @@ -162,7 +220,7 @@ def init(): shortcut_recipe_folder = os.path.join(extension_base,shortcut_recipe_folder) shortcut_info_folder = os.path.join(extension_base,shortcut_info_folder) shortcut_gallery_folder = os.path.join(extension_base,shortcut_gallery_folder) - + load_data() def load_data(): @@ -176,7 +234,8 @@ def load_data(): global usergallery_images_page_limit global shortcut_max_download_image_per_version global gallery_thumbnail_image_style - + global shortcut_browser_search_up + global download_images_folder global shortcut_browser_screen_split_ratio global information_gallery_height @@ -198,7 +257,15 @@ def load_data(): environment = load() if environment: + if "NSFW_filter" in environment.keys(): + nsfw_filter = environment['NSFW_filter'] + filtering_enable = True + if 'nsfw_filter_enable' in nsfw_filter.keys(): + filtering_enable = bool(nsfw_filter['nsfw_filter_enable']) + if 'nsfw_level' in nsfw_filter.keys(): + set_NSFW(filtering_enable, nsfw_filter['nsfw_level']) + if "application_allow" in environment.keys(): application_allow = environment['application_allow'] @@ -217,6 +284,8 @@ def load_data(): information_gallery_height = screen_style['information_gallery_height'] if "gallery_thumbnail_image_style" in screen_style.keys(): gallery_thumbnail_image_style = screen_style['gallery_thumbnail_image_style'] + if "shortcut_browser_search_up" in screen_style.keys(): + shortcut_browser_search_up = bool(screen_style['shortcut_browser_search_up']) if "image_style" in environment.keys(): image_style = environment['image_style'] diff --git a/scripts/civitai_manager_libs/setting_action.py b/scripts/civitai_manager_libs/setting_action.py index 7c12d08..2f873ad 100644 --- a/scripts/civitai_manager_libs/setting_action.py +++ b/scripts/civitai_manager_libs/setting_action.py @@ -9,7 +9,6 @@ from . import setting from modules import scripts, script_callbacks, shared def on_setting_ui(): - with gr.Column(): with gr.Row(): with gr.Accordion("Option", open=False): @@ -25,7 +24,8 @@ def on_setting_ui(): with gr.Row(): info_gallery_height = gr.Dropdown(choices=["auto","fit"], value=setting.information_gallery_height, allow_custom_value=True, interactive=True, info="You can also specify a specific size other than 'auto' or 'fit'" , label="Information Gallery Height") gallery_thumbnail_image_style = gr.Dropdown(choices=["scale-down","cover","contain","fill","none"], value=setting.gallery_thumbnail_image_style, interactive=True, info="This specifies the shape of the displayed thumbnail." , label="Gallery Thumbnail Image Style") - + shortcut_browser_search_up = gr.Dropdown(choices=["Up","Down"], value="Up" if setting.shortcut_browser_search_up else "Down", interactive=True, label="Set the position of the search bar in the shortcut browser.", info="If you select 'Up', the search bar will be placed above the thumbnail pane.") + with gr.Row(): with gr.Accordion("Shortcut Browser and Information Images", open=False): with gr.Row(): @@ -79,6 +79,7 @@ def on_setting_ui(): usergallery_images_page_limit, shortcut_max_download_image_per_version, gallery_thumbnail_image_style, + shortcut_browser_search_up, extension_locon_folder, extension_wildcards_folder, extension_controlnet_folder, @@ -86,7 +87,7 @@ def on_setting_ui(): extension_poses_folder, extension_other_folder, download_images_folder, - classification_preview_mode_disable + classification_preview_mode_disable ], show_progress=False ) @@ -120,6 +121,7 @@ def on_setting_ui(): usergallery_images_page_limit, shortcut_max_download_image_per_version, gallery_thumbnail_image_style, + shortcut_browser_search_up, extension_locon_folder, extension_wildcards_folder, extension_controlnet_folder, @@ -140,6 +142,7 @@ def on_save_btn_click(shortcut_update_when_start, gallery_column, classification_gallery_column, usergallery_images_column, usergallery_images_page_limit, shortcut_max_download_image_per_version, gallery_thumbnail_image_style, + shortcut_browser_search_up, locon,wildcards,controlnet,aestheticgradient,poses,other,download_images_folder, classification_preview_mode_disable ): @@ -150,6 +153,7 @@ def on_save_btn_click(shortcut_update_when_start, gallery_column, classification_gallery_column, usergallery_images_column, usergallery_images_page_limit, shortcut_max_download_image_per_version, gallery_thumbnail_image_style, + shortcut_browser_search_up, locon,wildcards,controlnet,aestheticgradient,poses,other,download_images_folder, classification_preview_mode_disable ) @@ -160,12 +164,15 @@ def save_setting(shortcut_update_when_start, gallery_column, classification_gallery_column, usergallery_images_column, usergallery_images_page_limit, shortcut_max_download_image_per_version, gallery_thumbnail_image_style, + shortcut_browser_search_up, locon,wildcards,controlnet,aestheticgradient,poses,other,download_images_folder, classification_preview_mode_disable ): - environment = dict() - + environment = setting.load() + if not environment: + environment = dict() + application_allow = dict() application_allow['shortcut_update_when_start'] = shortcut_update_when_start application_allow['shortcut_max_download_image_per_version'] = shortcut_max_download_image_per_version @@ -175,6 +182,7 @@ def save_setting(shortcut_update_when_start, screen_style['shortcut_browser_screen_split_ratio'] = scbrowser_screen_split_ratio screen_style['information_gallery_height'] = info_gallery_height screen_style['gallery_thumbnail_image_style'] = gallery_thumbnail_image_style + screen_style['shortcut_browser_search_up'] = True if shortcut_browser_search_up == "Up" else False environment['screen_style'] = screen_style image_style = dict() @@ -256,6 +264,7 @@ def on_refresh_setting_change(): setting.usergallery_images_page_limit,\ setting.shortcut_max_download_image_per_version,\ setting.gallery_thumbnail_image_style,\ + "Up" if setting.shortcut_browser_search_up else "Down",\ setting.model_folders['LoCon'],\ setting.model_folders['Wildcards'],\ setting.model_folders['Controlnet'],\ diff --git a/scripts/civitai_shortcut.py b/scripts/civitai_shortcut.py index d7a4583..66decd0 100644 --- a/scripts/civitai_shortcut.py +++ b/scripts/civitai_shortcut.py @@ -43,13 +43,15 @@ def civitai_shortcut_ui(): with gr.Tabs(elem_id="civitai_shortcut_tabs_container") as civitai_tabs: with gr.Row(visible=False): recipe_input = gr.Textbox() + shortcut_input = gr.Textbox() + with gr.TabItem("Civitai Shortcut" , id="Shortcut"): with gr.Row(): - refresh_civitai_sc_browser, refresh_civitai_information = civitai_shortcut_action.on_ui(recipe_input) + refresh_civitai_sc_browser, refresh_civitai_information = civitai_shortcut_action.on_ui(recipe_input, shortcut_input, civitai_tabs) with gr.TabItem("Prompt Recipe" , id="Recipe"): with gr.Row(): - refresh_recipe = recipe_action.on_ui(recipe_input, civitai_tabs) + refresh_recipe = recipe_action.on_ui(recipe_input, shortcut_input, civitai_tabs) with gr.TabItem("Assistance" , id="Assistance"): with gr.Tabs() as civitai_assistance_tabs: