aboutsummaryrefslogtreecommitdiffstats
path: root/modules/ui_extra_networks.py
diff options
context:
space:
mode:
authorYevhenii Hurin <evgeny.gurin@gmail.com>2023-01-29 13:47:14 +0000
committerYevhenii Hurin <evgeny.gurin@gmail.com>2023-01-29 13:47:14 +0000
commitc46f3ad98b1171d7ad42bf1653e6770b52147bfd (patch)
tree3eb596481afd559bf94a8c696b93d3f22b0e65c8 /modules/ui_extra_networks.py
parent7c53f81caf817a7e7dc9c2fafebfcce269ecb1d7 (diff)
parent00dab8f10defbbda579a1bc89c8d4e972c58a20d (diff)
downloadstable-diffusion-webui-gfx803-c46f3ad98b1171d7ad42bf1653e6770b52147bfd.tar.gz
stable-diffusion-webui-gfx803-c46f3ad98b1171d7ad42bf1653e6770b52147bfd.tar.bz2
stable-diffusion-webui-gfx803-c46f3ad98b1171d7ad42bf1653e6770b52147bfd.zip
Merge branch 'master' of https://github.com/AUTOMATIC1111/stable-diffusion-webui
Diffstat (limited to 'modules/ui_extra_networks.py')
-rw-r--r--modules/ui_extra_networks.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/modules/ui_extra_networks.py b/modules/ui_extra_networks.py
index 5730c879..83367968 100644
--- a/modules/ui_extra_networks.py
+++ b/modules/ui_extra_networks.py
@@ -1,3 +1,4 @@
+import glob
import os.path
import urllib.parse
from pathlib import Path
@@ -50,10 +51,41 @@ class ExtraNetworksPage:
def link_preview(self, filename):
return "./sd_extra_networks/thumb?filename=" + urllib.parse.quote(filename.replace('\\', '/')) + "&mtime=" + str(os.path.getmtime(filename))
+ def search_terms_from_path(self, filename, possible_directories=None):
+ abspath = os.path.abspath(filename)
+
+ for parentdir in (possible_directories if possible_directories is not None else self.allowed_directories_for_previews()):
+ parentdir = os.path.abspath(parentdir)
+ if abspath.startswith(parentdir):
+ return abspath[len(parentdir):].replace('\\', '/')
+
+ return ""
+
def create_html(self, tabname):
view = shared.opts.extra_networks_default_view
items_html = ''
+ subdirs = {}
+ for parentdir in [os.path.abspath(x) for x in self.allowed_directories_for_previews()]:
+ for x in glob.glob(os.path.join(parentdir, '**/*'), recursive=True):
+ if not os.path.isdir(x):
+ continue
+
+ subdir = os.path.abspath(x)[len(parentdir):].replace("\\", "/")
+ while subdir.startswith("/"):
+ subdir = subdir[1:]
+
+ subdirs[subdir] = 1
+
+ if subdirs:
+ subdirs = {"": 1, **subdirs}
+
+ subdirs_html = "".join([f"""
+<button class='gr-button gr-button-lg gr-button-secondary{" search-all" if subdir=="" else ""}' onclick='extraNetworksSearchButton("{tabname}_extra_tabs", event)'>
+{html.escape(subdir if subdir!="" else "all")}
+</button>
+""" for subdir in subdirs])
+
for item in self.list_items():
items_html += self.create_html_for_item(item, tabname)
@@ -62,6 +94,9 @@ class ExtraNetworksPage:
items_html = shared.html("extra-networks-no-cards.html").format(dirs=dirs)
res = f"""
+<div id='{tabname}_{self.name}_subdirs' class='extra-network-subdirs extra-network-subdirs-{view}'>
+{subdirs_html}
+</div>
<div id='{tabname}_{self.name}_cards' class='extra-network-{view}'>
{items_html}
</div>
@@ -90,6 +125,7 @@ class ExtraNetworksPage:
"name": item["name"],
"card_clicked": onclick,
"save_card_preview": '"' + html.escape(f"""return saveCardPreview(event, {json.dumps(tabname)}, {json.dumps(item["local_preview"])})""") + '"',
+ "search_term": item.get("search_term", ""),
}
return self.card_page.format(**args)