[Aptitude-svn-commit] r3540 - in branches/aptitude-0.3/aptitude: . src
Daniel Burrows
dburrows@costa.debian.org
Sat, 02 Jul 2005 14:40:55 +0000
Author: dburrows
Date: Sat Jul 2 14:40:53 2005
New Revision: 3540
Modified:
branches/aptitude-0.3/aptitude/ChangeLog
branches/aptitude-0.3/aptitude/src/download_list.cc
branches/aptitude-0.3/aptitude/src/download_screen.cc
Log:
Add a way to cancel the 'insert CD' prompt.
Modified: branches/aptitude-0.3/aptitude/ChangeLog
==============================================================================
--- branches/aptitude-0.3/aptitude/ChangeLog (original)
+++ branches/aptitude-0.3/aptitude/ChangeLog Sat Jul 2 14:40:53 2005
@@ -1,5 +1,10 @@
2005-07-02 Daniel Burrows <dburrows@debian.org>
+ * src/download_list.cc, src/download_screen.cc:
+
+ Allow the user to cancel a media change. Although I can't
+ really test it, this hopefully Closes: #315885.
+
* src/generic/Makefile.am, src/generic/mut_fun.h:
Add a functor class that assigns its argument to a fixed
Modified: branches/aptitude-0.3/aptitude/src/download_list.cc
==============================================================================
--- branches/aptitude-0.3/aptitude/src/download_list.cc (original)
+++ branches/aptitude-0.3/aptitude/src/download_list.cc Sat Jul 2 14:40:53 2005
@@ -267,21 +267,34 @@
sync_top();
}
-// I'm not sure this works!
+static void set_and_exit(bool &target, bool val)
+{
+ target=val;
+ vscreen_exitmain();
+}
+
bool download_list::MediaChange(string media, string drive,
download_manager &manager)
{
fragment *f=wrapbox(fragf(_("Please insert the disc labeled \"%s\" into the drive \"%s\""),
media.c_str(), drive.c_str()));
- vscreen_widget *w=vs_dialog_ok(f, arg(sigc::ptr_fun(vscreen_exitmain)),
- get_style("MediaChange"));
+ bool rval=true;
+ vscreen_widget *w=vs_dialog_yesno(f,
+ arg(sigc::bind(sigc::ptr_fun(set_and_exit),
+ rval, true)),
+ transcode(_("Continue")),
+ arg(sigc::bind(sigc::ptr_fun(set_and_exit),
+ rval, false)),
+ transcode(_("Abort")),
+ get_style("MediaChange"));
w->show_all();
+
popup_widget(w);
vscreen_mainloop();
- return true;
+ return rval;
}
void download_list::IMSHit(pkgAcquire::ItemDesc &itmdesc,
Modified: branches/aptitude-0.3/aptitude/src/download_screen.cc
==============================================================================
--- branches/aptitude-0.3/aptitude/src/download_screen.cc (original)
+++ branches/aptitude-0.3/aptitude/src/download_screen.cc Sat Jul 2 14:40:53 2005
@@ -35,7 +35,9 @@
#include <vscreen/vscreen.h>
#include <vscreen/vs_util.h>
+#include <sigc++/adaptors/bind.h>
#include <sigc++/functors/ptr_fun.h>
+#include <generic/mut_fun.h>
#define CRITICAL_ENTER \
sigset_t ___signals,___oldset;\
@@ -48,6 +50,13 @@
sigprocmask(SIG_SETMASK, &___oldset, &___signals);\
assert(sigismember(&___signals, SIGWINCH));
+// argh
+static void set_and_exit(bool &target, bool val)
+{
+ target=val;
+ vscreen_exitmain();
+}
+
bool download_screen::MediaChange(string Media, string Drive)
{
CRITICAL_ENTER
@@ -58,15 +67,22 @@
_("Please insert the disc labeled \"%s\" into the drive \"%s\""),
Media.c_str(), Drive.c_str());
- popup_widget(vs_dialog_ok(transcode(buf),
- arg(sigc::ptr_fun(vscreen_exitmain)),
- get_style("MediaChange")));
+ bool rval=true;
+
+ popup_widget(vs_dialog_yesno(transcode(buf),
+ arg(sigc::bind(sigc::ptr_fun(set_and_exit),
+ rval, true)),
+ transcode(_("Continue")),
+ arg(sigc::bind(sigc::ptr_fun(set_and_exit),
+ rval, false)),
+ transcode(_("Abort")),
+ get_style("MediaChange")));
CRITICAL_EXIT
vscreen_mainloop(); // Eeeeeek! Recursive mainloop! I'm afraid..
- return true;
+ return rval;
}
void download_screen::IMSHit(pkgAcquire::ItemDesc &itmdesc)