Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjmpc <jumapico@gmail.com>2009-10-08 07:05:02 (GMT)
committer jmpc <jumapico@gmail.com>2009-10-08 07:05:02 (GMT)
commit586c10bf9e9b73142dc06ae1f3686949653fdf63 (patch)
tree80fa8f2c2fc8cb6571b805bd6a101f22ccc94e74
parent548e70b6dbadc522de252a771e88717617ecb2f3 (diff)
Arreglamos un error al hacer el push anterior.
-rwxr-xr-xfracciones.py114
-rw-r--r--fracciones.xml4
2 files changed, 17 insertions, 101 deletions
diff --git a/fracciones.py b/fracciones.py
index fb17db3..863d9e0 100755
--- a/fracciones.py
+++ b/fracciones.py
@@ -1,126 +1,42 @@
-#! /usr/bin/env python
-
-import math
+#!/usr/bin/env python
+import logging
import gtk
+from juego1 import JuegoModo1
-W = None
-H = None
-
-def draw_arc(cr, color_fg, color_bg, center_x, center_y, radius, angle_start, angle_end):
- cr.set_source_rgb(*color_fg)
- cr.move_to(center_x, center_y)
- nx = center_x + radius * math.cos(angle_start)
- ny = center_y + radius * math.sin(angle_start)
- cr.line_to(nx, ny)
- cr.arc(center_x, center_y, radius, angle_start, angle_end)
- cr.close_path()
- cr.stroke_preserve()
- cr.set_source_rgb(*color_bg)
- cr.fill()
-
-
-class Arco:
- def __init__(self, x, y, r, N):
- assert N > 2
- self.x0 = x
- self.y0 = y
- self.r = r
- self.N = N
- self.selected = [0] * N
-
-
- def arco(self, pos):
- xa = pos[0]
- ya = pos[1]
- xb = xa - W
- yb = (ya - H)
-
- if math.pow(xb, 2) + math.pow(yb, 2) > math.pow(self.r, 2):
- return None
- angle = math.atan2(yb, xb)
- if angle < 0: angle += 2*math.pi
- sector2 = angle*self.N/(2*math.pi)
- return int(math.floor(sector2))
+logging.basicConfig(level=logging.DEBUG)
+log = logging.getLogger(__name__)
- def presionar_arco(self, cr, i):
- if self.selected[i]:
- self.selected[i] = 0
- else:
- self.selected[i] = 1
- self.dibujar_torta(cr)
-
-
- def dibujar_torta(self, cr):
- for i in xrange(self.N):
- angle_start = 2*math.pi*i/self.N
- angle_end = 2*math.pi*(i+1)/self.N
- #if angle_start < 0: angle_start += 2*math.pi
- #if angle_end < 0: angle_end += 2*math.pi
- if self.selected[i]:
- fg = (1.0, 1.0, 0.0)
- bg = (0.0, 1.0, 1.0)
- else:
- fg = (1.0, 0.0, 0.0)
- bg = (0.0, 1.0, 0.0)
- draw_arc(cr, fg, bg, self.x0, self.y0, self.r, angle_start, angle_end)
-
-
-
-class fracciones(object):
+class Fracciones:
def __init__(self):
- global W, H
+ self.modo = JuegoModo1()
builder = gtk.Builder()
builder.add_from_file("fracciones.xml")
builder.connect_signals(self)
-
- self.builder = builder
- self.window = builder.get_object("window")
- self.label = builder.get_object("label")
- self.status = builder.get_object("statusbar")
+ window = builder.get_object("window")
+ window.show()
self.drawingarea = builder.get_object("drawingarea")
- self.window.show()
-
- # Crear la torta.
- self.w = self.drawingarea.allocation.width
- self.h = self.drawingarea.allocation.height
- r = 80
- self.N = N = 5
- W = self.w /2.0
- H = self.h /2.0
- self.arco = Arco(W, H, r, N)
- self.coords = (0, 0)
-
- def on_window_motion_notify_event(self, widget, event):
- self.coords = coords = event.get_coords()
- text = "%i/%i"%(sum(self.arco.selected), self.N)
- self.status.push(1, text)
-
def on_window_destroy(self, userdata):
gtk.main_quit()
def on_drawingarea_expose_event(self, widget, event):
- cr = widget.window.cairo_create()
- self.arco.dibujar_torta(cr)
+ self.modo.draw(widget, event)
def on_drawingarea_button_press_event(self, widget, event):
- x, y = event.get_coords()
- result = self.arco.arco(event.get_coords())
- if result is not None:
- cr = widget.window.cairo_create()
- self.arco.presionar_arco(cr, result)
+ self.modo.update(widget, event)
- def on_drawingarea_motion_notify_event(self, widget, event):
- pass
+ def on_button_clicked(self, widget):
+ log.debug("on_button_clicked")
+ self.modo.check(self.drawingarea, None)
if __name__ == "__main__":
- app = fracciones()
+ app = Fracciones()
gtk.main()
diff --git a/fracciones.xml b/fracciones.xml
index 5112af5..3109f42 100644
--- a/fracciones.xml
+++ b/fracciones.xml
@@ -5,9 +5,9 @@
<object class="GtkWindow" id="window">
<property name="events">GDK_POINTER_MOTION_MASK | GDK_STRUCTURE_MASK</property>
<property name="extension_events">all</property>
+ <property name="resizable">False</property>
<property name="window_position">center</property>
<signal name="destroy" handler="on_window_destroy"/>
- <signal name="motion_notify_event" handler="on_window_motion_notify_event"/>
<child>
<object class="GtkVBox" id="vbox1">
<property name="visible">True</property>
@@ -22,7 +22,6 @@
<property name="extension_events">all</property>
<signal name="expose_event" handler="on_drawingarea_expose_event"/>
<signal name="button_press_event" handler="on_drawingarea_button_press_event"/>
- <signal name="motion_notify_event" handler="on_drawingarea_motion_notify_event"/>
</object>
<packing>
<property name="expand">False</property>
@@ -55,6 +54,7 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
+ <signal name="clicked" handler="on_button_clicked"/>
</object>
</child>
</object>