From d48ffffb3b7d205163a73e72b0aa8bc40fe40cd5 Mon Sep 17 00:00:00 2001
From: Manuel Kaufmann <humitos@gmail.com>
Date: Thu, 9 Aug 2012 17:22:47 -0300
Subject: [PATCH Typing Turtle] Edit lessons section
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@gmail.com>
---
editlessonlistscreen.py | 55 ++++++++++++++++++++++++++-----------------------
editlessonscreen.py | 43 +++++++++++++++++++++++++-------------
2 files changed, 58 insertions(+), 40 deletions(-)
diff --git a/editlessonlistscreen.py b/editlessonlistscreen.py
index 6ac2c34..9bbeeb1 100644
a
|
b
|
class EditLessonListScreen(Gtk.VBox): |
61 | 61 | self.treeview.set_rules_hint(True) |
62 | 62 | self.treeview.set_enable_search(False) |
63 | 63 | |
64 | | self.treeview.connect('cursor-changed', self.lesson_selected_cb) |
65 | | self.treeview.connect('row-activated', self.lesson_activated_cb) |
66 | | |
67 | 64 | # Note that the only thing we store in our liststore is the lesson id. |
68 | 65 | # All the actual data is in the lessons list. |
69 | 66 | self.liststore = Gtk.ListStore(GObject.TYPE_INT) |
… |
… |
class EditLessonListScreen(Gtk.VBox): |
136 | 133 | self.pack_start(scroll, True, True, 10) |
137 | 134 | self.pack_start(btnbox, False, False, 10) |
138 | 135 | |
| 136 | # README: I had to move these two lines here because the |
| 137 | # signal was emitted before all the widget are created |
| 138 | self.treeview.connect('cursor-changed', self.lesson_selected_cb) |
| 139 | self.treeview.connect('row-activated', self.lesson_activated_cb) |
| 140 | |
139 | 141 | self.build() |
140 | 142 | |
141 | 143 | self.show_all() |
… |
… |
class EditLessonListScreen(Gtk.VBox): |
146 | 148 | for t in range(0, len(self.lessons)): |
147 | 149 | self.liststore.append((0,)) |
148 | 150 | |
149 | | def name_render_cb(self, column, cell_renderer, model, iter): |
150 | | id = model.get_path(iter)[0] |
| 151 | def name_render_cb(self, column, cell_renderer, model, iter, data): |
| 152 | id = model.get_path(iter).get_indices()[0] |
151 | 153 | t = self.lessons[id] |
152 | 154 | cell_renderer.set_property('text', t['name']) |
153 | 155 | |
154 | | def description_render_cb(self, column, cell_renderer, model, iter): |
155 | | id = model.get_path(iter)[0] |
| 156 | def description_render_cb(self, column, cell_renderer, model, iter, data): |
| 157 | id = model.get_path(iter).get_indices()[0] |
156 | 158 | t = self.lessons[id] |
157 | 159 | cell_renderer.set_property('text', t['description']) |
158 | 160 | |
159 | | def type_render_cb(self, column, cell_renderer, model, iter): |
160 | | id = model.get_path(iter)[0] |
| 161 | def type_render_cb(self, column, cell_renderer, model, iter, data): |
| 162 | id = model.get_path(iter).get_indices()[0] |
161 | 163 | t = self.lessons[id] |
162 | 164 | if t['type'] == 'normal': |
163 | 165 | cell_renderer.set_property('text', _('Text')) |
… |
… |
class EditLessonListScreen(Gtk.VBox): |
244 | 246 | self.update_sensitivity() |
245 | 247 | |
246 | 248 | def lesson_activated_cb(self, treeview, path, column): |
247 | | id = path[0] |
| 249 | sel = self.treeview.get_selection() |
| 250 | model, iter = sel.get_selected() |
| 251 | id = model.get_path(iter).get_indices()[0] |
248 | 252 | lesson = self.lessons[id] |
249 | 253 | self.activity.push_screen(editlessonscreen.EditLessonScreen(self.activity, lesson)) |
250 | 254 | |
… |
… |
class EditLessonListScreen(Gtk.VBox): |
252 | 256 | self.update_sensitivity() |
253 | 257 | |
254 | 258 | def update_sensitivity(self): |
255 | | path = self.treeview.get_cursor()[0] |
256 | | |
257 | | if path: |
258 | | self.delbtn.set_sensitive(True) |
259 | | |
260 | | if path[0] > 0: |
261 | | self.moveupbtn.set_sensitive(True) |
| 259 | sel = self.treeview.get_selection() |
| 260 | if sel: |
| 261 | model, iter = sel.get_selected() |
| 262 | |
| 263 | if iter: |
| 264 | self.delbtn.set_sensitive(True) |
| 265 | if model.get_value(iter, 0) > 0: |
| 266 | self.moveupbtn.set_sensitive(True) |
| 267 | else: |
| 268 | self.moveupbtn.set_sensitive(False) |
| 269 | if model.get_value(iter, 0) < len(self.lessons) - 1: |
| 270 | self.movedownbtn.set_sensitive(True) |
| 271 | else: |
| 272 | self.movedownbtn.set_sensitive(False) |
262 | 273 | else: |
| 274 | self.delbtn.set_sensitive(False) |
263 | 275 | self.moveupbtn.set_sensitive(False) |
264 | | |
265 | | if path[0] < len(self.lessons) - 1: |
266 | | self.movedownbtn.set_sensitive(True) |
267 | | else: |
268 | 276 | self.movedownbtn.set_sensitive(False) |
269 | | |
270 | | else: |
271 | | self.delbtn.set_sensitive(False) |
272 | | self.moveupbtn.set_sensitive(False) |
273 | | self.movedownbtn.set_sensitive(False) |
274 | 277 | |
275 | 278 | |
276 | 279 | def import_clicked_cb(self, btn): |
diff --git a/editlessonscreen.py b/editlessonscreen.py
index e5ce0b4..d81d250 100644
a
|
b
|
class EditLessonScreen(Gtk.VBox): |
157 | 157 | |
158 | 158 | btnbox = Gtk.HBox() |
159 | 159 | btnbox.pack_start(steplabel, False, False, 0) |
160 | | btnbox.pack_start(stepbox.typecombo, expand=False, padding=10) |
| 160 | btnbox.pack_start(stepbox.typecombo, expand=False, |
| 161 | fill=False, padding=10) |
161 | 162 | btnbox.pack_end(addstepbtn, False, False, 0) |
162 | 163 | btnbox.pack_end(delstepbtn, False, False, 0) |
163 | 164 | btnbox.pack_end(moveupbtn, False, False, 0) |
… |
… |
class EditLessonScreen(Gtk.VBox): |
171 | 172 | |
172 | 173 | self.labelsizegroup.add_widget(instlabel) |
173 | 174 | |
174 | | stepbox.insttext = Gtk.TextView(Gtk.TextBuffer()) |
| 175 | stepbox.insttext = Gtk.TextView() |
| 176 | stepbox.insttext.set_buffer(Gtk.TextBuffer()) |
175 | 177 | stepbox.insttext.props.wrap_mode = Gtk.WrapMode.WORD |
176 | 178 | stepbox.insttext.modify_font(Pango.FontDescription('Monospace')) |
177 | 179 | instscroll = Gtk.ScrolledWindow() |
… |
… |
class EditLessonScreen(Gtk.VBox): |
192 | 194 | |
193 | 195 | self.labelsizegroup.add_widget(textlabel) |
194 | 196 | |
195 | | stepbox.texttext = Gtk.TextView(Gtk.TextBuffer()) |
| 197 | stepbox.texttext = Gtk.TextView() |
| 198 | stepbox.texttext.set_buffer(Gtk.TextBuffer()) |
196 | 199 | stepbox.texttext.props.wrap_mode = Gtk.WrapMode.WORD |
197 | 200 | stepbox.texttext.modify_font(Pango.FontDescription('monospace')) |
198 | 201 | textscroll = Gtk.ScrolledWindow() |
… |
… |
class EditLessonScreen(Gtk.VBox): |
304 | 307 | desclabel.set_alignment(0.0, 0.5) |
305 | 308 | desclabel.set_padding(20, 0) |
306 | 309 | |
307 | | self.desctext = Gtk.TextView(Gtk.TextBuffer()) |
| 310 | self.desctext = Gtk.TextView() |
| 311 | self.desctext.set_buffer(Gtk.TextBuffer()) |
308 | 312 | self.desctext.props.wrap_mode = Gtk.WrapMode.WORD |
309 | 313 | descscroll = Gtk.ScrolledWindow() |
310 | 314 | descscroll.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC) |
… |
… |
class EditLessonScreen(Gtk.VBox): |
350 | 354 | generatelabel.set_padding(10, 0) |
351 | 355 | |
352 | 356 | generatebox = self.build_generate() |
353 | | self.vbox.pack_start(generatelabel, expand=False, padding=10) |
| 357 | self.vbox.pack_start(generatelabel, expand=False, |
| 358 | fill=False, padding=10) |
354 | 359 | self.vbox.pack_start(generatebox, False, True, 0) |
355 | 360 | |
356 | 361 | self.has_normal_widgets = False |
… |
… |
class EditLessonScreen(Gtk.VBox): |
385 | 390 | |
386 | 391 | self.labelsizegroup.add_widget(textlabel) |
387 | 392 | |
388 | | self.wordstext = Gtk.TextView(Gtk.TextBuffer()) |
| 393 | self.wordstext = Gtk.TextView() |
| 394 | self.wordstext.set_buffer(Gtk.TextBuffer()) |
389 | 395 | self.wordstext.props.wrap_mode = Gtk.WrapMode.WORD |
390 | 396 | self.wordstext.modify_font(Pango.FontDescription('Monospace')) |
391 | 397 | textscroll = Gtk.ScrolledWindow() |
… |
… |
class EditLessonScreen(Gtk.VBox): |
406 | 412 | medalslabel.set_alignment(0.0, 0.5) |
407 | 413 | medalslabel.set_padding(10, 0) |
408 | 414 | |
409 | | self.vbox.pack_start(medalslabel, expand=False, padding=10) |
| 415 | self.vbox.pack_start(medalslabel, expand=False, |
| 416 | fill=False, padding=10) |
410 | 417 | |
411 | 418 | self.medalboxes = [] |
412 | 419 | self.medalboxes.append(self.build_medal(self.lesson['medals'][0], _('Bronze'))) |
… |
… |
class EditLessonScreen(Gtk.VBox): |
436 | 443 | self.lesson['name'] = self.nameent.get_text() |
437 | 444 | |
438 | 445 | buf = self.desctext.get_buffer() |
439 | | self.lesson['description'] = buf.get_text(buf.get_start_iter(), buf.get_end_iter()) |
| 446 | self.lesson['description'] = buf.get_text(buf.get_start_iter(), |
| 447 | buf.get_end_iter(), False) |
440 | 448 | |
441 | 449 | if not self.lesson.has_key('options'): |
442 | 450 | self.lesson['options'] = {} |
… |
… |
class EditLessonScreen(Gtk.VBox): |
453 | 461 | step = {} |
454 | 462 | |
455 | 463 | buf = sb.insttext.get_buffer() |
456 | | step['instructions'] = buf.get_text(buf.get_start_iter(), buf.get_end_iter()) |
| 464 | step['instructions'] = buf.get_text(buf.get_start_iter(), |
| 465 | buf.get_end_iter(), |
| 466 | False) |
457 | 467 | |
458 | 468 | buf = sb.texttext.get_buffer() |
459 | | step['text'] = buf.get_text(buf.get_start_iter(), buf.get_end_iter()) |
| 469 | step['text'] = buf.get_text(buf.get_start_iter(), |
| 470 | buf.get_end_iter(), False) |
460 | 471 | |
461 | 472 | if sb.typecombo.get_active() == 0: |
462 | 473 | step['mode'] = 'key' |
… |
… |
class EditLessonScreen(Gtk.VBox): |
476 | 487 | |
477 | 488 | if self.has_balloon_widgets: |
478 | 489 | buf = self.wordstext.get_buffer() |
479 | | text = buf.get_text(buf.get_start_iter(), buf.get_end_iter()) |
| 490 | text = buf.get_text(buf.get_start_iter(), |
| 491 | buf.get_end_iter(), False) |
480 | 492 | self.lesson['words'] = text.split(' ') |
481 | 493 | |
482 | 494 | for i in range(0, 3): |
… |
… |
class WordListScreen(Gtk.VBox): |
581 | 593 | subtitle.set_markup("<span size='10000'>" + _("Type or paste words here, for the Automatic Lesson Generator. If empty, the dictionary will be used.") + "</span>") |
582 | 594 | subtitle.set_alignment(1.0, 0.0) |
583 | 595 | |
584 | | self.wordlisttext = Gtk.TextView(Gtk.TextBuffer()) |
| 596 | self.wordlisttext = Gtk.TextView() |
| 597 | self.wordlisttext.set_buffer(Gtk.TextBuffer()) |
585 | 598 | self.wordlisttext.props.wrap_mode = Gtk.WrapMode.WORD |
586 | 599 | wordlistscroll = Gtk.ScrolledWindow() |
587 | 600 | wordlistscroll.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC) |
… |
… |
class WordListScreen(Gtk.VBox): |
591 | 604 | |
592 | 605 | self.pack_start(titlebox, False, True, 0) |
593 | 606 | self.pack_start(subtitle, False, True, 0) |
594 | | self.pack_start(Gtk.Separator(orientation=Gtk.Orientation.HORIZONTAL), expand=False, padding=0) |
| 607 | separator = Gtk.Separator(orientation=Gtk.Orientation.HORIZONTAL) |
| 608 | self.pack_start(separator, expand=False, fill=False, padding=0) |
595 | 609 | self.pack_start(wordlistscroll, True, True, 0) |
596 | 610 | |
597 | 611 | self.show_all() |
598 | 612 | |
599 | 613 | def stop_clicked_cb(self, btn): |
600 | 614 | buf = self.wordlisttext.get_buffer() |
601 | | wordstext = buf.get_text(buf.get_start_iter(), buf.get_end_iter()) |
| 615 | wordstext = buf.get_text(buf.get_start_iter(), |
| 616 | buf.get_end_iter(), False) |
602 | 617 | self.activity.wordlist = wordstext.split() |
603 | 618 | |
604 | 619 | self.activity.pop_screen() |