Changeset 3838:535e89eb786f in orange


Ignore:
Timestamp:
05/08/08 13:27:26 (6 years ago)
Author:
miha <miha.stajdohar@…>
Branch:
default
Convert:
724cfa628e3eadff3903721cb9c8c201982961af
Message:

fixed: qt crashes when changing graph
vertical nav / sel toolbar
new widget size

Location:
orange/OrangeWidgets/Prototypes
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • orange/OrangeWidgets/Prototypes/OWNetwork.py

    r3829 r3838  
    6060        self.mainArea.layout().addWidget(self.graph) 
    6161         
    62         self.tabs = OWGUI.tabWidget(self.controlArea) 
     62        self.hcontroArea = OWGUI.widgetBox(self.controlArea, orientation='horizontal') 
     63         
     64        self.tabs = OWGUI.tabWidget(self.hcontroArea) 
    6365        self.displayTab = OWGUI.createTabPage(self.tabs, "Display") 
    6466        self.markTab = OWGUI.createTabPage(self.tabs, "Mark") 
     
    6769 
    6870        self.optimizeBox = OWGUI.radioButtonsInBox(self.displayTab, self, "optimizeWhat", [], "Optimize", addSpace=False) 
    69         OWGUI.button(self.optimizeBox, self, "Random", callback=self.random) 
    70         self.frButton = OWGUI.button(self.optimizeBox, self, "Fruchterman Reingold", callback=self.fr, toggleButton=1) 
    71         OWGUI.spin(self.optimizeBox, self, "frSteps", 1, 10000, 1, label="Iterations: ") 
    72         #OWGUI.button(self.optimizeBox, self, "F-R Special", callback=self.frSpecial) 
    73         OWGUI.button(self.optimizeBox, self, "F-R Radial", callback=self.frRadial) 
    74         OWGUI.button(self.optimizeBox, self, "Circular Original", callback=self.circularOriginal) 
    75         OWGUI.button(self.optimizeBox, self, "Circular Random", callback=self.circularRandom) 
    76         OWGUI.button(self.optimizeBox, self, "Circular Crossing Reduction", callback=self.circularCrossingReduction) 
     71         
     72        OWGUI.label(self.optimizeBox, self, "Select layout optimization method:") 
     73        self.optMethod = 0 
     74        self.optCombo = OWGUI.comboBox(self.optimizeBox, self, "optMethod", callback=self.setOptMethod) 
     75        self.optCombo.addItem("Random") 
     76        self.optCombo.addItem("Fruchterman Reingold") 
     77        self.optCombo.addItem("Fruchterman Reingold Radial") 
     78        self.optCombo.addItem("Circular Crossing Reduction") 
     79        self.optCombo.addItem("Circular Original") 
     80        self.optCombo.addItem("Circular Random") 
     81         
     82        self.stepsSpin = OWGUI.spin(self.optimizeBox, self, "frSteps", 1, 10000, 1, label="Iterations: ") 
     83        self.stepsSpin.setEnabled(False) 
     84         
     85        self.optButton = OWGUI.button(self.optimizeBox, self, "Optimize layout", callback=self.optLayout, toggleButton=1) 
     86         
     87#        OWGUI.button(self.optimizeBox, self, "Random", callback=self.random) 
     88#        self.frButton = OWGUI.button(self.optimizeBox, self, "Fruchterman Reingold", callback=self.fr, toggleButton=1) 
     89#        OWGUI.spin(self.optimizeBox, self, "frSteps", 1, 10000, 1, label="Iterations: ") 
     90#        #OWGUI.button(self.optimizeBox, self, "F-R Special", callback=self.frSpecial) 
     91#        OWGUI.button(self.optimizeBox, self, "F-R Radial", callback=self.frRadial) 
     92#        OWGUI.button(self.optimizeBox, self, "Circular Original", callback=self.circularOriginal) 
     93#        OWGUI.button(self.optimizeBox, self, "Circular Random", callback=self.circularRandom) 
     94#        OWGUI.button(self.optimizeBox, self, "Circular Crossing Reduction", callback=self.circularCrossingReduction) 
    7795 
    7896        self.colorCombo = OWGUI.comboBox(self.displayTab, self, "color", box = "Color attribute", callback=self.setVertexColor) 
     
    142160                 
    143161        T = OWToolbars.NavigateSelectToolbar 
    144         self.zoomSelectToolbar = T(self, self.controlArea, self.graph, self.autoSendSelection, 
     162        self.zoomSelectToolbar = T(self, self.hcontroArea, self.graph, self.autoSendSelection, 
    145163                                  buttons = (T.IconZoom, T.IconZoomExtent, T.IconZoomSelection, ("", "", "", None, None, 0, "navigate"), T.IconPan,  
    146164                                             ("Move selection", "buttonMoveSelection", "activateMoveSelection", QIcon(OWToolbars.dlg_select), Qt.ArrowCursor, 1, "select"), 
     
    168186        self.infoTab.layout().addStretch(1) 
    169187        self.protoTab.layout().addStretch(1) 
    170         self.resize(850, 700)     
     188         
     189        self.resize(1000, 600) 
    171190 
    172191    def collapse(self): 
     
    327346            return 
    328347        #print "OWNetwork/setGraph: new visualizer..." 
    329         self.visualize = NetworkOptimization(graph, self) 
    330         print self.visualize.coors 
    331         print self.visualize.coors[0] 
    332          
    333         self.nVertices = len(graph) 
    334         self.nShown = len(graph) 
     348        self.visualize = NetworkOptimization(graph) 
     349         
     350        self.nVertices = graph.nVertices 
     351        self.nShown = graph.nVertices 
    335352        self.nEdges = len(graph.getEdges()) 
     353         
    336354        if self.nEdges > 0: 
    337355            self.verticesPerEdge = float(self.nVertices) / float(self.nEdges) 
     
    400418                                
    401419    def updateCanvas(self): 
    402         #ce imamo graf 
     420        # if network exists 
    403421        if self.visualize != None: 
    404             self.graph.updateCanvas()#self.visualize.xCoors, self.visualize.yCoors) 
     422            self.graph.updateCanvas() 
    405423               
    406424    def keyPressEvent(self, e): 
     
    447465    Layout Optimization 
    448466    """ 
    449      
     467    def optLayout(self): 
     468        if not self.optButton.isChecked(): 
     469            return 
     470             
     471        if self.optMethod == 0: 
     472            self.random() 
     473        elif self.optMethod == 1: 
     474            self.fr() 
     475        elif self.optMethod == 2: 
     476            self.frRadial() 
     477        elif self.optMethod == 3: 
     478            self.circularCrossingReduction() 
     479        elif self.optMethod == 4: 
     480            self.circularOriginal() 
     481        elif self.optMethod == 5: 
     482            self.circularRandom() 
     483             
     484        self.optButton.setChecked(False) 
     485     
     486    def setOptMethod(self): 
     487        if self.optMethod == 1: 
     488            self.stepsSpin.setEnabled(True) 
     489        else: 
     490            self.stepsSpin.setEnabled(False) 
     491 
    450492    def random(self): 
    451493        #print "OWNetwork/random.." 
     
    462504            return 
    463505               
    464         if not self.frButton.isChecked(): 
     506        if not self.optButton.isChecked(): 
    465507          print "not" 
    466508          self.stopOptimization = 1 
    467           self.frButton.setChecked(False) 
    468           self.frButton.setText("Fruchterman Reingold") 
     509          self.optButton.setChecked(False) 
     510          self.optButton.setText("Optimize layout") 
    469511          return 
    470512         
    471         self.frButton.setText("Stop") 
     513        self.optButton.setText("Stop") 
    472514        qApp.processEvents() 
    473515        self.stopOptimization = 0 
     
    506548                self.updateCanvas() 
    507549                 
    508         self.frButton.setChecked(False) 
    509         self.frButton.setText("Fruchterman Reingold") 
     550        self.optButton.setChecked(False) 
     551        self.optButton.setText("Optimize layout") 
    510552         
    511553    def frSpecial(self): 
  • orange/OrangeWidgets/Prototypes/OWNetworkCanvas.py

    r3829 r3838  
    3737    self.arrowv = 0 
    3838     
    39     self.pen = QPen(Qt.gray, 1) 
     39    self.pen = QPen(Qt.lightGray, 1) 
    4040 
    4141class NetworkCurve(QwtPlotCurve): 
    4242  def __init__(self, parent, pen = QPen(Qt.black), xData = None, yData = None): 
    43       QwtPlotCurve.__init__(self, "NetworkCurve") 
    44  
    45       if xData != None and yData != None: 
    46           self.setRawData(xData, yData) 
    47  
     43      QwtPlotCurve.__init__(self, "Network Curve") 
     44 
     45      #if xData != None and yData != None: 
     46      #    self.setRawData(xData, yData) 
     47 
     48      #self.setData([0], [0]) 
    4849      self.coors = None 
    4950      self.vertices = [] 
     
    113114      vertex.show = True 
    114115     
     116  def changed(self): 
     117      self.itemChanged() 
     118     
    115119  def draw(self, painter, xMap, yMap, rect): 
    116120    for edge in self.edges: 
     
    129133        pX = xMap.transform(self.coors[0][vertex.index])   #dobimo koordinati v pikslih (tipa integer) 
    130134        pY = yMap.transform(self.coors[1][vertex.index])   #ki se stejeta od zgornjega levega kota canvasa 
    131          
    132135        if vertex.selected:     
    133136          painter.setPen(QPen(Qt.yellow, 3)) 
     
    286289       
    287290  def removeSelection(self, replot = True): 
    288       print "remove selection" 
    289291      for vertex in self.vertices: 
    290292        vertex.selected = False 
     
    546548   
    547549  def updateData(self): 
    548       print "OWGraphDrawerCanvas/updateData..." 
    549550      self.removeDrawingCurves(removeLegendItems = 0) 
    550551      self.tips.removeAll() 
     
    553554       
    554555      selection = self.networkCurve.getSelectedVertices() 
    555       print "selection" 
    556       print selection 
    557       print "self.insideview" 
    558       print self.insideview 
     556       
    559557      if self.insideview == 1 and len(selection) >= 1: 
    560558          visible = set() 
    561559          visible |= set(selection) 
    562560          visible |= self.getNeighboursUpTo(selection[0], self.insideviewNeighbours) 
    563           print "visible" 
    564           print visible 
    565561          self.networkCurve.setHiddenVertices(set(range(self.nVertices)) - visible) 
    566562 
     
    568564       
    569565      for r in self.circles: 
    570           print "r: " + str(r) 
    571566          step = 2 * pi / 64; 
    572567          fi = 0 
     
    583578      self.drawLabels() 
    584579      self.drawToolTips() 
     580      self.zoomExtent() 
    585581  
    586582  def drawToolTips(self): 
     
    705701          self.nEdges += 1 
    706702           
    707       #self.networkCurve.setData(visualizer.coors[0], visualizer.coors[1]) 
    708       print "new" 
     703      self.networkCurve = NetworkCurve(self) 
    709704      self.networkCurve.coors = visualizer.coors 
    710705      self.networkCurve.vertices = self.vertices 
    711706      self.networkCurve.edges = self.edges 
    712    
     707      self.networkCurve.changed() 
     708       
    713709  def updateCanvas(self): 
    714710      self.setAxisAutoScaled() 
Note: See TracChangeset for help on using the changeset viewer.