Пример #1
0
 def _alpha_cards(self):
     x = self._grid_x_offset + GUTTER
     y = self._grid_y_offset + GUTTER
     if len(self._cards) > 0:
         for card in self._cards:
             card.set_layer(100)
         return
     for card in self._card_data:
         self.current_card = self._card_data.index(card)
         # Two-tone cards add some complexity.
         if type(self._color_data[self.current_card][0]) == type([]):
             stroke = self._test_for_stroke()
             top = svg_str_to_pixbuf(
                 generate_card(
                     string=card[0],
                     colors=[
                         self._color_data[self.current_card][0][0],
                         '#FFFFFF'
                     ],
                     scale=self._scale,
                     center=True))
             bot = svg_str_to_pixbuf(
                 generate_card(
                     string=card[0],
                     colors=[
                         self._color_data[self.current_card][0][1],
                         '#FFFFFF'
                     ],
                     scale=self._scale,
                     center=True))
             # Where to draw the line
             h1 = 9 / 16.
             h2 = 1.0 - h1
             bot.composite(top, 0, int(h1 * top.get_height()),
                           top.get_width(), int(h2 * top.get_height()), 0,
                           0, 1, 1, GdkPixbuf.InterpType.NEAREST, 255)
             self._cards.append(Sprite(self._sprites, x, y, top))
         else:
             stroke = self._test_for_stroke()
             self._cards.append(
                 Sprite(
                     self._sprites, x, y,
                     svg_str_to_pixbuf(
                         generate_card(
                             string='%s%s' %
                             (card[0].upper(), card[0].lower()),
                             colors=[
                                 self._color_data[self.current_card][0],
                                 '#FFFFFF'
                             ],
                             stroke=stroke,
                             scale=self._scale,
                             center=True))))
         x += self._card_width + GUTTER * 2
         if x > self._width - (self._card_width / 2):
             x = self._grid_x_offset + GUTTER * 2
             y += self._card_height + GUTTER * 2
Пример #2
0
 def _alpha_cards(self):
     for card in self._card_data:
         self.current_card = self._card_data.index(card)
         # Two-tone cards add some complexity.
         if type(self._color_data[self.current_card][0]) == type([]):
             stroke = self._test_for_stroke()
             top = svg_str_to_pixbuf(
                 generate_card(
                     string=card[0],
                     colors=[
                         self._color_data[self.current_card][0][0],
                         '#FFFFFF'
                     ],
                     scale=self._scale,
                     center=True))
             bot = svg_str_to_pixbuf(
                 generate_card(
                     string=card[0],
                     colors=[
                         self._color_data[self.current_card][0][1],
                         '#FFFFFF'
                     ],
                     scale=self._scale,
                     center=True))
             # Where to draw the line
             h1 = 9 / 16.
             h2 = 1.0 - h1
             bot.composite(top, 0, int(h1 * top.get_height()),
                           top.get_width(), int(h2 * top.get_height()), 0,
                           0, 1, 1, GdkPixbuf.InterpType.NEAREST, 255)
             self._cards.append(Sprite(self._sprites, 0, 0, top))
         else:
             stroke = self._test_for_stroke()
             self._cards.append(
                 Sprite(
                     self._sprites, 0, 0,
                     svg_str_to_pixbuf(
                         generate_card(
                             string='%s%s' %
                             (card[0].upper(), card[0].lower()),
                             colors=[
                                 self._color_data[self.current_card][0],
                                 '#FFFFFF'
                             ],
                             stroke=stroke,
                             scale=self._scale,
                             center=True))))
Пример #3
0
 def _alpha_cards(self):
     x = self._grid_x_offset + GUTTER
     y = self._grid_y_offset + GUTTER
     if len(self._cards) > 0:
         for card in self._cards:
             card.set_layer(100)
         return
     for card in self._card_data:
         self.current_card = self._card_data.index(card)
         # Two-tone cards add some complexity.
         if type(self._color_data[self.current_card][0]) == type([]):
             stroke = self._test_for_stroke()
             top = svg_str_to_pixbuf(generate_card(
                     string='%s%s' % (
                         card[0].upper(), card[0].lower()),
                     colors=[self._color_data[self.current_card][0][0],
                             '#FFFFFF'],
                     scale=self._scale,
                     center=True))
             bot = svg_str_to_pixbuf(generate_card(
                     string='%s%s' % (
                         card[0].upper(), card[0].lower()),
                     colors=[self._color_data[self.current_card][0][1],
                             '#FFFFFF'],
                     scale=self._scale,
                     center=True))
             # Where to draw the line
             h1 = 9 / 16.
             h2 = 1.0 - h1
             bot.composite(top, 0, int(h1 * top.get_height()),
                           top.get_width(), int(h2 * top.get_height()),
                           0, 0, 1, 1, GdkPixbuf.InterpType.NEAREST, 255)
             self._cards.append(Sprite(self._sprites, x, y, top))
         else:
             stroke = self._test_for_stroke()
             self._cards.append(Sprite(self._sprites, x, y,
                                       svg_str_to_pixbuf(generate_card(
                             string='%s%s' % (
                                 card[0].upper(), card[0].lower()),
                             colors=[self._color_data[self.current_card][0],
                                     '#FFFFFF'],
                             stroke=stroke,
                             scale=self._scale, center=True))))
         x += self._card_width + GUTTER * 2
         if x > self._width - (self._card_width / 2):
             x = self._grid_x_offset + GUTTER * 2
             y += self._card_height + GUTTER * 2
