summaryrefslogtreecommitdiff
path: root/python/progress.cc
diff options
context:
space:
mode:
authorMichael Vogt <michael.vogt@ubuntu.com>2005-04-11 14:19:44 +0000
committerMichael Vogt <michael.vogt@ubuntu.com>2005-04-11 14:19:44 +0000
commita8074615c2bac880bf4fd7d5b15e621b88a20052 (patch)
tree4e929c12c6997452335d5620b5b5208affb83698 /python/progress.cc
parent1b514e848902f609cba9b2247702fc6d714d2456 (diff)
downloadpython-apt-a8074615c2bac880bf4fd7d5b15e621b88a20052.tar.gz
* cdrom interface added
Diffstat (limited to 'python/progress.cc')
-rw-r--r--python/progress.cc69
1 files changed, 61 insertions, 8 deletions
diff --git a/python/progress.cc b/python/progress.cc
index 43490247..54e2096e 100644
--- a/python/progress.cc
+++ b/python/progress.cc
@@ -1,5 +1,5 @@
// Description /*{{{*/
-// $Id: progress.cc,v 1.5 2003/06/03 03:03:23 mdz Exp $
+// $Id: progress.cc,v 1.5 2003/06/03 03:03:23 mvo Exp $
/* ######################################################################
Progress - Wrapper for the progress related functions
@@ -13,7 +13,8 @@
// generic
bool PyCallbackObj::RunSimpleCallback(const char* method_name,
- PyObject *arglist)
+ PyObject *arglist,
+ PyObject **res)
{
if(callbackInst == 0)
return false;
@@ -35,8 +36,10 @@ bool PyCallbackObj::RunSimpleCallback(const char* method_name,
return NULL;
}
-
- Py_XDECREF(result);
+ if(res != NULL)
+ *res = result;
+ else
+ Py_XDECREF(result);
Py_XDECREF(method);
return true;
@@ -71,10 +74,17 @@ bool PyFetchProgress::MediaChange(string Media, string Drive)
{
//std::cout << "MediaChange" << std::endl;
PyObject *arglist = Py_BuildValue("(ss)", Media.c_str(), Drive.c_str());
- RunSimpleCallback("MediaChange", arglist);
-
- // FIXME: need to return depending on the python result
- return true;
+ PyObject *result;
+ RunSimpleCallback("MediaChange", arglist, &result);
+
+ bool res = true;
+ if(!PyArg_Parse(result, "b", &res))
+ std::cerr << "result could not be parsed" << std::endl;
+
+ // FIXME: find out what it should return usually
+ //std::cerr << "res is: " << res << std::endl;
+
+ return res;
}
void PyFetchProgress::UpdateStatus(pkgAcquire::ItemDesc &Itm, int status)
@@ -223,3 +233,46 @@ pkgPackageManager::OrderResult PyInstallProgress::Run(pkgPackageManager *pm)
return res;
}
+
+
+//-----------------------------------------------------------------------------
+// apt-cdrom interface
+
+void PyCdromProgress::Update(string text, int current)
+{
+ PyObject *arglist = Py_BuildValue("(si)", text.c_str(), current);
+ RunSimpleCallback("Update", arglist);
+}
+
+bool PyCdromProgress::ChangeCdrom()
+{
+ PyObject *arglist = Py_BuildValue("()");
+ PyObject *result;
+ RunSimpleCallback("ChangeCdrom", arglist, &result);
+
+ bool res = true;
+ if(!PyArg_Parse(result, "b", &res))
+ std::cerr << "ChangeCdrom: result could not be parsed" << std::endl;
+
+ return res;
+}
+
+
+bool PyCdromProgress::AskCdromName(string &Name)
+{
+ PyObject *arglist = Py_BuildValue("()");
+ PyObject *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;
+
+ // set the new name
+ Name = string(new_name);
+
+ return res;
+}