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
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))))
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
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))))
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()
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