Пример #4
0
 def _alpha_cards(self):
     for card in self._card_data:
         self.current_card = self._card_data.index(card)
         # Two-tone cards add some complexity.
         if type(self._color_data[self.current_card][0]) == type([]):
             stroke = self._test_for_stroke()
             top = svg_str_to_pixbuf(generate_card(
                     string=card[0],
                     colors=[self._color_data[self.current_card][0][0],
                             '#FFFFFF'],
                     scale=self._scale,
                     center=True))
             bot = svg_str_to_pixbuf(generate_card(
                     string=card[0],
                     colors=[self._color_data[self.current_card][0][1],
                             '#FFFFFF'],
                     scale=self._scale,
                     center=True))
             # Where to draw the line
             h1 = 9 / 16.
             h2 = 1.0 - h1
             bot.composite(top, 0, int(h1 * top.get_height()),
                           top.get_width(), int(h2 * top.get_height()),
                           0, 0, 1, 1, GdkPixbuf.InterpType.NEAREST, 255)
             self._cards.append(Sprite(self._sprites, 0, 0, top))
         else:
             stroke = self._test_for_stroke()
             if card[0] == 'ch':
                 self._cards.append(Sprite(self._sprites, 0, 0,
                                       svg_str_to_pixbuf(generate_card(
                             string='%s' % (
                                 card[0].lower()),
                             colors=[self._color_data[self.current_card][0],
                                     '#FFFFFF'],
                             stroke=stroke,
                             scale=self._scale, center=True))))
             else:
                 self._cards.append(Sprite(self._sprites, 0, 0,
                                           svg_str_to_pixbuf(generate_card(
                             string='%s%s' % (
                                 card[0].upper(), card[0].lower()),
                             colors=[self._color_data[self.current_card][0],
                                     '#FFFFFF'],
                             stroke=stroke,
                             scale=self._scale, center=True))))
Пример #5
0
    def __init__(self,
                 canvas,
                 lessons_path,
                 images_path,
                 sounds_path,
                 level,
                 parent=None):
        ''' The general stuff we need to track '''
        self._activity = parent
        self._lessons_path = lessons_path
        self._images_path = images_path
        self._sounds_path = sounds_path

        self._card_data = []
        self._color_data = []
        self._image_data = []
        self._media_data = []  # (image sound, letter sound)
        self._word_data = []

        _logger.debug(ALPHABET)

        # Starting from command line
        if self._activity is None:
            self._sugar = False
            self._canvas = canvas
        else:
            self._sugar = True
            self._canvas = canvas
            self._activity.show_all()

        self._canvas.set_flags(gtk.CAN_FOCUS)
        self._canvas.add_events(gtk.gdk.BUTTON_PRESS_MASK)
        self._canvas.add_events(gtk.gdk.BUTTON_RELEASE_MASK)
        self._canvas.connect("expose-event", self._expose_cb)
        self._canvas.connect("button-press-event", self._button_press_cb)
        self._canvas.connect("button-release-event", self._button_release_cb)
        self._canvas.connect("key_press_event", self._keypress_cb)
        self._width = gtk.gdk.screen_width()
        self._height = gtk.gdk.screen_height()
        self._scale = self._width / 240.
        self._sprites = Sprites(self._canvas)
        self.page = 0
        self._cards = []
        self._letters = []
        self._colored_letters_lower = []
        self._colored_letters_upper = []
        self._picture = None
        self._press = None
        self._release = None
        # self.gplay = None
        self.aplay = None
        self.vplay = None
        self._final_x = 0
        self._lead = int(self._scale * 15)
        self._margin = int(self._scale * 3)
        self._left = self._margin  # int((self._width - self._scale * 60) / 2.)
        self._x_pos = self._margin
        self._y_pos = self._lead
        self._offset = int(self._scale * 9)  # self._width / 30.)
        self._looking_at_word_list = False

        self._my_canvas = Sprite(
            self._sprites, 0, 0,
            gtk.gdk.Pixmap(self._canvas.window, self._width,
                           int(self._height * 2.75), -1))
        self._my_canvas.set_layer(0)
        self._my_gc = self._my_canvas.images[0].new_gc()
        self._my_gc.set_foreground(
            self._my_gc.get_colormap().alloc_color('#FFFFFF'))

        for c in ALPHABET:
            self._letters.append(
                Sprite(
                    self._sprites, 0, 0,
                    svg_str_to_pixbuf(
                        generate_card(string=c,
                                      colors=['#000000', '#000000'],
                                      font_size=12 * self._scale,
                                      background=False))))

        self.load_level(os.path.join(self._lessons_path, level + '.csv'))
        self.new_page()
