Changeset 8280:64a11a9b8152 in orange


Ignore:
Timestamp:
05/28/11 16:59:19 (3 years ago)
Author:
Noughmad <Noughmad@…>
Branch:
default
Convert:
3f4fd64eca3010b496c52b92716e50b1cfe98230
Message:

Distribute graph area and axis areas properly

Location:
orange/OrangeWidgets
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • orange/OrangeWidgets/Graph/axis.py

    r8279 r8280  
    3535    def update(self): 
    3636        self.line_item.setLine(self.line) 
     37        self.line_item.setPen(self.style.pen()) 
    3738        self.title_item.setHtml(self.title) 
    3839         
     
    6364        # TODO 
    6465        pass 
     66         
     67     
  • orange/OrangeWidgets/Graph/curve.py

    r8275 r8280  
    2424    def __init__(self, data, style, graph, parent=None): 
    2525        QGraphicsItemGroup.__init__(self,  parent) 
     26        self.data = data 
     27        self.style = style 
    2628        self.graph = graph 
    27         self.items = [] 
    28         self.path = QPainterPath() 
    29         if data: 
    30             (start_x, start_y) = self.graph.map_to_graph(data[0]) 
    31             self.path.moveTo(start_x, start_y) 
    32             for data_point in data: 
    33                 (x, y) = self.graph.map_to_graph(data_point) 
    34                 self.path.lineTo(x, y) 
    35             self.path_item = QGraphicsPathItem(self.path, self) 
    36             self.path_item.setPen(style.pen()) 
    37             self.path_item.show() 
     29        self.update() 
    3830     
    3931    def __setattr__(self, name, value): 
    4032        unisetattr(self, name, value, QGraphicsItemGroup) 
    4133         
     34    def update(self): 
     35        self.items = [] 
     36        self.path = QPainterPath() 
     37        if self.data: 
     38            (start_x, start_y) = self.graph.map_to_graph(self.data[0]) 
     39            self.path.moveTo(start_x, start_y) 
     40            for data_point in self.data: 
     41                (x, y) = self.graph.map_to_graph(data_point) 
     42                self.path.lineTo(x, y) 
     43            self.path_item = QGraphicsPathItem(self.path, self) 
     44            self.path_item.setPen(self.style.pen()) 
     45            self.path_item.show() 
     46         
    4247     
  • orange/OrangeWidgets/QtGraph.py

    r8279 r8280  
    6363        self.show_legend = show_legend 
    6464        self.legend = None 
     65        self.title_item = None 
    6566         
    6667        self.canvas = QGraphicsScene(self) 
     
    105106            self.legend.hide() 
    106107            self.legend = None 
     108        self.replot() 
    107109             
    108110    def graph_area_rect(self): 
     111        """ 
    109112        rect = self.childrenRect() 
    110113        if xBottom in self.axes: 
     
    113116            rect.setLeft(rect.left() + self.axis_margin) 
    114117        return rect 
     118        """ 
     119        return self.graph_area 
    115120         
    116121    def map_to_graph_cart(self, point, axes=None): 
     
    152157            self.setTitle(self.mainTitle) 
    153158        else: 
    154             self.setTitle(QwtText()) 
     159            self.setTitle('') 
    155160        self.repaint() 
    156161 
     
    246251        # self.tips.removeAll() 
    247252        self.zoomStack = [] 
     253        self.replot() 
    248254         
    249255    def setXlabels(self, labels): 
     
    282288            data.append( (xData[i], yData[i]) ) 
    283289            c = curve.Curve(data, self.palette.line_styles[0], self) 
     290            c.setPos(self.graph_area.bottomLeft()) 
    284291            self.canvas.addItem(c) 
    285292            self.curves.append(c) 
     
    287294         
    288295    def addAxis(self, axis_id, line, text): 
    289         a = axis.Axis() 
    290         self.axes[id] = a 
    291          
     296        pass         
     297     
    292298    def removeAllSelections(self): 
    293299        pass 
     
    302308         
    303309        if self.showMainTitle and self.mainTitle: 
     310            if self.title_item: 
     311                self.canvas.removeItem(self.title_item) 
     312                del self.title_item 
    304313            self.title_item = QGraphicsTextItem(self.mainTitle) 
    305314            title_size = self.title_item.boundingRect().size() 
     
    308317            self.canvas.addItem(self.title_item) 
    309318            graph_rect.setTop(graph_rect.top() + self.title_margin) 
    310              
     319         
    311320        axis_rects = dict() 
    312321        margin = min(self.axis_margin,  graph_rect.height()/4, graph_rect.height()/4) 
     322        margin = 40 
    313323        if xBottom in self.shown_axes: 
    314             bottom_rect = graph_rect 
    315             bottom_rect.setTop( bottom_rect.top() - margin) 
     324            bottom_rect = QRectF(graph_rect) 
     325            bottom_rect.setTop( bottom_rect.bottom() - margin) 
    316326            axis_rects[xBottom] = bottom_rect 
    317327            graph_rect.setBottom( graph_rect.bottom() - margin) 
    318328        if xTop in self.shown_axes: 
    319             top_rect = graph_rect 
    320             top_rect.setBottom(top_rect.bottom() + margin) 
     329            top_rect = QRectF(graph_rect) 
     330            top_rect.setBottom(top_rect.top() + margin) 
    321331            axis_rects[xTop] = top_rect 
    322332            graph_rect.setTop(graph_rect.top() + margin) 
    323333        if yLeft in self.shown_axes: 
    324             left_rect = graph_rect 
     334            left_rect = QRectF(graph_rect) 
    325335            left = graph_rect.left() + margin 
    326336            left_rect.setRight(left) 
     
    332342                axis_rects[xTop].setLeft(left) 
    333343        if yRight in self.shown_axes: 
    334             right_rect = graph_rect 
     344            right_rect = QRectF(graph_rect) 
    335345            right = graph_rect.right() - margin 
    336346            right_rect.setLeft(right) 
     
    341351            if xTop in axis_rects: 
    342352                axis_rects[xTop].setRight(right) 
    343          
     353                 
     354        self.graph_area = graph_rect 
     355             
     356        for id, item in self.axes.iteritems(): 
     357            self.canvas.removeItem(item) 
     358             
    344359        self.axes = dict() 
    345360             
     
    350365                line = QLineF(rect.bottomLeft(), rect.bottomRight()) 
    351366            elif id is yLeft: 
    352                 line = QLineF(rect.bottomLeft(), rect.topLeft()) 
     367                line = QLineF(rect.bottomRight(), rect.topRight()) 
    353368            elif id is yRight: 
    354369                line = QLineF(rect.bottomRight(), rect.topRight()) 
    355             self.axes[id] = axis.Axis(rect.size, 'Test', line ) 
     370            line.translate(-rect.topLeft()) 
     371            self.axes[id] = axis.Axis(rect.size(), 'Test', line ) 
    356372            self.axes[id].setPos(rect.topLeft()) 
    357373            self.canvas.addItem(self.axes[id]) 
    358             r = QGraphicsRectItem(rect) 
    359             r.setPen(QPen(Qt.red)) 
    360             self.canvas.addItem(r) 
     374             
     375        for c in self.curves: 
     376            c.update() 
     377        self.setSceneRect(self.canvas.itemsBoundingRect()) 
Note: See TracChangeset for help on using the changeset viewer.