Author: aschnell
Date: Thu Jul 17 15:12:24 2008
New Revision: 49220
URL: http://svn.opensuse.org/viewcvs/yast?rev=49220&view=rev
Log:
- use new multiSelection option of Table widget
Modified:
branches/tmp/aschnell/part-redesign/storage/src/modules/DevicesSelectionBox.ycp
branches/tmp/aschnell/part-redesign/storage/src/modules/DualMultiSelectionBox.ycp
branches/tmp/aschnell/part-redesign/yast2-storage.spec.in
Modified: branches/tmp/aschnell/part-redesign/storage/src/modules/DevicesSelectionBox.ycp
URL: http://svn.opensuse.org/viewcvs/yast/branches/tmp/aschnell/part-redesign/storage/src/modules/DevicesSelectionBox.ycp?rev=49220&r1=49219&r2=49220&view=diff
==============================================================================
--- branches/tmp/aschnell/part-redesign/storage/src/modules/DevicesSelectionBox.ycp (original)
+++ branches/tmp/aschnell/part-redesign/storage/src/modules/DevicesSelectionBox.ycp Thu Jul 17 15:12:24 2008
@@ -19,24 +19,28 @@
list<map> devices = [];
+ /**
+ * Returns list with the maps of the unselected devices.
+ */
global list<map> GetUnselectedDevices()
{
- list<term> tmp = DualMultiSelectionBox::GetUnselectedItems();
+ list<string> selected = (list<string>) DualMultiSelectionBox::GetSelected();
return filter(map device, devices, {
- any id = `id(device["device"]:"");
- return find (term t, tmp, { return t[0]:nil == id; }) != nil;
+ return !contains(selected, device["device"]:"");
});
}
+ /**
+ * Returns list with the maps of the selected devices.
+ */
global list<map> GetSelectedDevices()
{
- list<term> tmp = DualMultiSelectionBox::GetSelectedItems();
+ list<string> selected = (list<string>) DualMultiSelectionBox::GetSelected();
return filter(map device, devices, {
- any id = `id(device["device"]:"");
- return find (term t, tmp, { return t[0]:nil == id; }) != nil;
+ return contains(selected, device["device"]:"");
});
}
@@ -49,14 +53,14 @@
/**
- * The maps for the devices must contains the entries "device" and "size_k".
+ * The maps for the devices must contain the entries "device" and "size_k".
*
- * Ordering of device list is irrelevant. Devices are ordered by IterateTargetMap.
+ * Ordering of device list is irrelevant. Devices are ordered by StorageFields::IterateTargetMap.
*/
- global term Create(list<map> unsel_devices, list<map> sel_devices, list<symbol> fields,
- string unsel_label, string sel_label)
+ global term Create(list<map> unselected_devices, list<map> selected_devices, list<symbol> fields,
+ string unselected_label, string selected_label)
{
- devices = flatten([ unsel_devices, sel_devices ]);
+ devices = flatten([ unselected_devices, selected_devices ]);
list<string> device_names = maplist(map device, devices, { return device["device"]:""; });
@@ -67,16 +71,13 @@
map target_map = Storage::GetTargetMap();
- fields = [ `device ]; // workaround for missing widget
- list<term> items = StorageFields::TableContents(fields, target_map, Predicate);
+ term header = StorageFields::TableHeader(fields);
+ list<term> content = StorageFields::TableContents(fields, target_map, Predicate);
- items = maplist(term item, items, {
- any id = item[0]:nil;
- return add(item, find(map device, sel_devices, { return `id(device["device"]:"") == id; }) != nil);
- });
+ list<string> selected = maplist(map device, selected_devices, { return device["device"]:""; });
- term ret = DualMultiSelectionBox::Create(items, unsel_label, sel_label,
- SizeTerm(unsel_devices), SizeTerm(sel_devices));
+ term ret = DualMultiSelectionBox::Create(header, content, selected, unselected_label, selected_label,
+ SizeTerm(unselected_devices), SizeTerm(selected_devices));
return ret;
}
@@ -88,8 +89,8 @@
if (contains([`add, `add_all, `remove, `remove_all], widget))
{
- UI::ReplaceWidget(`id(`unsel_rp), SizeTerm(GetUnselectedDevices()));
- UI::ReplaceWidget(`id(`sel_rp), SizeTerm(GetSelectedDevices()));
+ UI::ReplaceWidget(`id(`unselected_rp), SizeTerm(GetUnselectedDevices()));
+ UI::ReplaceWidget(`id(`selected_rp), SizeTerm(GetSelectedDevices()));
}
}
}
Modified: branches/tmp/aschnell/part-redesign/storage/src/modules/DualMultiSelectionBox.ycp
URL: http://svn.opensuse.org/viewcvs/yast/branches/tmp/aschnell/part-redesign/storage/src/modules/DualMultiSelectionBox.ycp?rev=49220&r1=49219&r2=49220&view=diff
==============================================================================
--- branches/tmp/aschnell/part-redesign/storage/src/modules/DualMultiSelectionBox.ycp (original)
+++ branches/tmp/aschnell/part-redesign/storage/src/modules/DualMultiSelectionBox.ycp Thu Jul 17 15:12:24 2008
@@ -3,12 +3,6 @@
* Package: yast2-storage
* Summary: Expert Partitioner
* Authors: Arvin Schnell
- *
- * The items in the item-list must contain these entries:
- * 0: any id
- * 1: string label
- * 2: boolean selected, optional, default is false
- * 3: boolean selected (checkbox), optional, default is false
*/
{
module "DualMultiSelectionBox";
@@ -18,31 +12,40 @@
list<term> items = [];
+ list<any> selected = [];
- list<term> MakeUnselContents()
+
+ list<term> GetUnselectedItems()
{
- list<term> ret = filter(term item, items, { return item[2]:false == false; });
- return maplist(term item, ret, { return `item(item[0]:nil, item[1]:nil, item[3]:false); });
+ return filter(term item, items, {
+ any id = item[0]:nil;
+ return find(any tmp, selected, { return `id(tmp) == id; }) == nil;
+ });
}
- list<term> MakeSelContents()
+ list<term> GetSelectedItems()
{
- list<term> ret = filter(term item, items, { return item[2]:false == true; });
- return maplist(term item, ret, { return `item(item[0]:nil, item[1]:nil, item[3]:false); });
+ return filter(term item, items, {
+ any id = item[0]:nil;
+ return find(any tmp, selected, { return `id(tmp) == id; }) != nil;
+ });
}
- global term Create(list<term> new_items, string unsel_label, string sel_label, term unsel_rp, term sel_rp)
+ global term Create(term header, list<term> new_items, list<any> new_selected, string unselected_label,
+ string selected_label, term unselected_rp, term selected_rp)
{
items = new_items;
+ selected = new_selected;
return `HBox(
`HWeight(1, `VBox(
- `MultiSelectionBox(`id(`unsel), unsel_label, MakeUnselContents()),
- `ReplacePoint(`id(`unsel_rp), unsel_rp)
+ `Left(`Label(unselected_label)),
+ `Table(`id(`unselected), `opt(`keepSorting, `multiSelection), header, GetUnselectedItems()),
+ `ReplacePoint(`id(`unselected_rp), unselected_rp)
)),
- `MarginBox(1, 1,
+ `MarginBox(1, 1,
`HSquash(`VBox(
`PushButton(`id(`add), `opt(`hstretch), _("Add") + " " + UI::Glyph(`ArrowRight)),
`PushButton(`id(`add_all), `opt(`hstretch), _("Add All") + " " + UI::Glyph(`ArrowRight)),
@@ -51,46 +54,17 @@
`PushButton(`id(`remove_all), `opt(`hstretch), UI::Glyph(`ArrowLeft) + " " + _("Remove All"))
))),
`HWeight(1, `VBox(
- `MultiSelectionBox(`id(`sel), sel_label, MakeSelContents()),
- `ReplacePoint(`id(`sel_rp), sel_rp)
+ `Left(`Label(selected_label)),
+ `Table(`id(`selected), `opt(`keepSorting, `multiSelection), header, GetSelectedItems()),
+ `ReplacePoint(`id(`selected_rp), selected_rp)
))
);
}
- global void SetItems(list<term> new_items)
- {
- items = new_items;
-
- UI::ChangeWidget(`id(`unsel), `Items, MakeUnselContents());
- UI::ChangeWidget(`id(`sel), `Items, MakeSelContents());
- }
-
-
- global list<term> GetItems()
- {
- list<term> tmp = flatten([ (list<term>) UI::QueryWidget(`id(`unsel), `Items),
- (list<term>) UI::QueryWidget(`id(`sel), `Items) ]);
-
- items = maplist(term item, items, {
- any id = item[0]:nil;
- term t = find(term item, tmp, { return item[0]:nil == id; });
- return `item(item[0]:nil, item[1]:nil, item[2]:false, t[2]:false);
- });
-
- return items;
- }
-
-
- global list<term> GetUnselectedItems()
+ global list<any> GetSelected()
{
- return filter(term item, GetItems(), { return item[2]:false == false; });
- }
-
-
- global list<term> GetSelectedItems()
- {
- return filter(term item, GetItems(), { return item[2]:false == true; });
+ return selected;
}
@@ -98,41 +72,29 @@
{
switch (widget)
{
- case `add:
- SetItems(maplist(term item, GetItems(), {
- if (item[2]:false == false && item[3]:false == true)
- return `item(item[0]:nil, item[1]:nil, true, false);
- else
- return item;
- }));
- break;
-
- case `remove:
- SetItems(maplist(term item, GetItems(), {
- if (item[2]:false == true && item[3]:false == true)
- return `item(item[0]:nil, item[1]:nil, false, false);
- else
- return item;
- }));
- break;
-
- case `add_all:
- SetItems(maplist(term item, GetItems(), {
- if (item[2]:false == false)
- return `item(item[0]:nil, item[1]:nil, true, false);
- else
- return item;
- }));
- break;
-
- case `remove_all:
- SetItems(maplist(term item, GetItems(), {
- if (item[2]:false == true)
- return `item(item[0]:nil, item[1]:nil, false, false);
- else
- return item;
- }));
- break;
+ case `add: {
+ list<any> tmp1 = (list<any>) UI::QueryWidget(`id(`unselected), `SelectedItems);
+ selected = flatten([ selected, tmp1 ]);
+ } break;
+
+ case `remove: {
+ list<any> tmp1 = (list<any>) UI::QueryWidget(`id(`selected), `SelectedItems);
+ selected = filter(any tmp2, selected, { return !contains(tmp1, tmp2); });
+ } break;
+
+ case `add_all: {
+ selected = maplist(term item, items, { return argsof(item[0]:`id())[0]:""; });
+ } break;
+
+ case `remove_all: {
+ selected = [];
+ } break;
+ }
+
+ if (contains([`add, `add_all, `remove, `remove_all], widget))
+ {
+ UI::ChangeWidget(`id(`unselected), `Items, GetUnselectedItems());
+ UI::ChangeWidget(`id(`selected), `Items, GetSelectedItems());
}
}
}
Modified: branches/tmp/aschnell/part-redesign/yast2-storage.spec.in
URL: http://svn.opensuse.org/viewcvs/yast/branches/tmp/aschnell/part-redesign/yast2-storage.spec.in?rev=49220&r1=49219&r2=49220&view=diff
==============================================================================
--- branches/tmp/aschnell/part-redesign/yast2-storage.spec.in (original)
+++ branches/tmp/aschnell/part-redesign/yast2-storage.spec.in Thu Jul 17 15:12:24 2008
@@ -9,6 +9,7 @@
# AutionstData
Requires: yast2-core >= 2.17.1
Requires: yast2 >= 2.17.3
+Requires: yast2-libyui >= 2.17.5
%ifarch s390 s390x
Requires: yast2-s390
%endif
--
To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org
For additional commands, e-mail: yast-commit+help@opensuse.org