Пример #6
0
    def new_page(self):
        ''' Load a new page: a card and a message '''
        if self.page == len(self._word_data):
            self.page = 0
        if self._sugar:
            if self.page < len(self._card_data):
                if hasattr(self._activity, 'sounds_combo'):
                    self._activity.sounds_combo.set_active(self.page)
        if self.page == len(self._cards) and \
           self.page < len(self._card_data):
            # Two-tone cards add some complexity.
            if type(self._color_data[self.page][0]) == type([]):
                stroke = self._test_for_stroke()
                top = svg_str_to_pixbuf(
                    generate_card(
                        string=self._card_data[self.page][0].lower(),
                        colors=[self._color_data[self.page][0][0], '#FFFFFF'],
                        scale=self._scale,
                        center=True))
                bot = svg_str_to_pixbuf(
                    generate_card(
                        string=self._card_data[self.page][0].lower(),
                        colors=[self._color_data[self.page][0][1], '#FFFFFF'],
                        scale=self._scale,
                        center=True))
                # Where to draw the line
                h1 = 9 / 16.
                h2 = 1.0 - h1
                bot.composite(top, 0, int(h1 * top.get_height()),
                              top.get_width(), int(h2 * top.get_height()), 0,
                              0, 1, 1, gtk.gdk.INTERP_NEAREST, 255)
                self._cards.append(
                    Sprite(
                        self._sprites,  # self._left,
                        int(self._width - 320 * self._scale / 2.5),
                        GRID_CELL_SIZE,
                        top))
                top = svg_str_to_pixbuf(
                    generate_card(
                        string=self._card_data[self.page][0][0].lower(),
                        colors=[self._color_data[self.page][0][0], '#FFFFFF'],
                        font_size=12 * self._scale,
                        background=False,
                        stroke=stroke))
                bot = svg_str_to_pixbuf(
                    generate_card(
                        string=self._card_data[self.page][0][0].lower(),
                        colors=[self._color_data[self.page][0][1], '#FFFFFF'],
                        font_size=12 * self._scale,
                        background=False,
                        stroke=stroke))
                bot.composite(top, 0, int(h1 * top.get_height()),
                              top.get_width(), int(h2 * top.get_height()), 0,
                              0, 1, 1, gtk.gdk.INTERP_NEAREST, 255)
                self._colored_letters_lower.append(
                    Sprite(self._sprites, 0, 0, top))
                top = svg_str_to_pixbuf(
                    generate_card(
                        string=self._card_data[self.page][0][0].upper(),
                        colors=[self._color_data[self.page][0][0], '#FFFFFF'],
                        font_size=12 * self._scale,
                        background=False,
                        stroke=stroke))
                bot = svg_str_to_pixbuf(
                    generate_card(
                        string=self._card_data[self.page][0][0].upper(),
                        colors=[self._color_data[self.page][0][1], '#FFFFFF'],
                        font_size=12 * self._scale,
                        background=False,
                        stroke=stroke))
                bot.composite(top, 0, int(h1 * top.get_height()),
                              top.get_width(), int(h2 * top.get_height()), 0,
                              0, 1, 1, gtk.gdk.INTERP_NEAREST, 255)
                self._colored_letters_upper.append(
                    Sprite(self._sprites, 0, 0, top))
            else:
                stroke = self._test_for_stroke()
                self._cards.append(
                    Sprite(
                        self._sprites,
                        int(self._width - 320 * self._scale / 2.5),
                        GRID_CELL_SIZE,
                        svg_str_to_pixbuf(
                            generate_card(
                                string=self._card_data[self.page][0].lower(),
                                colors=[
                                    self._color_data[self.page][0], '#FFFFFF'
                                ],
                                stroke=stroke,
                                scale=self._scale,
                                center=True))))
                self._colored_letters_lower.append(
                    Sprite(
                        self._sprites, 0, 0,
                        svg_str_to_pixbuf(
                            generate_card(
                                string=self._card_data[self.page][0].lower(),
                                colors=[
                                    self._color_data[self.page][0], '#FFFFFF'
                                ],
                                font_size=12 * self._scale,
                                background=False,
                                stroke=stroke))))
                self._colored_letters_upper.append(
                    Sprite(
                        self._sprites, 0, 0,
                        svg_str_to_pixbuf(
                            generate_card(
                                string=self._card_data[self.page][0].upper(),
                                colors=[
                                    self._color_data[self.page][0], '#FFFFFF'
                                ],
                                font_size=12 * self._scale,
                                background=False,
                                stroke=stroke))))

        self._hide_cards()
        if self.page >= len(self._card_data):
            self.read()
        else:
            self._load_card()
        self._looking_at_word_list = False