diff --git a/scripts/dataset_tag_editor/filters.py b/scripts/dataset_tag_editor/filters.py index 191b472..de069f7 100644 --- a/scripts/dataset_tag_editor/filters.py +++ b/scripts/dataset_tag_editor/filters.py @@ -52,6 +52,8 @@ class TagFilter(Dataset.Filter): return dataset def __str__(self): + if len(self.tags) == 0: + return '' res = '' if self.mode == TagFilter.Mode.EXCLUSIVE: res += 'NOT ' diff --git a/scripts/main.py b/scripts/main.py index 2a4a84c..e9cdea3 100644 --- a/scripts/main.py +++ b/scripts/main.py @@ -31,7 +31,7 @@ def arrange_tag_order(tags: List[str], sort_by: str, sort_order: str) -> List[st def get_current_txt_filter(): return f""" Displayed Images : {displayed_image_num} / {total_image_num} total
- Current Tag Filter : {tag_filter} AND {tag_filter_neg}
+ Current Tag Filter : {tag_filter} {'' if not tag_filter_neg.tags else f'AND {tag_filter_neg}'}
Current Selection Filter : {current_selection} images
Selected Image : {gallery_selected_image_path} """ @@ -76,18 +76,18 @@ def load_files_from_dir(dir: str, sort_by: str, sort_order: str, recursive: bool def search_tags(filter_word: str, sort_by: str, sort_order: str): - filter_tags = dataset_tag_editor.read_tags(filter_tags) _, tags = dataset_tag_editor.get_filtered_imgpath_and_tags(filters=[path_filter, tag_filter, tag_filter_neg], filter_word=filter_word) tags = arrange_tag_order(tags, sort_by=sort_by, sort_order=sort_order) return gr.CheckboxGroup.update(choices=dataset_tag_editor.write_tags(tags)) def clear_tag_filters(sort_by, sort_order): - return filter_gallery(filter_tags=[], filter_word='', sort_by=sort_by, sort_order=sort_order) + [''] + global tag_filter + tag_filter = TagFilter() + return filter_gallery(filter_word='', sort_by=sort_by, sort_order=sort_order) + [''] def rearrange_tag_order(filter_word: str, sort_by: str, sort_order: str): - filter_tags = dataset_tag_editor.read_tags(filter_tags) _, tags = dataset_tag_editor.get_filtered_imgpath_and_tags(filters=[path_filter, tag_filter, tag_filter_neg], filter_word=filter_word) tags = arrange_tag_order(tags=tags, sort_by=sort_by, sort_order=sort_order) return gr.CheckboxGroup.update(choices=dataset_tag_editor.write_tags(tags)) @@ -125,12 +125,14 @@ def filter_gallery(filter_word: str, sort_by: str, sort_order: str): ] -def apply_edit_tags(edit_tags: str, filter_tags: List[str], prepend: bool, filter_word: str, sort_by: str, sort_order: str): +def apply_edit_tags(filter_tags: str, edit_tags: str, prepend: bool, filter_word: str, sort_by: str, sort_order: str): + global tag_filter replace_tags = [t.strip() for t in edit_tags.split(',')] filter_tags = dataset_tag_editor.read_tags(filter_tags) - dataset_tag_editor.replace_tags(search_tags = filter_tags, replace_tags = replace_tags, filter_tags = filter_tags, prepend = prepend) + tag_filter = TagFilter(set(filter_tags), TagFilter.Logic.AND, TagFilter.Mode.INCLUSIVE) + dataset_tag_editor.replace_tags(search_tags = filter_tags, replace_tags = replace_tags, filters = [path_filter, tag_filter, tag_filter_neg], prepend = prepend) replace_tags = [t for t in replace_tags if t] - return filter_gallery(filter_tags = replace_tags, filter_word = filter_word, sort_by=sort_by, sort_order=sort_order) + return filter_gallery(filter_word = filter_word, sort_by=sort_by, sort_order=sort_order) def save_all_changes(backup: bool) -> str: @@ -246,7 +248,6 @@ def gallery_index_changed(idx: int): def change_tags_selected_image(tags_text: str, sort_by: str, sort_order: str, idx: int): idx = int(idx) - filter_tags = dataset_tag_editor.read_tags(filter_tags) img_paths, _ = dataset_tag_editor.get_filtered_imgpath_and_tags(filters=[tag_filter, tag_filter_neg]) edited_tags = [t.strip() for t in tags_text.split(',')] @@ -416,7 +417,7 @@ def on_ui_tabs(): cbg_tags.change( fn=filter_gallery_by_checkbox, inputs=[cbg_tags, tb_search_tags, rd_sort_by, rd_sort_order], - outputs=[gl_dataset_images, tb_selected_tags, cbg_tags, tb_edit_tags, lbl_hidden_image_index, txt_filter] + outputs=[gl_dataset_images, cbg_tags, tb_selected_tags, tb_edit_tags, lbl_hidden_image_index, txt_filter] ) rd_sort_by.change( @@ -439,14 +440,14 @@ def on_ui_tabs(): btn_apply_edit_tags.click( fn=apply_edit_tags, - inputs=[tb_edit_tags, cb_prepend_tags, tb_search_tags, rd_sort_by, rd_sort_order], - outputs=[gl_dataset_images, tb_selected_tags, tb_edit_tags, lbl_hidden_image_index, txt_filter] + inputs=[cbg_tags, tb_edit_tags, cb_prepend_tags, tb_search_tags, rd_sort_by, rd_sort_order], + outputs=[gl_dataset_images, cbg_tags, tb_selected_tags, tb_edit_tags, lbl_hidden_image_index, txt_filter] ) btn_clear_tag_filters.click( fn=clear_tag_filters, inputs=[rd_sort_by, rd_sort_order], - outputs=[gl_dataset_images, tb_selected_tags, tb_edit_tags, lbl_hidden_image_index, txt_filter, tb_search_tags] + outputs=[gl_dataset_images, cbg_tags, tb_selected_tags, tb_edit_tags, lbl_hidden_image_index, txt_filter, tb_search_tags] ) btn_clear_all_filters.click( @@ -458,7 +459,7 @@ def on_ui_tabs(): btn_clear_all_filters.click( fn=clear_tag_filters, inputs=[rd_sort_by, rd_sort_order], - outputs=[gl_dataset_images, tb_selected_tags, tb_edit_tags, lbl_hidden_image_index, txt_filter, tb_search_tags] + outputs=[gl_dataset_images, cbg_tags, tb_selected_tags, tb_edit_tags, lbl_hidden_image_index, txt_filter, tb_search_tags] ) #---------------------------------------------------------------- @@ -473,7 +474,7 @@ def on_ui_tabs(): btn_add_image_selection.click( fn=add_image_selection, - _js="(x, y) => [x, dataset_tag_editor_gl_dataset_images_selected_index()]", + _js="(x) => [dataset_tag_editor_gl_dataset_images_selected_index()]", inputs=[lbl_hidden_image_index], outputs=[gl_selected_images, lbl_hidden_image_index] ) @@ -506,7 +507,7 @@ def on_ui_tabs(): btn_apply_image_selection_filter.click( fn=apply_image_selection_filter, inputs=[tb_search_tags, rd_sort_by, rd_sort_order], - outputs=[gl_dataset_images, tb_selected_tags, cbg_tags, tb_edit_tags, lbl_hidden_image_index, txt_filter] + outputs=[gl_dataset_images, cbg_tags, tb_selected_tags, tb_edit_tags, lbl_hidden_image_index, txt_filter] ) #---------------------------------------------------------------- @@ -514,7 +515,7 @@ def on_ui_tabs(): btn_hidden_set_index.click( fn=gallery_index_changed, - _js="(x, y) => [x, dataset_tag_editor_gl_dataset_images_selected_index()]", + _js="(x) => [dataset_tag_editor_gl_dataset_images_selected_index()]", inputs=lbl_hidden_image_index, outputs=[tb_caption_selected_image, txt_filter, lbl_hidden_image_index] ) @@ -570,7 +571,7 @@ def on_ui_tabs(): btn_apply_changes_selected_image.click( fn=change_tags_selected_image, - _js="(a, b, c, d, e) => [a, b, c, d, dataset_tag_editor_gl_dataset_images_selected_index()]", + _js="(a, b, c, d) => [a, b, c, dataset_tag_editor_gl_dataset_images_selected_index()]", inputs=[tb_edit_caption_selected_image, rd_sort_by, rd_sort_order, lbl_hidden_image_index], outputs=[lbl_hidden_image_index] )