Hello,

I recently conducted a study using SDAPS and now want to check the 
submitted questionnaires as recognized using the “gui” command of 
SDAPS.
However, instead of the graphical user interface, I get the 
following output in my terminal:

Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/sdaps/gui/__init__.py", 
line 364, in page_number_combo_changed_cb
    self.update_ui()
  File "/usr/lib/python2.7/site-packages/sdaps/gui/__init__.py", 
line 306, in update_ui
    self.provider.survey.questionnaire.widget.sync_state()
  File "/usr/lib/python2.7/site-packages/sdaps/gui/
widget_buddies.py", line 98, in sync_state
    qobject.widget.sync_state()
  File "/usr/lib/python2.7/site-packages/sdaps/gui/
widget_buddies.py", line 134, in sync_state
    box.widget.sync_state()
  File "/usr/lib/python2.7/site-packages/sdaps/gui/
widget_buddies.py", line 296, in sync_state
    self.checkbox.props.active = self.obj.data.state
  File "/usr/lib/python2.7/site-packages/sdaps/model/
questionnaire.py", line 36, in get_data
    self.sheet.data[self.id] = getattr(data, 
self.__class__.__name__)(self)
  File "/usr/lib/python2.7/site-packages/sdaps/model/data.py", line 
73, in __init__
    self.text = unicode()
  File "/usr/lib/python2.7/site-packages/sdaps/model/data.py", line 
47, in __setattr__
    self._parent.question.questionnaire.notify_data_changed(self._parent, 
self, name, old_value)
  File "/usr/lib/python2.7/site-packages/sdaps/model/
questionnaire.py", line 77, in notify_data_changed
    func(self, qobj, dobj, name, old_value)
  File "/usr/lib/python2.7/site-packages/sdaps/gui/
widget_buddies.py", line 51, in data_changed
    self.sync_state()
  File "/usr/lib/python2.7/site-packages/sdaps/gui/
widget_buddies.py", line 98, in sync_state
    qobject.widget.sync_state()
  File "/usr/lib/python2.7/site-packages/sdaps/gui/
widget_buddies.py", line 134, in sync_state
    box.widget.sync_state()
  File "/usr/lib/python2.7/site-packages/sdaps/gui/
widget_buddies.py", line 296, in sync_state
    self.checkbox.props.active = self.obj.data.state
  File "/usr/lib/python2.7/site-packages/sdaps/model/
questionnaire.py", line 36, in get_data
    self.sheet.data[self.id] = getattr(data, 
self.__class__.__name__)(self)
  File "/usr/lib/python2.7/site-packages/sdaps/model/data.py", line 
73, in __init__
    self.text = unicode()
  File "/usr/lib/python2.7/site-packages/sdaps/model/data.py", line 
47, in __setattr__
    self._parent.question.questionnaire.notify_data_changed(self._parent, 
self, name, old_value)
  File "/usr/lib/python2.7/site-packages/sdaps/model/
questionnaire.py", line 77, in notify_data_changed
    func(self, qobj, dobj, name, old_value)
  File "/usr/lib/python2.7/site-packages/sdaps/gui/
widget_buddies.py", line 51, in data_changed
    self.sync_state()
  File "/usr/lib/python2.7/site-packages/sdaps/gui/
widget_buddies.py", line 98, in sync_state
    qobject.widget.sync_state()
  File "/usr/lib/python2.7/site-packages/sdaps/gui/
widget_buddies.py", line 134, in sync_state
    box.widget.sync_state()
  File "/usr/lib/python2.7/site-packages/sdaps/gui/
widget_buddies.py", line 296, in sync_state
    self.checkbox.props.active = self.obj.data.state
  File "/usr/lib/python2.7/site-packages/sdaps/model/
questionnaire.py", line 36, in get_data
    self.sheet.data[self.id] = getattr(data, 
self.__class__.__name__)(self)
  File "/usr/lib/python2.7/site-packages/sdaps/model/data.py", line 
73, in __init__
    self.text = unicode()
  File "/usr/lib/python2.7/site-packages/sdaps/model/data.py", line 
47, in __setattr__
    self._parent.question.questionnaire.notify_data_changed(self._parent, 
self, name, old_value)
  File "/usr/lib/python2.7/site-packages/sdaps/model/
questionnaire.py", line 77, in notify_data_changed
    func(self, qobj, dobj, name, old_value)


[ about 2000 lines repeating above pattern, omitted here]

  File "/usr/lib/python2.7/site-packages/sdaps/model/data.py", line 
47, in __setattr__
    self._parent.question.questionnaire.notify_data_changed(self._parent, 
self, name, old_value)
  File "/usr/lib/python2.7/site-packages/sdaps/model/
