diff options
author | AUTOMATIC <16777216c@gmail.com> | 2023-01-29 08:34:58 +0000 |
---|---|---|
committer | AUTOMATIC <16777216c@gmail.com> | 2023-01-29 08:34:58 +0000 |
commit | 8d7382ab24756cdcc37e71406832814f4713c55e (patch) | |
tree | 50ccbfbf5c45418075c9db5ae3a1f835508e23c7 | |
parent | e8efd2ec4776ea4adc9ea69297d5bab852074499 (diff) | |
download | stable-diffusion-webui-gfx803-8d7382ab24756cdcc37e71406832814f4713c55e.tar.gz stable-diffusion-webui-gfx803-8d7382ab24756cdcc37e71406832814f4713c55e.tar.bz2 stable-diffusion-webui-gfx803-8d7382ab24756cdcc37e71406832814f4713c55e.zip |
add buttons for auto-search in subdirectories for extra tabs
-rw-r--r-- | javascript/extraNetworks.js | 9 | ||||
-rw-r--r-- | modules/ui_extra_networks.py | 27 | ||||
-rw-r--r-- | style.css | 6 |
3 files changed, 41 insertions, 1 deletions
diff --git a/javascript/extraNetworks.js b/javascript/extraNetworks.js index 231fafe5..17bf2000 100644 --- a/javascript/extraNetworks.js +++ b/javascript/extraNetworks.js @@ -96,3 +96,12 @@ function saveCardPreview(event, tabname, filename){ event.stopPropagation()
event.preventDefault()
}
+
+function extraNetworksSearchButton(tabs_id, event){
+ searchTextarea = gradioApp().querySelector("#" + tabs_id + ' > div > textarea')
+ button = event.target
+ text = button.classList.contains("search-all") ? "" : button.textContent.trim()
+
+ searchTextarea.value = text
+ updateInput(searchTextarea)
+}
\ No newline at end of file diff --git a/modules/ui_extra_networks.py b/modules/ui_extra_networks.py index 29c6e196..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
@@ -56,7 +57,7 @@ class ExtraNetworksPage: 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 abspath[len(parentdir):].replace('\\', '/')
return ""
@@ -64,6 +65,27 @@ class ExtraNetworksPage: 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)
@@ -72,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>
@@ -807,7 +807,13 @@ footer { margin: 0.3em;
}
+.extra-network-subdirs{
+ padding: 0.2em 0.35em;
+}
+.extra-network-subdirs button{
+ margin: 0 0.15em;
+}
#txt2img_extra_networks .search, #img2img_extra_networks .search{
display: inline-block;
|