From 340c898dfd503d31c8fc584ea6029151b747f304 Mon Sep 17 00:00:00 2001 From: Muriel de Souza Godoi Date: Sat, 21 Jul 2007 06:39:16 +0000 Subject: Fix bugs on display back card labels and add code to consider text alignment --- diff --git a/cardtable.py b/cardtable.py index 6161fb8..11bf1b5 100755 --- a/cardtable.py +++ b/cardtable.py @@ -64,13 +64,13 @@ class CardTable(gtk.EventBox): # Build the table if data['divided']=='1': - text1 = str(self.data['face1']) - text2 = str(self.data['face2']) + text1 = str(self.data.get('face1','')) + text2 = str(self.data.get('face2','')) else: - text1 = str(self.data['face']) - text2 = str(self.data['face']) - buffer_card_1 = svgcard.SvgCard(-1, {'front_border':{'opacity':'0'}, 'front_h_border':{'opacity':'0.5'}, 'back_text':{'card_text':text1}}, {}, None, self.card_size) - buffer_card_2 = svgcard.SvgCard(-1, {'front_border':{'opacity':'0'}, 'front_h_border':{'opacity':'0.5'}, 'back_text':{'card_text':text2}}, {}, None, self.card_size) + text1 = str(self.data.get('face','')) + text2 = str(self.data.get('face','')) + buffer_card_1 = svgcard.SvgCard(-1, {'front_border':{'opacity':'0'}, 'front_h_border':{'opacity':'0.5'}, 'back_text':{'card_text':text1}}, {}, None, self.card_size,1) + buffer_card_2 = svgcard.SvgCard(-1, {'front_border':{'opacity':'0'}, 'front_h_border':{'opacity':'0.5'}, 'back_text':{'card_text':text2}}, {}, None, self.card_size,1) x = 0 y = 0 @@ -84,22 +84,16 @@ class CardTable(gtk.EventBox): props = {} props['front_border'] = {'opacity':'1'} props['front_h_border'] ={'opacity':'1'} - if self.data['align'] == '1': - props['front_text']= {'card_text':card.get('char', ''), 'card_line1':'', 'card_line2':'', - 'card_line3':'', 'card_line4':''} - elif self.data['align'] == '2': - props['front_text']= {'card_text':'', 'card_line1':card.get('char', ''), 'card_line2':'', - 'card_line3':'', 'card_line4':''} - elif self.data['align'] == '3': - props['front_text']= {'card_text':'', 'card_line1':'', - 'card_line2':card.get('char', ''), 'card_line3':'', 'card_line4':''} + props['front_text']= {'card_text':card.get('char', '')} if card['ab']== 'a': buffer_card = buffer_card_1 + props['back_text']= {'card_text':text1} elif card['ab']== 'b': buffer_card = buffer_card_2 + props['back_text']= {'card_text':text2} - card = svgcard.SvgCard(id, props, buffer_card.get_cache(), jpg, self.card_size) + card = svgcard.SvgCard(id, props, buffer_card.get_cache(), jpg, self.card_size,self.data.get('align','1')) card.connect('enter-notify-event', self.mouse_event, [x, y]) card.connect("button-press-event", self.flip_card_mouse, id) self.table_positions[(x, y)]=1 @@ -108,9 +102,7 @@ class CardTable(gtk.EventBox): self.cards[(x, y)] = card self.dict[id] = (x, y) self.table.attach(card, x, x+1, y, y+1, gtk.SHRINK, gtk.SHRINK) - #button = gtk.Button('button') - #button.show() - #self.table.attach(button, x, x+1, y, y+1, gtk.SHRINK, gtk.SHRINK) + x += 1 if x == self.size: x = 0 diff --git a/svgcard.py b/svgcard.py index 0c38be7..38aa767 100755 --- a/svgcard.py +++ b/svgcard.py @@ -27,6 +27,9 @@ import svglabel import gtk import gobject import pango +import logging + +_logger = logging.getLogger('memorize-activity') class SvgCard(gtk.DrawingArea): @@ -43,7 +46,7 @@ class SvgCard(gtk.DrawingArea): default_props['front_text'] = {'filename':text_svg, 'text_color':'#ffffff'} - def __init__(self, id, pprops, pcache, jpeg, size): + def __init__(self, id, pprops, pcache, jpeg, size,align): gtk.DrawingArea.__init__(self) self.set_size_request(size, size) self.bg_color = '#000000' @@ -53,6 +56,7 @@ class SvgCard(gtk.DrawingArea): self.id = id self.jpeg = jpeg self.size = size + self.align = align self.set_flags(gtk.CAN_FOCUS) # Views properties @@ -79,15 +83,11 @@ class SvgCard(gtk.DrawingArea): self.cache['back_border']= self._read_icon_data(self.props['back_border']) if build_all or pprops.has_key('back_h_border'): self.cache['back_h_border']= self._read_icon_data(self.props['back_h_border']) - if build_all or pprops.has_key('back_text'): - #text = CardText(self.props['back_text'].get('card_text', ''), self.props['back_text'].get('text_color')) - text = self._read_icon_data(self.props['back_text']) - self.cache['back_text'] = text.scale_simple(self.size-14, self.size-14, gtk.gdk.INTERP_BILINEAR) - del text - self.back_layout = self.get_text_layout(self.props['back_text'].get('card_text', ''), self.size-12) + + self.back_layout = self.get_text_layout(self.props['back_text'].get('card_text',''), self.size-12) self.back_layout_position = (self.size -(self.back_layout.get_size()[1]/1000))/2 - self.current_layout_position = self.back_layout_position - self.current_text_color = self.props['back_text'].get('text_color','#c7c8cc') + print str(self.props['back_text']) + if build_all or self.pprops.has_key('back_border') or self.pprops.has_key('back_text'): self.cache['back'] = self.build_face('back') if build_all or self.pprops.has_key('back_h_border') or self.pprops.has_key('back_text'): @@ -95,6 +95,9 @@ class SvgCard(gtk.DrawingArea): self.current_pixbuf = self.cache['back'] self.current_layout = self.back_layout + self.current_layout_position = self.back_layout_position + self.current_text_color = self.props['back_text'].get('text_color','#c7c8cc') + # Set events and listeners self.set_events(gtk.gdk.ALL_EVENTS_MASK) gc.collect() @@ -184,13 +187,17 @@ class SvgCard(gtk.DrawingArea): self.cache['front_text'] = text.scale_simple(self.size-22, self.size-22, gtk.gdk.INTERP_BILINEAR) del text self.front_layout = self.get_text_layout(self.props['front_text'].get('card_text', ''), self.size-11) - self.front_layout_position = (self.size -(self.front_layout.get_size()[1]/1000))/2 + if self.align == '1': # center + self.front_layout_position = (self.size -(self.front_layout.get_size()[1]/1000))/2 + elif self.align == '2': # top + self.front_layout_position = 6 + elif self.align == '3': # bottom + self.front_layout_position = self.size -(self.front_layout.get_size()[1]/1000) self.current_layout = self.front_layout self.current_layout_position = self.front_layout_position self.current_text_color = self.props['front_text'].get('text_color','#c7c8cc') if self.jpeg <> None: pixbuf_t = gtk.gdk.pixbuf_new_from_file(self.jpeg) - # pixbuf_t = pixbuf_t.add_alpha(True,chr(255),chr(255),chr(255)) self.cache['jpeg']= pixbuf_t.scale_simple(self.size-22, self.size-22, gtk.gdk.INTERP_BILINEAR) del pixbuf_t @@ -231,6 +238,7 @@ class SvgCard(gtk.DrawingArea): self.flop() def get_text_layout(self, text, size): + _logger.error('Text: '+text) if self.size == 184: font_sizes = [50,40,26,20,17,13,11,8] elif self.size == 145: @@ -247,7 +255,7 @@ class SvgCard(gtk.DrawingArea): # Set Pango context and Pango layout context = self.create_pango_context() layout = self.create_pango_layout(text) - desc = pango.FontDescription(' bold '+str(font_size)) + desc = pango.FontDescription('Deja Vu Sans bold '+str(font_size)) layout.set_font_description(desc) layout.set_alignment(pango.ALIGN_CENTER) layout.set_width(size*1000) -- cgit v0.9.1