[Sugar-devel] [PATCH Typing Turtle] Edit lessons section

Gonzalo Odiard gonzalo at laptop.org
Fri Aug 10 17:19:53 EDT 2012


Thanks, reviewed and pushed.

Gonzalo

On Fri, Aug 10, 2012 at 5:53 PM, Manuel Kaufmann <humitos at gmail.com> wrote:

> After the port to Gtk3 the Edit Lessons section didn't work
> anymore. This commits solves this and make this section available
> again.
>
> Signed-off-by: Manuel Kaufmann <humitos at gmail.com>
> ---
>  editlessonlistscreen.py | 57
> ++++++++++++++++++++++++++-----------------------
>  editlessonscreen.py     | 43 +++++++++++++++++++++++++------------
>  2 files changed, 59 insertions(+), 41 deletions(-)
>
> diff --git a/editlessonlistscreen.py b/editlessonlistscreen.py
> index 6ac2c34..984f3b7 100644
> --- a/editlessonlistscreen.py
> +++ b/editlessonlistscreen.py
> @@ -61,9 +61,6 @@ class EditLessonListScreen(Gtk.VBox):
>          self.treeview.set_rules_hint(True)
>          self.treeview.set_enable_search(False)
>
> -        self.treeview.connect('cursor-changed', self.lesson_selected_cb)
> -        self.treeview.connect('row-activated', self.lesson_activated_cb)
> -
>          # Note that the only thing we store in our liststore is the
> lesson id.
>          # All the actual data is in the lessons list.
>          self.liststore = Gtk.ListStore(GObject.TYPE_INT)
> @@ -136,6 +133,11 @@ class EditLessonListScreen(Gtk.VBox):
>          self.pack_start(scroll, True, True, 10)
>          self.pack_start(btnbox, False, False, 10)
>
> +        # README: I had to move these two lines here because the
> +        # signal was emitted before all the widget are created
> +        self.treeview.connect('cursor-changed', self.lesson_selected_cb)
> +        self.treeview.connect('row-activated', self.lesson_activated_cb)
> +
>          self.build()
>
>          self.show_all()
> @@ -146,18 +148,18 @@ class EditLessonListScreen(Gtk.VBox):
>          for t in range(0, len(self.lessons)):
>              self.liststore.append((0,))
>
> -    def name_render_cb(self, column, cell_renderer, model, iter):
> -        id = model.get_path(iter)[0]
> +    def name_render_cb(self, column, cell_renderer, model, iter, data):
> +        id = model.get_path(iter).get_indices()[0]
>          t = self.lessons[id]
>          cell_renderer.set_property('text', t['name'])
>
> -    def description_render_cb(self, column, cell_renderer, model, iter):
> -        id = model.get_path(iter)[0]
> +    def description_render_cb(self, column, cell_renderer, model, iter,
> data):
> +        id = model.get_path(iter).get_indices()[0]
>          t = self.lessons[id]
>          cell_renderer.set_property('text', t['description'])
>
> -    def type_render_cb(self, column, cell_renderer, model, iter):
> -        id = model.get_path(iter)[0]
> +    def type_render_cb(self, column, cell_renderer, model, iter, data):
> +        id = model.get_path(iter).get_indices()[0]
>          t = self.lessons[id]
>          if t['type'] == 'normal':
>              cell_renderer.set_property('text', _('Text'))
> @@ -195,31 +197,32 @@ class EditLessonListScreen(Gtk.VBox):
>
>      def del_lesson_clicked_cb(self, btn):
>          if len(self.lessons) > 1:
> -            path = self.treeview.get_cursor()[0]
> +            path, focus_column = self.treeview.get_cursor()
> +
>              if path:
>                  msg = sugar3.graphics.alert.ConfirmationAlert()
>                  msg.props.title = _('Delete Lesson?')
>                  msg.props.msg = _('Deleting the lesson will erase the
> lesson content.')
>
> -                def alert_response_cb(alert, response_id, self, id):
> +                def alert_response_cb(alert, response_id, self, path):
>                      self.activity.remove_alert(alert)
>                      if response_id is Gtk.ResponseType.OK:
> +                        id = path.get_indices()[0]
>                          self.lessons.pop(id)
> -                        del self.liststore[id]
> +                        del self.liststore[path]
>                          self.treeview.get_selection().select_path(id)
>                          self.treeview.grab_focus()
>                          self.update_sensitivity()
> -
> -                id = path[0]
> -                msg.connect('response', alert_response_cb, self, id)
> +
> +                msg.connect('response', alert_response_cb, self, path)
>
>                  self.activity.add_alert(msg)
>                  msg.show_all()
>
>      def move_lesson_up_clicked_cb(self, btn):
> -        path = self.treeview.get_cursor()[0]
> +        path, focus_column = self.treeview.get_cursor()
>          if path:
> -            id = path[0]
> +            id = path.get_indices()[0]
>              if id > 0:
>                  lesson = self.lessons.pop(id)
>                  self.lessons.insert(id - 1, lesson)
> @@ -229,9 +232,9 @@ class EditLessonListScreen(Gtk.VBox):
>                  self.update_sensitivity()
>
>      def move_lesson_down_clicked_cb(self, btn):
> -        path = self.treeview.get_cursor()[0]
> +        path, focus_column = self.treeview.get_cursor()
>          if path:
> -            id = path[0]
> +            id = path.get_indices()[0]
>              if id < len(self.lessons) - 1:
>                  lesson = self.lessons.pop(id)
>                  self.lessons.insert(id + 1, lesson)
> @@ -244,7 +247,8 @@ class EditLessonListScreen(Gtk.VBox):
>          self.update_sensitivity()
>
>      def lesson_activated_cb(self, treeview, path, column):
> -        id = path[0]
> +        path, focus_column = self.treeview.get_cursor()
> +        id = path.get_indices()[0]
>          lesson = self.lessons[id]
>
>  self.activity.push_screen(editlessonscreen.EditLessonScreen(self.activity,
> lesson))
>
> @@ -252,21 +256,20 @@ class EditLessonListScreen(Gtk.VBox):
>          self.update_sensitivity()
>
>      def update_sensitivity(self):
> -        path = self.treeview.get_cursor()[0]
> -
> +        path, focus_column = self.treeview.get_cursor()
>          if path:
>              self.delbtn.set_sensitive(True)
> -
> -            if path[0] > 0:
> +
> +            id = path.get_indices()[0]
> +            if id > 0:
>                  self.moveupbtn.set_sensitive(True)
>              else:
>                  self.moveupbtn.set_sensitive(False)
> -
> -            if path[0] < len(self.lessons) - 1:
> +
> +            if id < len(self.lessons) - 1:
>                  self.movedownbtn.set_sensitive(True)
>              else:
>                  self.movedownbtn.set_sensitive(False)
> -
>          else:
>              self.delbtn.set_sensitive(False)
>              self.moveupbtn.set_sensitive(False)
> diff --git a/editlessonscreen.py b/editlessonscreen.py
> index e5ce0b4..d81d250 100644
> --- a/editlessonscreen.py
> +++ b/editlessonscreen.py
> @@ -157,7 +157,8 @@ class EditLessonScreen(Gtk.VBox):
>
>          btnbox = Gtk.HBox()
>          btnbox.pack_start(steplabel, False, False, 0)
> -        btnbox.pack_start(stepbox.typecombo, expand=False, padding=10)
> +        btnbox.pack_start(stepbox.typecombo, expand=False,
> +                          fill=False, padding=10)
>          btnbox.pack_end(addstepbtn, False, False, 0)
>          btnbox.pack_end(delstepbtn, False, False, 0)
>          btnbox.pack_end(moveupbtn, False, False, 0)
> @@ -171,7 +172,8 @@ class EditLessonScreen(Gtk.VBox):
>
>          self.labelsizegroup.add_widget(instlabel)
>
> -        stepbox.insttext = Gtk.TextView(Gtk.TextBuffer())
> +        stepbox.insttext = Gtk.TextView()
> +        stepbox.insttext.set_buffer(Gtk.TextBuffer())
>          stepbox.insttext.props.wrap_mode = Gtk.WrapMode.WORD
>          stepbox.insttext.modify_font(Pango.FontDescription('Monospace'))
>          instscroll = Gtk.ScrolledWindow()
> @@ -192,7 +194,8 @@ class EditLessonScreen(Gtk.VBox):
>
>          self.labelsizegroup.add_widget(textlabel)
>
> -        stepbox.texttext = Gtk.TextView(Gtk.TextBuffer())
> +        stepbox.texttext = Gtk.TextView()
> +        stepbox.texttext.set_buffer(Gtk.TextBuffer())
>          stepbox.texttext.props.wrap_mode = Gtk.WrapMode.WORD
>          stepbox.texttext.modify_font(Pango.FontDescription('monospace'))
>          textscroll = Gtk.ScrolledWindow()
> @@ -304,7 +307,8 @@ class EditLessonScreen(Gtk.VBox):
>          desclabel.set_alignment(0.0, 0.5)
>          desclabel.set_padding(20, 0)
>
> -        self.desctext = Gtk.TextView(Gtk.TextBuffer())
> +        self.desctext = Gtk.TextView()
> +        self.desctext.set_buffer(Gtk.TextBuffer())
>          self.desctext.props.wrap_mode = Gtk.WrapMode.WORD
>          descscroll = Gtk.ScrolledWindow()
>          descscroll.set_policy(Gtk.PolicyType.AUTOMATIC,
> Gtk.PolicyType.AUTOMATIC)
> @@ -350,7 +354,8 @@ class EditLessonScreen(Gtk.VBox):
>          generatelabel.set_padding(10, 0)
>
>          generatebox = self.build_generate()
> -        self.vbox.pack_start(generatelabel, expand=False, padding=10)
> +        self.vbox.pack_start(generatelabel, expand=False,
> +                             fill=False, padding=10)
>          self.vbox.pack_start(generatebox, False, True, 0)
>
>          self.has_normal_widgets = False
> @@ -385,7 +390,8 @@ class EditLessonScreen(Gtk.VBox):
>
>              self.labelsizegroup.add_widget(textlabel)
>
> -            self.wordstext = Gtk.TextView(Gtk.TextBuffer())
> +            self.wordstext = Gtk.TextView()
> +            self.wordstext.set_buffer(Gtk.TextBuffer())
>              self.wordstext.props.wrap_mode = Gtk.WrapMode.WORD
>              self.wordstext.modify_font(Pango.FontDescription('Monospace'))
>              textscroll = Gtk.ScrolledWindow()
> @@ -406,7 +412,8 @@ class EditLessonScreen(Gtk.VBox):
>          medalslabel.set_alignment(0.0, 0.5)
>          medalslabel.set_padding(10, 0)
>
> -        self.vbox.pack_start(medalslabel, expand=False, padding=10)
> +        self.vbox.pack_start(medalslabel, expand=False,
> +                             fill=False, padding=10)
>
>          self.medalboxes = []
>          self.medalboxes.append(self.build_medal(self.lesson['medals'][0],
> _('Bronze')))
> @@ -436,7 +443,8 @@ class EditLessonScreen(Gtk.VBox):
>          self.lesson['name'] = self.nameent.get_text()
>
>          buf = self.desctext.get_buffer()
> -        self.lesson['description'] = buf.get_text(buf.get_start_iter(),
> buf.get_end_iter())
> +        self.lesson['description'] = buf.get_text(buf.get_start_iter(),
> +                                                  buf.get_end_iter(),
> False)
>
>          if not self.lesson.has_key('options'):
>              self.lesson['options'] = {}
> @@ -453,10 +461,13 @@ class EditLessonScreen(Gtk.VBox):
>                      step = {}
>
>                      buf = sb.insttext.get_buffer()
> -                    step['instructions'] =
> buf.get_text(buf.get_start_iter(), buf.get_end_iter())
> +                    step['instructions'] =
> buf.get_text(buf.get_start_iter(),
> +
>  buf.get_end_iter(),
> +                                                        False)
>
>                      buf = sb.texttext.get_buffer()
> -                    step['text'] = buf.get_text(buf.get_start_iter(),
> buf.get_end_iter())
> +                    step['text'] = buf.get_text(buf.get_start_iter(),
> +                                                buf.get_end_iter(), False)
>
>                      if sb.typecombo.get_active() == 0:
>                          step['mode'] = 'key'
> @@ -476,7 +487,8 @@ class EditLessonScreen(Gtk.VBox):
>
>              if self.has_balloon_widgets:
>                  buf = self.wordstext.get_buffer()
> -                text = buf.get_text(buf.get_start_iter(),
> buf.get_end_iter())
> +                text = buf.get_text(buf.get_start_iter(),
> +                                    buf.get_end_iter(), False)
>                  self.lesson['words'] = text.split(' ')
>
>                  for i in range(0, 3):
> @@ -581,7 +593,8 @@ class WordListScreen(Gtk.VBox):
>          subtitle.set_markup("<span size='10000'>" + _("Type or paste
> words here, for the Automatic Lesson Generator.  If empty, the dictionary
> will be used.") + "</span>")
>          subtitle.set_alignment(1.0, 0.0)
>
> -        self.wordlisttext = Gtk.TextView(Gtk.TextBuffer())
> +        self.wordlisttext = Gtk.TextView()
> +        self.wordlisttext.set_buffer(Gtk.TextBuffer())
>          self.wordlisttext.props.wrap_mode = Gtk.WrapMode.WORD
>          wordlistscroll = Gtk.ScrolledWindow()
>          wordlistscroll.set_policy(Gtk.PolicyType.AUTOMATIC,
> Gtk.PolicyType.AUTOMATIC)
> @@ -591,14 +604,16 @@ class WordListScreen(Gtk.VBox):
>
>          self.pack_start(titlebox, False, True, 0)
>          self.pack_start(subtitle, False, True, 0)
> -
>  self.pack_start(Gtk.Separator(orientation=Gtk.Orientation.HORIZONTAL),
> expand=False, padding=0)
> +        separator = Gtk.Separator(orientation=Gtk.Orientation.HORIZONTAL)
> +        self.pack_start(separator, expand=False, fill=False, padding=0)
>          self.pack_start(wordlistscroll, True, True, 0)
>
>          self.show_all()
>
>      def stop_clicked_cb(self, btn):
>          buf = self.wordlisttext.get_buffer()
> -        wordstext = buf.get_text(buf.get_start_iter(), buf.get_end_iter())
> +        wordstext = buf.get_text(buf.get_start_iter(),
> +                                 buf.get_end_iter(), False)
>          self.activity.wordlist = wordstext.split()
>
>          self.activity.pop_screen()
> --
> 1.7.11.2
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sugarlabs.org/archive/sugar-devel/attachments/20120810/28fc5814/attachment-0001.html>


More information about the Sugar-devel mailing list