示例#1
0
    def _sel_to_text(self, cell_range):
        """Copy an array portion to a unicode string"""
        if not cell_range:
            return
        row_min, row_max, col_min, col_max = get_idx_rect(cell_range)
        if col_min == 0 and col_max == (self.model().cols_loaded - 1):
            # we've selected a whole column. It isn't possible to
            # select only the first part of a column without loading more,
            # so we can treat it as intentional and copy the whole thing
            col_max = self.model().total_cols - 1
        if row_min == 0 and row_max == (self.model().rows_loaded - 1):
            row_max = self.model().total_rows - 1

        _data = self.model().get_data()
        if PY3:
            output = io.BytesIO()
        else:
            output = io.StringIO()
        try:
            np.savetxt(output,
                       _data[row_min:row_max + 1, col_min:col_max + 1],
                       delimiter='\t',
                       fmt=self.model().get_format())
        except:
            QMessageBox.warning(
                self, _("Warning"),
                _("It was not possible to copy values for "
                  "this array"))
            return
        contents = output.getvalue().decode('utf-8')
        output.close()
        return contents
示例#2
0
 def copy(self):
     """Copy text to clipboard"""
     if not self.selectedIndexes():
         return
     (row_min, row_max, col_min,
      col_max) = get_idx_rect(self.selectedIndexes())
     index = header = False
     if col_min == 0:
         col_min = 1
         index = True
     df = self.model().df
     if col_max == 0:  # To copy indices
         contents = '\n'.join(
             map(str,
                 df.index.tolist()[slice(row_min, row_max + 1)]))
     else:  # To copy DataFrame
         if (col_min == 0 or col_min == 1) and (df.shape[1] == col_max):
             header = True
         obj = df.iloc[slice(row_min, row_max + 1),
                       slice(col_min - 1, col_max)]
         output = io.StringIO()
         obj.to_csv(output, sep='\t', index=index, header=header)
         if not PY2:
             contents = output.getvalue()
         else:
             contents = output.getvalue().decode('utf-8')
         output.close()
     clipboard = QApplication.clipboard()
     clipboard.setText(contents)
示例#3
0
 def _get_table_data(self):
     """Return clipboard processed as data"""
     data = self._simplify_shape(self.table_widget.get_data())
     if self.table_widget.array_btn.isChecked():
         return array(data)
     elif pd and self.table_widget.df_btn.isChecked():
         info = self.table_widget.pd_info
         buf = io.StringIO(self.table_widget.pd_text)
         return pd.read_csv(buf, **info)
     return data
 def copy(self):
     """Copy text to clipboard"""
     if not self.selectedIndexes():
         return
     (row_min, row_max, col_min,
      col_max) = get_idx_rect(self.selectedIndexes())
     index = header = False
     df = self.model().df
     obj = df.iloc[slice(row_min, row_max + 1), slice(col_min, col_max + 1)]
     output = io.StringIO()
     obj.to_csv(output, sep='\t', index=index, header=header)
     if not PY2:
         contents = output.getvalue()
     else:
         contents = output.getvalue().decode('utf-8')
     output.close()
     clipboard = QApplication.clipboard()
     clipboard.setText(contents)