Mi piacerebbe poter riordinare un elenco in una casella di riepilogo, idealmente con il trascinamento della selezione (che sembra impossibile) oppure con i pulsanti. Sto cercando JSL per i pulsanti su e giù.
L'obiettivo più grande è ottenere tutti i file in una directory, dividerli in due elenchi in base alle estensioni dei file. Visualizza i due elenchi all'utente, consentigli di riordinare i file in modo che le coppie corrispondano. Premi Ok per ottenere gli elenchi dei nomi dei file dalle 2 caselle di riepilogo ed eseguire il codice su di essi in coppia. Ho solo bisogno di aiuto con il riordino degli elenchi nelle caselle di riepilogo.
Ecco una versione molto rapida per i pulsanti (modificata da Scambio rapido colonne: modifica facilmente più colonne degli assi Y e X nel Costruttore di grafici )
Names Default To Here(1);
move_items = function({lb_ref, direction}, {Default Local},
all_items = lb_ref << Get Items;
sel_items = lb_ref << Get Selected;
If(direction == "Swap",
item_order = Transform Each({sel_item}, sel_items,
Contains(all_items, sel_item)
);
new_order = all_items;
new_order[item_order] = Reverse(sel_items);
,
start_idx = Contains(all_items, sel_items[1]); // set based first found item
new_list = Filter Each({cur_item}, all_items, !Contains(sel_items, cur_item));
new_idx = If(direction == "Up",
start_idx - 1;
, direction == "Down",
start_idx + 1
,
start_idx
);
new_order = Insert(new_list, sel_items, new_idx);
);
lb_ref << Set Items(new_order);
all_items = lb_ref << Get Items;
For Each({cur_item}, sel_items,
new_idx = Contains(all_items, cur_item);
lb_ref << Set Selected(new_idx, 1, Run Script(0));
);
);
nw = New Window("Example",
H List Box(
lb_ref = List Box(
{"First Item", "Second Item", "Third Item"},
width(200),
max selected(2),
nlines(6)
),
Lineup Box(N Col(1),
btn_up = Button Box("", move_items(lb_ref, "Up"), << Set Icon("ListItemUp"), << Set Tip("Move selection up")),
btn_down = Button Box("", move_items(lb_ref, "Down"), << Set Icon("ListItemDown"), << Set Tip("Move selection down")),
)
)
);
Penso che tu possa trascinare e rilasciare utilizzando Mouse Box, ma preferisco i pulsanti in JMP (molto più facili da creare)