Me gustaría poder reordenar una lista en un cuadro de lista, idealmente arrastrando y soltando (lo que parece imposible) o con botones. Estoy buscando JSL para los botones arriba y abajo.
El objetivo principal es obtener todos los archivos en un directorio y dividirlos en dos listas según las extensiones de archivo. Muestre las dos listas al usuario y permítale reordenar los archivos para que los pares coincidan. Presione Aceptar para obtener las listas de nombres de archivos de los 2 cuadros de lista y ejecute el código en pares. Sólo necesito ayuda con el reordenamiento de las listas en los cuadros de lista.
Aquí hay una versión muy rápida para botones (modificada de Column Quick Swapper: cambie fácilmente varias columnas de los ejes Y y X en Graph Builder )
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")),
)
)
);
Creo que puedes arrastrar y soltar usando Mouse Box, pero prefiero los botones en JMP (mucho más fácil de crear)