questionnaire.py", line 77, in notify_data_changed
    func(self, qobj, dobj, name, old_value)
  File "/usr/lib/python2.7/site-packages/sdaps/gui/
widget_buddies.py", line 51, in data_changed
    self.sync_state()
  File "/usr/lib/python2.7/site-packages/sdaps/gui/
widget_buddies.py", line 98, in sync_state
    qobject.widget.sync_state()
  File "/usr/lib/python2.7/site-packages/sdaps/gui/
widget_buddies.py", line 134, in sync_state
    box.widget.sync_state()
  File "/usr/lib/python2.7/site-packages/sdaps/gui/
widget_buddies.py", line 243, in sync_state
    self.widget.props.active = self.obj.data.state
  File "/usr/lib/python2.7/site-packages/sdaps/model/
questionnaire.py", line 35, in get_data
    if not self.id in self.sheet.data:
  File "/usr/lib/python2.7/site-packages/sdaps/model/
questionnaire.py", line 363, in get_sheet
    return self.question.sheet
  File "/usr/lib/python2.7/site-packages/sdaps/model/
questionnaire.py", line 127, in get_sheet
    return self.questionnaire.sheet
RuntimeError: maximum recursion depth exceeded


I am using SDAPS version 1.1.11 on ArchLinux, compiled from source.

I have patched the source code to avoid warnings from “gi” about a 
missing statement/configuration which Gtk version to use. The 
applied patch reads as follows:

diff -Naur sdaps-1.1.11/sdaps/gui/__init__.py sdaps-1.1.11-gtk3/
sdaps/gui/__init__.py
--- sdaps-1.1.11/sdaps/gui/__init__.py  2015-02-14 
19:45:36.000000000 +0100
+++ sdaps-1.1.11-gtk3/sdaps/gui/__init__.py     2016-12-20 
17:25:14.132122130 +0100
@@ -21,7 +21,8 @@
 possible to manually correct the automatic recognition and do basic 
debugging.
 """
 
-
+import gi
+gi.require_version('Gtk', '3.0')
 from gi.repository import GObject
 from gi.repository import GLib
 from gi.repository import Gtk
diff -Naur sdaps-1.1.11/sdaps/gui/sheet_widget.py sdaps-1.1.11-gtk3/
sdaps/gui/sheet_widget.py
--- sdaps-1.1.11/sdaps/gui/sheet_widget.py      2014-12-20 
16:01:30.000000000 +0100
+++ sdaps-1.1.11-gtk3/sdaps/gui/sheet_widget.py 2016-12-20 
17:25:17.515275723 +0100
@@ -17,6 +17,8 @@
 # along with this program.  If not, see <http://www.gnu.org/
licenses/>.
 
 import math
+import gi
+gi.require_version('Gtk', '3.0')
 from gi.repository import GObject
 from gi.repository import Gtk
 from gi.repository import Gdk
diff -Naur sdaps-1.1.11/sdaps/gui/widget_buddies.py sdaps-1.1.11-
gtk3/sdaps/gui/widget_buddies.py
--- sdaps-1.1.11/sdaps/gui/widget_buddies.py    2015-02-14 
19:45:36.000000000 +0100
+++ sdaps-1.1.11-gtk3/sdaps/gui/widget_buddies.py       2016-12-20 
17:25:20.185134273 +0100
@@ -16,6 +16,8 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/
licenses/>.
 
+import gi
+gi.require_version('Gtk', '3.0')
 from gi.repository import Gtk
 from gi.repository import GLib
 import cairo
diff -Naur sdaps-1.1.11/sdaps/utils/paper.py sdaps-1.1.11-gtk3/
sdaps/utils/paper.py
--- sdaps-1.1.11/sdaps/utils/paper.py   2015-02-14 
19:45:36.000000000 +0100
+++ sdaps-1.1.11-gtk3/sdaps/utils/paper.py      2016-12-20 
17:24:59.522904885 +0100
@@ -19,6 +19,8 @@
 
 def _get_gtk_ppd_papersize(paper=None):
     try:
+        import gi
+        gi.require_version('Gtk', '3.0')
         from gi.repository import Gtk
     except:
         return paper, None


Anyone has an idea about why there is an endless recursion in the 
code?

Looking forward to your answers!

Bye,
Thomas Fischer

-- 
Thomas Fischer
Senior Lecturer, Doctor of Engineering
School of Informatics
University of Skövde, Sweden
https://www.his.se/fish

Attachment: signature.asc
Description: This is a digitally signed message part.

Reply via email to