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))
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)