def __add_nodes(self): S = SpringLayout(self.__graph) S.layout() upd_graph = S.get_updated_graph() self.__graph = upd_graph nodes = upd_graph.nodes() prev_pos = QtCore.QPointF(0, 0) mult = 10 for n in nodes: if n: log.debug("creating node %s" % n) job_node = NodeItem(drq_job_object=n) xpos = self.__graph.node[n]["layoutPosX"] ypos = self.__graph.node[n]["layoutPosY"] # # log.info("xpos %s ypos %s"%(xpos,ypos)) # log.info("xsize %s ysizze %s"%(job_node.xsize,job_node.ysize)) # out_pos = ((xpos + job_node.xsize) * mult, (ypos + job_node.ysize) * mult) log.debug("final output %s %s" % (out_pos[0], out_pos[1])) job_node.setPos(QtCore.QPointF(out_pos[0], out_pos[1])) self.__graph.node[n]["_qt_item"] = job_node self.__scene.addItem(job_node) self.__nodes.append(job_node) prev_pos = job_node.pos()
def layoutIteration(self): # Forces on nodes due to node-node repulsions for i in range(len(self.graph.nodes())): node1=self.graph.nodes()[i] jj=i for j in range(jj,len(self.graph.nodes())): node2=self.graph.nodes()[j] log.debug("repulsive on %s %s "%(node1,node2)) self.layoutRepulsive(node1,node2) # Forces on nodes due to edge attractions for i in range(len(self.graph.edges())): edge=self.graph.edges()[i] self.layoutAttractive(edge) # Move by the given force for node in self.graph.nodes(): xmove=self.c * self.graph.node[node]["layoutForceX"] ymove=self.c * self.graph.node[node]["layoutForceY"] max= self.maxVertexMovement if xmove > max : xmove = max if xmove < -max : xmove = -max if ymove > max : ymove = max if ymove < -max : ymove = -max self.graph.node[node]["layoutPosX"] += xmove self.graph.node[node]["layoutPosY"] += xmove self.graph.node[node]["layoutForceX"] =0.0 self.graph.node[node]["layoutForceY"] =0.0
def layoutAttractive(self,edge): node1=self.graph.node[edge[0]] node2=self.graph.node[edge[1]] dx=node2["layoutPosX"] - node1["layoutPosX"] dy=node2["layoutPosY"] - node1["layoutPosY"] log.debug("attractive dx %s dy %s"%(dx,dy)) d2=dx*dx + dy*dy if d2 < 100.0: dx=100.0 + random.random()*100.0 +100.0 dy=100.0 + random.random()*100.0 + 100.0 d2=dx*dx+dy*dy d= math.sqrt(d2) if d > self.maxRepulsiveForceDistance: d=self.maxRepulsiveForceDistance d2=d*d attractiveForce =(d2 -self.k *self.k)/self.k log.debug("edge weight : %s "%self.graph[edge[0]][edge[1]]["weight"]) if not self.graph[edge[0]][edge[1]]["weight"] or self.graph[edge[0]][edge[1]]["weight"] < 1.0 : self.graph[edge[0]][edge[1]]["weight"] = 1.0 attractiveForce *= math.log(self.graph[edge[0]][edge[1]]["weight"]) * 0.5 + 1; node2["layoutForceX"] -= attractiveForce * dx / d node2["layoutForceY"] -= attractiveForce * dy / d node1["layoutForceX"] += attractiveForce * dx / d node1["layoutForceY"] += attractiveForce * dy / d
def mouseMoveEvent(self,mouseEvent): if (mouseEvent.button() == QtCore.Qt.MidButton): log.debug("DrawQt MouseMove") self.setCursor(QtCore.Qt.ClosedHandCursor) super(JigsawView,self).mouseMoveEvent(mouseEvent)
def __add_nodes(self): S=SpringLayout(self.__graph) S.layout() upd_graph=S.get_updated_graph() self.__graph=upd_graph nodes = upd_graph.nodes() prev_pos=QtCore.QPointF(0,0) mult=10 for n in nodes: if n: log.debug("creating node %s"%n) job_node = NodeItem(drq_job_object=n) xpos= self.__graph.node[n]["layoutPosX"] ypos= self.__graph.node[n]["layoutPosY"] # # log.info("xpos %s ypos %s"%(xpos,ypos)) # log.info("xsize %s ysizze %s"%(job_node.xsize,job_node.ysize)) # out_pos=((xpos+job_node.xsize)*mult,(ypos+job_node.ysize)*mult) log.debug("final output %s %s"%(out_pos[0],out_pos[1])) job_node.setPos(QtCore.QPointF(out_pos[0],out_pos[1])) self.__graph.node[n]["_qt_item"]=job_node self.__scene.addItem(job_node) self.__nodes.append(job_node) prev_pos=job_node.pos()
def mouseMoveEvent(self, mouseEvent): if (mouseEvent.button() == QtCore.Qt.MidButton): log.debug("DrawQt MouseMove") self.setCursor(QtCore.Qt.ClosedHandCursor) super(JigsawView, self).mouseMoveEvent(mouseEvent)
def layoutIteration(self): # Forces on nodes due to node-node repulsions for i in range(len(self.graph.nodes())): node1 = self.graph.nodes()[i] jj = i for j in range(jj, len(self.graph.nodes())): node2 = self.graph.nodes()[j] log.debug("repulsive on %s %s " % (node1, node2)) self.layoutRepulsive(node1, node2) # Forces on nodes due to edge attractions for i in range(len(self.graph.edges())): edge = self.graph.edges()[i] self.layoutAttractive(edge) # Move by the given force for node in self.graph.nodes(): xmove = self.c * self.graph.node[node]["layoutForceX"] ymove = self.c * self.graph.node[node]["layoutForceY"] max = self.maxVertexMovement if xmove > max: xmove = max if xmove < -max: xmove = -max if ymove > max: ymove = max if ymove < -max: ymove = -max self.graph.node[node]["layoutPosX"] += xmove self.graph.node[node]["layoutPosY"] += xmove self.graph.node[node]["layoutForceX"] = 0.0 self.graph.node[node]["layoutForceY"] = 0.0
def mouseReleaseEvent(self, mouseEvent): start_mouse_item = self.itemAt(mouseEvent.pos()) if isinstance(start_mouse_item, NodeItem): log.debug("on node %s" % start_mouse_item) start_mouse_item.set_border_color(switch=0) self._last_point = QtCore.QPointF() super(JigsawView, self).mouseReleaseEvent(mouseEvent)
def mouseReleaseEvent(self,mouseEvent): start_mouse_item = self.itemAt(mouseEvent.pos()) if isinstance(start_mouse_item,NodeItem): log.debug("on node %s"%start_mouse_item) start_mouse_item.set_border_color(switch=0) self._last_point=QtCore.QPointF() super(JigsawView,self).mouseReleaseEvent(mouseEvent)
def mousePressEvent(self, mouseEvent): start_mouse_item = self.itemAt(mouseEvent.pos()) self._last_point = mouseEvent.pos() if (mouseEvent.button() == QtCore.Qt.LeftButton): if isinstance(start_mouse_item, NodeItem): log.debug("on node %s" % start_mouse_item) start_mouse_item.set_border_color(switch=1) super(JigsawView, self).mousePressEvent(mouseEvent)
def __add_connections(self): edges = self.__graph.edges() for e in edges: if e: log.debug("creating connection %s" % "->".join(e)) source_node = self.__graph.node[e[0]]["_qt_item"] dest_node = self.__graph.node[e[1]]["_qt_item"] connection = ConnectionItem(source_node, dest_node) self.__scene.addItem(connection)
def __add_connections(self): edges=self.__graph.edges() for e in edges: if e: log.debug("creating connection %s"%"->".join(e)) source_node = self.__graph.node[e[0]]["_qt_item"] dest_node= self.__graph.node[e[1]]["_qt_item"] connection = ConnectionItem(source_node,dest_node) self.__scene.addItem(connection)
def mousePressEvent(self,mouseEvent): start_mouse_item = self.itemAt(mouseEvent.pos()) self._last_point= mouseEvent.pos() if (mouseEvent.button() == QtCore.Qt.LeftButton): if isinstance(start_mouse_item,NodeItem): log.debug("on node %s"%start_mouse_item) start_mouse_item.set_border_color(switch=1) super(JigsawView,self).mousePressEvent(mouseEvent)
def set_autorefresh(self,status): if status: log.debug("autorefresh:ON") refresh_time = self.SB_refresh_time.value() self._timer_.set_run_time(refresh_time) self._timer_.start() else: log.debug("autorefresh:OFF") self._timer_.terminate()
def layoutPrepare(self): for node in self.graph.nodes(): for attr in self.node_attributes: self.graph.node[node][attr]=0.0 log.debug("adding to node %s -> attr:%s =%s"%(node,attr,self.graph.node[node][attr])) for edge in self.graph.edges(): for attr in self.edge_attributes: log.debug("adding attr %s to edge %s"%(attr,pformat(edge))) self.graph[edge[0]][edge[1]][attr]=0.0
def layoutPrepare(self): for node in self.graph.nodes(): for attr in self.node_attributes: self.graph.node[node][attr] = 0.0 log.debug("adding to node %s -> attr:%s =%s" % (node, attr, self.graph.node[node][attr])) for edge in self.graph.edges(): for attr in self.edge_attributes: log.debug("adding attr %s to edge %s" % (attr, pformat(edge))) self.graph[edge[0]][edge[1]][attr] = 0.0
def init_slaves_tabs(self): self.nodes_tab_list = [] log.debug("building nodes tabs...") nodes = lib.utils.get_all_slaves() num_nodes = len(nodes) self.TW_node.setRowCount(num_nodes) for i in range(num_nodes): log.debug("create slave Node Tab : %s" % type(nodes[i])) node_tab = SlaveNodeTab(nodes[i],parent = self.TW_node) node_tab.add_to_table(self.TW_node, i) self.connect(node_tab, QtCore.SIGNAL('update'), self.refresh) self.nodes_tab_list.append(node_tab)
def refresh(self): self.setCursor(QtCore.Qt.WaitCursor); self.init_jobs_tabs() self.init_slaves_tabs() self.TW_job.repaint() self.TW_node.repaint() if self._selected_job_row != None: log.debug("restore row selection %s" % self._selected_job_row) self.TW_job.setCurrentCell(self._selected_job_row,0) self.setCursor(QtCore.Qt.ArrowCursor);
def init_jobs_tabs(self): self.jobs_tab_list=[] log.debug("building job tabs...") self.TW_job.clearContents() jobs = lib.utils.get_all_jobs() num_jobs = len(jobs) log.debug("num jobs %s" % num_jobs) self.TW_job.setRowCount(num_jobs) for i in range(num_jobs): job_tab = JobTab(jobs[i],parent = self.TW_job) job_tab.add_to_table(self.TW_job, i) self.connect(job_tab, QtCore.SIGNAL('update'), self.refresh) self.jobs_tab_list.append(job_tab)
def __init__(self, Graph=None, parent=None): super(JigsawView, self).__init__(parent) log.debug("init DrawQt") self.__nodes = [] self.__connections = [] self.__graph = Graph self.__scene = None self.__layout = QtGui.QVBoxLayout() self.setLayout(self.__layout) self.__build_nodes() self._last_point = QtCore.QPointF()
def _set_tooltip(self): """ build up the tooltip using the drq job object bind the tooltip to all the columns """ log.debug("setting tooltips for object %s"%self._drq_job_object) if self._drq_job_object: html_tooltip=open(os.path.join(tooltips_path,"job_info.html"),"r") tooltipData ={} tooltipData["cmd"]=self._drq_job_object.cmd tooltipData["envvars"]=self._drq_job_object.envvars tooltipData["dependid"]=self._drq_job_object.dependid formattedTolltip=str(html_tooltip.read()).format(**tooltipData) self.setToolTip(formattedTolltip)
def __init__(self, Graph=None,parent=None): super(JigsawView,self).__init__(parent) log.debug("init DrawQt") self.__nodes=[] self.__connections=[] self.__graph=Graph self.__scene=None self.__layout = QtGui.QVBoxLayout() self.setLayout(self.__layout) self.__build_nodes() self._last_point=QtCore.QPointF()
def layoutRepulsive(self,node1,node2): dx=self.graph.node[node2]["layoutPosX"] - self.graph.node[node1]["layoutPosX"] dy=self.graph.node[node2]["layoutPosY"] - self.graph.node[node1]["layoutPosY"] log.debug("repulsive dx %s dy %s"%(dx,dy)) d2=dx*dx+dy*dy if d2 < 100.0: dx=100.0 + random.random()*100.0 + 100.0 dy=100.0 + random.random()*100.0 + 100.0 d2=dx*dx+dy*dy d= math.sqrt(d2) if d < self.maxRepulsiveForceDistance: repulsiveForce = self.k * self.k / d self.graph.node[node2]["layoutForceX"] += repulsiveForce *dx/d self.graph.node[node2]["layoutForceY"] += repulsiveForce *dy/d self.graph.node[node1]["layoutForceX"] += repulsiveForce *dx/d self.graph.node[node1]["layoutForceY"] += repulsiveForce *dy/d
def layoutRepulsive(self, node1, node2): dx = self.graph.node[node2]["layoutPosX"] - self.graph.node[node1][ "layoutPosX"] dy = self.graph.node[node2]["layoutPosY"] - self.graph.node[node1][ "layoutPosY"] log.debug("repulsive dx %s dy %s" % (dx, dy)) d2 = dx * dx + dy * dy if d2 < 100.0: dx = 100.0 + random.random() * 100.0 + 100.0 dy = 100.0 + random.random() * 100.0 + 100.0 d2 = dx * dx + dy * dy d = math.sqrt(d2) if d < self.maxRepulsiveForceDistance: repulsiveForce = self.k * self.k / d self.graph.node[node2]["layoutForceX"] += repulsiveForce * dx / d self.graph.node[node2]["layoutForceY"] += repulsiveForce * dy / d self.graph.node[node1]["layoutForceX"] += repulsiveForce * dx / d self.graph.node[node1]["layoutForceY"] += repulsiveForce * dy / d
def layoutAttractive(self, edge): node1 = self.graph.node[edge[0]] node2 = self.graph.node[edge[1]] dx = node2["layoutPosX"] - node1["layoutPosX"] dy = node2["layoutPosY"] - node1["layoutPosY"] log.debug("attractive dx %s dy %s" % (dx, dy)) d2 = dx * dx + dy * dy if d2 < 100.0: dx = 100.0 + random.random() * 100.0 + 100.0 dy = 100.0 + random.random() * 100.0 + 100.0 d2 = dx * dx + dy * dy d = math.sqrt(d2) if d > self.maxRepulsiveForceDistance: d = self.maxRepulsiveForceDistance d2 = d * d attractiveForce = (d2 - self.k * self.k) / self.k log.debug("edge weight : %s " % self.graph[edge[0]][edge[1]]["weight"]) if not self.graph[edge[0]][edge[1]]["weight"] or self.graph[edge[0]][ edge[1]]["weight"] < 1.0: self.graph[edge[0]][edge[1]]["weight"] = 1.0 attractiveForce *= math.log( self.graph[edge[0]][edge[1]]["weight"]) * 0.5 + 1 node2["layoutForceX"] -= attractiveForce * dx / d node2["layoutForceY"] -= attractiveForce * dy / d node1["layoutForceX"] += attractiveForce * dx / d node1["layoutForceY"] += attractiveForce * dy / d
def _node_view_show(self): log.debug("starting node view") NW_widget = NodeViewer(self) NW_widget.show() jobs = utils.get_all_jobs() depend_id = self._drq_job_object.dependid NW_widget.add_node(self._drq_job_object) log.debug("id depend: %d" % depend_id) if self._drq_job_object.id == depend_id: return for job in jobs: jd = job.id log.debug("current id : %d \tdepend : %d" % (jd, depend_id)) if jd == depend_id: log.debug("Adding node %s to the network" % job.name) NW_widget.add_node(job)
def get_widget(self,widget_name): if self._widget_list.has_key(widget_name): return self._widget_list[widget_name] else: log.debug("%s not found in widget list"%widget_name) return None
def print2(self): log.debug("running print 2") log.warning("warning mode")
def print3(self): log.debug("print 3 , here we raise an exception") value = 0/0
def __init__(self): log.debug("running init") for i in range(10): log.info("info mode")
def __init__(self): log.debug("init subclass") super(TestTest,self).__init__()
def mousePressEvent(self, mouseEvent): if (mouseEvent.button() == QtCore.Qt.RightButton): log.debug("right click mouse Press event") self.line = QtGui.QGraphicsLineItem( QtCore.QLineF(mouseEvent.scenePos(), mouseEvent.scenePos())) start_points = self.items(self.line.line().p1()) if len(start_points) == 0: log.debug("line skip , not on an attribute") return start_mouse_item = self.itemAt(self.line.line().p1()) if not isinstance(start_mouse_item, NodeItem): log.debug("line skip , %s not an attribute" % start_mouse_item) return end_mouse_item = self.itemAt(self.line.line().p2()) if not isinstance(end_mouse_item, NodeItem): log.debug("line skip , %s not an attribute" % end_mouse_item) return self.line.setPen(QtGui.QPen(QtCore.Qt.red, 2)) log.debug(start_mouse_item) log.debug(end_mouse_item) self.addItem(self.line) self.line_mode = True else: log.debug("left click mouse Press event") self.line_mode = False super(NodeScene, self).mousePressEvent(mouseEvent)
def mousePressEvent(self, mouseEvent): if (mouseEvent.button() == QtCore.Qt.RightButton): log.debug("right click mouse Press event") self.line = QtGui.QGraphicsLineItem(QtCore.QLineF(mouseEvent.scenePos(),mouseEvent.scenePos())) start_points=self.items(self.line.line().p1()) if len(start_points)==0: log.debug("line skip , not on an attribute") return start_mouse_item = self.itemAt(self.line.line().p1()) if not isinstance(start_mouse_item,NodeItem): log.debug("line skip , %s not an attribute"%start_mouse_item) return end_mouse_item = self.itemAt(self.line.line().p2()) if not isinstance(end_mouse_item,NodeItem): log.debug("line skip , %s not an attribute"%end_mouse_item) return self.line.setPen(QtGui.QPen(QtCore.Qt.red, 2)) log.debug(start_mouse_item) log.debug(end_mouse_item) self.addItem(self.line) self.line_mode=True else: log.debug("left click mouse Press event") self.line_mode=False super(NodeScene, self).mousePressEvent(mouseEvent)
def mouseReleaseEvent(self, mouseEvent): log.debug("mouse relese event") if self.line and self.line_mode: startItems = self.items(self.line.line().p1()) endItems = self.items(self.line.line().p2()) self.removeItem(self.line) self.line = None if len(startItems) and len(endItems): startItem = startItems[0] endItem = endItems[0] startItem_attr = startItems[-1] endItem_attr = endItems[-1] #print self.itemAt(endItem) if not isinstance(endItem_attr,NodeItem): log.debug("no other attribute found at the end point") log.debug("end object : %s"%type(endItem_attr)) self.update() return if not isinstance(startItem_attr,NodeItem): log.debug("no other attribute found at the end point") log.debug("end object : %s"%type(startItem_attr)) self.update() return log.debug("create new connection from %s to %s"%(startItem, endItem)) connection = ConnectionItem(startItem_attr, endItem_attr) self.addItem(connection) self.update() self.line = None super(NodeScene, self).mouseReleaseEvent(mouseEvent)
def add_node(self,drq_job_object): log.debug("adding node...%s"%drq_job_object) job_node = NodeItem(drq_job_object=drq_job_object) self.scene.addItem(job_node)
def _emit_uptdate(self): log.debug("emit update") self.emit(QtCore.SIGNAL("update"))
def print1(self): log.debug("running print 1") log.debug("debug mode")
def __init__(self): log.debug("init subclass") super(TestTest, self).__init__()
def _flat_list(self,input_list): result = ",".join(input_list) log.debug("flat list result %s"%str(result)) return result
def addConnection(self, connection): log.debug("adding new connection %s to %s"%(connection,self)) self.connections.append(connection)
def mouseReleaseEvent(self, mouseEvent): log.debug("mouse relese event") if self.line and self.line_mode: startItems = self.items(self.line.line().p1()) endItems = self.items(self.line.line().p2()) self.removeItem(self.line) self.line = None if len(startItems) and len(endItems): startItem = startItems[0] endItem = endItems[0] startItem_attr = startItems[-1] endItem_attr = endItems[-1] #print self.itemAt(endItem) if not isinstance(endItem_attr, NodeItem): log.debug("no other attribute found at the end point") log.debug("end object : %s" % type(endItem_attr)) self.update() return if not isinstance(startItem_attr, NodeItem): log.debug("no other attribute found at the end point") log.debug("end object : %s" % type(startItem_attr)) self.update() return log.debug("create new connection from %s to %s" % (startItem, endItem)) connection = ConnectionItem(startItem_attr, endItem_attr) self.addItem(connection) self.update() self.line = None super(NodeScene, self).mouseReleaseEvent(mouseEvent)
def print3(self): log.debug("print 3 , here we raise an exception") value = 0 / 0
#!/usr/bin/env python import os, sys import hlog as log log.debug("starting test.") class MyTest(object): def __init__(self): log.debug("running init") for i in range(10): log.info("info mode") def print1(self): log.debug("running print 1") log.debug("debug mode") def print3(self): log.debug("print 3 , here we raise an exception") value = 0 / 0 def print2(self): log.debug("running print 2") log.warning("warning mode") class TestTest(MyTest): def __init__(self): log.debug("init subclass")
def _raise_new_job(self): log.debug("start new job") newjobD = SendJob(self) newjobD.show()
#!/usr/bin/env python import os,sys import hlog as log log.debug("starting test.") class MyTest(object): def __init__(self): log.debug("running init") for i in range(10): log.info("info mode") def print1(self): log.debug("running print 1") log.debug("debug mode") def print3(self): log.debug("print 3 , here we raise an exception") value = 0/0 def print2(self): log.debug("running print 2") log.warning("warning mode") class TestTest(MyTest): def __init__(self): log.debug("init subclass") super(TestTest,self).__init__()