38 lines
1.1 KiB
Factor
38 lines
1.1 KiB
Factor
USING: accessors arrays colors.constants file-picker fry
|
|
io.directories kernel math.rectangles models sequences sets ui
|
|
ui.gadgets ui.gadgets.buttons ui.gadgets.glass
|
|
ui.gadgets.labeled ui.gadgets.labels ui.gadgets.tracks ;
|
|
IN: merger
|
|
|
|
MAIN-WINDOW: merger-window {
|
|
{ title "Merging" }
|
|
{ pref-dim { 300 220 } }
|
|
}
|
|
vertical <track>
|
|
{ "From:" "To:" } f <model> f <model> 2array
|
|
[
|
|
[
|
|
"…" [
|
|
open-file-dialog [
|
|
first
|
|
[ <label> 1array >>children drop ]
|
|
[ swap set-control-value ] 2bi
|
|
] [ drop ] if*
|
|
] <border-button> swap >>model swap
|
|
<labeled-gadget> 1 track-add
|
|
] 2each
|
|
] keep
|
|
dup first2
|
|
'[
|
|
_ [ value>> ] all? [
|
|
parent>> "processing..." <label> [
|
|
<zero-rect> show-glass
|
|
_ value>> [
|
|
"." _ value>>
|
|
[ [ directory-files ] bi@ diff ] keep copy-files-into
|
|
] with-directory
|
|
] keep hide-glass
|
|
] [ drop ] if
|
|
] "merge" swap <border-button> 0.4 track-add
|
|
>>gadgets ;
|