Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
S
stable-diffusion-webui
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
stable-diffusion-webui
Commits
7b1db45e
Commit
7b1db45e
authored
Oct 11, 2022
by
yfszzx
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
images history improvement
parent
1e18a5ff
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
238 additions
and
166 deletions
+238
-166
images_history.js
javascript/images_history.js
+114
-56
jquery-3.6.0.min.js
javascript/jquery-3.6.0.min.js
+0
-2
images_history.py
modules/images_history.py
+121
-108
style.css
style.css
+3
-0
No files found.
javascript/images_history.js
View file @
7b1db45e
function
init_images_history
(){
images_history_tab_list
=
[
"txt2img"
,
"img2img"
,
"extras"
]
function
images_history_init
(){
if
(
gradioApp
().
getElementById
(
'txt2img_images_history_first_page'
)
==
null
)
{
setTimeout
(
init_images_history
,
10
00
)
setTimeout
(
images_history_init
,
5
00
)
}
else
{
tab_list
=
[
"txt2img"
,
"img2img"
]
for
(
i
in
tab_list
){
tab
=
tab_list
[
i
]
gradioApp
().
getElementById
(
tab
+
"_images_history_first_page"
).
click
()
$
(
gradioApp
().
getElementById
(
tab
+
'_images_history'
)).
addClass
(
"images_history_gallery"
)
item
=
$
(
gradioApp
().
getElementById
(
tab
+
'_images_history_set_index'
))
item
.
addClass
(
"images_history_set_index"
)
item
.
hide
()
for
(
i
in
images_history_tab_list
){
tab
=
images_history_tab_list
[
i
]
gradioApp
().
getElementById
(
tab
+
'_images_history'
).
classList
.
add
(
"images_history_gallery"
)
gradioApp
().
getElementById
(
tab
+
'_images_history_set_index'
).
classList
.
add
(
"images_history_set_index"
)
}
gradioApp
().
getElementById
(
"txt2img_images_history_first_page"
).
click
()
}
}
setTimeout
(
images_history_init
,
500
)
var
images_history_button_actions
=
function
(){
if
(
!
this
.
classList
.
contains
(
"transform"
)){
gallery
=
this
.
parentElement
while
(
!
gallery
.
classList
.
contains
(
"images_history_gallery"
)){
gallery
=
gallery
.
parentElement
}
buttons
=
gallery
.
querySelectorAll
(
".gallery-item"
)
i
=
0
hidden_list
=
[]
buttons
.
forEach
(
function
(
e
){
if
(
e
.
style
.
display
==
"none"
){
hidden_list
.
push
(
i
)
}
i
+=
1
})
if
(
hidden_list
.
length
>
0
){
setTimeout
(
images_history_hide_buttons
,
10
,
hidden_list
,
gallery
)
}
}
images_history_set_image_info
(
this
)
}
setTimeout
(
init_images_history
,
1000
)
onUiUpdate
(
function
(){
fullImg_preview
=
gradioApp
().
querySelectorAll
(
'#txt2img_images_history img.w-full'
)
if
(
fullImg_preview
.
length
>
0
){
fullImg_preview
.
forEach
(
set_history_index_from_img
);
}
fullImg_preview
=
gradioApp
().
querySelectorAll
(
'#img2img_images_history img.w-full'
)
if
(
fullImg_preview
.
length
>
0
){
fullImg_preview
.
forEach
(
set_history_index_from_img
);
for
(
i
in
images_history_tab_list
){
tab
=
images_history_tab_list
[
i
]
buttons
=
gradioApp
().
querySelectorAll
(
'#'
+
tab
+
'_images_history .gallery-item'
)
buttons
.
forEach
(
function
(
bnt
){
bnt
.
addEventListener
(
'click'
,
images_history_button_actions
,
true
)
});
}
})
function
images_history_hide_buttons
(
hidden_list
,
gallery
){
buttons
=
gallery
.
querySelectorAll
(
".gallery-item"
)
num
=
0
buttons
.
forEach
(
function
(
e
){
if
(
e
.
style
.
display
==
"none"
){
num
+=
1
}
})
if
(
num
==
hidden_list
.
length
){
setTimeout
(
images_history_hide_buttons
,
10
,
hidden_list
,
gallery
)
}
for
(
i
in
hidden_list
){
buttons
[
hidden_list
[
i
]].
style
.
display
=
"none"
}
}
function
set_history_gallery_index
(
item
){
buttons
=
item
.
find
(
".gallery-item"
)
// alert(item.attr("id") + " " + buttons.length)
function
images_history_set_image_info
(
button
){
item
=
button
.
parentElement
while
(
item
.
tagName
!=
"DIV"
){
item
=
item
.
parentElement
}
buttons
=
item
.
querySelectorAll
(
".gallery-item"
)
index
=
-
1
i
=
0
buttons
.
each
(
function
(){
if
(
$
(
this
).
hasClass
(
"!ring-2"
)){
index
=
i
}
buttons
.
forEach
(
function
(
e
){
if
(
e
==
button
){
index
=
i
}
if
(
e
.
style
.
display
!=
"none"
){
i
+=
1
})
if
(
index
==
-
1
){
setTimeout
(
set_history_gallery_index
,
10
,
item
)
}
else
{
item
=
item
.
find
(
".images_history_set_index"
).
first
()
item
.
attr
(
"img_index"
,
index
)
item
.
click
()
}
}
function
set_history_index_from_img
(
e
){
if
(
e
&&
e
.
parentElement
.
tagName
==
'BUTTON'
){
bnt
=
$
(
e
).
parent
()
if
(
bnt
.
hasClass
(
"transform"
)){
bnt
.
off
(
"click"
).
on
(
"click"
,
function
(){
set_history_gallery_index
(
$
(
this
).
parents
(
".images_history_gallery"
).
first
())
})
}
else
{
bnt
.
off
(
"mousedown"
).
on
(
"mousedown"
,
function
(){
set_history_gallery_index
(
$
(
this
).
parents
(
".images_history_gallery"
).
first
())
gallery
=
button
.
parentElement
while
(
!
gallery
.
classList
.
contains
(
"images_history_gallery"
)){
gallery
=
gallery
.
parentElement
}
set_btn
=
gallery
.
querySelector
(
".images_history_set_index"
)
set_btn
.
setAttribute
(
"img_index"
,
index
)
set_btn
.
click
()
}
function
images_history_get_current_img
(
tabname
,
image_path
,
files
){
s
=
gradioApp
().
getElementById
(
tabname
+
'_images_history_set_index'
).
getAttribute
(
"img_index"
)
return
[
s
,
image_path
,
files
]
}
function
images_history_delete
(
tabname
,
img_path
,
img_file_name
,
page_index
,
filenames
,
image_index
){
image_index
=
parseInt
(
image_index
)
tab
=
gradioApp
().
getElementById
(
tabname
+
'_images_history'
)
set_btn
=
tab
.
querySelector
(
".images_history_set_index"
)
buttons
=
[]
tab
.
querySelectorAll
(
".gallery-item"
).
forEach
(
function
(
e
){
if
(
e
.
style
.
display
!=
'none'
){
buttons
.
push
(
e
)
}
})
img_num
=
buttons
.
length
/
2
if
(
img_num
==
1
){
setTimeout
(
function
(
tabname
){
gradioApp
().
getElementById
(
tabname
+
'_images_history_renew_page'
).
click
()
},
30
,
tabname
)
}
else
{
buttons
[
image_index
].
style
.
display
=
'none'
buttons
[
image_index
+
img_num
].
style
.
display
=
'none'
if
(
image_index
>=
img_num
-
1
){
console
.
log
(
buttons
.
length
,
img_num
)
btn
=
buttons
[
img_num
-
2
]
}
else
{
btn
=
buttons
[
image_index
+
1
]
}
setTimeout
(
function
(
btn
){
btn
.
click
()},
30
,
btn
)
}
}
function
images_history_get_current_img
(
is_image2image
,
image_path
,
files
){
head
=
is_image2image
?
"img2img"
:
"txt2img"
s
=
$
(
gradioApp
().
getElementById
(
head
+
'_images_history_set_index'
)).
attr
(
"img_index"
)
return
[
s
,
image_path
,
files
]
return
[
tabname
,
img_path
,
img_file_name
,
page_index
,
filenames
,
image_index
]
}
function
images_history_turnpage
(
img_path
,
page_index
,
image_index
,
tabname
){
buttons
=
gradioApp
().
getElementById
(
tabname
+
'_images_history'
).
querySelectorAll
(
".gallery-item"
)
buttons
.
forEach
(
function
(
elem
)
{
elem
.
style
.
display
=
'block'
})
return
[
img_path
,
page_index
,
image_index
,
tabname
]
}
javascript/jquery-3.6.0.min.js
deleted
100644 → 0
View file @
1e18a5ff
This diff is collapsed.
Click to expand it.
modules/images_history.py
View file @
7b1db45e
import
os
def
get_recent_images
(
dir_name
,
page_index
,
step
,
image_index
):
print
(
image_index
)
#
print(image_index)
page_index
=
int
(
page_index
)
f_list
=
os
.
listdir
(
dir_name
)
file_list
=
[]
...
...
@@ -16,7 +16,7 @@ def get_recent_images(dir_name, page_index, step, image_index):
page_index
=
max_page_index
if
page_index
>
max_page_index
else
page_index
idx_frm
=
(
page_index
-
1
)
*
num
file_list
=
file_list
[
idx_frm
:
idx_frm
+
num
]
print
(
f
"Loading history page {page_index}"
)
#print(f"Loading history page {page_index}")
image_index
=
int
(
image_index
)
if
image_index
<
0
or
image_index
>
len
(
file_list
)
-
1
:
current_file
=
None
...
...
@@ -25,44 +25,52 @@ def get_recent_images(dir_name, page_index, step, image_index):
current_file
=
file_list
[
int
(
image_index
)]
hide_image
=
os
.
path
.
join
(
dir_name
,
current_file
)
return
[
os
.
path
.
join
(
dir_name
,
file
)
for
file
in
file_list
],
page_index
,
file_list
,
current_file
,
hide_image
def
first_page_click
(
dir_name
,
page_index
,
image_index
):
def
first_page_click
(
dir_name
,
page_index
,
image_index
,
tabname
):
return
get_recent_images
(
dir_name
,
1
,
0
,
image_index
)
def
end_page_click
(
dir_name
,
page_index
,
image_index
):
def
end_page_click
(
dir_name
,
page_index
,
image_index
,
tabname
):
return
get_recent_images
(
dir_name
,
-
1
,
0
,
image_index
)
def
prev_page_click
(
dir_name
,
page_index
,
image_index
):
def
prev_page_click
(
dir_name
,
page_index
,
image_index
,
tabname
):
return
get_recent_images
(
dir_name
,
page_index
,
-
1
,
image_index
)
def
next_page_click
(
dir_name
,
page_index
,
image_index
):
def
next_page_click
(
dir_name
,
page_index
,
image_index
,
tabname
):
return
get_recent_images
(
dir_name
,
page_index
,
1
,
image_index
)
def
page_index_change
(
dir_name
,
page_index
,
image_index
):
def
page_index_change
(
dir_name
,
page_index
,
image_index
,
tabname
):
return
get_recent_images
(
dir_name
,
page_index
,
0
,
image_index
)
def
show_image_info
(
num
,
image_path
,
filenames
):
#print("set img",num)
file
=
filenames
[
int
(
num
)]
return
file
,
num
,
os
.
path
.
join
(
image_path
,
file
)
def
delete_image
(
is_img2img
,
dir_name
,
name
,
page_index
,
filenames
,
image_index
):
print
(
"filename"
,
name
)
def
delete_image
(
tabname
,
dir_name
,
name
,
page_index
,
filenames
,
image_index
):
#
print("filename", name)
path
=
os
.
path
.
join
(
dir_name
,
name
)
if
os
.
path
.
exists
(
path
):
print
(
f
"Delete file {path}"
)
os
.
remove
(
path
)
images
,
page_index
,
file_list
,
current_file
,
hide_image
=
get_recent_images
(
dir_name
,
page_index
,
0
,
image_index
)
return
images
,
page_index
,
file_list
,
current_file
,
hide_image
def
show_images_history
(
gr
,
opts
,
is_img2img
,
run_pnginfo
,
switch_dict
):
def
id_name
(
is_img2img
,
name
):
return
(
"img2img"
if
is_img2img
else
"txt2img"
)
+
"_"
+
name
if
is_img2img
:
dir_name
=
opts
.
outdir_img2img_samples
new_file_list
=
[]
for
f
in
filenames
:
if
f
==
name
:
continue
new_file_list
.
append
(
f
)
else
:
print
(
f
"Not exists file {path}"
)
new_file_list
=
filenames
return
page_index
,
new_file_list
def
show_images_history
(
gr
,
opts
,
tabname
,
run_pnginfo
,
switch_dict
):
if
tabname
==
"txt2img"
:
dir_name
=
opts
.
outdir_txt2img_samples
elif
tabname
==
"img2img"
:
dir_name
=
opts
.
outdir_img2img_samples
elif
tabname
==
"extras"
:
dir_name
=
opts
.
outdir_extras_samples
with
gr
.
Row
():
first_page
=
gr
.
Button
(
'First'
,
elem_id
=
id_name
(
is_img2img
,
"images_history_first_page"
))
renew_page
=
gr
.
Button
(
'Renew'
,
elem_id
=
tabname
+
"_images_history_renew_page"
)
first_page
=
gr
.
Button
(
'First'
,
elem_id
=
tabname
+
"_images_history_first_page"
)
prev_page
=
gr
.
Button
(
'Prev'
)
page_index
=
gr
.
Number
(
value
=
1
,
label
=
"Page Index"
)
next_page
=
gr
.
Button
(
'Next'
)
next_page
=
gr
.
Button
(
'Next'
,
elem_id
=
tabname
+
"_images_history_next_page"
)
end_page
=
gr
.
Button
(
'End'
)
with
gr
.
Row
(
elem_id
=
id_name
(
is_img2img
,
"images_history"
)):
with
gr
.
Row
(
elem_id
=
tabname
+
"_images_history"
):
with
gr
.
Row
():
with
gr
.
Column
():
history_gallery
=
gr
.
Gallery
(
show_label
=
False
)
.
style
(
grid
=
6
)
...
...
@@ -73,14 +81,14 @@ def show_images_history(gr, opts, is_img2img, run_pnginfo, switch_dict):
pnginfo_send_to_img2img
=
gr
.
Button
(
'Send to img2img'
)
with
gr
.
Row
():
with
gr
.
Column
():
img_file_info
=
gr
.
Textbox
(
dir_name
,
label
=
"Generate Info"
)
img_file_info
=
gr
.
Textbox
(
label
=
"Generate Info"
)
img_file_name
=
gr
.
Textbox
(
label
=
"File Name"
)
with
gr
.
Row
():
# hiden items
img_path
=
gr
.
Textbox
(
dir_name
,
visible
=
False
)
is_img2img_flag
=
gr
.
Checkbox
(
is_img2img
,
visible
=
False
)
tabname_box
=
gr
.
Textbox
(
tabname
,
visible
=
False
)
image_index
=
gr
.
Textbox
(
value
=-
1
,
visible
=
False
)
set_index
=
gr
.
Button
(
'set_index'
,
elem_id
=
id_name
(
is_img2img
,
"images_history_set_index"
)
)
set_index
=
gr
.
Button
(
'set_index'
,
elem_id
=
tabname
+
"_images_history_set_index"
,
visible
=
False
)
filenames
=
gr
.
State
()
hide_image
=
gr
.
Image
(
visible
=
False
,
type
=
"pil"
)
info1
=
gr
.
Textbox
(
visible
=
False
)
...
...
@@ -88,18 +96,20 @@ def show_images_history(gr, opts, is_img2img, run_pnginfo, switch_dict):
# turn pages
gallery_inputs
=
[
img_path
,
page_index
,
image_inde
x
]
gallery_inputs
=
[
img_path
,
page_index
,
image_index
,
tabname_bo
x
]
gallery_outputs
=
[
history_gallery
,
page_index
,
filenames
,
img_file_name
,
hide_image
]
first_page
.
click
(
first_page_click
,
inputs
=
gallery_inputs
,
outputs
=
gallery_outputs
)
next_page
.
click
(
next_page_click
,
inputs
=
gallery_inputs
,
outputs
=
gallery_outputs
)
prev_page
.
click
(
prev_page_click
,
inputs
=
gallery_inputs
,
outputs
=
gallery_outputs
)
end_page
.
click
(
end_page_click
,
inputs
=
gallery_inputs
,
outputs
=
gallery_outputs
)
page_index
.
submit
(
page_index_change
,
inputs
=
gallery_inputs
,
outputs
=
gallery_outputs
)
#page_index.change(page_index_change, inputs=[is_img2img_flag, img_path, page_index], outputs=[history_gallery, page_index])
first_page
.
click
(
first_page_click
,
_js
=
"images_history_turnpage"
,
inputs
=
gallery_inputs
,
outputs
=
gallery_outputs
)
next_page
.
click
(
next_page_click
,
_js
=
"images_history_turnpage"
,
inputs
=
gallery_inputs
,
outputs
=
gallery_outputs
)
prev_page
.
click
(
prev_page_click
,
_js
=
"images_history_turnpage"
,
inputs
=
gallery_inputs
,
outputs
=
gallery_outputs
)
end_page
.
click
(
end_page_click
,
_js
=
"images_history_turnpage"
,
inputs
=
gallery_inputs
,
outputs
=
gallery_outputs
)
page_index
.
submit
(
page_index_change
,
_js
=
"images_history_turnpage"
,
inputs
=
gallery_inputs
,
outputs
=
gallery_outputs
)
renew_page
.
click
(
page_index_change
,
_js
=
"images_history_turnpage"
,
inputs
=
gallery_inputs
,
outputs
=
gallery_outputs
)
#page_index.change(page_index_change, inputs=[tabname_box, img_path, page_index], outputs=[history_gallery, page_index])
#other funcitons
set_index
.
click
(
show_image_info
,
_js
=
"images_history_get_current_img"
,
inputs
=
[
is_img2img_flag
,
img_path
,
filenames
],
outputs
=
[
img_file_name
,
image_index
,
hide_image
])
delete
.
click
(
delete_image
,
inputs
=
[
is_img2img_flag
,
img_path
,
img_file_name
,
page_index
,
filenames
,
image_index
],
outputs
=
gallery_outputs
)
set_index
.
click
(
show_image_info
,
_js
=
"images_history_get_current_img"
,
inputs
=
[
tabname_box
,
img_path
,
filenames
],
outputs
=
[
img_file_name
,
image_index
,
hide_image
])
delete
.
click
(
delete_image
,
_js
=
"images_history_delete"
,
inputs
=
[
tabname_box
,
img_path
,
img_file_name
,
page_index
,
filenames
,
image_index
],
outputs
=
[
page_index
,
filenames
]
)
hide_image
.
change
(
fn
=
run_pnginfo
,
inputs
=
[
hide_image
],
outputs
=
[
info1
,
img_file_info
,
info2
])
switch_dict
[
"fn"
](
pnginfo_send_to_txt2img
,
switch_dict
[
"t2i"
],
img_file_info
,
'switch_to_txt2img'
)
switch_dict
[
"fn"
](
pnginfo_send_to_img2img
,
switch_dict
[
"i2i"
],
img_file_info
,
'switch_to_img2img_img2img'
)
...
...
@@ -108,10 +118,13 @@ def show_images_history(gr, opts, is_img2img, run_pnginfo, switch_dict):
def
create_history_tabs
(
gr
,
opts
,
run_pnginfo
,
switch_dict
):
with
gr
.
Blocks
(
analytics_enabled
=
False
)
as
images_history
:
with
gr
.
Tabs
()
as
tabs
:
with
gr
.
Tab
(
"txt2img history"
,
id
=
"images_history_txt2img
"
):
with
gr
.
Tab
(
"txt2img history
"
):
with
gr
.
Blocks
(
analytics_enabled
=
False
)
as
images_history_txt2img
:
show_images_history
(
gr
,
opts
,
False
,
run_pnginfo
,
switch_dict
)
with
gr
.
Tab
(
"img2img history"
,
id
=
"images_history_img2img"
):
show_images_history
(
gr
,
opts
,
"txt2img"
,
run_pnginfo
,
switch_dict
)
with
gr
.
Tab
(
"img2img history"
):
with
gr
.
Blocks
(
analytics_enabled
=
False
)
as
images_history_img2img
:
show_images_history
(
gr
,
opts
,
"img2img"
,
run_pnginfo
,
switch_dict
)
with
gr
.
Tab
(
"extras history"
):
with
gr
.
Blocks
(
analytics_enabled
=
False
)
as
images_history_img2img
:
show_images_history
(
gr
,
opts
,
True
,
run_pnginfo
,
switch_dict
)
show_images_history
(
gr
,
opts
,
"extras"
,
run_pnginfo
,
switch_dict
)
return
images_history
style.css
View file @
7b1db45e
...
...
@@ -463,3 +463,6 @@ input[type="range"]{
max-width
:
32em
;
padding
:
0
;
}
.images-history-hidden
{
display
:
none
;
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment