From 48cc0bcaabe824f49987ed3236b9421c583226dd Mon Sep 17 00:00:00 2001 From: Julian Andres Klode Date: Sun, 19 Jul 2009 15:40:40 +0200 Subject: python/progress.cc: CdromProgress.ask_cdrom_name() shall return None on failure. --- python/cdromprogress.cc | 6 +++--- python/progress.cc | 32 ++++++++++++++++++++------------ 2 files changed, 23 insertions(+), 15 deletions(-) (limited to 'python') diff --git a/python/cdromprogress.cc b/python/cdromprogress.cc index 09c76a2a..440b5ce6 100644 --- a/python/cdromprogress.cc +++ b/python/cdromprogress.cc @@ -37,7 +37,7 @@ static PyObject *cdromprogress_change_cdrom(PyObject *self, PyObject *args) // Takes a single PyObject argument as *arg static PyObject *cdromprogress_ask_cdrom_name(PyObject *self, PyObject *arg) { - Py_RETURN_FALSE; + Py_RETURN_NONE; } static PyMethodDef cdromprogress_methods[] = { @@ -47,8 +47,8 @@ static PyMethodDef cdromprogress_methods[] = { "change_cdrom() -> bool\n\nAsk for the CD-ROM to be changed.\n" "Return False if the user requested to cancel the action (default)."}, {"ask_cdrom_name",cdromprogress_ask_cdrom_name,METH_O, - "ask_cdrom_name(name: str) -> bool\n\nAsk for the name of the CD-ROM.\n" - "Return False if the user requested to cancel the action (default)."}, + "ask_cdrom_name() -> str\n\nAsk for the name of the CD-ROM.\n" + "Return None if the user requested to cancel the action (default)."}, {NULL} }; diff --git a/python/progress.cc b/python/progress.cc index b19ab0c7..55ed13f9 100644 --- a/python/progress.cc +++ b/python/progress.cc @@ -548,20 +548,28 @@ bool PyCdromProgress::ChangeCdrom() bool PyCdromProgress::AskCdromName(string &Name) { PyObject *arglist = Py_BuildValue("()"); - PyObject *result; - - if (!RunSimpleCallback("ask_cdrom_name", arglist, &result)) - RunSimpleCallback("askCdromName", arglist, &result); - const char *new_name; bool res; - if(!PyArg_Parse(result, "(bs)", &res, &new_name)) - std::cerr << "AskCdromName: result could not be parsed" << std::endl; - - //std::cerr << "got: " << res << " " << "name: " << new_name << std::endl; + PyObject *result; - // set the new name - Name = string(new_name); + // New style: String on success, None on failure. + if (RunSimpleCallback("ask_cdrom_name", arglist, &result)) { + if(result == Py_None) + return false; + if(!PyArg_Parse(result, "s", &new_name)) + std::cerr << "AskCdromName: result could not be parsed" << std::endl; + else + Name = string(new_name); + return true; + } + // Old style: (True, name) on success, (False, name) on failure. + else { + RunSimpleCallback("askCdromName", arglist, &result); + if(!PyArg_Parse(result, "(bs)", &res, &new_name)) + std::cerr << "AskCdromName: result could not be parsed" << std::endl; + // set the new name + Name = string(new_name); - return res; + return res; + } } -- cgit v1.2.3