Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/cardtable.py
diff options
context:
space:
mode:
authorAleksey Lim <alsroot@member.fsf.org>2009-07-13 20:38:41 (GMT)
committer Aleksey Lim <alsroot@member.fsf.org>2009-07-13 20:38:41 (GMT)
commit9b5c6711edd39ef5719da0f91c46dacba838fbe4 (patch)
tree63c5b917b362ade93c519d855a2afe6d659af82b /cardtable.py
parenta739d83dca1e3cb004cb4a94259e21c7de210b5f (diff)
Move initial resize of cardtable to do_expose_event and do not play with different sizes in allocation event
Diffstat (limited to 'cardtable.py')
-rw-r--r--cardtable.py64
1 files changed, 32 insertions, 32 deletions
diff --git a/cardtable.py b/cardtable.py
index a96f7f0..0ba55e3 100644
--- a/cardtable.py
+++ b/cardtable.py
@@ -41,10 +41,6 @@ class CardTable(gtk.EventBox):
self.cards_data = None
self._workspace_size = 0
- # set request size to 100x100 to skip first time sizing in _allocate_cb
- self.set_size_request(100, 100)
- self.connect('size-allocate', self._allocate_cb)
-
# Set table settings
self.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse('#000000'))
self.table = gtk.Table()
@@ -65,18 +61,18 @@ class CardTable(gtk.EventBox):
self.dict = None
self.show_all()
- def _allocate_cb(self, widget, allocation):
- size = allocation.height
- if size == 100:
- # skip first time sizing
- return
- if self._workspace_size == 0:
+ def do_expose_event(self, event):
+ if self._workspace_size:
# do it once
- self.set_size_request(size, size)
- self._workspace_size = size
- if self.data:
- self.load_game(None, self.data, self.cards_data)
-
+ return
+
+ size = self.allocation.height
+ self.set_size_request(size, size)
+ self._workspace_size = size
+
+ if self.data:
+ self.load_game(None, self.data, self.cards_data)
+
def load_game(self, widget, data, grid):
self.data = data
self.cards_data = grid
@@ -105,12 +101,12 @@ class CardTable(gtk.EventBox):
else:
text1 = str(self.data.get('face', ''))
text2 = str(self.data.get('face', ''))
-
+
x = 0
y = 0
id = 0
-
- for card in self.cards_data:
+
+ for card in self.cards_data:
if card.get('img', None):
jpg = os.path.join(self.data['pathimg'], card['img'])
else:
@@ -132,9 +128,9 @@ class CardTable(gtk.EventBox):
self.cd2id[card] = id
self.id2cd[id] = card
self.cards[(x, y)] = card
- self.dict[id] = (x, y)
- self.table.attach(card, x, x+1, y, y+1)
-
+ self.dict[id] = (x, y)
+ self.table.attach(card, x, x+1, y, y+1, gtk.SHRINK, gtk.SHRINK)
+
x += 1
if x == self.size:
x = 0
@@ -145,7 +141,7 @@ class CardTable(gtk.EventBox):
self._set_load_mode(False)
self.show_all()
gc.collect()
-
+
def change_game(self, widget, data, grid):
if not self.first_load:
for card in self.cards.values():
@@ -153,35 +149,36 @@ class CardTable(gtk.EventBox):
del card
gc.collect()
self.load_game(None, data, grid)
-
+
def get_card_size(self, size_table):
- x = self._workspace_size/size_table - theme.CARD_PAD*2
+ x = (self._workspace_size+theme.CARD_PAD*(size_table-1)) / size_table \
+ - theme.CARD_PAD*2
return x
-
+
def mouse_event(self, widget, event, coord):
#self.table.grab_focus()
card = self.cards[coord[0], coord[1]]
id = self.cd2id.get(card)
self.emit('card-highlighted', id, True)
self.selected_card = (coord[0], coord[1])
-
+
def key_press_event(self, widget, event):
#self.table.grab_focus()
x= self.selected_card[0]
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]
id = self.cd2id.get(card)
self.emit('card-highlighted', id, 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]
id = self.cd2id.get(card)
self.emit('card-highlighted', id, 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]
@@ -218,13 +215,16 @@ class CardTable(gtk.EventBox):
def flip_card(self, widget, id):
self.id2cd.get(id).flip()
-
+
+ def cement_card(self, widget, id):
+ self.id2cd.get(id).cement()
+
def highlight_card(self, widget, id, status):
if self.dict != None:
self.selected_card = self.dict.get(id)
self.id2cd.get(id).set_highlight(status)
-
- def reset(self, widget):
+
+ def reset(self, widget):
for id in self.id2cd.keys():
self.id2cd[id].reset()