diff --git a/extensions/gallery/script.py b/extensions/gallery/script.py
index fbf23bc9..c17d69ee 100644
--- a/extensions/gallery/script.py
+++ b/extensions/gallery/script.py
@@ -2,19 +2,29 @@ from pathlib import Path
import gradio as gr
+from modules.chat import load_character
from modules.html_generator import get_image_cache
+from modules.shared import gradio, settings
-def generate_html():
+def generate_css():
css = """
- .character-gallery {
+ .character-gallery > .gallery {
margin: 1rem 0;
- display: grid;
+ display: grid !important;
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
grid-column-gap: 0.4rem;
grid-row-gap: 1.2rem;
}
+ .character-gallery > .label {
+ display: none !important;
+ }
+
+ .character-gallery button.gallery-item {
+ display: contents;
+ }
+
.character-container {
cursor: pointer;
text-align: center;
@@ -45,14 +55,16 @@ def generate_html():
overflow-wrap: anywhere;
}
"""
+ return css
- container_html = f'
'
+def generate_html():
+ cards = []
# Iterate through files in image folder
for file in sorted(Path("characters").glob("*")):
if file.name.endswith(".json"):
character = file.name.replace(".json", "")
- container_html += f'
'
+ container_html = f'
'
image_html = "
"
for i in [
@@ -71,12 +83,24 @@ def generate_html():
container_html += f'{image_html}
{character}'
container_html += "
"
+ cards.append([container_html, character])
+
+ return cards
+
+
+def select_character(evt: gr.SelectData):
+ return (evt.value[1])
- container_html += "
"
- return container_html
def ui():
with gr.Accordion("Character gallery", open=False):
update = gr.Button("Refresh")
- gallery = gr.HTML(value=generate_html())
+ gr.HTML(value="")
+ gallery = gr.Dataset(components=[gr.HTML(visible=False)],
+ label="",
+ samples=generate_html(),
+ elem_classes=["character-gallery"],
+ samples_per_page=50
+ )
update.click(generate_html, [], gallery)
+ gallery.select(select_character, None, gradio['character_menu'])
\ No newline at end of file