[Tinyos-2-commits] CVS: tinyos-2.x/tos/lib/tossim/topologies
layout.py, 1.1.2.1, 1.1.2.2
Phil Levis
scipio at users.sourceforge.net
Thu Jun 8 17:19:10 PDT 2006
- Previous message: [Tinyos-2-commits] CVS: tinyos-2.x/apps/tests/TestNetwork Makefile,
1.1.2.4, 1.1.2.5
- Next message: [Tinyos-2-commits] CVS: tinyos-2.x/apps/tests/TestNetwork Driver.c,
1.1.2.1, 1.1.2.2 TestNetworkAppC.nc, 1.1.2.5,
1.1.2.6 TestNetworkC.nc, 1.1.2.6, 1.1.2.7 test.py, 1.1.2.2, 1.1.2.3
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/tinyos/tinyos-2.x/tos/lib/tossim/topologies
In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv12955
Modified Files:
Tag: tinyos-2_0_devel-BRANCH
layout.py
Log Message:
Dopey little GUI.
Index: layout.py
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/lib/tossim/topologies/Attic/layout.py,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -C2 -d -r1.1.2.1 -r1.1.2.2
*** layout.py 7 Jun 2006 01:35:28 -0000 1.1.2.1
--- layout.py 9 Jun 2006 00:19:08 -0000 1.1.2.2
***************
*** 5,8 ****
--- 5,14 ----
import gtk
+ class Mote:
+ def __init__(self):
+ self.x = 0
+ self.y = 0
+ self.selected = False
+
class HelloWorld:
def hello(self, widget, data=None):
***************
*** 22,32 ****
button.show()
! def createTextAreas(self):
table = gtk.Table(2, 2, True)
! label = gtk.Label("Scaling")
label.set_justify(gtk.JUSTIFY_LEFT)
label.show()
self.distanceText = gtk.TextBuffer()
view = gtk.TextView(self.distanceText)
table.attach(label, 0, 1, 0, 1)
--- 28,186 ----
button.show()
! def close(self, x1, y1, x2, y2):
! x1 -= x2
! y1 -= y2
! x1 *= x1
! y1 *= y1
! if (x1 + y1 < 50):
! print "close: ", x1, " ", y1
! return True
! else:
! print "not close: ", x1, " ", y1
! return False
!
! def within(self, m, x1, y1, x2, y2):
! gX = max(x1, x2) + 5
! lX = min(x1, x2) - 5
! gY = max(y1, y2) + 5
! lY = min(y1, y2) - 5
! if (m.x >= lX and m.x <= gX and
! m.y >= lY and m.y <= gY):
! print "X: ", lX, "<=", m.x, "<=", gX
! print "Y: ", lY, "<=", m.y, "<=", gY
! return True
! else:
! print "X: ", lX, ">", m.x, ">", gX
! print "Y: ", lY, ">", m.y, ">", gY
! return False
!
! def button_press_event(self, widget, event):
! if event.button == 1 and self.pixmap != None:
! x = event.x
! y = event.y
! print "press at ", x, " ", y
! self.start_x = event.x
! self.start_y = event.y
! self.dx = 0
! self.dy = 0
! self.new_target = True
!
! for m in self.selected:
! if self.close(m.x, m.y, x, y):
! self.new_target = False
!
! if self.new_target:
! for m in self.selected:
! m.selected = False
! self.selected = []
!
! self.redraw_motes()
!
! def button_release_event(self, widget, event):
! if event.button == 1 and self.pixmap != None:
! if self.new_target:
! x = event.x
! y = event.y
! print "release at ", x, " ", y
! for m in self.motes:
! if self.within(m, x, y, self.start_x, self.start_y):
! m.selected = True
! self.selected.append(m)
! self.redraw_motes()
! self.new_target = False
! else:
! for m in self.selected:
! m.x += self.dx
! m.y += self.dy
!
! self.dx = 0
! self.dy = 0
! self.redraw_motes()
!
! def drag_event(self, widget, event):
! x = y = state = None
! if event.is_hint:
! x, y, state = event.window.get_pointer()
! else:
! x = event.x
! y = event.y
! state = event.state
!
! if state & gtk.gdk.BUTTON1_MASK and self.pixmap != None:
! if not self.new_target:
! self.dx = event.x - self.start_x
! self.dy = event.y - self.start_y
! self.redraw_motes()
! print "drag"
!
!
! def configure_event(self, widget, event):
! self.widget = widget
! self.x, self.y, self.width, self.height = widget.get_allocation()
! self.pixmap = gtk.gdk.Pixmap(widget.window, self.width, self.height)
! self.pixmap.draw_rectangle(widget.get_style().white_gc, True, 0, 0, self.width, self.height)
! print "Configuring ", self.x, " ", self.y, " ", self.height, " ", self.width
! return True
!
! def expose_event(self, widget, event):
! x , y, width, height = event.area
! print "expose"
! widget.window.draw_drawable(widget.get_style().fg_gc[gtk.STATE_NORMAL],
! self.pixmap, x, y, x, y, width, height)
! return False
!
! def redraw_motes(self):
! self.pixmap.draw_rectangle(self.widget.get_style().white_gc, True, 0, 0, self.width, self.height)
! self.widget.queue_draw_area(0, 0, self.width, self.height)
! for mote in self.motes:
! self.draw_mote(mote)
!
! def draw_mote(self, mote):
! x = mote.x
! y = mote.y
! if mote.selected:
! x += self.dx
! y += self.dy
!
! rect = (int(x-5), int(y-5), 10, 10)
! gc = self.widget.get_style().black_gc
! if mote.selected:
! gc = self.widget.get_style().light_gc[gtk.STATE_SELECTED]
!
! self.pixmap.draw_rectangle(gc, True,
! rect[0], rect[1], rect[2], rect[3])
!
! def createDrawPanel(self):
! self.moteArea = gtk.DrawingArea()
! self.moteArea.set_size_request(400,400)
! self.drawArea.add(self.moteArea)
! self.moteArea.show()
! self.moteArea.connect("expose_event", self.expose_event)
! self.moteArea.connect("configure_event", self.configure_event)
!
! self.moteArea.connect("motion_notify_event", self.drag_event)
! self.moteArea.connect("button_press_event", self.button_press_event)
! self.moteArea.connect("button_release_event", self.button_release_event)
!
! self.moteArea.set_events(gtk.gdk.EXPOSURE_MASK
! | gtk.gdk.LEAVE_NOTIFY_MASK
! | gtk.gdk.BUTTON_PRESS_MASK
! | gtk.gdk.POINTER_MOTION_MASK
! | gtk.gdk.POINTER_MOTION_HINT_MASK
! | gtk.gdk.BUTTON_RELEASE_MASK)
!
!
! def createButtonPanel(self):
! self.addButton("Add", self.addNode)
! self.addButton("Remove", self.removeSelected)
! self.addButton("Print", self.printTopology)
!
table = gtk.Table(2, 2, True)
! label = gtk.Label("Area")
label.set_justify(gtk.JUSTIFY_LEFT)
label.show()
self.distanceText = gtk.TextBuffer()
+ self.distanceText.set_text("100")
view = gtk.TextView(self.distanceText)
table.attach(label, 0, 1, 0, 1)
***************
*** 38,41 ****
--- 192,196 ----
label.show()
self.fileText = gtk.TextBuffer()
+ self.fileText.set_text("layout.txt")
view = gtk.TextView(self.fileText)
view.show()
***************
*** 46,49 ****
--- 201,205 ----
table.set_row_spacings(4)
table.show()
+ self.addButton("Quit", self.quit);
def __init__(self):
***************
*** 53,77 ****
self.window.set_border_width(10)
- self.drawArea = gtk
self.buttonArea = gtk.VBox()
!
! self.addButton("Add", self.addNode)
! self.addButton("Remove", self.removeSelected)
! self.addButton("Print", self.printTopology)
! self.addButton("Quit", self.quit);
! self.createTextAreas()
! self.window.add(self.buttonArea)
self.buttonArea.show()
self.window.show()
def addNode(self, widget, data=None):
print "add node"
def removeSelected(self, widget, data=None):
print "remove selected"
def printTopology(self, widget, data=None):
print "print topology"
--- 209,272 ----
self.window.set_border_width(10)
self.buttonArea = gtk.VBox()
! self.drawArea = gtk.VBox()
! self.totalArea = gtk.HBox()
! self.totalArea.add(self.buttonArea)
! self.totalArea.add(self.drawArea)
! self.createDrawPanel()
! self.createButtonPanel()
! self.window.add(self.totalArea)
self.buttonArea.show()
+ self.drawArea.show()
+ self.totalArea.show()
self.window.show()
+ self.motes = []
+
+ # For clicking and selecting motes
+ self.selected = []
+ self.new_target = False
+ self.start_x = 0
+ self.start_y = 0
+ self.dx = 0
+ self.dy = 0
+
+ def add_mote(self, x, y):
+ m = Mote()
+ m.x = x
+ m.y = y
+ self.motes.append(m)
+
def addNode(self, widget, data=None):
+ self.add_mote(50, 50)
+ self.redraw_motes()
print "add node"
def removeSelected(self, widget, data=None):
+ for m in self.selected:
+ for other in self.motes:
+ if m == other:
+ self.motes.remove(m)
+ self.selected = []
+ self.redraw_motes()
print "remove selected"
def printTopology(self, widget, data=None):
+ counter = 0
+ startiter, enditer = self.fileText.get_bounds()
+ filename = self.fileText.get_text(startiter, enditer)
+ file = open(filename, "w")
+ for m in self.motes:
+ x = m.x
+ y = m.y
+ startiter, enditer = self.distanceText.get_bounds()
+ text = self.distanceText.get_text(startiter, enditer)
+ x *= int(text)
+ y *= int(text)
+ x /= 400
+ y /= 400
+ file.write(str(counter) + " "+ str(x) + " "+ str(y) + "\n")
print "print topology"
- Previous message: [Tinyos-2-commits] CVS: tinyos-2.x/apps/tests/TestNetwork Makefile,
1.1.2.4, 1.1.2.5
- Next message: [Tinyos-2-commits] CVS: tinyos-2.x/apps/tests/TestNetwork Driver.c,
1.1.2.1, 1.1.2.2 TestNetworkAppC.nc, 1.1.2.5,
1.1.2.6 TestNetworkC.nc, 1.1.2.6, 1.1.2.7 test.py, 1.1.2.2, 1.1.2.3
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Tinyos-2-commits
mailing list