[dia] python: fix PyEval_CallObjectWithKeywords deprecation warning



commit e8f059a27aa1d8553a31becdd6af73ebbaf32bfe
Author: Zander Brown <zbrown gnome org>
Date:   Tue Dec 29 00:22:26 2020 +0000

    python: fix PyEval_CallObjectWithKeywords deprecation warning
    
    Python 3.9 deprecated much of PyEval_*

 plug-ins/python/dia_rotate.py       |   6 +-
 plug-ins/python/diamodule.c         |   4 +-
 plug-ins/python/gtkcons.py          |   5 +-
 plug-ins/python/pydia-diagram.c     |   4 +-
 plug-ins/python/pydia-diagramdata.c | 116 ++---
 plug-ins/python/pydia-render.c      | 899 ++++++++++++++++++++----------------
 plug-ins/python/scascale.py         |   8 +-
 plug-ins/python/select_by.py        |   7 +-
 8 files changed, 593 insertions(+), 456 deletions(-)
---
diff --git a/plug-ins/python/dia_rotate.py b/plug-ins/python/dia_rotate.py
index 6f2388435..19f1e64ae 100644
--- a/plug-ins/python/dia_rotate.py
+++ b/plug-ins/python/dia_rotate.py
@@ -16,6 +16,7 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
+import warnings
 import dia, math
 
 import gettext
@@ -27,7 +28,10 @@ class CRotateDialog :
 
                gi.require_version('Gtk', '2.0')
 
-               from gi.repository import Gtk
+               with warnings.catch_warnings():
+                       warnings.filterwarnings("ignore", category=RuntimeWarning)
+                       from gi.repository import Gtk
+
                win = Gtk.Window()
                win.connect("delete_event", self.on_delete)
                win.set_title(_("Rotate counter-clockwise"))
