# PyDia Rotation # Copyright (c) 2003, Hans Breuer # Copyright (c) 2009 Steffen Macke = 0 and angle <= 360 : SimpleRotate (self.data, angle) self.data.update_extents () self.diagram.flush() else : dia.message(1, "Value out of range!") self.win.destroy () def on_delete (self, *args) : self.win.destroy () def SimpleRotate(data, angle) : # Rotation center xm = 0.0 ym = 0.0 # Convert to radians angle_rad = 2*math.pi - 2*math.pi*angle/360 objs = data.get_sorted_selected() if len(objs) == 0 : objs = data.active_layer.objects scaleFailed = {} for o in objs : for h in o.handles: x = math.cos(angle_rad)*(h.pos.x+xm)-math.sin(angle_rad)*(h.pos.y+ym) y = math.sin(angle_rad)*(h.pos.x+xm)+math.cos(angle_rad)*(h.pos.y) o.move_handle(h, (x,y), 0, 0) data.update_extents () dia.active_display().add_update_all() def rotate_cb(data, flags) : dlg = CRotateDialog(dia.active_display().diagram, data) dia.register_action ("ObjectsSimplerotation", "Simple Rotation", "/DisplayMenu/Objects/ObjectsExtensionStart", rotate_cb)