Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGonzalo Odiard <godiard@gmail.com>2011-09-16 21:21:19 (GMT)
committer Gonzalo Odiard <godiard@gmail.com>2011-09-16 21:40:01 (GMT)
commit74362e63ca224bd7bdd1a6a6b016d91b973b911c (patch)
treedfc25a7080c7c9e083a413c1e0bdd4e56509e225
parent02f202019aa2e9f0281218ca1f2a271bfbac3647 (diff)
Pep8 and pylint fixes
Signed-of-by: Gonzalo Odiard <gonzalo@laptop.org>
-rw-r--r--activity.py55
-rw-r--r--audio.py1
-rw-r--r--cardlist.py101
-rw-r--r--cardtable.py51
-rw-r--r--createcardpanel.py87
-rw-r--r--createtoolbar.py23
-rw-r--r--face.py3
-rw-r--r--game.py107
-rw-r--r--memorizetoolbar.py28
-rw-r--r--messenger.py102
-rw-r--r--model.py76
-rw-r--r--playerscoreboard.py39
-rw-r--r--score.py15
-rw-r--r--scoreboard.py30
-rw-r--r--svgcard.py51
-rw-r--r--svglabel.py62
16 files changed, 422 insertions, 409 deletions
diff --git a/activity.py b/activity.py
index a742316..77d08d3 100644
--- a/activity.py
+++ b/activity.py
@@ -37,9 +37,9 @@ import telepathy.client
from sugar.activity.widgets import ActivityToolbarButton
from sugar.activity.widgets import StopButton
-from sugar.graphics.toolbarbox import ToolbarButton, ToolbarBox
+from sugar.graphics.toolbarbox import ToolbarBox
from sugar.graphics.radiotoolbutton import RadioToolButton
-from sugar.activity.activity import Activity, ActivityToolbox
+from sugar.activity.activity import Activity
from sugar.presence import presenceservice
from sugar.presence.tubeconn import TubeConnection
@@ -61,13 +61,14 @@ PATH = '/org/laptop/Memorize'
_MODE_PLAY = 1
_MODE_CREATE = 2
+
class MemorizeActivity(Activity):
-
+
def __init__(self, handle):
Activity.__init__(self, handle)
self.play_mode = None
-
+
toolbar_box = ToolbarBox()
self.set_toolbar_box(toolbar_box)
@@ -165,7 +166,7 @@ class MemorizeActivity(Activity):
self._memorizeToolbarBuilder.connect('game_changed',
self.change_game)
-
+
self.hbox = gtk.HBox(False)
self.set_canvas(self.hbox)
@@ -185,15 +186,15 @@ class MemorizeActivity(Activity):
# Get the Presence Service
self.pservice = presenceservice.get_instance()
self.initiating = None
-
+
# Buddy object for you
owner = self.pservice.get_owner()
self.owner = owner
self.current = 0
-
- self.game.set_myself(self.owner)
+
+ self.game.set_myself(self.owner)
self.connect('shared', self._shared_cb)
-
+
# Owner.props.key
if self._shared_activity:
# We are joining the activity
@@ -207,16 +208,16 @@ class MemorizeActivity(Activity):
'addition.zip')
self.game.load_game(game_file, 4, 'demo')
self.cardlist.load_game(self.game)
- _logger.debug('loading conventional')
+ _logger.debug('loading conventional')
self.game.add_buddy(self.owner)
self.show_all()
def _change_mode_bt(self, button):
if button.get_active():
self._change_mode(button.mode)
-
+
def read_file(self, file_path):
- if self.metadata.has_key('icon-color'):
+ if 'icon-color' in self.metadata:
color = self.metadata['icon-color']
else:
color = profile.get_color().to_string()
@@ -270,7 +271,7 @@ class MemorizeActivity(Activity):
bsnd = self.game.model.pairs[pair].get_property('bsnd')
if bsnd != None:
if equal_pairs:
- bsndfile = 'snd'+str(pair)+'.ogg'
+ bsndfile = 'snd' + str(pair) + '.ogg'
else:
bsndfile = 'bsnd' + str(pair) + '.ogg'
game_zip.write(os.path.join(temp_snd_folder, bsnd),
@@ -325,7 +326,7 @@ class MemorizeActivity(Activity):
self.play_mode = True
self._memorizeToolbarBuilder.update_controls(mode == _MODE_PLAY)
self._createToolbarBuilder.update_controls(mode == _MODE_CREATE)
-
+
def change_game(self, widget, game_name, size, mode,
title=None, color=None):
_logger.debug('Change game %s', game_name)
@@ -353,10 +354,10 @@ class MemorizeActivity(Activity):
self.conn = self._shared_activity.telepathy_conn
self.tubes_chan = self._shared_activity.telepathy_tubes_chan
self.text_chan = self._shared_activity.telepathy_text_chan
-
+
self.tubes_chan[telepathy.CHANNEL_TYPE_TUBES].connect_to_signal( \
'NewTube', self._new_tube_cb)
-
+
self._shared_activity.connect('buddy-joined', self._buddy_joined_cb)
self._shared_activity.connect('buddy-left', self._buddy_left_cb)
@@ -386,7 +387,7 @@ class MemorizeActivity(Activity):
_logger.debug('This is not my activity: waiting for a tube...')
self.tubes_chan[telepathy.CHANNEL_TYPE_TUBES].ListTubes(
- reply_handler=self._list_tubes_reply_cb,
+ reply_handler=self._list_tubes_reply_cb,
error_handler=self._list_tubes_error_cb)
def _new_tube_cb(self, identifier, initiator, tube_type, service,
@@ -401,7 +402,7 @@ class MemorizeActivity(Activity):
self.tubes_chan[telepathy.CHANNEL_TYPE_TUBES].AcceptDBusTube( \
identifier)
- self.tube_conn = TubeConnection(self.conn,
+ self.tube_conn = TubeConnection(self.conn,
self.tubes_chan[telepathy.CHANNEL_TYPE_TUBES], identifier,
group_iface=self.text_chan[telepathy.CHANNEL_INTERFACE_GROUP])
@@ -422,8 +423,8 @@ class MemorizeActivity(Activity):
assert handle != 0
return self.pservice.get_buddy_by_telepathy_handle( \
self.tp_conn_name, self.tp_conn_path, handle)
-
- def _buddy_joined_cb (self, activity, buddy):
+
+ def _buddy_joined_cb(self, activity, buddy):
if buddy != self.owner:
if buddy.props.nick == '':
_logger.debug("buddy joined: empty nick=%s. Will not add.",
@@ -432,7 +433,7 @@ class MemorizeActivity(Activity):
_logger.debug("buddy joined: %s", buddy.props.nick)
self.game.add_buddy(buddy)
- def _buddy_left_cb (self, activity, buddy):
+ def _buddy_left_cb(self, activity, buddy):
if buddy.props.nick == '':
_logger.debug("buddy joined: empty nick=%s. Will not remove",
buddy.props.nick)
@@ -440,11 +441,11 @@ class MemorizeActivity(Activity):
_logger.debug("buddy left: %s", buddy.props.nick)
self.game.rem_buddy(buddy)
- def _focus_in(self, event, data=None):
+ def _focus_in(self, event, data=None):
self.game.audio.play()
-
- def _focus_out(self, event, data=None):
+
+ def _focus_out(self, event, data=None):
self.game.audio.pause()
-
- def _cleanup_cb(self, data=None):
- self.game.audio.stop()
+
+ def _cleanup_cb(self, data=None):
+ self.game.audio.stop()
diff --git a/audio.py b/audio.py
index 09522bb..ddee412 100644
--- a/audio.py
+++ b/audio.py
@@ -20,6 +20,7 @@ import logging
_logger = logging.getLogger('memorize-activity')
+
class Audio(object):
def __init__(self):
self._player = gst.element_factory_make('playbin', 'player')
diff --git a/cardlist.py b/cardlist.py
index 1e692e5..d0bec83 100644
--- a/cardlist.py
+++ b/cardlist.py
@@ -18,11 +18,10 @@
import gtk
import svgcard
import logging
-from os.path import join, exists
+from os.path import join
import shutil
from model import Pair
-#from model import Model
from gobject import SIGNAL_RUN_FIRST, TYPE_PYOBJECT
@@ -33,8 +32,9 @@ import theme
_logger = logging.getLogger('memorize-activity')
+
class CardList(gtk.EventBox):
-
+
__gsignals__ = {
'pair-selected': (SIGNAL_RUN_FIRST, None, 9 * [TYPE_PYOBJECT]),
'update-create-toolbar': (SIGNAL_RUN_FIRST, None, 3 * [TYPE_PYOBJECT]),
@@ -42,10 +42,10 @@ class CardList(gtk.EventBox):
def __init__(self):
gtk.EventBox.__init__(self)
- #self.model = Model()
self.pairs = []
self.current_pair = None
self.current_game_key = None
+ self.model = None
self.vbox = gtk.VBox(False)
@@ -53,16 +53,16 @@ class CardList(gtk.EventBox):
fill_box.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse('#000000'))
fill_box.show()
self.vbox.pack_end(fill_box, True, True)
-
+
scroll = gtk.ScrolledWindow()
scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
scroll.add_with_viewport(self.vbox)
scroll.set_border_width(0)
- scroll.get_child().modify_bg(gtk.STATE_NORMAL,
+ scroll.get_child().modify_bg(gtk.STATE_NORMAL,
gtk.gdk.color_parse('#000000'))
self.add(scroll)
self.show_all()
-
+
def load_game(self, game):
self.model = game.model
self.current_game_key = self.model.data['game_file']
@@ -76,26 +76,26 @@ class CardList(gtk.EventBox):
game_pairs[key].props.aimg))
else:
aimg = None
-
+
if game_pairs[key].props.bimg != None:
bimg = gtk.gdk.pixbuf_new_from_file( \
join(self.model.data['pathimg'],
game_pairs[key].props.bimg))
else:
bimg = None
-
+
if game_pairs[key].props.asnd != None:
asnd = join(self.model.data['pathsnd'],
game_pairs[key].props.asnd)
else:
asnd = None
-
- if game_pairs[key].props.bsnd != None:
+
+ if game_pairs[key].props.bsnd != None:
bsnd = join(self.model.data['pathsnd'],
game_pairs[key].props.bsnd)
else:
bsnd = None
-
+
self.add_pair(None, game_pairs[key].props.achar,
game_pairs[key].props.bchar, aimg, bimg, asnd, bsnd,
game_pairs[key].props.aspeak, game_pairs[key].props.bspeak,
@@ -113,7 +113,6 @@ class CardList(gtk.EventBox):
for pair in range(len(self.pairs)):
pair_card = Pair()
-
# achar
achar = self.pairs[pair].get_text(1)
if achar != '':
@@ -141,7 +140,7 @@ class CardList(gtk.EventBox):
aimgfile = 'aimg' + str(pair) + '.jpg'
pair_card.set_property('aimg', aimgfile)
aimg.save(join(temp_img_folder, aimgfile), 'jpeg',
- {'quality':'85'})
+ {'quality': '85'})
# bimg
bimg = self.pairs[pair].get_pixbuf(2)
if bimg != None:
@@ -151,32 +150,32 @@ class CardList(gtk.EventBox):
bimgfile = 'bimg' + str(pair) + '.jpg'
pair_card.set_property('bimg', bimgfile)
bimg.save(join(temp_img_folder, bimgfile), 'jpeg',
- {'quality':'85'})
+ {'quality': '85'})
# asnd
asnd = self.pairs[pair].get_sound(1)
- logging.debug('update_model asnd %s' % asnd)
+ logging.debug('update_model asnd %s', asnd)
if asnd != None:
if equal_pairs:
asndfile = 'snd' + str(pair) + '.ogg'
else:
- asndfile = 'asnd' + str(pair) + '.ogg'
+ asndfile = 'asnd' + str(pair) + '.ogg'
pair_card.set_property('asnd', asndfile)
shutil.move(asnd, join(temp_snd_folder, asndfile))
# bsnd
bsnd = self.pairs[pair].get_sound(2)
- logging.debug('update_model bsnd %s' % bsnd)
+ logging.debug('update_model bsnd %s', bsnd)
if bsnd != None:
if equal_pairs:
- bsndfile = 'snd'+str(pair)+'.ogg'
+ bsndfile = 'snd' + str(pair) + '.ogg'
else:
- bsndfile = 'bsnd' + str(pair) + '.ogg'
+ bsndfile = 'bsnd' + str(pair) + '.ogg'
shutil.move(bsnd, join(temp_snd_folder, bsndfile))
pair_card.set_property('bsnd', bsndfile)
-
+
game_model.pairs[pair] = pair_card
- def clean_list(self, button = None, load=False):
+ def clean_list(self, button=None, load=False):
if button != None:
self.current_game_key = None
map(lambda x: self.vbox.remove(x), self.pairs)
@@ -184,9 +183,9 @@ class CardList(gtk.EventBox):
self.pairs = []
if not load:
self.model.mark_modified()
-
+
def add_pair(self, widget, achar, bchar, aimg, bimg, asnd, bsnd,
- aspeak, bspeak, show = True, load=False):
+ aspeak, bspeak, show=True, load=False):
pair = CardPair(achar, bchar, aimg, bimg, asnd, bsnd, aspeak, bspeak)
self.vbox.pack_end(pair, False, True)
self.pairs.append(pair)
@@ -196,9 +195,9 @@ class CardList(gtk.EventBox):
self.model.mark_modified()
if show:
self.show_all()
-
+
def rem_pair(self, widget, event):
- self.vbox.remove(widget)
+ self.vbox.remove(widget)
self.pairs.remove(widget)
del widget
self.model.mark_modified()
@@ -209,13 +208,17 @@ class CardList(gtk.EventBox):
if self.current_pair is not None:
current_pair = self.current_pair
current_pair.set_selected(False)
- self.current_pair = widget
+ self.current_pair = widget
widget.set_selected(True)
self.emit('pair-selected', True,
- self.current_pair.get_text(1), self.current_pair.get_text(2),
- self.current_pair.get_pixbuf(1), self.current_pair.get_pixbuf(2),
- self.current_pair.get_sound(1), self.current_pair.get_sound(2),
- self.current_pair.get_speak(1), self.current_pair.get_speak(2))
+ self.current_pair.get_text(1),
+ self.current_pair.get_text(2),
+ self.current_pair.get_pixbuf(1),
+ self.current_pair.get_pixbuf(2),
+ self.current_pair.get_sound(1),
+ self.current_pair.get_sound(2),
+ self.current_pair.get_speak(1),
+ self.current_pair.get_speak(2))
def update_selected(self, widget, newtext1, newtext2, aimg, bimg,
asnd, bsnd, aspeak, bspeak):
@@ -225,7 +228,7 @@ class CardList(gtk.EventBox):
self.current_pair.change_speak(aspeak, bspeak)
self.model.mark_modified()
-
+
class CardPair(gtk.EventBox):
__gsignals__ = {
@@ -233,8 +236,8 @@ class CardPair(gtk.EventBox):
'pair-closed': (SIGNAL_RUN_FIRST, None, [TYPE_PYOBJECT]),
}
- def __init__(self, text1, text2 = None, aimg = None, bimg = None,
- asnd = None, bsnd = None, aspeak=None, bspeak=None):
+ def __init__(self, text1, text2=None, aimg=None, bimg=None,
+ asnd=None, bsnd=None, aspeak=None, bspeak=None):
gtk.EventBox.__init__(self)
self.bg_color = '#000000'
@@ -248,12 +251,12 @@ class CardPair(gtk.EventBox):
row.props.spacing = 10
self.bcard1 = svgcard.SvgCard(-1,
- { 'front_text' : { 'card_text' : text1,
- 'speak' : aspeak,
- 'text_color' : '#ffffff' },
- 'front' : { 'fill_color' : '#4c4d4f',
- 'stroke_color' : '#ffffff',
- 'opacity' : '1' } },
+ {'front_text': {'card_text': text1,
+ 'speak': aspeak,
+ 'text_color': '#ffffff'},
+ 'front': {'fill_color': '#4c4d4f',
+ 'stroke_color': '#ffffff',
+ 'opacity': '1'}},
None, theme.PAIR_SIZE, 1, self.bg_color)
self.bcard1.flip()
self.bcard1.set_pixbuf(aimg)
@@ -262,12 +265,12 @@ class CardPair(gtk.EventBox):
row.pack_start(align)
self.bcard2 = svgcard.SvgCard(-1,
- { 'front_text' : { 'card_text' : text2,
- 'speak' : bspeak,
- 'text_color' : '#ffffff' },
- 'front' : { 'fill_color' : '#4c4d4f',
- 'stroke_color' : '#ffffff',
- 'opacity' : '1' } },
+ {'front_text': {'card_text': text2,
+ 'speak': bspeak,
+ 'text_color': '#ffffff'},
+ 'front': {'fill_color': '#4c4d4f',
+ 'stroke_color': '#ffffff',
+ 'opacity': '1'}},
None, theme.PAIR_SIZE, 1, self.bg_color)
self.bcard2.flip()
self.bcard2.set_pixbuf(bimg)
@@ -305,15 +308,15 @@ class CardPair(gtk.EventBox):
self.bg_color = '#000000'
else:
self.bg_color = '#b2b3b7'
-
+
self.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse(self.bg_color))
self.bcard1.set_background(self.bg_color)
self.bcard2.set_background(self.bg_color)
-
+
def change_pixbuf(self, aimg, bimg):
self.bcard1.set_pixbuf(aimg)
self.bcard2.set_pixbuf(bimg)
-
+
def change_text(self, text1, text2):
self.bcard1.change_text(text1)
self.bcard2.change_text(text2)
diff --git a/cardtable.py b/cardtable.py
index 1f251e2..b9ab29f 100644
--- a/cardtable.py
+++ b/cardtable.py
@@ -20,7 +20,6 @@ import pango
import svgcard
import os
import math
-import gc
from gobject import SIGNAL_RUN_FIRST, TYPE_PYOBJECT
import logging
@@ -28,6 +27,7 @@ _logger = logging.getLogger('memorize-activity')
import theme
+
class CardTable(gtk.EventBox):
__gsignals__ = {
@@ -60,7 +60,7 @@ class CardTable(gtk.EventBox):
self.load_message = gtk.Label('Loading Game')
self.load_message.modify_fg(gtk.STATE_NORMAL,
gtk.gdk.color_parse('#ffffff'))
- self.load_message.modify_font(pango.FontDescription("10"))
+ self.load_message.modify_font(pango.FontDescription('10'))
self.load_message.show()
self.first_load = True
self.load_mode = False
@@ -105,7 +105,7 @@ class CardTable(gtk.EventBox):
self.selected_card = [0, 0]
self.flipped_card = -1
self.table_positions = {}
-
+
# Build the table
if data['divided'] == '1':
text1 = str(self.data.get('face1', ''))
@@ -124,25 +124,26 @@ class CardTable(gtk.EventBox):
else:
jpg = None
props = {}
- props['front_text'] = {'card_text':card.get('char', ''),
+ props['front_text'] = {'card_text': card.get('char', ''),
'speak': card.get('speak')}
if card['ab'] == 'a':
- props['back_text'] = {'card_text':text1}
+ props['back_text'] = {'card_text': text1}
elif card['ab'] == 'b':
- props['back_text'] = {'card_text':text2}
+ props['back_text'] = {'card_text': text2}
align = self.data.get('align', '1')
card = svgcard.SvgCard(identifier, props, jpg,
self.card_size, align)
card.connect('enter-notify-event', self.mouse_event, [x, y])
- card.connect("button-press-event", self.flip_card_mouse, identifier)
+ card.connect('button-press-event',
+ self.flip_card_mouse, identifier)
self.table_positions[(x, y)] = 1
self.cd2id[card] = identifier
self.id2cd[identifier] = card
self.cards[(x, y)] = card
self.dict[identifier] = (x, y)
- self.table.attach(card, x, x+1, y, y+1, gtk.SHRINK, gtk.SHRINK)
+ self.table.attach(card, x, x + 1, y, y + 1, gtk.SHRINK, gtk.SHRINK)
x += 1
if x == self.size:
@@ -164,7 +165,7 @@ class CardTable(gtk.EventBox):
self.load_game(None, data, grid)
def get_card_size(self, size_table):
- x = (self._workspace_size + theme.CARD_PAD * (size_table-1)) / \
+ x = (self._workspace_size + theme.CARD_PAD * (size_table - 1)) / \
size_table - theme.CARD_PAD * 2
return x
@@ -181,45 +182,45 @@ class CardTable(gtk.EventBox):
y = self.selected_card[1]
if event.keyval in (gtk.keysyms.Left, gtk.keysyms.KP_Left):
- if self.table_positions.has_key((x-1, y)):
- card = self.cards[x-1, y]
+ if (x - 1, y) in self.table_positions:
+ card = self.cards[x - 1, y]
identifier = self.cd2id.get(card)
self.emit('card-highlighted', identifier, False)
elif event.keyval in (gtk.keysyms.Right, gtk.keysyms.KP_Right):
- if self.table_positions.has_key((x+1, y)):
- card = self.cards[x+1, y]
+ if (x + 1, y) in self.table_positions:
+ card = self.cards[x + 1, y]
identifier = self.cd2id.get(card)
self.emit('card-highlighted', identifier, False)
elif event.keyval in (gtk.keysyms.Up, gtk.keysyms.KP_Up):
- if self.table_positions.has_key((x, y-1)):
- card = self.cards[x, y-1]
+ if (x, y - 1) in self.table_positions:
+ card = self.cards[x, y - 1]
identifier = self.cd2id.get(card)
self.emit('card-highlighted', identifier, False)
-
+
elif event.keyval in (gtk.keysyms.Down, gtk.keysyms.KP_Down):
- if self.table_positions.has_key((x, y+1)):
- card = self.cards[x, y+1]
+ if (x, y + 1) in self.table_positions:
+ card = self.cards[x, y + 1]
identifier = self.cd2id.get(card)
self.emit('card-highlighted', identifier, False)
elif event.keyval in (gtk.keysyms.space, gtk.keysyms.KP_Page_Down):
card = self.cards[x, y]
self.card_flipped(card)
-
+
def flip_card_mouse(self, widget, event, identifier):
position = self.dict[identifier]
card = self.cards[position]
self.card_flipped(card)
def card_flipped(self, card):
- identifer = self.cd2id[card]
+ identifer = self.cd2id[card]
if card.is_flipped():
self.emit('card-overflipped', identifer)
else:
self.emit('card-flipped', identifer, False)
-
+
def set_border(self, widget, identifer, stroke_color, fill_color):
self.id2cd[identifer].set_border(stroke_color, fill_color)
@@ -240,7 +241,7 @@ class CardTable(gtk.EventBox):
def reset(self, widget):
for identifer in self.id2cd.keys():
self.id2cd[identifer].reset()
-
+
def _set_load_mode(self, mode):
if mode:
self.remove(self.table)
@@ -251,10 +252,10 @@ class CardTable(gtk.EventBox):
self.load_mode = mode
self.queue_draw()
while gtk.events_pending():
- gtk.main_iteration()
-
+ gtk.main_iteration()
+
def load_msg(self, widget, msg):
if not self.load_mode:
self._set_load_mode(True)
self.load_message.set_text(msg)
- self.queue_draw()
+ self.queue_draw()
diff --git a/createcardpanel.py b/createcardpanel.py
index 04a410c..dcf2f19 100644
--- a/createcardpanel.py
+++ b/createcardpanel.py
@@ -30,7 +30,7 @@ from sugar.graphics.toolbutton import ToolButton
from sugar.graphics.icon import Icon
from sugar.graphics.palette import Palette
from port.widgets import ToggleToolButton
-from port.widgets import CanvasRoundBox, ToolComboBox
+from port.widgets import ToolComboBox
from port import chooser
import theme
@@ -40,6 +40,7 @@ import speak.face
_logger = logging.getLogger('memorize-activity')
+
class CreateCardPanel(gtk.EventBox):
__gsignals__ = {
'add-pair': (SIGNAL_RUN_FIRST, None, 8 * [TYPE_PYOBJECT]),
@@ -116,41 +117,45 @@ class CreateCardPanel(gtk.EventBox):
def emit_add_pair(self, widget):
self._addbutton.set_sensitive(False)
if self.equal_pairs:
- self.emit('add-pair', self.cardeditor1.get_text(),
- self.cardeditor1.get_text(),
- self.cardeditor1.get_pixbuf(),
- self.cardeditor1.get_pixbuf(),
- self.cardeditor1.get_snd(), self.cardeditor1.get_snd(),
- self.cardeditor1.get_speak(), self.cardeditor1.get_speak()
- )
+ self.emit('add-pair', self.cardeditor1.get_text(),
+ self.cardeditor1.get_text(),
+ self.cardeditor1.get_pixbuf(),
+ self.cardeditor1.get_pixbuf(),
+ self.cardeditor1.get_snd(),
+ self.cardeditor1.get_snd(),
+ self.cardeditor1.get_speak(),
+ self.cardeditor1.get_speak())
else:
- self.emit('add-pair', self.cardeditor1.get_text(),
- self.cardeditor2.get_text(),
- self.cardeditor1.get_pixbuf(),
- self.cardeditor2.get_pixbuf(),
- self.cardeditor1.get_snd(), self.cardeditor2.get_snd(),
- self.cardeditor1.get_speak(), self.cardeditor2.get_speak()
- )
+ self.emit('add-pair', self.cardeditor1.get_text(),
+ self.cardeditor2.get_text(),
+ self.cardeditor1.get_pixbuf(),
+ self.cardeditor2.get_pixbuf(),
+ self.cardeditor1.get_snd(),
+ self.cardeditor2.get_snd(),
+ self.cardeditor1.get_speak(),
+ self.cardeditor2.get_speak())
self.clean(None)
def emit_update_pair(self, widget):
self._addbutton.set_sensitive(False)
if self.equal_pairs:
- self.emit('update-pair', self.cardeditor1.get_text(),
- self.cardeditor1.get_text(),
- self.cardeditor1.get_pixbuf(),
- self.cardeditor1.get_pixbuf(),
- self.cardeditor1.get_snd(), self.cardeditor1.get_snd(),
- self.cardeditor1.get_speak(), self.cardeditor1.get_speak()
- )
+ self.emit('update-pair', self.cardeditor1.get_text(),
+ self.cardeditor1.get_text(),
+ self.cardeditor1.get_pixbuf(),
+ self.cardeditor1.get_pixbuf(),
+ self.cardeditor1.get_snd(),
+ self.cardeditor1.get_snd(),
+ self.cardeditor1.get_speak(),
+ self.cardeditor1.get_speak())
else:
- self.emit('update-pair', self.cardeditor1.get_text(),
- self.cardeditor2.get_text(),
- self.cardeditor1.get_pixbuf(),
- self.cardeditor2.get_pixbuf(),
- self.cardeditor1.get_snd(), self.cardeditor2.get_snd(),
- self.cardeditor1.get_speak(), self.cardeditor2.get_speak()
- )
+ self.emit('update-pair', self.cardeditor1.get_text(),
+ self.cardeditor2.get_text(),
+ self.cardeditor1.get_pixbuf(),
+ self.cardeditor2.get_pixbuf(),
+ self.cardeditor1.get_snd(),
+ self.cardeditor2.get_snd(),
+ self.cardeditor1.get_speak(),
+ self.cardeditor2.get_speak())
self.clean(None)
def pair_selected(self, widget, selected, newtext1, newtext2, aimg, bimg,
@@ -212,8 +217,8 @@ class CreateCardPanel(gtk.EventBox):
def _update_buttom_status(self):
if not self.equal_pairs:
if (self._card1_has_text or self._card1_has_picture \
- or self._card1_has_sound) and (self._card2_has_text
- or self._card2_has_picture
+ or self._card1_has_sound) and (self._card2_has_text
+ or self._card2_has_picture
or self._card2_has_sound):
self._addbutton.set_sensitive(True)
self._updatebutton.set_sensitive(self._updatebutton_sensitive)
@@ -233,6 +238,7 @@ class CreateCardPanel(gtk.EventBox):
self.cardeditor1.temp_folder = temp_folder
self.cardeditor2.temp_folder = temp_folder
+
class CardEditor(gtk.EventBox):
__gsignals__ = {
@@ -257,11 +263,11 @@ class CardEditor(gtk.EventBox):
box.pack_start(self.previewlabel, False)
self.card = svgcard.SvgCard(-1,
- { 'front_text' : { 'card_text' : '',
- 'text_color' : '#ffffff' },
- 'front_border': { 'fill_color' : '#4c4d4f',
- 'stroke_color' : '#ffffff',
- 'opacity' : '1' } },
+ {'front_text': {'card_text': '',
+ 'text_color': '#ffffff'},
+ 'front_border': {'fill_color': '#4c4d4f',
+ 'stroke_color': '#ffffff',
+ 'opacity': '1'}},
None, theme.PAIR_SIZE, 1, '#c0c0c0')
self.card.flip()
card_align = gtk.Alignment(.5, .5, 0, 0)
@@ -351,8 +357,8 @@ class CardEditor(gtk.EventBox):
self.set_speak(None)
pixbuf_t = gtk.gdk.pixbuf_new_from_file_at_size(
- index, theme.PAIR_SIZE - theme.PAD*2,
- theme.PAIR_SIZE - theme.PAD*2)
+ index, theme.PAIR_SIZE - theme.PAD * 2,
+ theme.PAIR_SIZE - theme.PAD * 2)
size = max(pixbuf_t.get_width(), pixbuf_t.get_height())
pixbuf_z = gtk.gdk.pixbuf_new_from_file_at_size(
'images/white.png', size, size)
@@ -360,7 +366,7 @@ class CardEditor(gtk.EventBox):
pixbuf_t.get_height(), 0, 0, 1, 1,
gtk.gdk.INTERP_BILINEAR, 255)
self.card.set_pixbuf(pixbuf_z)
- _logger.debug('Picture Loaded: '+index)
+ _logger.debug('Picture Loaded: ' + index)
self.emit('has-picture', True)
del pixbuf_t
del pixbuf_z
@@ -383,7 +389,7 @@ class CardEditor(gtk.EventBox):
style.XLARGE_ICON_SIZE, 0)
self.card.set_pixbuf(pixbuf_t)
self.emit('has-sound', True)
- _logger.debug('Audio Loaded: '+dst)
+ _logger.debug('Audio Loaded: ' + dst)
chooser.pick(parent=self.get_toplevel(),
what=chooser.AUDIO,
@@ -420,6 +426,7 @@ class CardEditor(gtk.EventBox):
self.usespeak.props.active = False
self.usespeak.palette.face.shut_up()
+
class SpeakPalette(Palette):
def __init__(self, editor):
Palette.__init__(self, _('Pronounce text during tile flip'))
diff --git a/createtoolbar.py b/createtoolbar.py
index 38decdd..7d96e15 100644
--- a/createtoolbar.py
+++ b/createtoolbar.py
@@ -20,34 +20,32 @@ from gettext import gettext as _
import gtk
import gobject
from gobject import SIGNAL_RUN_FIRST, TYPE_PYOBJECT
-import logging
-
+
from sugar.graphics.toolbutton import ToolButton
-from sugar.graphics.toolbarbox import ToolbarButton
from sugar.graphics.toggletoolbutton import ToggleToolButton
-from sugar.graphics.toolcombobox import ToolComboBox
from sugar.graphics.alert import Alert
from sugar.graphics.icon import Icon
+
class CreateToolbarBuilder(gobject.GObject):
__gtype_name__ = 'CreateToolbar'
__gsignals__ = {
- 'create_new_game': (SIGNAL_RUN_FIRST, None, []),
- 'create_equal_pairs': (SIGNAL_RUN_FIRST, None, [TYPE_PYOBJECT]),
+ 'create_new_game': (SIGNAL_RUN_FIRST, None, []),
+ 'create_equal_pairs': (SIGNAL_RUN_FIRST, None, [TYPE_PYOBJECT]),
}
-
+
def __init__(self, activity):
gobject.GObject.__init__(self)
self.activity = activity
self.toolbar = self.activity.get_toolbar_box().toolbar
-
+
self._equal_pairs = ToggleToolButton('pair-non-equals')
self._equal_pairs.set_tooltip(_('Click for equal pairs'))
self._equal_pairs.connect('toggled', self._emit_equal_pairs)
self.toolbar.insert(self._equal_pairs, -1)
-
+
self._grouped = ToggleToolButton('grouped_game1')
self._grouped.set_tooltip(_('Click for grouped game'))
self._grouped.connect('toggled', self._grouped_cb)
@@ -59,7 +57,7 @@ class CreateToolbarBuilder(gobject.GObject):
self.toolbar.insert(self._clear_button, -1)
self.toolbar.show_all()
-
+
def _add_widget(self, widget, expand=False):
tool_item = gtk.ToolItem()
tool_item.set_expand(expand)
@@ -100,7 +98,7 @@ class CreateToolbarBuilder(gobject.GObject):
self._equal_pairs.set_named_icon('pair-non-equals')
self._equal_pairs.set_tooltip(_('Click for equal pairs'))
self.activity.game.model.data['equal_pairs'] = '0'
-
+
def _grouped_cb(self, widget):
if self._grouped.get_active():
self._grouped.set_named_icon('grouped_game2')
@@ -110,8 +108,7 @@ class CreateToolbarBuilder(gobject.GObject):
self._grouped.set_named_icon('grouped_game1')
self._grouped.set_tooltip(_('Click for grouped game'))
self.activity.game.model.data['divided'] = '0'
-
+
def update_create_toolbar(self, widget, game_name, equal_pairs, grouped):
- logging.debug('update_create_toolbar game_name %s eq pairs : %s grouped %s', game_name, equal_pairs, grouped)
self._equal_pairs.set_active(equal_pairs == '1')
self._grouped.set_active(grouped == '1')
diff --git a/face.py b/face.py
index 64693f6..dd4bf90 100644
--- a/face.py
+++ b/face.py
@@ -23,6 +23,7 @@ import speak.espeak
import speak.face
import theme
+
class Face(gtk.EventBox):
def __init__(self):
gtk.EventBox.__init__(self)
@@ -46,6 +47,7 @@ class Face(gtk.EventBox):
pixbuf = card._read_icon_data('front')
self.window.draw_pixbuf(None, pixbuf, 0, 0, 0, 0)
+
def look_at():
if not speak.espeak.supported:
return
@@ -57,6 +59,7 @@ def look_at():
if i.parent:
i.face.look_at(x, y)
+
def acquire():
if not speak.espeak.supported:
return None
diff --git a/game.py b/game.py
index 872d882..b023e85 100644
--- a/game.py
+++ b/game.py
@@ -24,7 +24,7 @@ from gobject import SIGNAL_RUN_FIRST, TYPE_PYOBJECT, GObject, timeout_add
from gobject import source_remove
from model import Model
-from audio import Audio
+from audio import Audio
import theme
_logger = logging.getLogger('memorize-activity')
@@ -35,7 +35,7 @@ PATH = '/org/laptop/Memorize'
class MemorizeGame(GObject):
-
+
__gsignals__ = {
'reset_scoreboard': (SIGNAL_RUN_FIRST, None, []),
'reset_table': (SIGNAL_RUN_FIRST, None, []),
@@ -56,7 +56,7 @@ class MemorizeGame(GObject):
'msg_buddy': (SIGNAL_RUN_FIRST, None, 2 * [TYPE_PYOBJECT]),
'change-turn': (SIGNAL_RUN_FIRST, None, [TYPE_PYOBJECT]),
}
-
+
def __init__(self):
gobject.GObject.__init__(self)
self.myself = None
@@ -77,7 +77,7 @@ class MemorizeGame(GObject):
self.audio = Audio()
def load_game(self, game_name, size, mode):
- self.set_load_mode('Loading game')
+ self.set_load_mode('Loading game')
if self.model.read(game_name) == 0:
logging.debug('load_game set is_demo mode %s', mode)
self.model.is_demo = (mode == 'demo')
@@ -89,19 +89,16 @@ class MemorizeGame(GObject):
self.emit('load_game', self.model.data, self.model.grid)
else:
logging.error(' Reading setup file %s', game_name)
-
- def load_remote(self, grid, data, mode, signal = False):
+
+ def load_remote(self, grid, data, mode, signal=False):
self.set_load_mode(_('Loading game...'))
self.model.grid = grid
self.model.data = data
self.model.data['mode'] = mode
self.emit('reset_scoreboard')
if not signal:
- self.emit('change_game_signal',
- mode,
- self.get_grid(),
- self.model.data,
- self.waiting_players,
+ self.emit('change_game_signal', mode, self.get_grid(),
+ self.model.data, self.waiting_players,
self.model.data['game_file'])
self.emit('change_game', self.model.data, self.get_grid())
for buddy in self.players:
@@ -111,12 +108,12 @@ class MemorizeGame(GObject):
self.last_highlight = 1
self.change_turn()
self.model.data['running'] = 'False'
-
+
for card in self.model.grid:
- if card['state'] == '1':
+ if card['state'] == '1':
self.emit('flip-card', self.model.grid.index(card), False)
self.last_flipped = self.model.grid.index(card)
- elif card['state'] != '0':
+ elif card['state'] != '0':
stroke_color, fill_color = card['state'].split(',')
self.emit('flip-card', self.model.grid.index(card), False)
self.emit('set-border', self.model.grid.index(card),
@@ -125,17 +122,17 @@ class MemorizeGame(GObject):
if mode != 'reset':
self.model.is_demo = (mode == 'demo')
- def add_buddy(self, buddy, score = 0):
+ def add_buddy(self, buddy, score=0):
_logger.debug('Buddy %r was added to game', buddy.props.nick)
self.players.append(buddy)
self.players_score[buddy] = score
self.emit('add_buddy', buddy, score)
logging.debug(str(buddy))
-
+
if self.current_player == None:
self.current_player = buddy
self.change_turn()
-
+
def rem_buddy(self, buddy):
_logger.debug('Buddy %r was removed from game', buddy.props.nick)
if self.current_player == buddy and len(self.players) >= 2:
@@ -144,17 +141,17 @@ class MemorizeGame(GObject):
self.model.grid[self.last_flipped]['state'] = '0'
self.last_flipped = -1
self.change_turn()
- index = self.players.index(buddy)
+ index = self.players.index(buddy)
del self.players[index]
del (self.players_score[buddy])
self.emit('rem_buddy', buddy)
-
+
def buddy_message(self, buddy, text):
self.emit('msg_buddy', buddy, text)
def update_turn(self):
self.set_sensitive(self.current_player == self.myself)
- self.emit('change-turn', self.current_player)
+ self.emit('change-turn', self.current_player)
def change_turn(self):
if len(self.players) <= 1:
@@ -165,14 +162,14 @@ class MemorizeGame(GObject):
self.current_player = self.players[0]
else:
next_player = self.players.index(self.current_player) + 1
- self.current_player = self.players[next_player]
+ self.current_player = self.players[next_player]
self.update_turn()
- def card_overflipped(self, widget, identifier):
+ def card_overflipped(self, widget, identifier):
if self._flop_cards and identifier in self._flop_cards:
self.card_flipped(widget, identifier)
- def card_flipped(self, widget, identifier, signal = False):
+ def card_flipped(self, widget, identifier, signal=False):
self.model.count = self.model.count + 1
if self._flop_cards:
source_remove(self._flop_card_timeout)
@@ -182,22 +179,22 @@ class MemorizeGame(GObject):
if (not self.sentitive and not signal) or \
self.last_flipped == identifier:
return
-
+
# Handle groups if needed
if self.model.data.get('divided') == '1':
if self.last_flipped == -1 and identifier \
- >= (len(self.model.grid)/2):
+ >= (len(self.model.grid) / 2):
return
if self.last_flipped != -1 and identifier \
- < (len(self.model.grid)/2):
+ < (len(self.model.grid) / 2):
return
-
+
# do not process flips when flipping back
if self.flip_block:
return
else:
self.flip_block = True
-
+
self.model.data['running'] = 'True'
def flip_card(full_animation):
@@ -209,13 +206,13 @@ class MemorizeGame(GObject):
if snd != None:
sound_file = join(self.model.data.get('pathsnd'), snd)
self.audio.play(sound_file)
-
+
# First card case
if self.last_flipped == -1:
flip_card(full_animation=True)
self.last_flipped = identifier
- self.model.grid[identifier]['state'] = '1'
+ self.model.grid[identifier]['state'] = '1'
self.flip_block = False
# Second card case
@@ -223,22 +220,22 @@ class MemorizeGame(GObject):
# Pair matched
pair_key_1 = self.model.grid[self.last_flipped]['pairkey']
pair_key_2 = self.model.grid[identifier]['pairkey']
-
+
if pair_key_1 == pair_key_2:
flip_card(full_animation=False)
stroke_color, fill_color = \
self.current_player.props.color.split(',')
self.emit('set-border', identifier, stroke_color, fill_color)
- self.emit('set-border', self.last_flipped,
+ self.emit('set-border', self.last_flipped,
stroke_color, fill_color)
-
+
self.increase_point(self.current_player)
self.model.grid[identifier]['state'] = \
self.current_player.props.color
self.model.grid[self.last_flipped]['state'] = \
self.current_player.props.color
- self.flip_block = False
+ self.flip_block = False
self.emit('cement-card', identifier)
self.emit('cement-card', self.last_flipped)
@@ -253,7 +250,7 @@ class MemorizeGame(GObject):
self._flop_card_timeout = timeout_add(theme.FLOP_BACK_TIMEOUT,
self.flop_card, identifier, self.last_flipped)
self.last_flipped = -1
-
+
def flop_card(self, identifier, identifier2):
self._flop_card_timeout = -1
self._flop_cards = None
@@ -262,7 +259,7 @@ class MemorizeGame(GObject):
self.model.grid[identifier]['state'] = '0'
self.emit('flop-card', identifier2)
self.model.grid[identifier2]['state'] = '0'
-
+
#if self.model.data['divided'] == '1':
# self.card_highlighted(widget, -1, False)
self.set_sensitive(True)
@@ -272,16 +269,16 @@ class MemorizeGame(GObject):
def card_highlighted(self, widget, identifier, mouse):
self.emit('highlight-card', self.last_highlight, False)
self.last_highlight = identifier
-
+
if identifier == -1 or not self.sentitive:
return
if self.model.data['divided'] == '1':
if self.last_flipped == -1 and identifier \
- >= (len(self.model.grid)/2):
+ >= (len(self.model.grid) / 2):
return
if self.last_flipped != -1 and identifier \
- < (len(self.model.grid)/2):
+ < (len(self.model.grid) / 2):
return
if mouse and self.model.grid[identifier]['state'] == '0' or not mouse:
@@ -291,7 +288,7 @@ class MemorizeGame(GObject):
self.players_score[buddy] += inc
for i_ in range(inc):
self.emit('increase-score', buddy)
-
+
def get_grid(self):
return self.model.grid
@@ -301,9 +298,9 @@ class MemorizeGame(GObject):
score = self.players_score[player]
self.model.data[str(index)] = str(score)
return self.model.data
-
+
def change_game(self, widget, game_name, size, mode,
- title = None, color= None):
+ title=None, color=None):
if mode in ['file', 'demo']:
logging.debug('change_game set is_demo mode %s', mode)
self.model.is_demo = (mode == 'demo')
@@ -313,26 +310,26 @@ class MemorizeGame(GObject):
if size == None:
size = int(self.model.data['size'])
self.model.def_grid(size)
-
+
if title != None:
self.model.data['title'] = title
if color != None:
self.model.data['color'] = color
self.load_remote(self.model.grid, self.model.data, mode, False)
-
- def reset_game(self, size = None):
+
+ def reset_game(self, size=None):
if size == None:
size = int(self.model.data['size'])
self.model.count = 0
- self.model.def_grid(size)
- self.load_remote(self.model.grid, self.model.data, False)
-
+ self.model.def_grid(size)
+ self.load_remote(self.model.grid, self.model.data, False)
+
def set_load_mode(self, msg):
- self.emit('load_mode', msg)
-
+ self.emit('load_mode', msg)
+
def set_messenger(self, messenger):
self.messenger = messenger
-
+
def set_sensitive(self, status):
self.sentitive = status
if not status:
@@ -340,10 +337,10 @@ class MemorizeGame(GObject):
def get_sensitive(self):
return self.sentitive
-
+
def get_current_player(self):
return self.current_player
-
+
def get_players_data(self):
data = []
for player, score in self.players_score.items():
@@ -372,11 +369,11 @@ class MemorizeGame(GObject):
self.waiting_players.remove(buddy)
self.players.append(buddy)
self.emit('wait_mode_buddy', buddy, False)
-
+
def load_waiting_list(self, wait_list):
for buddy in wait_list:
self.add_to_waiting_list(buddy)
-
+
def empty_waiting_list(self):
for buddy in self.waiting_players:
self.rem_to_waiting_list(buddy)
diff --git a/memorizetoolbar.py b/memorizetoolbar.py
index 59c566a..12330b4 100644
--- a/memorizetoolbar.py
+++ b/memorizetoolbar.py
@@ -15,7 +15,6 @@
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
-import gtk
import gobject
from os.path import join, dirname
@@ -34,7 +33,7 @@ _logger = logging.getLogger('memorize-activity')
class MemorizeToolbarBuilder(gobject.GObject):
__gtype_name__ = 'MemoryToolbarBuilder'
-
+
standard_game_names = ['Load demo games',
'addition',
'letters',
@@ -49,7 +48,7 @@ class MemorizeToolbarBuilder(gobject.GObject):
__gsignals__ = {
'game_changed': (SIGNAL_RUN_FIRST, None, 5 * [TYPE_PYOBJECT])
}
-
+
def __init__(self, activity):
gobject.GObject.__init__(self)
self.activity = activity
@@ -65,11 +64,11 @@ class MemorizeToolbarBuilder(gobject.GObject):
'changed', self._game_size_cb)
self.toolbar.insert(self._size_combo, -1)
self._size_combo.combo.set_active(0)
-
- # Change demo games combobox
+
+ # Change demo games combobox
self._game_combo = ToolComboBox()
for i, f in enumerate(self.standard_game_names):
- f = _(f)
+ f = _(f)
self._game_combo.combo.append_item(i, f)
self._game_combo.combo.set_active(0)
self._game_combo.combo.connect('changed', self._game_changed_cb)
@@ -86,22 +85,21 @@ class MemorizeToolbarBuilder(gobject.GObject):
def _game_reset_cb(self, widget):
self._restart_button.set_sensitive(False)
self.emit('game_changed', None, None, 'reset', None, None)
-
+
def update_controls(self, active):
self._size_combo.set_sensitive(active)
self._game_combo.set_sensitive(active)
self._restart_button.set_sensitive(active and
self.activity.game.model.count > 0)
-
- def card_flipped(self, widget, identifier, signal = False):
+
+ def card_flipped(self, widget, identifier, signal=False):
self._restart_button.set_sensitive(self.activity.game.model.count > 0)
def _game_size_cb(self, widget):
game_size = int(self._sizes[self._size_combo.combo.get_active()][0])
self.emit('game_changed', None, game_size, 'size', None, None)
-
+
def _game_changed_cb(self, combobox):
- logging.debug('Game modified %s is_demo %s', self.activity.game.model.modified, self.activity.game.model.is_demo)
if combobox.get_active() == 0:
return
if self.activity.game.model.is_demo:
@@ -127,18 +125,18 @@ class MemorizeToolbarBuilder(gobject.GObject):
game_name = self.standard_game_names[current_game]
title = game_name
game_size = int(self._sizes[self._size_combo.combo.get_active()][0])
-
+
if game_name in self.translated_game_names:
index = self.translated_game_names.index(game_name)
game_name = self.standard_game_names[index]
-
- game_file = join(dirname(__file__), 'demos', game_name+'.zip')
+
+ game_file = join(dirname(__file__), 'demos', game_name + '.zip')
self._game_combo.combo.set_active(0)
self.emit('game_changed', game_file, game_size, 'demo', title, None)
def update_toolbar(self, widget, data, grid):
size = data.get('size')
self._size_combo.combo.handler_block(self.size_handle_id)
- size_index = self._sizes.index(size+' X '+size)
+ size_index = self._sizes.index(size + ' X ' + size)
self._size_combo.combo.set_active(int(size_index))
self._size_combo.combo.handler_unblock(self.size_handle_id)
diff --git a/messenger.py b/messenger.py
index 91b07da..3cbd7e7 100644
--- a/messenger.py
+++ b/messenger.py
@@ -30,8 +30,9 @@ SERVICE = 'org.laptop.Memorize'
IFACE = SERVICE
PATH = '/org/laptop/Memorize'
+
class Messenger(ExportedGObject):
-
+
def __init__(self, tube, is_initiator, get_buddy, game):
ExportedGObject.__init__(self, tube, PATH)
self._tube = tube
@@ -39,7 +40,7 @@ class Messenger(ExportedGObject):
self._get_buddy = get_buddy
self.game = game
self.ordered_bus_names = []
- self.entered = False
+ self.entered = False
self._tube.watch_participants(self.participant_change_cb)
self.files = {}
@@ -56,20 +57,20 @@ class Messenger(ExportedGObject):
else:
self._hello_signal()
self.entered = True
-
- # hello methods
-
+
+ # hello methods
+
@signal(IFACE, signature='')
def _hello_signal(self):
pass
-
+
def _hello_handler(self):
- self._tube.add_signal_receiver(self._hello_receiver,
- '_hello_signal',
- IFACE,
- path=PATH,
+ self._tube.add_signal_receiver(self._hello_receiver,
+ '_hello_signal',
+ IFACE,
+ path=PATH,
sender_keyword='sender')
-
+
def _hello_receiver(self, sender=None):
self.ordered_bus_names.append(sender)
data = self.game.model.data
@@ -80,13 +81,10 @@ class Messenger(ExportedGObject):
self.file_sender(sender, path, title, color)
remote_object = self._tube.get_object(sender, PATH)
- remote_object.load_game(self.ordered_bus_names,
- self.game.get_grid(),
- self.game.collect_data(),
- self.game.players.index(self.game.current_player),
- #self.game.waiting_players,
- path)
-
+ remote_object.load_game(self.ordered_bus_names,
+ self.game.get_grid(), self.game.collect_data(),
+ self.game.players.index(self.game.current_player), path)
+
@method(dbus_interface=IFACE, in_signature='asaa{ss}a{ss}ns',
out_signature='', byte_arrays=True)
def load_game(self, bus_names, grid, data, current_player, path):
@@ -104,28 +102,28 @@ class Messenger(ExportedGObject):
self._flip_handler()
self._change_game_handler()
-
+
def change_game(self, sender, mode, grid, data, waiting_list, zip):
path = self.game.model.data['game_file']
-
+
if mode == 'file':
title = data.get('title', 'Received game')
- color = data.get('color', '')
- self.file_sender('all', path, title, color)
+ color = data.get('color', '')
+ self.file_sender('all', path, title, color)
self._change_game_signal(mode, grid, data, path)
-
+
def _change_game_handler(self):
- self._tube.add_signal_receiver(self._change_game_receiver,
- '_change_game_signal',
- IFACE, path=PATH,
- sender_keyword='sender',
+ self._tube.add_signal_receiver(self._change_game_receiver,
+ '_change_game_signal',
+ IFACE, path=PATH,
+ sender_keyword='sender',
byte_arrays=True)
-
+
@signal(IFACE, signature='saa{ss}a{ss}s')
def _change_game_signal(self, mode, grid, data, path):
pass
-
+
def _change_game_receiver(self, mode, grid, data, path, sender=None):
# ignore my own signal
if sender == self._tube.get_unique_name():
@@ -137,13 +135,13 @@ class Messenger(ExportedGObject):
self.game.model.read(game_file)
if mode == 'file':
self.game.model.read(self.files[path])
-
- if self.game.model.data.has_key('path'):
+
+ if 'path' in self.game.model.data:
data['path'] = self.game.model.data['path']
data['pathimg'] = self.game.model.data['pathimg']
data['pathsnd'] = self.game.model.data['pathsnd']
self.game.load_remote(grid, data, mode, True)
-
+
# File transfer methods
def file_sender(self, target, filename, title, color):
@@ -156,20 +154,20 @@ class Messenger(ExportedGObject):
self._file_part_signal(target, filename, part + 1,
num_parts, bytes, title, color)
f.close()
-
+
@signal(dbus_interface=IFACE, signature='ssuuayss')
def _file_part_signal(self, target, filename, part, numparts,
bytes, title, color):
pass
-
+
def _file_part_handler(self):
- self._tube.add_signal_receiver(self._file_part_receiver,
- '_file_part_signal',
- IFACE,
- path=PATH,
- sender_keyword='sender',
+ self._tube.add_signal_receiver(self._file_part_receiver,
+ '_file_part_signal',
+ IFACE,
+ path=PATH,
+ sender_keyword='sender',
byte_arrays=True)
-
+
def _file_part_receiver(self, target, filename, part, numparts,
bytes, title=None, color=None, sender=None):
# ignore my own signal
@@ -178,7 +176,7 @@ class Messenger(ExportedGObject):
if target != self._tube.get_unique_name() and target != 'all':
return
-
+
# first chunk
if part == 1:
tmp_root = join(environ['SUGAR_ACTIVITY_ROOT'], 'instance')
@@ -187,16 +185,16 @@ class Messenger(ExportedGObject):
self.temp_file = join(temp_dir, 'game.zip')
self.files[filename] = self.temp_file
self.f = open(self.temp_file, 'a+b')
-
+
self.f.write(bytes)
-
+
percentage = int(float(part) / float(numparts) * 100.0)
self.game.set_load_mode(_('Receiving game') + ': '
+ str(percentage) + '% ' + _('done') + '.')
# last chunk
if part == numparts:
- self.f.close()
+ self.f.close()
#file = self.files[filename]
# Saves the zip in datastore
gameObject = datastore.create()
@@ -207,19 +205,17 @@ class Messenger(ExportedGObject):
datastore.write(gameObject)
#gameObject.destroy()
-
- # flip card methods
-
+ # flip card methods
def flip_sender(self, widget, id):
self._flip_signal(id)
-
+
def _flip_handler(self):
- self._tube.add_signal_receiver(self._flip_receiver,
- '_flip_signal',
- IFACE,
- path=PATH,
+ self._tube.add_signal_receiver(self._flip_receiver,
+ '_flip_signal',
+ IFACE,
+ path=PATH,
sender_keyword='sender')
-
+
@signal(IFACE, signature='n')
def _flip_signal(self, card_number):
pass
diff --git a/model.py b/model.py
index 726300e..63992a2 100644
--- a/model.py
+++ b/model.py
@@ -28,25 +28,26 @@ from sugar.activity.activity import get_bundle_path, get_activity_root
_logger = logging.getLogger('model')
+
class Pair(gobject.GObject):
__gproperties__ = {
- 'aimg' : (str, None, None, None, gobject.PARAM_READWRITE),
- 'asnd' : (str, None, None, None, gobject.PARAM_READWRITE),
+ 'aimg': (str, None, None, None, gobject.PARAM_READWRITE),
+ 'asnd': (str, None, None, None, gobject.PARAM_READWRITE),
'achar': (str, None, None, None, gobject.PARAM_READWRITE),
- 'bimg' : (str, None, None, None, gobject.PARAM_READWRITE),
- 'bsnd' : (str, None, None, None, gobject.PARAM_READWRITE),
+ 'bimg': (str, None, None, None, gobject.PARAM_READWRITE),
+ 'bsnd': (str, None, None, None, gobject.PARAM_READWRITE),
'bchar': (str, None, None, None, gobject.PARAM_READWRITE),
'aspeak': (str, None, None, None, gobject.PARAM_READWRITE),
'bspeak': (str, None, None, None, gobject.PARAM_READWRITE),
- 'color' : (gobject.TYPE_INT, 'Base', 'Base', 0, 10, 0, \
+ 'color': (gobject.TYPE_INT, 'Base', 'Base', 0, 10, 0, \
gobject.PARAM_READWRITE)
}
def __init__(self):
gobject.GObject.__init__(self)
- self._properties = {'aimg':None, 'asnd':None, 'achar':None, 'bimg':None,
- 'bsnd':None, 'bchar':None, 'color':100,
- 'aspeak':None, 'bspeak':None}
+ self._properties = {'aimg': None, 'asnd': None, 'achar': None,
+ 'bimg': None, 'bsnd': None, 'bchar': None,
+ 'color': 100, 'aspeak': None, 'bspeak': None}
def do_get_property(self, pspec):
"""Retrieve a particular property from our property dictionary
@@ -122,7 +123,7 @@ class Model(object):
self.dtd = libxml2.parseDTD(None, join(get_bundle_path(),
'memorize.dtd'))
except libxml2.parserError, e:
- _logger.error('Init: no memorize.dtd found ' +str(e))
+ _logger.error('Init: no memorize.dtd found ' + str(e))
self.dtd = None
self.ctxt = libxml2.newValidCtxt()
@@ -155,7 +156,7 @@ class Model(object):
self.data['path'] = self.temp_folder
self.data['pathimg'] = join(self.data['path'], 'images')
self.data['pathsnd'] = join(self.data['path'], 'sounds')
-
+
''' extracts files in the zip file '''
game_name = basename(game_file)[:-4]
zipFile = zipfile.ZipFile(game_file, "r")
@@ -168,14 +169,14 @@ class Model(object):
file(join(directory, name), 'wb').write(zipFile.read(each))
self.pairs = {}
-
+
''' reads the configuration from an xml file '''
try:
xml_file = join(environ['SUGAR_ACTIVITY_ROOT'],
self.data['path'], 'game.xml')
doc = libxml2.parseFile(xml_file)
if doc.validateDtd(self.ctxt, self.dtd):
-
+
# get the requested nodes
xpa = doc.xpathNewContext()
res = xpa.xpathEval("//*")
@@ -189,7 +190,7 @@ class Model(object):
for attribute in attributes:
if(attribute.name == 'text'):
pass
- else:
+ else:
pair.set_property(attribute.name,
attribute.content)
self.pairs[str(idpair)] = pair
@@ -198,19 +199,19 @@ class Model(object):
for attribute in attributes:
if(attribute.name == 'text'):
pass
- elif(attribute.name == 'name'):
+ elif(attribute.name == 'name'):
self.data['name'] = attribute.content
elif(attribute.name == 'scoresnd'):
self.data['scoresnd'] = attribute.content
- elif(attribute.name == 'winsnd'):
+ elif(attribute.name == 'winsnd'):
self.data['winsnd'] = attribute.content
- elif(attribute.name == 'divided'):
+ elif(attribute.name == 'divided'):
self.data['divided'] = attribute.content
- elif(attribute.name == 'face'):
+ elif(attribute.name == 'face'):
self.data['face'] = attribute.content
- elif(attribute.name == 'face1'):
+ elif(attribute.name == 'face1'):
self.data['face1'] = attribute.content
- elif(attribute.name == 'face2'):
+ elif(attribute.name == 'face2'):
self.data['face2'] = attribute.content
elif(attribute.name == 'align'):
self.data['align'] = attribute.content
@@ -224,43 +225,43 @@ class Model(object):
doc.freeDoc()
return 0
except libxml2.parserError, e:
- _logger.error('Read: Error parsing file ' +str(e))
+ _logger.error('Read: Error parsing file ' + str(e))
return 2
-
+
def write(self):
''' writes the configuration to an xml file '''
doc = libxml2.newDoc("1.0")
root = doc.newChild(None, "memorize", None)
-
- if(self.data.get('name', None) != None):
+
+ if(self.data.get('name', None) != None):
root.setProp("name", self.data['name'])
-
+
if(self.data.get('divided', None) != None):
root.setProp('divided', '1')
root.setProp('face1', '1')
root.setProp('face2', '2')
else:
root.setProp('divided', '0')
-
+
if(self.data.get('equal_pairs', None) != None):
root.setProp('equal_pairs', self.data['equal_pairs'])
-
- if(self.data.get('scoresnd', None) != None):
+
+ if(self.data.get('scoresnd', None) != None):
root.setProp("scoresnd", self.data['scoresnd'])
- if(self.data.get('winsnd', None) != None):
+ if(self.data.get('winsnd', None) != None):
root.setProp("winsnd", self.data['winsnd'])
- if(self.data.get('divided', None) != None):
+ if(self.data.get('divided', None) != None):
root.setProp("divided", self.data['divided'])
- if(self.data.get('face', None) != None):
+ if(self.data.get('face', None) != None):
root.setProp("face", self.data['face'])
- if(self.data.get('face1', None) != None):
+ if(self.data.get('face1', None) != None):
root.setProp("face1", self.data['face1'])
- if(self.data.get('face2', None) != None):
+ if(self.data.get('face2', None) != None):
root.setProp("face2", self.data['face2'])
- if(self.data.get('align', None) != None):
+ if(self.data.get('align', None) != None):
root.setProp("align", self.data['align'])
- for key in self.pairs:
+ for key in self.pairs:
elem = root.newChild(None, "pair", None)
if self.pairs[key].props.aimg != None:
elem.setProp("aimg", self.pairs[key].props.aimg)
@@ -288,12 +289,11 @@ class Model(object):
return 2
doc.freeDoc()
return 0
-
def def_grid(self, size):
''' create the grid for the play from the pairs information
and shuffles the grid so they always appear in a different
- place
+ place
'''
psize = (size * size / 2)
_logger.debug('Size requested: %d', psize)
@@ -339,8 +339,8 @@ class Model(object):
i += 1
else:
break
-
- numpairs = len(self.pairs)
+
+ numpairs = len(self.pairs)
if numpairs < psize:
_logger.debug('Defgrid: Not enough pairs, requested=%s had=%s'
% (psize, numpairs))
diff --git a/playerscoreboard.py b/playerscoreboard.py
index 99b11bb..5c8db14 100644
--- a/playerscoreboard.py
+++ b/playerscoreboard.py
@@ -27,11 +27,12 @@ import theme
_logger = logging.getLogger('memorize-activity')
-class PlayerScoreboard(gtk.EventBox):
-
- def __init__(self, nick, fill_color, stroke_color, score = 0):
+
+class PlayerScoreboard(gtk.EventBox):
+
+ def __init__(self, nick, fill_color, stroke_color, score=0):
gtk.EventBox.__init__(self)
-
+
self.default_color = '#4c4d4f'
self.selected_color = '#818286'
self.current_color = '#4c4d4f'
@@ -43,24 +44,24 @@ class PlayerScoreboard(gtk.EventBox):
self.stroke_color = stroke_color
self.connect('size-allocate', self._allocate_cb)
-
+
# Set table
self.table = gtk.Table(2, 2, False)
self.modify_bg(gtk.STATE_NORMAL,
gtk.gdk.color_parse(self.current_color))
- self.table.set_row_spacings(theme.PAD/2)
- self.table.set_col_spacings(theme.PAD/2)
+ self.table.set_row_spacings(theme.PAD / 2)
+ self.table.set_col_spacings(theme.PAD / 2)
self.table.set_border_width(theme.PAD)
-
+
# Score table
self.score_table = gtk.Table()
- self.score_table.set_row_spacings(theme.PAD/2)
- self.score_table.set_col_spacings(theme.PAD/2)
+ self.score_table.set_row_spacings(theme.PAD / 2)
+ self.score_table.set_col_spacings(theme.PAD / 2)
self.scores = []
self.current_x = 0
self.current_y = 0
-
+
# Set buddy icon
self.xo_buddy = join(dirname(__file__), 'images', 'stock-buddy.svg')
self.icon = svglabel.SvgLabel(self.xo_buddy, fill_color, stroke_color,
@@ -70,12 +71,12 @@ class PlayerScoreboard(gtk.EventBox):
self.waiting_icon = svglabel.SvgLabel(self.xo_buddy, \
self.default_color, '#ffffff', False, self.current_color,
theme.BODY_WIDTH, theme.BODY_HEIGHT)
-
+
# Set nick label
self.nick = gtk.Label(nick)
self.nick.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse('#ffffff'))
self.nick.set_alignment(0, 0.5)
-
+
# Set message label
self.msg = gtk.Label('Waiting for next game...')
self.msg.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse('#ffffff'))
@@ -102,7 +103,7 @@ class PlayerScoreboard(gtk.EventBox):
if self._score_cols == 0:
return
- rows = int(math.ceil(float(size/2) / self._score_cols))
+ rows = int(math.ceil(float(size / 2) / self._score_cols))
self.score_table.resize(rows, self._score_cols)
self.score_table.set_size_request(-1,
(theme.SCORE_SIZE + theme.PAD / 2) * (rows) - theme.PAD / 2)
@@ -116,19 +117,19 @@ class PlayerScoreboard(gtk.EventBox):
else:
score_pixbuf_unsel = None
score_pixbuf_sel = None
-
+
new_score = Score(self.fill_color, self.stroke_color,
score_pixbuf_sel, score_pixbuf_unsel, self.status)
self.scores.append(new_score)
new_score.show()
- self.score_table.attach(new_score, self.current_x , self.current_x + 1,
+ self.score_table.attach(new_score, self.current_x, self.current_x + 1,
self.current_y, self.current_y + 1, gtk.SHRINK, gtk.SHRINK)
self.current_x += 1
if self.current_x == self._score_cols:
self.current_x = 0
self.current_y += 1
self.queue_draw()
-
+
def set_selected(self, sel):
self.status = sel
if sel:
@@ -150,7 +151,7 @@ class PlayerScoreboard(gtk.EventBox):
del self.scores
self.scores = []
self.queue_draw()
-
+
def set_wait_mode(self, status):
if status:
self.table.remove(self.icon)
@@ -164,6 +165,6 @@ class PlayerScoreboard(gtk.EventBox):
if len(self.scores) == 0:
self.table.remove(self.msg)
self.queue_draw()
-
+
def set_message(self, msg):
self.msg.set_text(msg)
diff --git a/score.py b/score.py
index 947c1e9..ef84d87 100644
--- a/score.py
+++ b/score.py
@@ -21,12 +21,13 @@ import os
import theme
+
class Score(svglabel.SvgLabel):
-
+
selected_color = "#818286"
default_color = "#4c4d4f"
status = False
-
+
def __init__(self, fill_color, stroke_color, pixbuf=None,
pixbuf_sel=None, status=False):
filename = os.path.join(os.path.dirname(__file__), "images/score.svg")
@@ -46,12 +47,12 @@ class Score(svglabel.SvgLabel):
self.pixbuf = self.pixbuf_sel
else:
self.pixbuf = self.pixbuf_un
-
+
svglabel.SvgLabel.__init__(self, filename, fill_color, stroke_color,
self.pixbuf, self.default_color, theme.SCORE_SIZE,
theme.SCORE_SIZE)
self.set_selected(status)
-
+
def set_selected(self, status):
self.status = status
if status:
@@ -62,10 +63,10 @@ class Score(svglabel.SvgLabel):
self.pixbuf = self.pixbuf_un
self.modify_bg(gtk.STATE_NORMAL,
gtk.gdk.color_parse(self.default_color))
- self.queue_draw()
-
+ self.queue_draw()
+
def get_pixbuf_un(self):
return self.pixbuf_un
-
+
def get_pixbuf_sel(self):
return self.pixbuf_sel
diff --git a/scoreboard.py b/scoreboard.py
index e11d3dd..4aa6997 100644
--- a/scoreboard.py
+++ b/scoreboard.py
@@ -21,6 +21,7 @@ from playerscoreboard import PlayerScoreboard
_logger = logging.getLogger('memorize-activity')
+
class Scoreboard(gtk.EventBox):
def __init__(self):
gtk.EventBox.__init__(self)
@@ -28,15 +29,15 @@ class Scoreboard(gtk.EventBox):
self.players = {}
self.current_buddy = None
- self.vbox = gtk.VBox(False)
-
+ self.vbox = gtk.VBox(False)
+
fill_box = gtk.EventBox()
fill_box.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse('#4c4d4f'))
fill_box.show()
self.vbox.pack_end(fill_box, True, True)
-
+
scroll = gtk.ScrolledWindow()
- scroll.props.shadow_type = gtk.SHADOW_NONE
+ scroll.props.shadow_type = gtk.SHADOW_NONE
scroll.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
scroll.add_with_viewport(self.vbox)
scroll.set_border_width(0)
@@ -47,41 +48,40 @@ class Scoreboard(gtk.EventBox):
def change_game(self, widget, data, grid):
for buddy in self.players.keys():
self.players[buddy].change_game(len(grid))
-
+
def add_buddy(self, widget, buddy, score):
### FIXME: this breaks when the body is empty
nick = buddy.props.nick
stroke_color, fill_color = buddy.props.color.split(',')
player = PlayerScoreboard(nick, fill_color, stroke_color, score)
player.show()
- self.players[buddy] = player
+ self.players[buddy] = player
self.vbox.pack_start(player, False, False)
if score == -1:
player.set_wait_mode(True)
self.show_all()
-
+
def rem_buddy(self, widget, buddy):
- self.vbox.remove(self.players[buddy])
- del self.players[buddy] ### fix for self.players[id]
-
+ self.vbox.remove(self.players[buddy])
+ del self.players[buddy] # fix for self.players[id]
+
def set_selected(self, widget, buddy):
if self.current_buddy is not None:
old = self.players[self.current_buddy]
old.set_selected(False)
- self.current_buddy = buddy
+ self.current_buddy = buddy
player = self.players[buddy]
player.set_selected(True)
-
+
def set_buddy_message(self, widget, buddy, msg):
self.players[buddy].set_message(msg)
-
+
def increase_score(self, widget, buddy):
self.players[buddy].increase_score()
def reset(self, widget):
for buddy in self.players.keys():
self.players[buddy].reset()
-
+
def set_wait_mode(self, widget, buddy, status):
self.players[buddy].set_wait_mode(status)
-
diff --git a/svgcard.py b/svgcard.py
index d408ca6..7500f3f 100644
--- a/svgcard.py
+++ b/svgcard.py
@@ -18,7 +18,6 @@
#
from os.path import join, dirname
-import gc
import rsvg
import re
import gtk
@@ -33,22 +32,27 @@ import speak.voice
_logger = logging.getLogger('memorize-activity')
+
class SvgCard(gtk.EventBox):
border_svg = join(dirname(__file__), 'images', 'card.svg')
# Default properties
default_props = {}
- default_props['back'] = {'fill_color':'#b2b3b7', 'stroke_color':'#b2b3b7',
- 'opacity':'1'}
- default_props['back_h'] = {'fill_color':'#b2b3b7',
- 'stroke_color':'#ffffff', 'opacity':'1'}
- default_props['back_text'] = {'text_color':'#c7c8cc'}
- default_props['front'] = {'fill_color':'#4c4d4f', 'stroke_color':'#ffffff',
- 'opacity':'1'}
- default_props['front_h'] = {'fill_color':'#555555',
- 'stroke_color':'#888888', 'opacity':'1'}
- default_props['front_text'] = {'text_color':'#ffffff'}
+ default_props['back'] = {'fill_color': '#b2b3b7',
+ 'stroke_color': '#b2b3b7',
+ 'opacity': '1'}
+ default_props['back_h'] = {'fill_color': '#b2b3b7',
+ 'stroke_color': '#ffffff',
+ 'opacity': '1'}
+ default_props['back_text'] = {'text_color': '#c7c8cc'}
+ default_props['front'] = {'fill_color': '#4c4d4f',
+ 'stroke_color': '#ffffff',
+ 'opacity': '1'}
+ default_props['front_h'] = {'fill_color': '#555555',
+ 'stroke_color': '#888888',
+ 'opacity': '1'}
+ default_props['front_text'] = {'text_color': '#ffffff'}
cache = {}
@@ -118,15 +122,15 @@ class SvgCard(gtk.EventBox):
self.create_text_layout(props['card_text'])
width, height = layout.get_pixel_size()
- y = (self.size - height)/2
+ y = (self.size - height) / 2
if self.flipped:
- if self.align == '2': # top
+ if self.align == '2': # top
y = 0
- elif self.align == '3': # bottom
+ elif self.align == '3': # bottom
y = self.size - height
widget.window.draw_layout(self.gc, layout=layout,
- x=(self.size - width)/2, y=y,
+ x=(self.size - width) / 2, y=y,
foreground=gtk.gdk.color_parse(props['text_color']))
return False
@@ -135,7 +139,7 @@ class SvgCard(gtk.EventBox):
icon_data = self.props[view]
key = str(self.size) + icon_data.get('fill_color') + \
icon_data.get('stroke_color')
- if self.cache.has_key(key):
+ if key in self.cache:
return self.cache[key]
icon_file = open(self.border_svg, 'r')
@@ -154,15 +158,15 @@ class SvgCard(gtk.EventBox):
data = re.sub('<!ENTITY opacity .*>', entity, data)
data = re.sub('size_card1', str(self.size), data)
- data = re.sub('size_card2', str(self.size-6), data)
- data = re.sub('size_card3', str(self.size-17), data)
+ data = re.sub('size_card2', str(self.size - 6), data)
+ data = re.sub('size_card3', str(self.size - 17), data)
pixbuf = rsvg.Handle(data=data).get_pixbuf()
self.cache[key] = pixbuf
return pixbuf
def set_border(self, stroke_color, fill_color):
- self.props['front'].update({'fill_color' : fill_color,
- 'stroke_color' : stroke_color})
+ self.props['front'].update({'fill_color': fill_color,
+ 'stroke_color': stroke_color})
self.queue_draw()
while gtk.events_pending():
gtk.main_iteration()
@@ -186,7 +190,7 @@ class SvgCard(gtk.EventBox):
def get_pixbuf(self):
return self.jpeg
- def set_highlight(self, status, mouse = False):
+ def set_highlight(self, status, mouse=False):
if self.flipped:
if mouse:
return
@@ -236,14 +240,12 @@ class SvgCard(gtk.EventBox):
speaking_face.face.say(self.get_text())
self.current_face = 'front'
- self.flipped = True
+ self.flipped = True
self.queue_draw()
while gtk.events_pending():
gtk.main_iteration()
- #gc.collect()
-
def cement(self):
if not self.get_speak():
return
@@ -336,6 +338,7 @@ class SvgCard(gtk.EventBox):
def get_speak(self):
return self.props['front_text'].get('speak')
+
def PIXELS_PANGO(x):
return x * 1000
diff --git a/svglabel.py b/svglabel.py
index ef2ab74..9991765 100644
--- a/svglabel.py
+++ b/svglabel.py
@@ -15,20 +15,20 @@
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
-import gtk, pygtk
+import gtk
import rsvg
-import cairo
import re
+
class SvgLabel(gtk.DrawingArea):
-
+
filename = ''
fill_color = ''
stroke_color = ''
background_color = ''
-
-
- def __init__(self, filename, fill_color, stroke_color, pixbuf = False, background_color = '', request_x = 45, request_y = 45):
+
+ def __init__(self, filename, fill_color, stroke_color, pixbuf=False,
+ background_color='', request_x=45, request_y=45):
gtk.DrawingArea.__init__(self)
self.set_size_request(request_x, request_y)
self.filename = filename
@@ -38,15 +38,16 @@ class SvgLabel(gtk.DrawingArea):
self.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse(background_color))
if pixbuf:
self.pixbuf = pixbuf
- else:
- self.pixbuf = self._read_icon_data(self.filename, self.fill_color, self.stroke_color)
-
+ else:
+ self.pixbuf = self._read_icon_data(self.filename, self.fill_color,
+ self.stroke_color)
+
self.connect('expose-event', self._expose_cb)
-
+
def _expose_cb(self, widget, event):
widget.window.draw_pixbuf(None, self.pixbuf, 0, 0, 0, 0)
return False
-
+
def _read_icon_data(self, filename, fill_color, stroke_color):
icon_file = open(filename, 'r')
data = icon_file.read()
@@ -62,38 +63,41 @@ class SvgLabel(gtk.DrawingArea):
self.data_size = len(data)
return rsvg.Handle(data=data).get_pixbuf()
-
+
def set_color(self, fill_color, stroke_color):
self.fill_color = fill_color
self.stroke_color = stroke_color
- self.pixmap = self._read_icon_data(self.filename, self.fill_color, self.stroke_color)
- self.queue_draw()
-
+ self.pixmap = self._read_icon_data(self.filename, self.fill_color,
+ self.stroke_color)
+ self.queue_draw()
+
def set_fill_color(self, fill_color):
self.fill_color = fill_color
- self.pixmap = self._read_icon_data(self.filename, self.fill_color, self.stroke_color)
- self.queue_draw()
-
+ self.pixmap = self._read_icon_data(self.filename, self.fill_color,
+ self.stroke_color)
+ self.queue_draw()
+
def get_fill_color(self):
return self.fill_color
-
+
def set_stroke_color(self, stroke_color):
self.stroke_color = stroke_color
- self.pixmap = self._read_icon_data(self.filename, self.fill_color, self.stroke_color)
- self.queue_draw()
-
+ self.pixmap = self._read_icon_data(self.filename, self.fill_color,
+ self.stroke_color)
+ self.queue_draw()
+
def get_stroke_color(self):
return self.stroke_color
-
+
def get_pixbuf(self):
return self.pixbuf
-
+
def set_pixbuf(self, pixbuf):
self.pixbuf = pixbuf
- self.queue_draw()
-
+ self.queue_draw()
+
def set_background(self, background_color):
self.background_color = background_color
- self.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse(self.background_color))
- self.queue_draw()
-
+ self.modify_bg(gtk.STATE_NORMAL,
+ gtk.gdk.color_parse(self.background_color))
+ self.queue_draw()