diff --git a/plug-ins/python/diamodule.c b/plug-ins/python/diamodule.c
index 75d85cf32..f10115f14 100644
--- a/plug-ins/python/diamodule.c
+++ b/plug-ins/python/diamodule.c
@@ -322,7 +322,7 @@ PyDia_import_data (const gchar* filename, DiagramData *dia, DiaContext *ctx, voi
 
     arg = Py_BuildValue ("(sO)", filename, diaobj);
     if (arg) {
-      PyObject *res = PyEval_CallObject (func, arg);
+      PyObject *res = PyObject_CallObject (func, arg);
       ON_RES(res, TRUE);
       bRet = !!res;
     }
@@ -397,7 +397,7 @@ PyDia_callback_func (DiagramData *dia,
 
   arg = Py_BuildValue ("(Oi)", diaobj, flags);
   if (arg) {
-    res = PyEval_CallObject (func, arg);
+    res = PyObject_CallObject (func, arg);
     ON_RES(res, TRUE);
   }
   Py_XDECREF (arg);
diff --git a/plug-ins/python/gtkcons.py b/plug-ins/python/gtkcons.py
index 990777fa1..764c5ba82 100755
--- a/plug-ins/python/gtkcons.py
+++ b/plug-ins/python/gtkcons.py
@@ -27,6 +27,7 @@
 # As well as the starting attributes in namespace, the session will also
 # have access to the list __history__, which is the command history.
 
+import warnings
 import sys, traceback
 
 import gi
@@ -34,7 +35,9 @@ import gi
 gi.require_version('Pango', '1.0')
 gi.require_version('Gtk', '2.0')
 
-from gi.repository import GObject, Pango, Gtk, Gdk
+with warnings.catch_warnings():
+    warnings.filterwarnings("ignore", category=RuntimeWarning)
+    from gi.repository import GObject, Pango, Gtk, Gdk
 
 import gettext
 
diff --git a/plug-ins/python/pydia-diagram.c b/plug-ins/python/pydia-diagram.c
index 158a5ebe7..242090311 100644
--- a/plug-ins/python/pydia-diagram.c
+++ b/plug-ins/python/pydia-diagram.c
@@ -435,7 +435,7 @@ PyDiaDiagram_CallbackRemoved (Diagram *dia, void *user_data)
   /* Call the callback. */
   arg = Py_BuildValue ("(O)", diaobj);
   if (arg) {
-    res = PyEval_CallObject (func, arg);
+    res = PyObject_CallObject (func, arg);
     ON_RES (res, FALSE);
   }
   Py_XDECREF (arg);
@@ -481,7 +481,7 @@ PyDiaDiagram_CallbackSelectionChanged (Diagram *dia, int sel, void *user_data)
   /* Call the callback. */
   arg = Py_BuildValue ("(Oi)", dgm, sel);
   if (arg) {
-    res = PyEval_CallObject (func, arg);
+    res = PyObject_CallObject (func, arg);
     ON_RES (res, FALSE);
   }
   Py_XDECREF (arg);
diff --git a/plug-ins/python/pydia-diagramdata.c b/plug-ins/python/pydia-diagramdata.c
index ed6c816e4..89642709e 100644
--- a/plug-ins/python/pydia-diagramdata.c
+++ b/plug-ins/python/pydia-diagramdata.c
@@ -215,72 +215,78 @@ PyDiaDiagramData_DeleteLayer(PyDiaDiagramData *self, PyObject *args)
   return Py_None;
 }
 
-/*!
- *  Callback for "object_add" and "object_remove "signal, used by the connect_after method,
- *  it's a proxy for the python function, creating the values it needs.
- *  Params are those of the signals on the Diagram object.
- *  @param dia The DiagramData that emitted the signal
- *  @param layer The Layer that the object is removed or added to.
- *  @param obj The DiaObject that the signal is about.
- *  @param user_data The python function to be called by the callback.
+
+/**
+ * PyDiaDiagramData_CallbackObject:
+ * @dia: The #DiagramData that emitted the signal
+ * @layer: The Layer that the object is removed or added to.
+ * @obj: The DiaObject that the signal is about.
+ * @user_data: The python function to be called by the callback.
+ *
+ * Callback for "object_add" and "object_remove "signal, used by the
+ * connect_after method, it's a proxy for the python function, creating the
+ * values it needs. Params are those of the signals on the Diagram object.
  */
 static void
-PyDiaDiagramData_CallbackObject(DiagramData *dia, DiaLayer *layer, DiaObject *obj, void *user_data)
+PyDiaDiagramData_CallbackObject (DiagramData *dia,
+                                 DiaLayer    *layer,
+                                 DiaObject   *obj,
+                                 void        *user_data)
 {
-    PyObject *pydata,*pylayer,*pyobj,*res,*arg;
-    PyObject *func = user_data;
+  PyObject *pydata,*pylayer,*pyobj,*res,*arg;
+  PyObject *func = user_data;
 
-    /* Check that we got a function */
-    if (!func || !PyCallable_Check (func)) {
-        g_warning ("Callback called without valid callback function.");
-        return;
-    }
+  /* Check that we got a function */
+  if (!func || !PyCallable_Check (func)) {
+    g_warning ("Callback called without valid callback function.");
+    return;
+  }
 
-    /* Create a new PyDiaDiagramData object.
-     */
-    if (dia)
-        pydata = PyDiaDiagramData_New (dia);
-    else {
-        pydata = Py_None;
-        Py_INCREF (pydata);
-    }
+  /* Create a new PyDiaDiagramData object.
+    */
+  if (dia) {
+    pydata = PyDiaDiagramData_New (dia);
+  } else {
+    pydata = Py_None;
+    Py_INCREF (pydata);
+  }
 
-    /*
-     * Create PyDiaLayer
-     */
-    if (layer)
-        pylayer = PyDiaLayer_New (layer);
-    else {
-        pylayer = Py_None;
-        Py_INCREF (pylayer);
-    }
+  /*
+    * Create PyDiaLayer
+    */
+  if (layer) {
+    pylayer = PyDiaLayer_New (layer);
+  } else {
+    pylayer = Py_None;
+    Py_INCREF (pylayer);
+  }
 
-    /*
-     * Create PyDiaObject
-     */
-    if (layer)
-        pyobj = PyDiaObject_New (obj);
-    else {
-        pyobj = Py_None;
-        Py_INCREF (pyobj);
-    }
+  /*
+    * Create PyDiaObject
+    */
+  if (layer) {
+    pyobj = PyDiaObject_New (obj);
+  } else {
+    pyobj = Py_None;
+    Py_INCREF (pyobj);
+  }
 
 
-    Py_INCREF(func);
+  Py_INCREF (func);
 
-    /* Call the callback. */
-    arg = Py_BuildValue ("(OOO)", pydata,pylayer,pyobj);
-    if (arg) {
-      res = PyEval_CallObject (func, arg);
-      ON_RES(res, FALSE);
-    }
+  /* Call the callback. */
+  arg = Py_BuildValue ("(OOO)", pydata, pylayer, pyobj);
+  if (arg) {
+    res = PyObject_CallObject (func, arg);
+    ON_RES (res, FALSE);
+  }
 
-    /* Cleanup */
-    Py_XDECREF (arg);
-    Py_DECREF(func);
-    Py_XDECREF(pydata);
-    Py_XDECREF(pylayer);
-    Py_XDECREF(pyobj);
+  /* Cleanup */
+  Py_XDECREF (arg);
+  Py_DECREF (func);
+  Py_XDECREF (pydata);
+  Py_XDECREF (pylayer);
+  Py_XDECREF (pyobj);
 }
 
 
diff --git a/plug-ins/python/pydia-render.c b/plug-ins/python/pydia-render.c
index b4392c89f..7ec3762a7 100644
--- a/plug-ins/python/pydia-render.c
+++ b/plug-ins/python/pydia-render.c
@@ -95,35 +95,35 @@ struct _DiaPyRendererClass
 /* Moved here to avoid Doxygen picking up the wrong definitions */
 GType dia_py_renderer_get_type (void) G_GNUC_CONST;
 
-/*!
- * \brief Begin rendering with Python
+
+/**
+ * begin_render:
+ * @renderer: Explicit this pointer
+ * @update: The rectangle to update or %NULL for everything
  *
- * @param renderer Explicit this pointer
- * @param update The rectangle to update or NULL for everything
+ * Begin rendering with Python
  *
  * The Python side of the begin_render() method has a different signature.
- * It gets passed in a PyDia wrapped _DiagramData object and a filename
+ * It gets passed in a PyDia wrapped #DiagramData object and a filename
  * to store to.
- *
- * \memberof _DiaPyRenderer
  */
 static void
-begin_render(DiaRenderer *renderer, const DiaRectangle *update)
+begin_render (DiaRenderer *renderer, const DiaRectangle *update)
 {
   PyObject *func, *res, *arg, *self = PYDIA_RENDERER (renderer);
 
-  DIA_PY_RENDERER(renderer)->old_locale = setlocale(LC_NUMERIC, "C");
+  DIA_PY_RENDERER (renderer)->old_locale = setlocale (LC_NUMERIC, "C");
 
   func = PyObject_GetAttrString (self, "begin_render");
-  if (func && PyCallable_Check(func)) {
-    Py_INCREF(self);
-    Py_INCREF(func);
+  if (func && PyCallable_Check (func)) {
+    Py_INCREF (self);
+    Py_INCREF (func);
     arg = Py_BuildValue ("(Os)",
-                         DIA_PY_RENDERER(renderer)->diagram_data,
-                         DIA_PY_RENDERER(renderer)->filename);
+                         DIA_PY_RENDERER (renderer)->diagram_data,
+                         DIA_PY_RENDERER (renderer)->filename);
     if (arg) {
-      res = PyEval_CallObject (func, arg);
-      ON_RES(res, FALSE);
+      res = PyObject_CallObject (func, arg);
+      ON_RES (res, FALSE);
     }
     Py_XDECREF (arg);
     Py_DECREF (func);
@@ -131,24 +131,26 @@ begin_render(DiaRenderer *renderer, const DiaRectangle *update)
   }
 }
 
-/*!
- * \brief Finalize drawing/exporting
+
+/**
+ * end_render:
+ * @renderer: the #DiaRenderer
  *
- * \memberof _DiaPyRenderer
+ * Finalize drawing/exporting
  */
 static void
-end_render(DiaRenderer *renderer)
+end_render (DiaRenderer *renderer)
 {
   PyObject *func, *res, *self = PYDIA_RENDERER (renderer);
 
   func = PyObject_GetAttrString (self, "end_render");
-  if (func && PyCallable_Check(func)) {
-    Py_INCREF(self);
-    Py_INCREF(func);
-    res = PyEval_CallObject (func, (PyObject *)NULL);
-    ON_RES(res, FALSE);
-    Py_DECREF(func);
-    Py_DECREF(self);
+  if (func && PyCallable_Check (func)) {
+    Py_INCREF (self);
+    Py_INCREF (func);
+    res = PyObject_CallObject (func, (PyObject *) NULL);
+    ON_RES (res, FALSE);
+    Py_DECREF (func);
+    Py_DECREF (self);
   }
 
   Py_DECREF (DIA_PY_RENDERER (renderer)->diagram_data);
@@ -158,199 +160,224 @@ end_render(DiaRenderer *renderer)
 }
 
 
-/*!
- * \brief Set linewidth for later use
+/**
+ * set_linewidth:
+ * @renderer: the #DiaRenderer
+ * @linewidth: the linewidth
  *
- * Optional on the PyDia side.
+ * Set linewidth for later use
  *
- * \memberof _DiaPyRenderer
+ * Optional on the PyDia side.
  */
 static void
-set_linewidth(DiaRenderer *renderer, real linewidth)
+set_linewidth (DiaRenderer *renderer, double linewidth)
 {
   PyObject *func, *res, *arg, *self = PYDIA_RENDERER (renderer);
 
   func = PyObject_GetAttrString (self, "set_linewidth");
-  if (func && PyCallable_Check(func)) {
-    Py_INCREF(self);
-    Py_INCREF(func);
+  if (func && PyCallable_Check (func)) {
+    Py_INCREF (self);
+    Py_INCREF (func);
     arg = Py_BuildValue ("(d)", linewidth);
     if (arg) {
-      res = PyEval_CallObject (func, arg);
-      ON_RES(res, FALSE);
+      res = PyObject_CallObject (func, arg);
+      ON_RES (res, FALSE);
     }
     Py_XDECREF (arg);
-    Py_DECREF(func);
-    Py_DECREF(self);
+    Py_DECREF (func);
+    Py_DECREF (self);
+  } else {
+    /* member optional */
+    PyErr_Clear ();
   }
-  else /* member optional */
-    PyErr_Clear();
 }
 
-/*!
- * \brief Set linecaps for later use
+
+/**
+ * set_linecaps:
+ * @renderer: the #DiaRenderer
+ * @mode: #LineCaps
  *
- * Optional on the PyDia side.
+ * Set linecaps for later use
  *
- * \memberof _DiaPyRenderer
+ * Optional on the PyDia side.
  */
 static void
-set_linecaps(DiaRenderer *renderer, LineCaps mode)
+set_linecaps (DiaRenderer *renderer, LineCaps mode)
 {
   PyObject *func, *res, *arg, *self = PYDIA_RENDERER (renderer);
 
   switch(mode) {
-  case LINECAPS_BUTT:
-    break;
-  case LINECAPS_ROUND:
-    break;
-  case LINECAPS_PROJECTING:
-    break;
-  case LINECAPS_DEFAULT:
-  default:
-    PyErr_Warn (PyExc_RuntimeWarning, "DiaPyRenderer : Unsupported fill mode specified!\n");
+    case LINECAPS_BUTT:
+      break;
+    case LINECAPS_ROUND:
+      break;
+    case LINECAPS_PROJECTING:
+      break;
+    case LINECAPS_DEFAULT:
+    default:
+      PyErr_Warn (PyExc_RuntimeWarning,
+                  "DiaPyRenderer : Unsupported fill mode specified!\n");
   }
 
   func = PyObject_GetAttrString (self, "set_linecaps");
-  if (func && PyCallable_Check(func)) {
-    Py_INCREF(self);
-    Py_INCREF(func);
+  if (func && PyCallable_Check (func)) {
+    Py_INCREF (self);
+    Py_INCREF (func);
     arg = Py_BuildValue ("(i)", mode);
     if (arg) {
-      res = PyEval_CallObject (func, arg);
-      ON_RES(res, FALSE);
+      res = PyObject_CallObject (func, arg);
+      ON_RES (res, FALSE);
     }
     Py_XDECREF (arg);
-    Py_DECREF(func);
-    Py_DECREF(self);
+    Py_DECREF (func);
+    Py_DECREF (self);
+  } else {
+    /* member optional */
+    PyErr_Clear ();
   }
-  else /* member optional */
-    PyErr_Clear();
 }
 
-/*!
- * \brief Set linejoin for later use
+
+/**
+ * set_linejoin:
+ * @renderer: the #DiaRenderer
+ * @mode: the #LineJoin type
  *
- * Optional on the PyDia side.
+ * Set linejoin for later use
  *
- * \memberof _DiaPyRenderer
+ * Optional on the PyDia side.
  */
 static void
-set_linejoin(DiaRenderer *renderer, LineJoin mode)
+set_linejoin (DiaRenderer *renderer, LineJoin mode)
 {
   PyObject *func, *res, *arg, *self = PYDIA_RENDERER (renderer);
 
-  switch(mode) {
+  switch (mode) {
     case LINEJOIN_MITER:
-    break;
-  case LINEJOIN_ROUND:
-    break;
-  case LINEJOIN_BEVEL:
-    break;
-  case LINEJOIN_DEFAULT:
-  default:
-    PyErr_Warn (PyExc_RuntimeWarning, "DiaPyRenderer : Unsupported fill mode specified!\n");
+      break;
+    case LINEJOIN_ROUND:
+      break;
+    case LINEJOIN_BEVEL:
+      break;
+    case LINEJOIN_DEFAULT:
+    default:
+      PyErr_Warn (PyExc_RuntimeWarning,
+                  "DiaPyRenderer : Unsupported fill mode specified!\n");
   }
 
   func = PyObject_GetAttrString (self, "set_linejoin");
-  if (func && PyCallable_Check(func)) {
-    Py_INCREF(self);
-    Py_INCREF(func);
+  if (func && PyCallable_Check (func)) {
+    Py_INCREF (self);
+    Py_INCREF (func);
     arg = Py_BuildValue ("(i)", mode);
     if (arg) {
-      res = PyEval_CallObject (func, arg);
-      ON_RES(res, FALSE);
+      res = PyObject_CallObject (func, arg);
+      ON_RES (res, FALSE);
     }
     Py_XDECREF (arg);
-    Py_DECREF(func);
-    Py_DECREF(self);
+    Py_DECREF (func);
+    Py_DECREF (self);
+  } else {
+    /* member optional */
+    PyErr_Clear ();
   }
-  else /* member optional */
-    PyErr_Clear();
 }
 
-/*!
- * \brief Set linestyle for later use
+
+/**
+ * set_linestyle:
+ * @renderer: the #DiaRenderer
+ * @mode: the new #LineStyle
+ * @dash_length: how often to dash
  *
- * Optional on the PyDia side.
+ * Set linestyle for later use
  *
- * \memberof _DiaPyRenderer
+ * Optional on the PyDia side.
  */
 static void
-set_linestyle(DiaRenderer *renderer, LineStyle mode, real dash_length)
+set_linestyle (DiaRenderer *renderer, LineStyle mode, double dash_length)
 {
   PyObject *func, *res, *arg, *self = PYDIA_RENDERER (renderer);
 
   /* line type */
   switch (mode) {
-  case LINESTYLE_SOLID:
-    break;
-  case LINESTYLE_DASHED:
-    break;
-  case LINESTYLE_DASH_DOT:
-    break;
-  case LINESTYLE_DASH_DOT_DOT:
-    break;
-  case LINESTYLE_DOTTED:
-    break;
-  case LINESTYLE_DEFAULT:
-  default:
-    PyErr_Warn (PyExc_RuntimeWarning, "DiaPyRenderer : Unsupported fill mode specified!\n");
+    case LINESTYLE_SOLID:
+      break;
+    case LINESTYLE_DASHED:
+      break;
+    case LINESTYLE_DASH_DOT:
+      break;
+    case LINESTYLE_DASH_DOT_DOT:
+      break;
+    case LINESTYLE_DOTTED:
+      break;
+    case LINESTYLE_DEFAULT:
+    default:
+      PyErr_Warn (PyExc_RuntimeWarning,
+                  "DiaPyRenderer : Unsupported fill mode specified!\n");
   }
 
   func = PyObject_GetAttrString (self, "set_linestyle");
-  if (func && PyCallable_Check(func)) {
-    Py_INCREF(self);
-    Py_INCREF(func);
+  if (func && PyCallable_Check (func)) {
+    Py_INCREF (self);
+    Py_INCREF (func);
     arg = Py_BuildValue ("(id)", mode, dash_length);
     if (arg) {
-      res = PyEval_CallObject (func, arg);
-      ON_RES(res, FALSE);
+      res = PyObject_CallObject (func, arg);
+      ON_RES (res, FALSE);
     }
     Py_XDECREF (arg);
-    Py_DECREF(func);
-    Py_DECREF(self);
+    Py_DECREF (func);
+    Py_DECREF (self);
+  } else {
+    /* member optional */
+    PyErr_Clear ();
   }
-  else /* member optional */
-    PyErr_Clear();
 }
 
-/*!
- * \brief Set fillstyle for later use
+
+/**
+ * set_fillstyle:
+ * @renderer: the #DiaRenderer
+ * @mode: the #FillStyle to fill with
  *
- * Optional on the PyDia side.
+ * Set fillstyle for later use
  *
- * \memberof _DiaPyRenderer
+ * Optional on the PyDia side.
  */
 static void
-set_fillstyle(DiaRenderer *renderer, FillStyle mode)
+set_fillstyle (DiaRenderer *renderer, FillStyle mode)
 {
   PyObject *func, *res, *arg, *self = PYDIA_RENDERER (renderer);
 
   switch(mode) {
-  case FILLSTYLE_SOLID:
-    break;
-  default:
-    PyErr_Warn (PyExc_RuntimeWarning, "DiaPyRenderer : Unsupported fill mode specified!\n");
+    case FILLSTYLE_SOLID:
+      break;
+    default:
+      PyErr_Warn (PyExc_RuntimeWarning,
+                  "DiaPyRenderer : Unsupported fill mode specified!\n");
   }
 
   func = PyObject_GetAttrString (self, "set_fillstyle");
-  if (func && PyCallable_Check(func)) {
-    Py_INCREF(self);
-    Py_INCREF(func);
+  if (func && PyCallable_Check (func)) {
+    Py_INCREF (self);
+    Py_INCREF (func);
     arg = Py_BuildValue ("(i)", mode);
     if (arg) {
-      res = PyEval_CallObject (func, arg);
-      ON_RES(res, FALSE);
+      res = PyObject_CallObject (func, arg);
+      ON_RES (res, FALSE);
     }
     Py_XDECREF (arg);
-    Py_DECREF(func);
-    Py_DECREF(self);
+    Py_DECREF (func);
+    Py_DECREF (self);
+  } else {
+    /* member optional */
+    PyErr_Clear ();
   }
-  else /* member optional */
-    PyErr_Clear();
 }
 
+
 static gpointer parent_class = NULL;
 
 /*!
@@ -364,37 +391,38 @@ is_capable_to (DiaRenderer *renderer, RenderCapability cap)
   gboolean bRet = FALSE;
 
   func = PyObject_GetAttrString (self, "is_capable_to");
-  if (func && PyCallable_Check(func)) {
+  if (func && PyCallable_Check (func)) {
     Py_INCREF (self);
     Py_INCREF (func);
     arg = Py_BuildValue ("(i)", cap);
     if (arg) {
-      res = PyEval_CallObject (func, arg);
+      res = PyObject_CallObject (func, arg);
       if (res && PyLong_Check (res)) {
         bRet = (PyLong_AsLong (res) != 0);
         Py_DECREF (res);
       } else {
-        ON_RES(res, FALSE);
+        ON_RES (res, FALSE);
       }
     }
-    Py_XDECREF(arg);
-    Py_DECREF(func);
-    Py_DECREF(self);
+    Py_XDECREF (arg);
+    Py_DECREF (func);
+    Py_DECREF (self);
   } else {
-    PyErr_Clear(); /* member optional */
+    PyErr_Clear (); /* member optional */
     return DIA_RENDERER_CLASS (parent_class)->is_capable_to (renderer, cap);
   }
   return bRet;
 }
 
-/*!
- * \brief Render all the visible object in the layer
- * @param renderer explicit this pointer
- * @param layer    layer to draw
- * @param active   TRUE if it is the currently active layer
- * @param update   the update rectangle, NULL for unlimited
+
+/**
+ * draw_layer:
+ * @renderer: explicit this pointer
+ * @layer: layer to draw
+ * @active: %TRUE if it is the currently active layer
+ * @update: the update rectangle, NULL for unlimited
  *
- * \memberof _DiaPyRenderer
+ * Render all the visible object in the layer
  */
 static void
 draw_layer (DiaRenderer  *renderer,
@@ -405,7 +433,7 @@ draw_layer (DiaRenderer  *renderer,
   PyObject *func, *res, *arg, *self = PYDIA_RENDERER (renderer);
 
   func = PyObject_GetAttrString (self, "draw_layer");
-  if (func && PyCallable_Check(func)) {
+  if (func && PyCallable_Check (func)) {
     PyObject *olayer = PyDiaLayer_New (layer);
     PyObject *orect;
 
@@ -414,27 +442,34 @@ draw_layer (DiaRenderer  *renderer,
     if (update) {
       orect = PyDiaRectangle_New (update);
     } else {
-      Py_INCREF(Py_None);
+      Py_INCREF (Py_None);
       orect = Py_None;
     }
     arg = Py_BuildValue ("(OiO)", olayer, active, orect);
     if (arg) {
-      res = PyEval_CallObject (func, arg);
-      ON_RES(res, FALSE);
+      res = PyObject_CallObject (func, arg);
+      ON_RES (res, FALSE);
     }
     Py_XDECREF (olayer);
     Py_XDECREF (orect);
-    Py_DECREF(func);
-    Py_DECREF(self);
-  } else { /* member optional */
-    PyErr_Clear();
+    Py_DECREF (func);
+    Py_DECREF (self);
+  } else {
+    /* member optional */
+    PyErr_Clear ();
     /* have to call the base class */
     DIA_RENDERER_CLASS (parent_class)->draw_layer (renderer, layer, active, update);
   }
 }
 
-/*!
- * \brief Draw object
+
+/**
+ * draw_object:
+ * @renderer: Self
+ * @object: The object to draw
+ * @matrix: The transformation matrix to use or NULL for no transformation
+ *
+ * Draw object
  *
  * Optional on the PyDia side. If not implemented the base class method
  * will be called.
@@ -447,19 +482,13 @@ draw_layer (DiaRenderer  *renderer,
  * the following code shall be used. Otherwise no draw/fill method will
  * be called at all.
  *
- * \code
-       # don't forget to render the object
-       object.draw (self)
- * \endcode
+ * |[<!-- language="Python" -->
+ * # don't forget to render the object
+ * object.draw (self)
+ * ]|
  *
  * Not calling the object draw method is only useful when a non-drawing
  * export - e.g. code generation \sa codegen.py - is implemented.
- *
- * @param renderer Self
- * @param object The object to draw
- * @param matrix The transformation matrix to use or NULL for no transformation
- *
- * \memberof _DiaPyRenderer
  */
 static void
 draw_object (DiaRenderer *renderer, DiaObject *object, DiaMatrix *matrix)
@@ -467,28 +496,28 @@ draw_object (DiaRenderer *renderer, DiaObject *object, DiaMatrix *matrix)
   PyObject *func, *res, *arg, *self = PYDIA_RENDERER (renderer);
 
   func = PyObject_GetAttrString (self, "draw_object");
-  if (func && PyCallable_Check(func)) {
+  if (func && PyCallable_Check (func)) {
     PyObject *oobj = PyDiaObject_New (object);
     PyObject *mat = NULL;
 
-    Py_INCREF(self);
-    Py_INCREF(func);
+    Py_INCREF (self);
+    Py_INCREF (func);
     if (matrix)
       mat = PyDiaMatrix_New (matrix);
     else {
-      Py_INCREF(Py_None);
+      Py_INCREF (Py_None);
       mat = Py_None;
     }
     arg = Py_BuildValue ("(OO)", oobj, mat);
     if (arg) {
-      res = PyEval_CallObject (func, arg);
-      ON_RES(res, FALSE);
+      res = PyObject_CallObject (func, arg);
+      ON_RES (res, FALSE);
     }
     Py_XDECREF (arg);
     Py_XDECREF (oobj);
     Py_XDECREF (mat);
-    Py_DECREF(func);
-    Py_DECREF(self);
+    Py_DECREF (func);
+    Py_DECREF (self);
   } else { /* member optional */
     PyErr_Clear();
     /* but should still call the base class */
@@ -497,13 +526,17 @@ draw_object (DiaRenderer *renderer, DiaObject *object, DiaMatrix *matrix)
 }
 
 
-/*!
- * \brief Draw line
+/**
+ * draw_line:
+ * @renderer: the #DiaRenderer
+ * @start: the #Point the line starts
+ * @end: the end #Point
+ * @line_colour: what #Color to use
+ *
+ * Draw line
  *
  * Not optional on the PyDia side. If not implemented a runtime warning
  * will be generated when called.
- *
- * \memberof _DiaPyRenderer
  */
 static void
 draw_line (DiaRenderer *renderer,
@@ -523,7 +556,7 @@ draw_line (DiaRenderer *renderer,
     Py_INCREF (func);
     arg = Py_BuildValue ("(OOO)", ostart, oend, ocolor);
     if (arg) {
-      res = PyEval_CallObject (func, arg);
+      res = PyObject_CallObject (func, arg);
       ON_RES (res, FALSE);
     }
     Py_XDECREF (arg);
@@ -542,204 +575,246 @@ draw_line (DiaRenderer *renderer,
 }
 
 
-/*!
- * \brief Draw polyline
+/**
+ * draw_polyline:
+ * @renderer: the #DiaRenderer
+ * @points: the #Points of the line
+ * @num_points: the length of @points
+ * @line_colour: the #Color of the line
  *
- * Optional on the PyDia side. If not implemented fallback to base class member.
+ * Draw polyline
  *
- * \memberof _DiaPyRenderer
+ * Optional on the PyDia side. If not implemented fallback to base class member.
  */
 static void
-draw_polyline(DiaRenderer *renderer,
-             Point *points, int num_points,
-             Color *line_colour)
+draw_polyline (DiaRenderer *renderer,
+               Point       *points,
+               int          num_points,
+               Color       *line_colour)
 {
   PyObject *func, *res, *arg, *self = PYDIA_RENDERER (renderer);
 
   func = PyObject_GetAttrString (self, "draw_polyline");
-  if (func && PyCallable_Check(func)) {
+  if (func && PyCallable_Check (func)) {
     PyObject *optt = PyDiaPointTuple_New (points, num_points);
     PyObject *ocolor = PyDiaColor_New (line_colour);
 
-    Py_INCREF(self);
-    Py_INCREF(func);
+    Py_INCREF (self);
+    Py_INCREF (func);
     arg = Py_BuildValue ("(OO)", optt, ocolor);
     if (arg) {
-      res = PyEval_CallObject (func, arg);
-      ON_RES(res, FALSE);
+      res = PyObject_CallObject (func, arg);
+      ON_RES (res, FALSE);
     }
     Py_XDECREF (arg);
     Py_XDECREF (optt);
     Py_XDECREF (ocolor);
-    Py_DECREF(func);
-    Py_DECREF(self);
-  }
-  else { /* member optional */
-    PyErr_Clear();
+    Py_DECREF (func);
+    Py_DECREF (self);
+  } else {
+    /* member optional */
+    PyErr_Clear ();
     /* XXX: implementing the same fallback as DiaRenderer */
     DIA_RENDERER_CLASS (parent_class)->draw_polyline (renderer, points, num_points, line_colour);
   }
 }
 
-/*!
- * \brief Draw polygon
+
+/**
+ * draw_polygon:
+ * @renderer: the #DiaRenderer
+ * @points: the polygon #Points
+ * @num_points: the length of @points
+ * @fill: the polygon file #Color
+ * @stroke: outline the polyon in #Color
  *
- * Optional on the PyDia side. If not implemented fallback to base class member.
+ * Draw polygon
  *
- * \memberof _DiaPyRenderer
+ * Optional on the PyDia side. If not implemented fallback to base class member.
  */
 static void
-draw_polygon(DiaRenderer *renderer,
-            Point *points, int num_points,
-            Color *fill, Color *stroke)
+draw_polygon (DiaRenderer *renderer,
+              Point       *points,
+              int          num_points,
+              Color       *fill,
+              Color       *stroke)
 {
   PyObject *func, *res, *arg, *self = PYDIA_RENDERER (renderer);
 
   func = PyObject_GetAttrString (self, "draw_polygon");
-  if (func && PyCallable_Check(func)) {
+  if (func && PyCallable_Check (func)) {
     PyObject *optt = PyDiaPointTuple_New (points, num_points);
     PyObject *fill_po, *stroke_po;
 
-    if (fill)
+    if (fill) {
       fill_po = PyDiaColor_New (fill);
-    else
-      Py_INCREF(Py_None), fill_po = Py_None;
-    if (stroke)
+    } else {
+      Py_INCREF (Py_None), fill_po = Py_None;
+    }
+
+    if (stroke) {
       stroke_po = PyDiaColor_New (stroke);
-    else
-      Py_INCREF(Py_None), stroke_po = Py_None;
+    } else {
+      Py_INCREF (Py_None), stroke_po = Py_None;
+    }
 
-    Py_INCREF(self);
-    Py_INCREF(func);
+    Py_INCREF (self);
+    Py_INCREF (func);
     arg = Py_BuildValue ("(OOO)", optt, fill_po, stroke_po);
     if (arg) {
-      res = PyEval_CallObject (func, arg);
-      ON_RES(res, FALSE);
+      res = PyObject_CallObject (func, arg);
+      ON_RES (res, FALSE);
     }
     Py_XDECREF (arg);
     Py_XDECREF (optt);
     Py_XDECREF (fill_po);
     Py_XDECREF (stroke_po);
-    Py_DECREF(func);
-    Py_DECREF(self);
-  } else { /* fill_polygon was not an optional member */
-    PyErr_Warn (PyExc_RuntimeWarning, "DiaPyRenderer : draw_polygon() method missing!\n");
+    Py_DECREF (func);
+    Py_DECREF (self);
+  } else {
+    /* fill_polygon was not an optional member */
+    PyErr_Warn (PyExc_RuntimeWarning,
+                "DiaPyRenderer : draw_polygon() method missing!\n");
   }
 }
 
+
 static void
-draw_rect(DiaRenderer *renderer,
-         Point *ul_corner, Point *lr_corner,
-         Color *fill, Color *stroke)
+draw_rect (DiaRenderer *renderer,
+           Point       *ul_corner,
+           Point       *lr_corner,
+           Color       *fill,
+           Color       *stroke)
 {
   PyObject *func, *res, *arg, *self = PYDIA_RENDERER (renderer);
 
   func = PyObject_GetAttrString (self, "draw_rect");
-  if (func && PyCallable_Check(func)) {
+  if (func && PyCallable_Check (func)) {
     PyObject *orect = PyDiaRectangle_New_FromPoints (ul_corner, lr_corner);
     PyObject *fill_po, *stroke_po;
-    Py_INCREF(self);
-    Py_INCREF(func);
+    Py_INCREF (self);
+    Py_INCREF (func);
 
-    if (fill)
+    if (fill) {
       fill_po = PyDiaColor_New (fill);
-    else
-      Py_INCREF(Py_None), fill_po = Py_None;
-    if (stroke)
+    } else {
+      Py_INCREF (Py_None), fill_po = Py_None;
+    }
+
+    if (stroke) {
       stroke_po = PyDiaColor_New (stroke);
-    else
-      Py_INCREF(Py_None), stroke_po = Py_None;
+    } else {
+      Py_INCREF (Py_None), stroke_po = Py_None;
+    }
 
     arg = Py_BuildValue ("(OOO)", orect, fill_po, stroke_po);
     if (arg) {
-      res = PyEval_CallObject (func, arg);
-      ON_RES(res, FALSE);
+      res = PyObject_CallObject (func, arg);
+      ON_RES (res, FALSE);
     }
     Py_XDECREF (arg);
     Py_XDECREF (orect);
     Py_XDECREF (fill_po);
     Py_XDECREF (stroke_po);
-    Py_DECREF(func);
-    Py_DECREF(self);
-  }
-  else { /* member optional */
+    Py_DECREF (func);
+    Py_DECREF (self);
+  } else {
+    /* member optional */
     PyErr_Clear();
     /* XXX: implementing the same fallback as DiaRenderer would do */
     DIA_RENDERER_CLASS (parent_class)->draw_rect(renderer, ul_corner, lr_corner, fill, stroke);
   }
 }
 
+
 static void
-draw_rounded_rect(DiaRenderer *renderer,
-         Point *ul_corner, Point *lr_corner,
-         Color *fill, Color *stroke, real rounding)
+draw_rounded_rect (DiaRenderer *renderer,
+                   Point       *ul_corner,
+                   Point       *lr_corner,
+                   Color       *fill,
+                   Color       *stroke,
+                   double       rounding)
 {
   PyObject *func, *res, *arg, *self = PYDIA_RENDERER (renderer);
 
   func = PyObject_GetAttrString (self, "draw_rounded_rect");
-  if (func && PyCallable_Check(func)) {
+  if (func && PyCallable_Check (func)) {
     PyObject *orect = PyDiaRectangle_New_FromPoints (ul_corner, lr_corner);
     PyObject *fill_po, *stroke_po;
 
-    Py_INCREF(self);
-    Py_INCREF(func);
-    if (fill)
+    Py_INCREF (self);
+    Py_INCREF (func);
+    if (fill) {
       fill_po = PyDiaColor_New (fill);
-    else
-      Py_INCREF(Py_None), fill_po = Py_None;
-    if (stroke)
+    } else {
+      Py_INCREF (Py_None), fill_po = Py_None;
+    }
+
+    if (stroke) {
       stroke_po = PyDiaColor_New (stroke);
-    else
-      Py_INCREF(Py_None), stroke_po = Py_None;
+    } else {
+      Py_INCREF (Py_None), stroke_po = Py_None;
+    }
 
     arg = Py_BuildValue ("(OOOd)", orect, fill_po, stroke_po, rounding);
     if (arg) {
-      res = PyEval_CallObject (func, arg);
-      ON_RES(res, FALSE);
+      res = PyObject_CallObject (func, arg);
+      ON_RES (res, FALSE);
     }
     Py_XDECREF (arg);
     Py_XDECREF (fill_po);
     Py_XDECREF (stroke_po);
     Py_XDECREF (orect);
-    Py_DECREF(func);
-    Py_DECREF(self);
-  }
-  else { /* member optional */
-    PyErr_Clear();
+    Py_DECREF (func);
+    Py_DECREF (self);
+  } else {
+    /* member optional */
+    PyErr_Clear ();
     /* implementing the same fallback as DiaRenderer would do */
-    DIA_RENDERER_CLASS (parent_class)->draw_rounded_rect (renderer, ul_corner, lr_corner,
-                                                         fill, stroke, rounding);
+    DIA_RENDERER_CLASS (parent_class)->draw_rounded_rect (renderer,
+                                                          ul_corner,
+                                                          lr_corner,
+                                                          fill,
+                                                          stroke,
+                                                          rounding);
   }
 }
 
+
 static void
-draw_arc(DiaRenderer *renderer,
-        Point *center,
-        real width, real height,
-        real angle1, real angle2,
-        Color *colour)
+draw_arc (DiaRenderer *renderer,
+          Point       *center,
+          double       width,
+          double       height,
+          double       angle1,
+          double       angle2,
+          Color       *colour)
 {
   PyObject *func, *res, *arg, *self = PYDIA_RENDERER (renderer);
 
   func = PyObject_GetAttrString (self, "draw_arc");
-  if (func && PyCallable_Check(func)) {
+  if (func && PyCallable_Check (func)) {
     PyObject *opoint = PyDiaPoint_New (center);
     PyObject *ocolor = PyDiaColor_New (colour);
 
-    Py_INCREF(self);
-    Py_INCREF(func);
-    arg = Py_BuildValue ("(OddddO)", opoint,
-                                     width, height, angle1, angle2,
-                                     ocolor);
+    Py_INCREF (self);
+    Py_INCREF (func);
+    arg = Py_BuildValue ("(OddddO)",
+                         opoint,
+                         width,
+                         height,
+                         angle1,
+                         angle2,
+                         ocolor);
     if (arg) {
-      res = PyEval_CallObject (func, arg);
-      ON_RES(res, FALSE);
+      res = PyObject_CallObject (func, arg);
+      ON_RES (res, FALSE);
     }
     Py_XDECREF (arg);
     Py_XDECREF (opoint);
     Py_XDECREF (ocolor);
-    Py_DECREF(func);
-    Py_DECREF(self);
+    Py_DECREF (func);
+    Py_DECREF (self);
   } else { /* member not optional */
     char *msg = g_strdup_printf ("%s.draw_arc() implementation missing.",
                                  G_OBJECT_CLASS_NAME (G_OBJECT_GET_CLASS (renderer)));
@@ -749,42 +824,51 @@ draw_arc(DiaRenderer *renderer,
   }
 }
 
-/*!
- * \brief Fill arc
+
+/**
+ * fill_arc:
+ * @renderer: the #DiaRenderer
+ *
+ *
+ * Fill arc
  *
  * Not optional on the PyDia side. If not implemented a runtime warning
  * will be generated when called.
- *
- * \memberof _DiaPyRenderer
  */
 static void
-fill_arc(DiaRenderer *renderer,
-        Point *center,
-        real width, real height,
-        real angle1, real angle2,
-        Color *colour)
+fill_arc (DiaRenderer *renderer,
+          Point       *center,
+          double       width,
+          double       height,
+          double       angle1,
+          double       angle2,
+          Color       *colour)
 {
   PyObject *func, *res, *arg, *self = PYDIA_RENDERER (renderer);
 
   func = PyObject_GetAttrString (self, "fill_arc");
-  if (func && PyCallable_Check(func)) {
+  if (func && PyCallable_Check (func)) {
     PyObject *opoint = PyDiaPoint_New (center);
     PyObject *ocolor = PyDiaColor_New (colour);
 
-    Py_INCREF(self);
-    Py_INCREF(func);
-    arg = Py_BuildValue ("(OddddO)", opoint,
-                                     width, height, angle1, angle2,
-                                     ocolor);
+    Py_INCREF (self);
+    Py_INCREF (func);
+    arg = Py_BuildValue ("(OddddO)",
+                         opoint,
+                         width,
+                         height,
+                         angle1,
+                         angle2,
+                         ocolor);
     if (arg) {
-      res = PyEval_CallObject (func, arg);
-      ON_RES(res, FALSE);
+      res = PyObject_CallObject (func, arg);
+      ON_RES (res, FALSE);
     }
     Py_XDECREF (arg);
     Py_XDECREF (opoint);
     Py_XDECREF (ocolor);
-    Py_DECREF(func);
-    Py_DECREF(self);
+    Py_DECREF (func);
+    Py_DECREF (self);
   } else { /* member not optional */
     char *msg = g_strdup_printf ("%s.fill_arc() implementation missing.",
                                  G_OBJECT_CLASS_NAME (G_OBJECT_GET_CLASS (renderer)));
@@ -794,50 +878,58 @@ fill_arc(DiaRenderer *renderer,
   }
 }
 
-/*!
- * \brief Draw ellipse
+
+/**
+ * draw_ellipse:
+ *
+ * Draw ellipse
  *
  * Not optional on the PyDia side. If not implemented a runtime warning
  * will be generated when called.
- *
- * \memberof _DiaPyRenderer
  */
 static void
-draw_ellipse(DiaRenderer *renderer,
-            Point *center,
-            real width, real height,
-            Color *fill, Color *stroke)
+draw_ellipse (DiaRenderer *renderer,
+              Point       *center,
+              double       width,
+              double       height,
+              Color       *fill,
+              Color       *stroke)
 {
   PyObject *func, *res, *arg, *self = PYDIA_RENDERER (renderer);
 
   func = PyObject_GetAttrString (self, "draw_ellipse");
-  if (func && PyCallable_Check(func)) {
+  if (func && PyCallable_Check (func)) {
     PyObject *opoint = PyDiaPoint_New (center);
     PyObject *fill_po;
     PyObject *stroke_po;
-    Py_INCREF(self);
-    Py_INCREF(func);
+
+    Py_INCREF (self);
+    Py_INCREF (func);
+
     /* we have to provide a Python object even if there is no color */
-    if (fill)
+    if (fill) {
       fill_po = PyDiaColor_New (fill);
-    else
-      Py_INCREF(Py_None), fill_po = Py_None;
-    if (stroke)
+    } else {
+      Py_INCREF (Py_None), fill_po = Py_None;
+    }
+
+    if (stroke) {
       stroke_po = PyDiaColor_New (stroke);
-    else
-      Py_INCREF(Py_None), stroke_po = Py_None;
+    } else {
+      Py_INCREF (Py_None), stroke_po = Py_None;
+    }
 
     arg = Py_BuildValue ("(OddOO)", opoint, width, height, fill_po, stroke_po);
     if (arg) {
-      res = PyEval_CallObject (func, arg);
-      ON_RES(res, FALSE);
+      res = PyObject_CallObject (func, arg);
+      ON_RES (res, FALSE);
     }
     Py_XDECREF (arg);
     Py_XDECREF (opoint);
     Py_XDECREF (fill_po);
     Py_XDECREF (stroke_po);
-    Py_DECREF(func);
-    Py_DECREF(self);
+    Py_DECREF (func);
+    Py_DECREF (self);
   } else { /* member not optional */
     char *msg = g_strdup_printf ("%s.draw_ellipse() implementation missing.",
                                  G_OBJECT_CLASS_NAME (G_OBJECT_GET_CLASS (renderer)));
@@ -847,135 +939,153 @@ draw_ellipse(DiaRenderer *renderer,
   }
 }
 
+
 static void
-draw_bezier(DiaRenderer *renderer,
-           BezPoint *points,
-           int num_points,
-           Color *colour)
+draw_bezier (DiaRenderer *renderer,
+             BezPoint    *points,
+             int          num_points,
+             Color       *colour)
 {
   PyObject *func, *res, *arg, *self = PYDIA_RENDERER (renderer);
 
   func = PyObject_GetAttrString (self, "draw_bezier");
-  if (func && PyCallable_Check(func)) {
+  if (func && PyCallable_Check (func)) {
     PyObject *obt = PyDiaBezPointTuple_New (points, num_points);
     PyObject *ocolor = PyDiaColor_New (colour);
-    Py_INCREF(self);
-    Py_INCREF(func);
+    Py_INCREF (self);
+    Py_INCREF (func);
     arg = Py_BuildValue ("(OO)", obt, ocolor);
     if (arg) {
-      res = PyEval_CallObject (func, arg);
+      res = PyObject_CallObject (func, arg);
       ON_RES(res, FALSE);
     }
     Py_XDECREF (arg);
     Py_XDECREF (obt);
     Py_XDECREF (ocolor);
-    Py_DECREF(func);
-    Py_DECREF(self);
-  }
-  else { /* member optional */
-    PyErr_Clear();
+    Py_DECREF (func);
+    Py_DECREF (self);
+  } else {
+    /* member optional */
+    PyErr_Clear ();
     /* XXX: implementing the same fallback as DiaRenderer would do */
     DIA_RENDERER_CLASS (parent_class)->draw_bezier (renderer, points, num_points, colour);
   }
 }
 
+
 /* kept for backward compatibility, not any longer in the renderer interface */
 static void
-fill_bezier(DiaRenderer *renderer,
-           BezPoint *points, /* Last point must be same as first point */
-           int num_points,
-           Color *colour)
+fill_bezier (DiaRenderer *renderer,
+             BezPoint    *points, /* Last point must be same as first point */
+             int          num_points,
+             Color       *colour)
 {
   PyObject *func, *res, *arg, *self = PYDIA_RENDERER (renderer);
 
   func = PyObject_GetAttrString (self, "fill_bezier");
-  if (func && PyCallable_Check(func)) {
+  if (func && PyCallable_Check (func)) {
     PyObject *obt = PyDiaBezPointTuple_New (points, num_points);
     PyObject *ocolor = PyDiaColor_New (colour);
-    Py_INCREF(self);
-    Py_INCREF(func);
+    Py_INCREF (self);
+    Py_INCREF (func);
     arg = Py_BuildValue ("(OO)", obt, ocolor);
     if (arg) {
-      res = PyEval_CallObject (func, arg);
-      ON_RES(res, FALSE);
+      res = PyObject_CallObject (func, arg);
+      ON_RES (res, FALSE);
     }
     Py_XDECREF (arg);
     Py_XDECREF (obt);
     Py_XDECREF (ocolor);
-    Py_DECREF(func);
-    Py_DECREF(self);
-  }
-  else { /* member optional */
-    PyErr_Clear();
+    Py_DECREF (func);
+    Py_DECREF (self);
+  } else {
+    /* member optional */
+    PyErr_Clear ();
     /* XXX: implementing the same fallback as DiaRenderer would do */
     DIA_RENDERER_CLASS (parent_class)->draw_beziergon (renderer, points, num_points, colour, NULL);
   }
 }
 
-/*!
- * \brief Fill and/or stroke a closed path
- * \memberof _DiaPyRenderer
+
+/**
+ * draw_beziergon:
+ *
+ * Fill and/or stroke a closed path
  */
 static void
 draw_beziergon (DiaRenderer *renderer,
-               BezPoint *points,
-               int num_points,
-               Color *fill,
-               Color *stroke)
+                BezPoint    *points,
+                int          num_points,
+                Color       *fill,
+                Color       *stroke)
 {
   PyObject *func, *res, *arg, *self = PYDIA_RENDERER (renderer);
 
   func = PyObject_GetAttrString (self, "draw_beziergon");
-  if (func && PyCallable_Check(func)) {
+  if (func && PyCallable_Check (func)) {
     PyObject *obt = PyDiaBezPointTuple_New (points, num_points);
     PyObject *fill_po;
     PyObject *stroke_po;
-    Py_INCREF(self);
-    Py_INCREF(func);
+    Py_INCREF (self);
+    Py_INCREF (func);
+
     /* we have to provide a Python object even if there is no color */
-    if (fill)
+    if (fill) {
       fill_po = PyDiaColor_New (fill);
-    else
-      Py_INCREF(Py_None), fill_po = Py_None;
-    if (stroke)
+    } else {
+      Py_INCREF (Py_None), fill_po = Py_None;
+    }
+
+    if (stroke) {
       stroke_po = PyDiaColor_New (stroke);
-    else
+    } else {
       Py_INCREF(Py_None), stroke_po = Py_None;
+    }
 
     arg = Py_BuildValue ("(OOO)", obt, fill_po, stroke_po);
     if (arg) {
-      res = PyEval_CallObject (func, arg);
-      ON_RES(res, FALSE);
+      res = PyObject_CallObject (func, arg);
+      ON_RES (res, FALSE);
     }
     Py_XDECREF (arg);
     Py_XDECREF (obt);
     Py_XDECREF (fill_po);
     Py_XDECREF (stroke_po);
-    Py_DECREF(func);
-    Py_DECREF(self);
+    Py_DECREF (func);
+    Py_DECREF (self);
   } else { /* member optional */
-    PyErr_Clear();
+    PyErr_Clear ();
     /* PyDia only backward compatibility */
-    if (fill)
+    if (fill) {
       fill_bezier (renderer, points, num_points, fill);
-    if (stroke) /* XXX: still not closing */
+    }
+    if (stroke) {
+      /* XXX: still not closing */
       draw_bezier (renderer, points, num_points, stroke);
+    }
   }
 }
 
-/*!
- * \brief Draw string
+
+/**
+ * draw_string:
+ * @renderer: the #DiaRenderer
+ * @text: the string to draw
+ * @pos: #Point where to draw @text
+ * @alignment: the @text #Alignment
+ * @colour: the #Color of @text
+ *
+ * Draw string
  *
  * Not optional on the PyDia side. If not implemented a runtime warning
  * will be generated when called.
- *
- * \memberof _DiaPyRenderer
  */
 static void
-draw_string(DiaRenderer *renderer,
-           const char *text,
-           Point *pos, Alignment alignment,
-           Color *colour)
+draw_string (DiaRenderer *renderer,
+             const char  *text,
+             Point       *pos,
+             Alignment    alignment,
+             Color       *colour)
 {
   PyObject *func, *res, *arg, *self = PYDIA_RENDERER (renderer);
 
@@ -991,22 +1101,22 @@ draw_string(DiaRenderer *renderer,
   }
 
   func = PyObject_GetAttrString (self, "draw_string");
-  if (func && PyCallable_Check(func)) {
+  if (func && PyCallable_Check (func)) {
     PyObject *opoint = PyDiaPoint_New (pos);
     PyObject *ocolor = PyDiaColor_New (colour);
 
-    Py_INCREF(self);
-    Py_INCREF(func);
+    Py_INCREF (self);
+    Py_INCREF (func);
     arg = Py_BuildValue ("(sOiO)", text, opoint, alignment, ocolor);
     if (arg) {
-      res = PyEval_CallObject (func, arg);
-      ON_RES(res, FALSE);
+      res = PyObject_CallObject (func, arg);
+      ON_RES (res, FALSE);
     }
     Py_XDECREF (arg);
     Py_XDECREF (opoint);
     Py_XDECREF (ocolor);
-    Py_DECREF(func);
-    Py_DECREF(self);
+    Py_DECREF (func);
+    Py_DECREF (self);
   } else { /* member not optional */
     char *msg = g_strdup_printf ("%s.draw_string() implementation missing.",
                                  G_OBJECT_CLASS_NAME (G_OBJECT_GET_CLASS (renderer)));
@@ -1016,39 +1126,46 @@ draw_string(DiaRenderer *renderer,
   }
 }
 
-/*!
- * \brief Draw image
+
+/**
+ * draw_image:
+ * @renderer: the #DiaRenderer
+ * @point: the #Point to draw @image
+ * @width: @image width
+ * @height: height of @image
+ * @image: the #DiaImage to draw
+ *
+ * Draw image
  *
  * Not optional on the PyDia side. If not implemented a runtime warning
  * will be generated when called.
- *
- * \memberof _DiaPyRenderer
  */
 static void
-draw_image(DiaRenderer *renderer,
-          Point *point,
-          real width, real height,
-          DiaImage *image)
+draw_image (DiaRenderer *renderer,
+            Point       *point,
+            double       width,
+            double       height,
+            DiaImage    *image)
 {
   PyObject *func, *res, *arg, *self = PYDIA_RENDERER (renderer);
 
   func = PyObject_GetAttrString (self, "draw_image");
-  if (func && PyCallable_Check(func)) {
+  if (func && PyCallable_Check (func)) {
     PyObject *opoint = PyDiaPoint_New (point);
     PyObject *oimage = PyDiaImage_New (image);
 
-    Py_INCREF(self);
-    Py_INCREF(func);
+    Py_INCREF (self);
+    Py_INCREF (func);
     arg = Py_BuildValue ("(OddO)", opoint, width, height, oimage);
     if (arg) {
-      res = PyEval_CallObject (func, arg);
-      ON_RES(res, FALSE);
+      res = PyObject_CallObject (func, arg);
+      ON_RES (res, FALSE);
     }
     Py_XDECREF (arg);
     Py_XDECREF (opoint);
     Py_XDECREF (oimage);
-    Py_DECREF(func);
-    Py_DECREF(self);
+    Py_DECREF (func);
+    Py_DECREF (self);
   } else { /* member not optional */
     char *msg = g_strdup_printf ("%s.draw_image() implementation missing.",
                                  G_OBJECT_CLASS_NAME (G_OBJECT_GET_CLASS (renderer)));
diff --git a/plug-ins/python/scascale.py b/plug-ins/python/scascale.py
index 021bdfd24..fde36e729 100644
--- a/plug-ins/python/scascale.py
+++ b/plug-ins/python/scascale.py
@@ -23,7 +23,8 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
-import dia, string
+import warnings
+import dia
 
 import gettext
 _ = gettext.gettext
@@ -34,7 +35,10 @@ class CScaleDialog :
 
                gi.require_version('Gtk', '2.0')
 
-               from gi.repository import Gtk
+               with warnings.catch_warnings():
+                       warnings.filterwarnings("ignore", category=RuntimeWarning)
+                       from gi.repository import Gtk
+
                win = Gtk.Window()
                win.connect("delete_event", self.on_delete)
                win.set_title(_("Simple Scaling"))
diff --git a/plug-ins/python/select_by.py b/plug-ins/python/select_by.py
index 85d00f5a9..393dcf5a4 100644
--- a/plug-ins/python/select_by.py
+++ b/plug-ins/python/select_by.py
@@ -22,7 +22,8 @@
 #   along with this program; if not, write to the Free Software
 #   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
-import sys, dia
+import warnings
+import dia
 
 import gettext
 _ = gettext.gettext
@@ -33,7 +34,9 @@ class CFindDialog :
 
                gi.require_version('Gtk', '2.0')
 
-               from gi.repository import Gtk
+               with warnings.catch_warnings():
+                       warnings.filterwarnings("ignore", category=RuntimeWarning)
+                       from gi.repository import Gtk
 
                win = Gtk.Window()
                win.connect("delete_event", self.on_delete)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]