ACC SHELL
/**
* Module: auto_part_ui.ycp
*
* Authors: Andreas Schwab (schwab@suse.de)
* Klaus Kämpf (kkaempf@suse.de)
*
* Purpose: This module contains the user interface
* definitions for the automatic partitioner
*
*
*
* $Id: auto_part_ui.ycp 58156 2009-07-27 09:59:06Z aschnell $
*
* used globals:
*
* defined functions
global define display_error_box (string reason) ``{
global define partition_text (integer nr, map pentry) ``{
global define construct_partition_dialog ()
global define open_auto_dialog (string targetname, term targetbox) ``{
global define create_resize_dialog (list partitions) ``{
*/
{
textdomain "storage";
import "Wizard";
import "Partitions";
import "Popup";
import "Product";
import "StorageProposal";
// --------------------------------------------------------------
// warning and pop-ups
define void display_error_box (string reason) ``{
// There is a consistency check for the selection. Next is the message, that
// is displayed. The reason is determined within this consistency check and
// then the message is passed through this interface transparently
string text = sformat(_("The current selection is invalid:\n%1"), reason);
Popup::Message(text);
};
// Return a text that describes a partition
define string partition_text (integer nr, map pentry, integer bps)
``{
string size_str = Storage::ByteToHumanString(size_of_region(pentry["region"]:[], bps));
if( pentry["type"]:`unknown == `free)
// list of partition checkboxes: show partition as unassigned
// e.g. "1: 2 GB, unassigned"
return sformat( _("&%1: %2, unassigned"), nr, size_str );
else
// list of partition checkboxes: show partition as assigned
if (pentry["label"]:"" == "")
return sformat( "&%1: %2, %3 (%4)", nr, size_str,
pentry["fstype"]:"", pentry["device"]:"" );
else
return sformat( "&%1: %2, %3 (%4, LABEL=%5)", nr, size_str,
pentry["fstype"]:"", pentry["device"]:"", pentry["label"]:"" );
};
define map construct_partition_dialog( list<map> partitions, string ptype,
integer bps )
``{
term vbox_contents =
`VBox( // Message between the full name of the hard disk to use
// and the "Use entire hard disk" button
// - please avoid excessively long lines - rather, include a newline
`Left( `Label (sformat(_("Disk Areas to Use
to Install %1
"),Product::name))),
`VSpacing(0.3)
);
// Add option to select the entire disk at once
vbox_contents =
add( vbox_contents,
// pushbutton to choose the entire disk, erasing all data on
// the disk this is an easy way to select all partitions on
// the target disk
`Left(`PushButton (`id (`full), _("Use &entire hard disk"))));
vbox_contents = add (vbox_contents, `VSpacing(0.5) );
integer i = 0;
integer ui_id = 0;
foreach( map pentry, partitions,
``{
symbol ptype = pentry["type"]:`unknown;
if (ptype != `extended)
{
// skip #3 on AlphaBSD and SparcBSD
if( pentry["fsid"]:0 != Partitions::fsid_mac_hidden &&
((ptype!=`bsd && ptype!=`sun) || pentry["nr"]:0 != 3) &&
!pentry["create"]:false)
{
ui_id = pentry["ui_id"]:0;
i = i + 1;
boolean sel = pentry["delete"]:false || ptype==`free;
vbox_contents = add (vbox_contents,
`Left(`CheckBox (`id (ui_id),
partition_text(i, pentry, bps),
sel)));
}
}
});
return $[ "term": vbox_contents, "high_id": ui_id ];
};
define term create_whole_disk_dialog () ``{
// There were no prior partitions on this disk.
// No partitions to choose from will be displayed.
return (`VBox(`Left(`Label( sformat(_("There are no partitions on this disk yet.
The entire disk will be used for %1."),Product::name)))));
};
define term create_resize_dialog (list<map> partitions, integer bps)
``{
// popup text
string explanation = _("This disk appears to be used by Windows.
There is not enough space to install Linux.");
return (`VBox(
`RadioButtonGroup (
`HBox(
`HSpacing(1.5),
`VBox (
`Left(`Label( explanation )),
`VSpacing(0.5),
`Left (`RadioButton (`id (`part_id),
// Radio button for using an entire (Windows) partition for Linux
_("&Delete Windows completely") ) ),
`VSpacing(0.5),
`Left (`RadioButton (`id (`resize),
// Radio button for resizing a (Windows) partition
_("&Shrink Windows partition"), true ) )
)
)
)
)
);
};
// --------------------------------------------------------------
// normal case
//
define void open_auto_dialog (string targetname, term targetbox) ``{
// helptext for semi-automatic partitioning
// part 1 of 4
string helptext = _("<p>
Select where on your hard disk to install &product;.
</p>
");
// helptext, part 2 of 4
helptext = helptext + _("<p>
You can either use the <b>entire hard disk</b> or one or more of the
partitions or free regions shown.
</p>");
// helptext, part 3 of 4
helptext = helptext + _("<p>
Notice: If you select a region that is not shown as <i>free</i>, you
might loose existing data on your hard disk. This could also affect
other operating systems.
</p>");
// helptext, part 4 of 4
helptext = helptext + _("<p>
<b><i>The marked regions will be deleted. All data there will be
lost. </i></b> There will be no way to recover this data.
</p>
");
// Information what to do, background information
Wizard::SetContents( _("Preparing Hard Disk"),
`HCenter(
`HSquash(
`Frame(
// Frame title for installation target hard disk / partition(s)
_("Installing on:"),
`HBox(
`HSpacing(),
`VBox(
`VSpacing(0.5),
`HBox(
`HSpacing(2),
`Left( `Label(`opt(`outputField), targetname) )
),
`VSpacing(0.5),
// All partitions are listed that are found on the target (hard disk).
`VSquash( targetbox ),
`VSpacing(0.5)
),
`HSpacing()
)
)
)
), helptext, (boolean)WFM::Args (0), (boolean)WFM::Args (1));
};
// resize case
//
define void open_auto_dialog_resize (string targetname, term targetbox)
``{
// helptext for semi-automatic partitioning
// part 1 of 2
string helptext = _("<p>
The selected hard disk is probably used by Windows. There is not enough
space for &product;. You can either <b>delete Windows completely</b> or
<b>shrink</b> it to get enough free space.
</p>");
// helptext, part 2 of 2
helptext = helptext + _("<p>
If you delete Windows, all data on this partition will be <b>irreversibly
lost</b> in the installation. When shrinking Windows, we <b>strongly
recommend a data backup</b>, because the data must be reorganized.
This may fail under rare circumstances.
</p>
");
// Information what to do, background information
Wizard::SetContents( _("Preparing Hard Disk"),
`HCenter(
`Frame(
// Frame title for installation target hard disk / partition(s)
_("Installing on:"),
`HBox(
`HSpacing(),
`VBox(
`VSpacing(0.5),
`HBox(
`HSpacing(2),
`Left( `Label(`opt(`outputField), targetname) )
),
`VSpacing(0.5),
// All partitions are listed that are found on the target (hard disk).
`VSquash(targetbox),
`VSpacing(0.5)
),
`HSpacing()
)
)
), helptext, (boolean)WFM::Args(0), (boolean)WFM::Args (1));
};
term add_common_widgets( term vbox )
{
map cfg = StorageProposal::GetControlCfg();
term vb = `VBox();
vb = add (vb,
`Left(`HBox(`HSpacing(3), `CheckBox( `id(`home),
// Label text
_("Propose Separate &Home Partition"),
cfg["home"]:false ))));
vb = add (vb, `VSpacing(1) );
vb = add( vb,
`Left(`HBox(`HSpacing(3), `CheckBox(`id(`lvm), `opt(`notify),
// Label text
_("Create &LVM Based Proposal"), cfg["prop_lvm"]:false ))));
vb = add(vb,
`Left(`HBox(`HSpacing(7), `CheckBox(`id(`encrypt), `opt(`notify),
_("Encrypt Volume Group")))));
vbox = add (vbox, `VSpacing(1.5) );
term frame = `HVCenter(`Frame( _("Proposal type"), `HVCenter(vb) ));
vbox = add (vbox, frame );
return( vbox );
}
}
ACC SHELL 2018