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
/
modules
/
PackageSelectionIO.ycp
< prev
next >
Wrap
Text File
|
2006-11-29
|
8KB
|
308 lines
/**
* Module: PackageSelectionIO.ycp
*
* Authors: Stefan Schubert (schubi@suse.de)
*
* Purpose: Saving and loading user package selections
*
* $Id: PackageSelectionIO.ycp 21866 2005-02-23 13:50:15Z jsrain $
*/
{
module "PackageSelectionIO";
textdomain "packager";
import "Installation";
import "Label";
import "Stage";
import "Popup";
import "Report";
import "StorageDevices";
string lastHarddiskPath = "/var/lib/YaST2/packages.usr";
string lastFloppyPath = "packages.usr";
boolean floppySelected = false;
boolean savedLaterSelected = false;
//
// Saving package selections
//
global define boolean savePackageSelection( boolean saveLater ) ``{
boolean success = true;
if ( floppySelected && saveLater)
{
string floppy_path = "/media/floppy/";
WFM::Execute (.local.umount, floppy_path); // Just for safety
// Yes/No MsgBox; default: Yes
// Ask for a formatted floppy to save the package selection
while (Popup::YesNo(_("The current package selection will be saved
on a floppy disk. Insert a formatted floppy.
Write data to the floppy disk now?
")))
{
// mount floppy_path by WFM, so use Execute() and Write()
if ( WFM::Execute (.local.mount, [StorageDevices::FloppyDevice, floppy_path]) == true)
{
success = SCR::Write (.package.packageSelections, floppy_path+lastFloppyPath );
WFM::Execute (.local.umount, floppy_path);
if (success)
{
// msgbox
// data saved to floppy disk
Report::Message(_("Your settings have been saved to the floppy disk."));
break;
}
else
{
// text of a error popup: error occured while saving settings to the floppy
Report::Error(_("Error while saving settings to the floppy disk.
Verify that the floppy is formatted
and is not write protected.
"));
}
}
else
{
// Popup with a 'Retry', a 'Cancel' button and a 'Format floppy' button.
// Check inserted floppy.
// headline
any ret = Popup::AnyQuestion3(_("Could not find a formatted floppy disk."),
// popup contents
_("Are you sure you inserted a floppy disk
into the correct drive?
If so, is the disk formatted and verified?
"), Label::RetryButton(), Label::CancelButton(),
// push button
_("&Format floppy"), `focus_yes);
if (ret == `no) // cancel
{
break;
}
else if (ret == `retry) // format floppy
{
UI::OpenDialog( `opt( `decorated ),
`HBox(`HSpacing(1), `Label(Label::PleaseWaitMsg()), `HSpacing(1)));
SCR::Execute (.target.bash, "/sbin/mkdosfs " + StorageDevices::FloppyDevice);
UI::CloseDialog();
}
// default: retry loop
}
}
}
else if ( !floppySelected )
{
// Harddisk
if ( !Stage::initial () ||
( !saveLater
&& savedLaterSelected ))
{
// harddisk is present
success = SCR::Write (.package.packageSelections,
Installation::destdir + lastHarddiskPath );
if ( success )
{
// text of a message popup: package selection is written correctly
Report::Message(_("Your package selections have been written to the hard disk."));
}
else
{
// text of en error popup: error while writing data
Report::Message(_("Error while saving package selections to the hard disk."));
}
}
else
{
savedLaterSelected = true;
}
}
return success;
};
//
// Loading package selections
//
global define boolean loadPackageSelection( ) ``{
boolean success = true;
// text of a popup with 'Yes' and 'No' button
if ( Popup::YesNo(_("Do you really want to reset your settings?")))
{
if ( floppySelected )
{
string floppy_path = "/media/floppy/";
WFM::Execute (.local.umount, floppy_path); // Just for safety
// Yes/No MsgBox; default: Yes
// Ask for the floppy with the package selection.
while (Popup::YesNo(_("The current package selection will be loaded
from a floppy disk. Insert the floppy.
Read data from the floppy disk now?
")))
{
// mount floppy_path by WFM, so use Execute() and Read()
if ( WFM::Execute (.local.mount, [StorageDevices::FloppyDevice, floppy_path]) == true)
{
success = (boolean) SCR::Read (.package.packageSelections, floppy_path+lastFloppyPath );
WFM::Execute (.local.umount, floppy_path);
if (success)
{
break;
}
else
{
// text of an error popup: can't read settings from floppy
Report::Error(_("Error while loading settings from the floppy disk.
Verify that the correct floppy has been inserted
and that the path name has been written correctly.
"));
}
}
}
}
else
{
// Harddisk
success = (boolean) SCR::Read (.package.packageSelections,
Installation::destdir + lastHarddiskPath );
if ( !success )
{
// text of an error poup: can't read settings from hard disk
Report::Error(_("Error while loading settings from the hard disk.
Verify that the path name has been written correctly.
"));
}
}
}
else
{
success = false;
}
return success;
};
//
// Saving and Loading package user selections
//
global define void SaveLoadSelection( ) ``{
savedLaterSelected = false;
term dia_opt = `opt ( `decorated );
UI::OpenDialog( dia_opt,
`HBox( `VSpacing(10),
`VBox (`HSpacing(50),
// Headline of a popup with a 'Cancel', a 'Load' and a 'Save' button.
// A user defined selection of packages can be loaded or saved.
`Left(`Heading( _("Load or save package selection") )),
`VSpacing(0.2),
`RadioButtonGroup(`id(`selections),`opt(`notify),
`VBox(
`HBox(
`Left(`RadioButton(`id(`harddisk),
`opt(`notify),
// Radio button for saving/loading from harddisk
_("&Harddisk"),
!floppySelected)),
`Left(`RadioButton(`id(`floppy),
`opt(`notify),
// Radio button for saving/loading from floppy
_("&Floppy"),
floppySelected))
),
`VSpacing(0.8),
`TextEntry(`id(`path),
// Input field label for the filename
_("&Path name"),
( floppySelected? lastFloppyPath:lastHarddiskPath ))
)
),
`VSpacing(0.2),
`HBox(
// button labels selection popup
`Left(`PushButton( `id(`cancel),`opt(`default), Label::CancelButton())),
// push button
`Right(`PushButton( `id(`load), _("&Load"))),
// push button
`Right(`PushButton( `id(`save), _("&Save")))
)
)
)
);
while ( true )
{
boolean oldDiskSelected = (boolean) UI::QueryWidget(`id(`harddisk), `Value);
any ret = UI::UserInput();
if ( ret == `cancel )
{
break;
}
if ( UI::QueryWidget(`id(`harddisk), `Value) == true)
{
floppySelected = false;
if ( !oldDiskSelected )
{
// changed from floppy to HD
UI::ChangeWidget( `id(`path), `Value, lastHarddiskPath );
}
else
{
lastHarddiskPath = (string) UI::QueryWidget(`id(`path), `Value);
}
}
else
{
floppySelected = true;
if ( oldDiskSelected )
{
// changed from HD to floppy
UI::ChangeWidget( `id(`path), `Value, lastFloppyPath );
}
else
{
lastFloppyPath = (string) UI::QueryWidget(`id(`path), `Value);
}
}
if ( ret == `load )
{
if ( loadPackageSelection() )
{
break;
}
}
if ( ret == `save )
{
if ( savePackageSelection( true ) )
{
break;
}
}
}
UI::CloseDialog();
};
}