home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2007 January, February, March & April
/
Chip-Cover-CD-2007-02.iso
/
boot
/
i386
/
root
/
usr
/
share
/
YaST2
/
include
/
bootloader
/
routines
/
popups.ycp
< prev
next >
Wrap
Text File
|
2006-11-29
|
10KB
|
401 lines
/**
* File:
* include/bootloader/routines/popups.ycp
*
* Module:
* Bootloader installation and configuration
*
* Summary:
* Popups for being used inside bootloader configurator
*
* Authors:
* Jiri Srain <jsrain@suse.cz>
*
* $Id: popups.ycp 29127 2006-03-17 22:35:22Z odabrunz $
*
*/
{
textdomain "bootloader";
import "Encoding";
import "Label";
import "Misc";
import "Mode";
import "Popup";
import "Report";
import "String";
/**
* Inform about not available functionality when no loader selected
*/
void NoLoaderAvailable () {
// popup message
Popup::Message (_("This function is not available if the boot
loader is not specified."));
}
/**
* Display question
* @param name string name of currently selected section (to clone)
* @return boolean true if answered yes
*/
boolean askClone (string name) ``{
// yes-no popup
return Popup::YesNo (sformat (_("Clone the selected section '%1' instead
of creating a new empty section?
"), name));
}
/**
* Display question
* @return boolean true if answered yes
*/
boolean confirmAbortPopup () ``{
// yes-no popup question
return Popup::YesNo (_("Really leave the boot loader configuration without saving?
All changes will be lost.
"));
}
/**
* Display question
* @return boolean true if answered yes
*/
boolean resetSectsPopup () ``{
// yes-no popup question
return Popup::YesNo (_("Really reset your settings for sections?
All your changes made in section management will be lost.
"));
}
/**
* Display question
* @param title string section title
* @return boolean true if answered yes
*/
boolean confirmSectionDeletePopup (string title) ``{
// yes-no popup question
return Popup::YesNo (sformat(_("Really delete section %1?"), title));
}
/**
* Display question
* @return boolean true if answered yes
*/
boolean resetAllPopup () ``{
// yes-no popup question
return Popup::YesNo (_("Really reset all
your settings? All your changes will be lost.
"));
}
/**
* Display error
*/
void setLocationErrorPopup () ``{
// error popup
Report::Error (_("Set the boot loader location."));
}
/**
* Display error
*/
void emptyPasswdErrorPopup () ``{
// error popup
Report::Error (_("The password must not be empty."));
}
/**
* Display error
*/
void passwdMissmatchPopup () ``{
// error popup
Report::Error (_("'Password' and 'Retype password'
do not match. Retype the password."));
}
/**
* Display popup about change of section
* @param sect_name string section name
*/
void displayDiskChangePopup (string sect_name) ``{
// message popup, %1 is sectino label
Popup::Message (sformat (_("The disk settings have changed.
Check section %1 settings.
"), sect_name));
}
/**
* Display popup
*/
void displayFilesEditedPopup () ``{
// message popup
Popup::Message (_("The disk settings have changed and you edited boot loader
configuration files manually. Check the boot loader settings.
"));
}
/**
* Ask for change of bootloader location because of device unavailability
* @param device string currently confiogured device
* @return boolean yes if shall be reset
*/
boolean askLocationResetPopup (string device) ``{
// yes-no popup
return Popup::YesNo(sformat(_("Partition '%1' is not available.
Set default boot loader location?
"), device));
}
/**
* Show the popup before saving to floppy, handle actions
* @return true on success
*/
boolean saveToFLoppyPopup () ``{
boolean retval = true;
boolean format = false;
symbol fs = `no;
list items = [
// combobox item
`item (`id (`no), _("Do Not Create a File System")),
// combobox item
`item (`id (`ext2), _("Create an ext2 File System")),
];
if (SCR::Read (.target.size, "/sbin/mkfs.msdos") != -1)
// combobox item
items = add (items, `item (`id (`fat), _("Create a FAT File System")));
term contents = `VBox (
// label
`Label (_("The boot loader boot sector will be written
to a floppy disk. Insert a floppy disk
and confirm with OK.
")),
`VSpacing (1),
// checkbox
`Left (`CheckBox (`id (`format), _("&Low Level Format"), false)),
`VSpacing (1),
// combobox
`Left (`ComboBox (`id (`fs), _("&Create File System"), items)),
`VSpacing (1),
`PushButton (`id (`ok), Label::OKButton ())
);
UI::OpenDialog (contents);
any ret = nil;
while (ret != `ok)
{
ret = UI::UserInput ();
}
if (ret == `ok)
{
format = (boolean)UI::QueryWidget (`id (`format), `Value);
fs = (symbol)UI::QueryWidget (`id (`fs), `Value);
}
UI::CloseDialog ();
string dev = BootCommon::loader_device;
if (format)
{
boolean tmpretval = true;
y2milestone ("Low level formating floppy");
while (true)
{
tmpretval = 0 == SCR::Execute
(.target.bash, sformat ("/usr/bin/fdformat %1", dev));
if (tmpretval)
break;
// yes-no popup
if (! Popup::YesNo (_("Low level format failed. Try again?")))
break;
}
retval = retval && tmpretval;
}
if (fs == `ext2)
{
y2milestone ("Creating ext2 on floppy");
boolean tmpretval = 0 == SCR::Execute
(.target.bash, sformat ("/sbin/mkfs.ext2 %1", dev));
if (! tmpretval)
// error report
Report::Error (_("Creating file system failed."));
retval = retval && tmpretval;
}
else if (fs == `fat)
{
y2milestone ("Creating msdosfs on floppy");
boolean tmpretval = 0 == SCR::Execute
(.target.bash, sformat ("/sbin/mkfs.msdos %1", dev));
if (! tmpretval)
// error report
Report::Error (_("Creating file system failed."));
retval = retval && tmpretval;
}
return retval;
}
/**
* Display error
*/
void usedNameErrorPopup () ``{
// error popup
Report::Error (_("The name selected is already used.
Use a different one.
"));
}
/**
* Display error
* @return true if shall retry
*/
boolean writeErrorPopup () ``{
// yes-no popup
return Popup::YesNo (_("An error occurred during boot loader
installation. Retry boot loader configuration?
"));
}
/**
* Display popup
*/
void displayGfxMenuChangePopup () ``{
// message popup, gfxmenu is option name, leave as is
Popup::Message (_("The disk settings have changed.
Check the gfxmenu settings.
"));
}
/**
* Display yes-no popup
* @return true if confirmed
*/
boolean confirmOptionDeletePopup () ``{
// yes-no popup
return Popup::YesNo (_("Really delete the selected option?"));
}
/**
* Display error popup with log
* @param header string error header
* @param log string logfile contents
*/
void errorWithLogPopup (string header, string log) ``{
if (log == nil)
// FIXME too generic, but was already translated
log = _("Unable to install the boot loader.");
term text = `RichText( `opt(`plainText), log );
UI::OpenDialog(`opt ( `decorated ),
`VBox (`HSpacing(75),
`Heading(header),
// heading
`HBox(
`VSpacing(14),
text // e.g. `Richtext()
),
`PushButton( `id(`ok_help), `opt(`default), Label::OKButton() )
)
);
UI::SetFocus(`id(`ok_help) );
any r = UI::UserInput();
UI::CloseDialog();
}
/**
* Display popup
*/
void displayNoSupportPopup () ``{
// message popup
Popup::Message (_("Sorry, there are currently
no options to set here."));
}
/**
* Display popup
*/
void noBootloaderPopup () ``{
// error report
Report::Error (_("Unable to install the boot loader."));
}
/**
* Display popup
* @param bootloader string printable name of used bootloader
*/
void floppyWrittenPopup (string bootloader) ``{
string confirm_boot_msg = Misc::boot_msg;
// data saved to floppy disk
// popup, %1 is bootloader name
string msg = sformat (_("The %1 boot sector has been written to the floppy disk."),
bootloader);
msg = msg + "\n"
// popup - continuing - alternative 1 ...
+ _("Leave the floppy disk in the drive. The system will now be rebooted.");
if ( size (confirm_boot_msg) > 0 )
{
msg = msg + "\n\n" + confirm_boot_msg;
}
Misc::boot_msg = "";
// empty that Misc::boot_msg indicate the message has been displayed
Report::Message(msg);
}
/**
* Display popup - confirmation befopre restoring MBR
* @param device string device to restore to
* @return boolean true of MBR restore confirmed
*/
boolean restoreMBRPopup (string device) ``{
map stat = (map)SCR::Read (.target.stat, "/boot/backup_mbr");
integer ctime = stat["ctime"]:0;
string command = sformat (
"date --date='1970-01-01 00:00:00 %1 seconds'",
ctime);
map out = (map)SCR::Execute (.target.bash_output, command);
string c_time = out["stdout"]:"";
c_time = String::FirstChunk (c_time, "\n");
c_time = (string)UI::Recode (Encoding::console, "UTF-8", c_time);
// warning popup. %1 is device name, %2 is date/time in form of
// 'date' command output
string msg = sformat (_("Warning!
Current MBR of %1 will now be rewritten with MBR
saved at %2.
Only the booting code in the MBR will be rewritten.
The partition table remains unchanged.
Continue?
"), device, c_time);
term dialog = `HBox (
`HSpacing (1),
`VBox (
`VSpacing (0.2),
`Label (msg),
`HBox(
// PushButton
`PushButton (`id (`yes), _("&Yes, Rewrite")),
`HStretch (),
`PushButton (`id (`no), `opt (`default), Label::NoButton ())
),
`VSpacing (0.2)
),
`HSpacing(1)
);
UI::OpenDialog (`opt (`decorated, `warncolor), dialog);
symbol button = nil;
repeat
{
button = (symbol)UI::UserInput ();
} until (button == `yes || button == `no);
UI::CloseDialog();
return (button == `yes);
}
}