diff options
author | Gonzalo Odiard <godiard@gmail.com> | 2011-10-09 01:54:58 (GMT) |
---|---|---|
committer | Gonzalo Odiard <godiard@gmail.com> | 2011-10-09 01:54:58 (GMT) |
commit | 596914a45c19d1052f9004dbb4e6fb6d6d08a4cf (patch) | |
tree | 3cffcd48a634f379fedccb7ae1a7c38ed021c82b /activity.py | |
parent | e93a9e156f36e48cf1d52eb515e29864d55bbbb1 (diff) |
Separate the questions edition to a new source file
Diffstat (limited to 'activity.py')
-rw-r--r-- | activity.py | 180 |
1 files changed, 1 insertions, 179 deletions
diff --git a/activity.py b/activity.py index abb1737..9df5956 100644 --- a/activity.py +++ b/activity.py @@ -30,6 +30,7 @@ from sugar.graphics.toggletoolbutton import ToggleToolButton from sugar.graphics.icon import Icon from model import GameModel +from questions import PrepareQuestionsWin PLAY_MODE = 0 EDIT_MODE = 1 @@ -177,182 +178,3 @@ class CollectInformationWin(gtk.VBox): gtk.VBox.__init__(self) self.introduction = gtk.Label(_('Edit your Adventure Game in 4 steps')) self.pack_start(self.introduction, False) - - -class PrepareQuestionsWin(gtk.HBox): - - def __init__(self, model): - gtk.HBox.__init__(self) - self.model = model - # Listview - """ - +---------+------------------------------+ - |Listview | Text - Graph - | - | +------------------------------+ - | | Edit Question Panel | - | | (Notebook with 2 pages, | - | | one to text, one to graph | - +---------+------------------------------+ - """ - - # Listview - self.quest_listview = gtk.TreeView() - width = int(gtk.gdk.screen_width() / 3) - self.quest_listview.set_size_request(width, -1) - - self.quest_listview.connect('cursor-changed', self.select_question) - self.treemodel = gtk.ListStore(gobject.TYPE_STRING) - self.quest_listview.set_model(self.treemodel) - renderer = gtk.CellRendererText() - renderer.set_property('wrap-mode', gtk.WRAP_WORD) - self.treecol = gtk.TreeViewColumn(_('Questions'), renderer, text=0) - self.quest_listview.append_column(self.treecol) - self.tree_scroller = gtk.ScrolledWindow(hadjustment=None, - vadjustment=None) - self.tree_scroller.set_policy(gtk.POLICY_NEVER, - gtk.POLICY_AUTOMATIC) - self.tree_scroller.add(self.quest_listview) - self.pack_start(self.tree_scroller, False) - - vbox = gtk.VBox() - self.pack_start(vbox, True) - - hbox_buttons = gtk.HBox() - add_reply_button = gtk.Button(_('Add reply')) - add_reply_button.connect('clicked', self.__add_reply_cb) - hbox_buttons.pack_start(add_reply_button, False, padding=5) - - vbox.pack_start(hbox_buttons, False, padding=5) - - # edit question panel - notebook = gtk.Notebook() - vbox.pack_start(notebook, False) - self.vbox_edit = gtk.VBox() - notebook.set_show_tabs(False) - notebook.append_page(self.vbox_edit) - - self.vbox_edit.pack_start(gtk.Label(_('Question')), padding=5) - self.question_entry = gtk.Entry() - self.question_entry.connect('changed', self.__information_changed_cb) - hbox_row = gtk.HBox() - hbox_row.pack_start(self.question_entry, True, padding=5) - self.vbox_edit.pack_start(hbox_row, padding=5) - - self.vbox_edit.replies = [] # used to remove the childs - self.vbox_edit.pack_start(gtk.Label(_('Replies')), padding=5) - self.replies_entries = [] - #self._add_reply_entry() - #self._add_reply_entry(reply_ok=False) - - self._load_treemodel() - self.show_all() - self._modified_data = False - self._selected_key = None - - def __information_changed_cb(self, entry): - logging.debug('Data modified') - self._modified_data = True - - def _load_treemodel(self): - logging.error('loading treemodel') - for question in self.model.data['questions']: - logging.error('adding question %s', question) - self.treemodel.append([question['question']]) - - def __add_reply_cb(self, button): - self._add_reply_entry(reply_ok=len(self.replies_entries) == 0) - - def _add_reply_entry(self, reply_ok=True, text=None): - hbox_row = gtk.HBox() - reply_entry = gtk.Entry() - if text is not None: - reply_entry.set_text(text) - reply_entry.connect('changed', self.__information_changed_cb) - hbox_row.pack_start(reply_entry, True, padding=5) - self.vbox_edit.pack_start(hbox_row, True, padding=5) - if reply_ok: - icon = Icon(icon_name='dialog-ok') - else: - icon = Icon(icon_name='dialog-cancel') - - hbox_row.pack_start(icon, False, padding=5) - hbox_row.show_all() - self.replies_entries.append(reply_entry) - self.vbox_edit.replies.append(hbox_row) - - def select_question(self, treeview): - treestore, coldex = treeview.get_selection().get_selected() - logging.debug('selected question %s', treestore.get_value(coldex, 0)) - if self._modified_data: - # update data - self._update_model(self._selected_key) - self._selected_key = treestore.get_value(coldex, 0) - self._display_model(self._selected_key) - - def _update_model(self, key): - question = self._get_question(key) - new_entry = False - if question == None: - question = {} - new_entry = True - replies = [] - for reply_entry in self.replies_entries: - if reply_entry.get_text() != '': - reply = {} - reply['text'] = reply_entry.get_text() - reply['valid'] = len(replies) == 0 # The first is the valid - replies.append(reply) - question = {'question': self.question_entry.get_text(), - 'type': 'TEXT', - 'replies': replies} - if new_entry: - self.model.data['questions'].append(question) - self.treemodel.append([self.question_entry.get_text()]) - self._modified_data = False - - def _display_model(self, key): - question = self._get_question(key) - self._display_question(question) - - def _display_question(self, question, display_empty_entries=False): - self.question_entry.set_text(question['question']) - # remove old replies entries - for hbox in self.vbox_edit.replies: - self.vbox_edit.remove(hbox) - self.vbox_edit.replies = [] - # add news - for reply in question['replies']: - if display_empty_entries or reply['text'] != '': - self._add_reply_entry(reply_ok=reply['valid'], - text=reply['text']) - self._modified_data = False - - def _get_question(self, key): - for question in self.model.data['questions']: - if question['question'] == key: - return question - return None - - def del_question(self): - logging.debug('del question') - if self._selected_key is not None: - logging.debug('select key %s', self._selected_key) - self.model.data['questions'].remove(self._get_question( - self._selected_key)) - self.treemodel.remove( - self.quest_listview.get_selection()) - self._modified_data = False - self._selected_key = None - - def add_question(self): - if self._modified_data: - # update data - self._update_model(self._selected_key) - - self._selected_key = None - - question = {'question': '', - 'type': 'TEXT', - 'replies': [{'text':'', 'valid':True}, - {'text':'', 'valid':False}]} - self._display_question(question, display_empty_entries=True) |