Author: lslezak
Date: Wed Mar 5 17:46:59 2008
New Revision: 45242
URL: http://svn.opensuse.org/viewcvs/yast?rev=45242&view=rev
Log:
- added Pkg::CallbackStartRefresh() and Pkg::CallbackDoneRefresh()
handlers, ask user to skip repository refresh at start up
(FATE #30962, bnc #231745)
- added menu buttons for refreshing all repositories (#344633)
- 2.16.23
Modified:
trunk/packager/VERSION
trunk/packager/package/yast2-packager.changes
trunk/packager/src/clients/repositories.ycp
trunk/packager/src/modules/PackageCallbacks.ycp
Modified: trunk/packager/VERSION
URL: http://svn.opensuse.org/viewcvs/yast/trunk/packager/VERSION?rev=45242&r1=45241&r2=45242&view=diff
==============================================================================
--- trunk/packager/VERSION (original)
+++ trunk/packager/VERSION Wed Mar 5 17:46:59 2008
@@ -1 +1 @@
-2.16.22
+2.16.23
Modified: trunk/packager/package/yast2-packager.changes
URL: http://svn.opensuse.org/viewcvs/yast/trunk/packager/package/yast2-packager.changes?rev=45242&r1=45241&r2=45242&view=diff
==============================================================================
--- trunk/packager/package/yast2-packager.changes (original)
+++ trunk/packager/package/yast2-packager.changes Wed Mar 5 17:46:59 2008
@@ -1,4 +1,13 @@
-------------------------------------------------------------------
+Wed Mar 5 16:16:50 CET 2008 - lslezak@suse.cz
+
+- added Pkg::CallbackStartRefresh() and Pkg::CallbackDoneRefresh()
+ handlers, ask user to skip repository refresh at start up
+ (FATE #30962, bnc #231745)
+- added menu buttons for refreshing all repositories (#344633)
+- 2.16.23
+
+-------------------------------------------------------------------
Wed Feb 27 10:46:23 CET 2008 - lslezak@suse.cz
- repositories - added 'community repos' text into the description
Modified: trunk/packager/src/clients/repositories.ycp
URL: http://svn.opensuse.org/viewcvs/yast/trunk/packager/src/clients/repositories.ycp?rev=45242&r1=45241&r2=45242&view=diff
==============================================================================
--- trunk/packager/src/clients/repositories.ycp (original)
+++ trunk/packager/src/clients/repositories.ycp Wed Mar 5 17:46:59 2008
@@ -37,6 +37,7 @@
// macro. Takes a lot of time because whole package manager target
// is initialized
import "Product";
+ import "Progress";
include "packager/inst_source_dialogs.ycp";
include "packager/key_manager_dialogs.ycp";
@@ -594,17 +595,15 @@
`PushButton (`id(`delete), `opt(`key_F5),
Label::DeleteButton ()),
`HStretch (),
-/*
+ `PushButton (`id (`key_mgr), _("&GPG Keys...")),
// menu button label
- `MenuButton (`id(`menu_button), `opt(`key_F6), _("Repository Settings"), [
-// `item(`id(`enable), enableButtonLabel),
-// `item(`id(`refresh_on_off), refreshOnOffButtonLabel),
+ `MenuButton (`id(`menu_button), `opt(`key_F6), _("Refresh"), [
`item(`id(`refresh), refreshButtonLabel ),
- `item(`id(`set_alias), setAliasButtonLabel)
+ // menu button label
+ `item(`id(`autorefresh_all), _("Refresh All Autor&efreshed")),
+ // menu button label
+ `item(`id(`refresh_enabled), _("Refresh All &Enabled"))
])
-*/
- `PushButton (`id (`key_mgr), _("&GPG Keys...")),
- `PushButton (`id (`refresh), refreshButtonLabel )
),
`VSpacing( 0.5 )
);
@@ -810,8 +809,68 @@
else if ( input == `refresh )
{
Pkg::SourceRefreshNow (id);
- fillTable ();
- fillCurrentRepoInfo();
+ }
+ else if ( input == `autorefresh_all || input == `refresh_enabled)
+ {
+ y2milestone("Refreshing all %1 repositories...", input == `refresh_enabled ? "enabled" : "autorefreshed");
+
+ boolean refresh_autorefresh_only = input == `autorefresh_all;
+ integer to_refresh = 0;
+
+ foreach(map src_state, sourceStatesOut,
+ {
+ if (src_state["enabled"]:false && (!refresh_autorefresh_only || src_state["autorefresh"]:false))
+ {
+ string url = Pkg::SourceGeneralData(src_state["SrcId"]:-1)["url"]:"";
+ string schema = tolower(substring(url, 0, 3));
+
+ if (schema != "cd:" && schema != "dvd")
+ {
+ to_refresh = to_refresh + 1;
+ }
+ }
+ }
+ );
+
+ y2milestone("%1 repositories will be refreshed", to_refresh);
+
+ if (to_refresh > 0)
+ {
+ Wizard::CreateDialog ();
+ Progress::New("Refreshing Repositories", "", to_refresh + 1, [ "Refresh Repositories" ], [], "TODO HELP");
+
+ foreach(map src_state, sourceStatesOut,
+ {
+ if (src_state["enabled"]:false && (!refresh_autorefresh_only || src_state["autorefresh"]:false))
+ {
+ integer srcid = src_state["SrcId"]:-1;
+ string name = src_state["name"]:"";
+
+ string url = Pkg::SourceGeneralData(src_state["SrcId"]:-1)["url"]:"";
+ string schema = tolower(substring(url, 0, 3));
+
+ if (schema != "cd:" && schema != "dvd")
+ {
+ y2milestone("Autorefreshing repository %1 (%2)", srcid, name);
+
+ // progress bar label
+ Progress::Title(sformat(_("Refreshing Repository %1..."), name));
+
+ Pkg::SourceRefreshNow(srcid);
+
+ Progress::NextStep();
+ }
+ else
+ {
+ y2milestone("Skipping a CD/DVD repository %1 (%2)", srcid, name);
+ }
+ }
+ }
+ );
+
+ Progress::Finish();
+ Wizard::CloseDialog();
+ }
}
else if ( input == `delete )
{
Modified: trunk/packager/src/modules/PackageCallbacks.ycp
URL: http://svn.opensuse.org/viewcvs/yast/trunk/packager/src/modules/PackageCallbacks.ycp?rev=45242&r1=45241&r2=45242&view=diff
==============================================================================
--- trunk/packager/src/modules/PackageCallbacks.ycp (original)
+++ trunk/packager/src/modules/PackageCallbacks.ycp Wed Mar 5 17:46:59 2008
@@ -57,6 +57,9 @@
// max. length of the text in the repository popup window
integer max_size = 60;
+ boolean autorefreshing = false;
+ boolean autorefreshing_aborted = false;
+
//--------------------------------------------------------------------------
// defaults
@@ -563,6 +566,12 @@
integer wanted, string wanted_label,
boolean double_sided)
{
+ if (autorefreshing && autorefreshing_aborted)
+ {
+ y2milestone("Refresh aborted");
+ return "C";
+ }
+
import "Mode";
if (!Mode::normal ())
@@ -1524,6 +1533,41 @@
PackageCallbacksInit::InitPackageCallbacks ();
}
+ global symbol AskAbortRefresh()
+ {
+ UI::OpenDialog(
+ `MarginBox(1, 0.5,
+ `VBox(
+ // a popup question with "Continue", "Skip" and "Abort" buttons
+ `Label(_("The repositories are being refreshed.
+Continue with refreshing?
+
+Note: If the refresh is skipped some packages
+might be missing or out of date.")),
+ `HBox(
+ `PushButton(`id(`continue), `opt(`default), Label::ContinueButton()),
+ `HSpacing(2),
+ `PushButton(`id(`skip), _("Skip Refresh"))
+ )
+ )
+ )
+ );
+
+ UI::SetFocus(`id(`continue));
+
+ symbol ui = (symbol) UI::UserInput();
+
+ UI::CloseDialog();
+
+ if (ui == `close)
+ {
+ ui = `continue;
+ }
+
+ y2milestone("User request: %1", ui);
+
+ return ui;
+ }
global boolean IsDownloadProgressPopup()
{
@@ -1584,7 +1628,7 @@
global void StartDownload (string url, string localfile)
{
- y2debug("Downloading %1 to %2", url, localfile);
+ y2milestone("Downloading %1 to %2", url, localfile);
// heading of popup
string heading = _("Downloading");
@@ -1617,6 +1661,12 @@
global boolean ProgressDownload (integer percent, integer expected_size)
{
+ if (autorefreshing && autorefreshing_aborted)
+ {
+ y2milestone("Refresh aborted");
+ return false;
+ }
+
if (Mode::commandline()) {
CommandLine::PrintVerboseNoCR(clear_string + sformat("%1%%", percent));
if (percent == 100)
@@ -1638,7 +1688,31 @@
UI::ChangeWidget (`id(`progress), `Value, percent);
}
- return UI::PollInput () != `abort;
+ boolean download_aborted = UI::PollInput () == `abort;
+
+ if (download_aborted && autorefreshing)
+ {
+ // display "Continue", "Skip Refresh" dialog
+ symbol answer = AskAbortRefresh();
+
+ if (answer == `continue)
+ {
+ download_aborted = false;
+ }
+ else if (answer == `skip)
+ {
+ download_aborted = true;
+ autorefreshing_aborted = true;
+
+ Pkg::SkipRefresh();
+ }
+ else
+ {
+ y2error("Unknown input value: %1", answer);
+ }
+ }
+
+ return !download_aborted;
}
}
@@ -1647,20 +1721,51 @@
{
if (error_value != 0)
{
- if (Mode::commandline()) {
- //error message, %1 is the cause for the error
- CommandLine::Print(sformat (_("Download failed:
-%1"), error_text));
+ if (autorefreshing && autorefreshing_aborted)
+ {
+ y2milestone("Refresh aborted");
}
else
{
- // error message, %1 is the cause for the error
- Popup::Error (sformat (_("Download failed:
-%1"), error_text));
+ if (Mode::commandline()) {
+ //error message, %1 is the cause for the error
+ CommandLine::Print(sformat (_("Download failed:
+ %1"), error_text));
+ }
+ else
+ {
+ // error message, %1 is the cause for the error
+ Popup::Error (sformat (_("Download failed:
+ %1"), error_text));
+ }
}
}
}
+ global void RefreshStarted()
+ {
+ y2milestone("Autorefreshing repositories...");
+
+ if (UI::WidgetExists(`id(`abort)))
+ {
+ UI::ChangeWidget(`id(`abort), `Label, _("Skip Autorefresh"));
+ }
+
+ autorefreshing = true;
+ autorefreshing_aborted = false;
+ }
+
+ global void RefreshDone()
+ {
+ if (UI::WidgetExists(`id(`abort)))
+ {
+ UI::ChangeWidget(`id(`abort), `Label, Label::AbortButton());
+ }
+
+ y2milestone("Autorefresh done");
+ autorefreshing = false;
+ autorefreshing_aborted = false;
+ }
global void SetDownloadCallbacks ()
{
@@ -1669,6 +1774,8 @@
Pkg::CallbackProgressDownload ("PackageCallbacks::ProgressDownload");
Pkg::CallbackDoneDownload ("PackageCallbacks::DoneDownload");
Pkg::CallbackDestDownload ("PackageCallbacks::DestDownload");
+ Pkg::CallbackStartRefresh("PackageCallbacks::RefreshStarted");
+ Pkg::CallbackDoneRefresh("PackageCallbacks::RefreshDone");
}
global void ClearDownloadCallbacks ()
@@ -1678,6 +1785,8 @@
Pkg::CallbackProgressDownload ("");
Pkg::CallbackDoneDownload ("");
Pkg::CallbackDestDownload ("");
+ Pkg::CallbackStartRefresh("");
+ Pkg::CallbackDoneRefresh("");
}
--
To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org
For additional commands, e-mail: yast-commit+help@opensuse.org