Example #1
0
    def set_orientation(self, orientation):
        if self.orientation == orientation:
            return

        self.orientation = orientation

        if self.orientation == Qt.Vertical:
            height = max(
                [item.boundingRect().height() for item in self.label_items])
            total_height = height * max(5, len(self.label_items))
            interval = (total_height -
                        self.label_items[-1].boundingRect().height()) / (
                            len(self.label_items) - 1)
            self.gradient_item.setRect(10, 0, self.gradient_width,
                                       total_height)
            self.gradient.setStart(10, 0)
            self.gradient.setFinalStop(10, total_height)
            self.gradient_item.setBrush(QBrush(self.gradient))
            self.gradient_item.setPen(QPen(Qt.NoPen))
            y = 0
            x = 30
            for item in self.label_items:
                move_item_xy(item, x, y, self.parent.graph.animate_plot)
                y += interval
            self.rect = QRectF(
                10, 0, self.gradient_width +
                max([item.boundingRect().width()
                     for item in self.label_items]),
                self.label_items[0].boundingRect().height() *
                max(5, len(self.label_items)))
        else:
            width = 50
            height = max(
                [item.boundingRect().height() for item in self.label_items])
            total_width = width * max(5, len(self.label_items))
            interval = (total_width -
                        self.label_items[-1].boundingRect().width()) / (
                            len(self.label_items) - 1)

            self.gradient_item.setRect(0, 0, total_width, self.gradient_width)
            self.gradient.setStart(0, 0)
            self.gradient.setFinalStop(total_width, 0)
            self.gradient_item.setBrush(QBrush(self.gradient))
            self.gradient_item.setPen(QPen(Qt.NoPen))
            x = 0
            y = 30
            for item in self.label_items:
                move_item_xy(item, x, y, self.parent.graph.animate_plot)
                x += interval
            self.rect = QRectF(0, 0, total_width, self.gradient_width + height)
Example #2
0
    def update_items(self):
        """
            Updates the legend, repositioning the items according to the legend's orientation. 
        """
        self.box_rect = QRectF()
        x = y = 0

        for lst in self.items.itervalues():
            for item in lst:
                if hasattr(item, 'text_item'):
                    item.text_item.setDefaultTextColor(
                        self.graph.color(OWPalette.Text))
                if hasattr(item, 'rect_item'):
                    item.rect_item.setBrush(self.graph.color(OWPalette.Canvas))
                if hasattr(item, 'set_orientation'):
                    item.set_orientation(self._orientation)

        if self._orientation == Qt.Vertical:
            for lst in self.items.itervalues():
                for item in lst:
                    if self.max_size.height() and y and y + item.boundingRect(
                    ).height() > self.max_size.height():
                        y = 0
                        x = x + item.boundingRect().width()
                    self.box_rect = self.box_rect | item.boundingRect(
                    ).translated(x, y)
                    move_item_xy(item, x, y, self.graph.animate_plot)
                    y = y + item.boundingRect().height()
        elif self._orientation == Qt.Horizontal:
            for lst in self.items.itervalues():
                max_h = max(item.boundingRect().height() for item in lst)
                for item in lst:
                    if self.max_size.width() and x and x + item.boundingRect(
                    ).width() > self.max_size.width():
                        x = 0
                        y = y + max_h
                    self.box_rect = self.box_rect | item.boundingRect(
                    ).translated(x, y)
                    move_item_xy(item, x, y, self.graph.animate_plot)
                    x = x + item.boundingRect().width()
                if lst:
                    x = 0
                    y = y + max_h
Example #3
0
 def update_items(self):
     """
         Updates the legend, repositioning the items according to the legend's orientation. 
     """
     self.box_rect = QRectF()
     x = y = 0
     
     for lst in self.items.itervalues():
         for item in lst:
             if hasattr(item, 'text_item'):
                 item.text_item.setDefaultTextColor(self.graph.color(OWPalette.Text))
             if hasattr(item, 'rect_item'):
                 item.rect_item.setBrush(self.graph.color(OWPalette.Canvas))
             if hasattr(item, 'set_orientation'):
                 item.set_orientation(self._orientation)
                 
     if self._orientation == Qt.Vertical:
         for lst in self.items.itervalues():
             for item in lst:
                 if self.max_size.height() and y and y + item.boundingRect().height() > self.max_size.height():
                     y = 0
                     x = x + item.boundingRect().width()
                 self.box_rect = self.box_rect | item.boundingRect().translated(x, y)
                 move_item_xy(item, x, y, self.graph.animate_plot)
                 y = y + item.boundingRect().height()
     elif self._orientation == Qt.Horizontal:
         for lst in self.items.itervalues():
             max_h = max(item.boundingRect().height() for item in lst)
             for item in lst:
                 if self.max_size.width() and x and x + item.boundingRect().width() > self.max_size.width():
                     x = 0
                     y = y + max_h
                 self.box_rect = self.box_rect | item.boundingRect().translated(x, y)
                 move_item_xy(item, x, y, self.graph.animate_plot)
                 x = x + item.boundingRect().width()                
             if lst:
                 x = 0
                 y = y + max_h
     else:
         qDebug('A bad orientation of the legend')
Example #4
0
 def set_orientation(self, orientation):
     if self.orientation == orientation:
         return
         
     self.orientation = orientation
     
     if self.orientation == Qt.Vertical:
         height = max([item.boundingRect().height() for item in self.label_items])
         total_height = height * max(5, len(self.label_items))
         interval = (total_height - self.label_items[-1].boundingRect().height()) / (len(self.label_items) -1)
         self.gradient_item.setRect(10, 0, self.gradient_width, total_height)
         self.gradient.setStart(10, 0)
         self.gradient.setFinalStop(10, total_height)
         self.gradient_item.setBrush(QBrush(self.gradient))
         self.gradient_item.setPen(QPen(Qt.NoPen))
         y = 0
         x = 30
         for item in self.label_items:
             move_item_xy(item, x, y, self.parent.graph.animate_plot)
             y += interval
         self.rect = QRectF(10, 0, self.gradient_width + max([item.boundingRect().width() for item in self.label_items]), self.label_items[0].boundingRect().height() * max(5, len(self.label_items)))
     else:
         width = 50
         height = max([item.boundingRect().height() for item in self.label_items])
         total_width = width * max(5, len(self.label_items))
         interval = (total_width - self.label_items[-1].boundingRect().width()) / (len(self.label_items) -1)
         
         self.gradient_item.setRect(0, 0, total_width, self.gradient_width)
         self.gradient.setStart(0, 0)
         self.gradient.setFinalStop(total_width, 0)
         self.gradient_item.setBrush(QBrush(self.gradient))
         self.gradient_item.setPen(QPen(Qt.NoPen))
         x = 0
         y = 30
         for item in self.label_items:
             move_item_xy(item, x, y, self.parent.graph.animate_plot)
             x += interval
         self.rect = QRectF(0, 0, total_width, self.gradient_width + height)