Skip to content

Commit 830f42a

Browse files
Add button in KomaUI to reload sequence (#790)
* Added button in KomaUI to reload sequence * Refine sequence reload button UI * Bump KomaMRI patch version --------- Co-authored-by: Carlos Castillo Passi <cacp@stanford.edu>
1 parent 33dab33 commit 830f42a

6 files changed

Lines changed: 53 additions & 7 deletions

File tree

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "KomaMRI"
22
uuid = "6a340f8b-2cdf-4c04-99be-4953d9b66d0a"
3-
version = "0.10.3"
3+
version = "0.10.4"
44
authors = ["Carlos Castillo Passi <cncastillo@uc.cl>"]
55

66
[workspace]

src/KomaCLI.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,7 @@ end
315315
redirect_stderr(devnull) do
316316
fields = [fieldnames(Phantom)[5:end-3]...]
317317
button.(string.(fields))
318-
filepicker(".seq (Pulseq)/.seqk (Koma)"; accept=".seq,.seqk")
318+
filepicker(".seq (Pulseq)"; accept=".seq,.seqk")
319319
sys = setup_scanner()
320320
setup_sequence(sys)
321321
setup_phantom()

src/KomaUI.jl

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ function KomaUI(;
100100
sim_params = merge(Dict{String,Any}(), sim)
101101
rec_params = merge(Dict{Symbol,Any}(:reco=>"direct"), rec)
102102
mat_folder = tempdir()
103+
seq_file = Ref("")
103104

104105
# Print gpu information
105106
if !(haskey(sim_params, "gpu") && sim_params["gpu"] == false)
@@ -118,6 +119,11 @@ function KomaUI(;
118119
handle(w, "pulses_seq") do _
119120
view_ui!(seq_ui[], w; type="sequence", darkmode)
120121
end
122+
handle(w, "reload_seq") do _
123+
if seq_file[] != ""
124+
seq_ui[] = callback_filepicker(seq_file[], w, seq_ui[])
125+
end
126+
end
121127
handle(w, "pulses_kspace") do _
122128
view_ui!(seq_ui[], w; type="kspace", darkmode)
123129
end
@@ -330,7 +336,7 @@ function KomaUI(;
330336
"KomaMRIPlots.jl v"+version_plots);
331337
)
332338
# Filepickers
333-
setup_filepickers!(w)
339+
setup_filepickers!(w; seq_file)
334340

335341
@info "KomaMRI loaded successfully 🚀" KomaMRI=version_ui KomaMRIBase=version_base KomaMRICore=version_core KomaMRIFiles=version_io KomaMRIPlots=version_plots
336342

@@ -342,17 +348,21 @@ function KomaUI(;
342348
return nothing
343349
end
344350

345-
function setup_filepickers!(w::Window)
346-
setup_filepicker!(w, "#seqfilepicker", ".seq (Pulseq)/.seqk (Koma)", seq_ui; accept=".seq,.seqk")
351+
function setup_filepickers!(w::Window; seq_file=Ref(""))
352+
setup_filepicker!(
353+
w, "#seqfilepicker", ".seq (Pulseq)", seq_ui; accept=".seq,.seqk", selected_file=seq_file,
354+
)
347355
setup_filepicker!(w, "#phafilepicker", ".phantom (Koma)/.h5 (JEMRIS)", obj_ui; accept=".phantom,.h5")
348356
setup_filepicker!(w, "#sigfilepicker", ".h5/.mrd (ISMRMRD)", raw_ui; accept=".h5,.mrd")
349357
return nothing
350358
end
351359

352-
function setup_filepicker!(w::Window, selector::String, label::String, output; accept)
360+
function setup_filepicker!(w::Window, selector::String, label::String, output; accept, selected_file=nothing)
353361
widget = filepicker(label; accept)
354362
content!(w, selector, widget, async=false, fade=false)
355363
on(observe(widget)) do filename
364+
filename == "" && return nothing
365+
isnothing(selected_file) || (selected_file[] = filename)
356366
output[] = callback_filepicker(filename, w, output[])
357367
end
358368
return nothing

src/ui/css/custom.css

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,32 @@ body, button{
7979
font-size: 0.875rem;
8080
}
8181

82+
.seq-filepicker-row {
83+
display: flex;
84+
align-items: center;
85+
gap: 6px;
86+
}
87+
88+
.seq-filepicker-row .field.interact-widget {
89+
margin-bottom: 0;
90+
}
91+
92+
.seq-filepicker-row .seq-reload-button {
93+
padding: 5px 8px !important;
94+
background-color: transparent !important;
95+
border-color: transparent !important;
96+
color: #f8f9fa !important;
97+
font-size: 0.875rem !important;
98+
line-height: 1.25 !important;
99+
border-radius: 0.25rem !important;
100+
}
101+
102+
.seq-filepicker-row .seq-reload-button:hover,
103+
.seq-filepicker-row .seq-reload-button:focus {
104+
background-color: #52575c !important;
105+
border-color: #52575c !important;
106+
}
107+
82108
/* So Ulma does not overwrite h1 */
83109
h1 {
84110
font-size: 2.5rem!important;

src/ui/html/sidebar.html

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,14 @@
2626
</ul>
2727
</li>
2828
<li><hr class="dropdown-divider"></li>
29-
<li class="dropdown-interact" id="seqfilepicker"></li>
29+
<li class="dropdown-interact">
30+
<div class="seq-filepicker-row">
31+
<span id="seqfilepicker"></span>
32+
<button id="button_reload_seq" class="btn btn-dark seq-reload-button" type="button" onclick='Blink.msg("reload_seq", 1)' title="Reload sequence">
33+
<i class="bi bi-arrow-clockwise"></i>
34+
</button>
35+
</div>
36+
</li>
3037
</ul>
3138
</li>
3239
<p id="seqname" class="pname"><abbr title="epi.seq">epi.seq</abbr></p>

test/runtests.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,9 @@ end
231231
@js w document.getElementById("button_pulses_seq").click()
232232
@test "sequence" == @js w document.getElementById("content").dataset.content
233233

234+
@js w document.getElementById("button_reload_seq").click()
235+
@test "sequence" == @js w document.getElementById("content").dataset.content
236+
234237
@js w document.getElementById("button_pulses_kspace").click()
235238
@test "kspace" == @js w document.getElementById("content").dataset.content
236239

0 commit comments

Comments
 (0)