Ejemplo n.º 1
0
 def populate_from_menu(menu):
     for act in menu.actions():
         if hasattr(act, 'short'):
             shortcut_text = act.short.key().toString()
         else:
             shortcut_text = ''
         text = '{:s}\t{:s}: {:s}'.format(
             shortcut_text,
             menu.title().replace('&',''),
             act.text().replace('&',''),
         )
         self.help_item_model.appendRow(QtGui.QStandardItem(text))
Ejemplo n.º 2
0
    def add_dataitem(self, series, name=None, metadata=None):
        """
        Add dataitem to model

        Parameters
        ----------
        series : pandas.Series
        name : object | str | None
        """
        row_idx = min(len(self.items), len(COLORS)) if self.items else 0
        if not isinstance(series, pd.Series):
            logger.error('Cannot add item of type {}: {}'
                         ''.format(type(series),
                                   str(series)[:100]))
            return
        if name is None:
            if series.name is None:
                name = '{} - {}'.format(COLORS[row_idx], len(series))
                logger.warn('Found no name for series, using color and '
                            'number of values: "{}"'.format(name))
            else:
                series.name = str(series.name)
                name = series.name
        name = str(name)
        if series.empty:
            logger.error('series {} is empty, cannot add to view'.format(name))
            return

        # Set xaxis_unit variable if this is the first data ever added
        if self.total_items_ever_added == 0:
            if isinstance(series.index, pd.DatetimeIndex):
                self.xaxis_unit = XAXIS_TIME
            else:
                self.xaxis_unit = XAXIS_NUMBER

        if isinstance(series.index, pd.DatetimeIndex):
            if not self.xaxis_unit_is_time():
                logger.warning("Cannot add series with datetimeindex when "
                               "x-axis type is not datetime")
                return
        elif self.xaxis_unit_is_time():
            logger.warning("Cannot add series without datetimeindex when "
                           "x-axis type is datetime")
            return


#       NOTE: Item color examples: http://ynonperek.com/q.t-mvc-customize-items
        item_color = QtGui.QColor(COLORS[row_idx])
        item_color.setAlphaF(DATA_ALPHA)

        item = DataItem(series, name, metadata=metadata)
        item.setCheckState(Qt.Checked)
        item.setCheckable(True)

        self.items.append(item)
        self.total_items_ever_added += 1

        colorpatch_item = QtGui.QStandardItem('')
        colorpatch_item.setData(QtGui.QBrush(item_color),
                                Qt.BackgroundColorRole)

        self.item_model.setItem(row_idx, 0, colorpatch_item)
        self.item_model.setItem(row_idx, 1, item)

        self.sig_item_added.emit(item)