示例#1
0
    def _handle_table_paste(self):
        indices = []
        for index in self.tableView.selectedIndexes():
            indices.append((index.row(), index.column()))

        if not indices:
            return
        top_left = indices[0]

        data_type = QApplication.instance().clipboard().mimeData()

        if not data_type.hasText():
            # Don't paste images etc.
            return

        clipboard_text = QApplication.instance().clipboard().text()
        copied_table = extract_table_from_clipboard_text(clipboard_text)

        if len(copied_table) == 1 and len(copied_table[0]) == 1:
            # Only one value, so put it in all selected cells
            self._do_bulk_update(copied_table[0][0])
            return

        self.model.update_data_from_clipboard(
            copied_table, top_left, self._get_hidden_column_indices())
示例#2
0
    def test_non_empty_cells_surrounded_by_empty_cells(self):
        clipboard_data = '\t\t\t\n\tB2\tC2\t\n\tB3\tC3\t\r\n\t\t\t'
        table_data = [['', '', '', ''], ['', 'B2', 'C2', ''],
                      ['', 'B3', 'C3', ''], ['', '', '', '']]

        assert extract_table_from_clipboard_text(clipboard_data) == table_data
        assert convert_table_to_clipboard_text(table_data) == \
            '\t\t\t\n\tB2\tC2\t\n\tB3\tC3\t\n\t\t\t'
示例#3
0
 def test_mix_of_non_empty_cells_and_empty_cells(self):
     clipboard_data = '\tB1\nA2\t'
     table_data = [['', 'B1'], ['A2', '']]
     assert extract_table_from_clipboard_text(clipboard_data) == table_data
     assert convert_table_to_clipboard_text(table_data) == clipboard_data
示例#4
0
 def test_multiple_non_empty_cells_with_excel_encoding(self):
     # Excel uses \r\n as the line separator
     clipboard_data = 'A1\tB1\r\nA2\tB2'
     assert extract_table_from_clipboard_text(clipboard_data) \
            == [['A1', 'B1'],
                ['A2', 'B2']]
示例#5
0
 def test_multiple_non_empty_cells(self):
     clipboard_data = 'A1\tB1\nA2\tB2'
     table_data = [['A1', 'B1'], ['A2', 'B2']]
     assert extract_table_from_clipboard_text(clipboard_data) == table_data
     assert convert_table_to_clipboard_text(table_data) == clipboard_data
示例#6
0
 def test_multiple_empty_cells(self):
     clipboard_data = '\t\n\t'
     table_data = [['', ''], ['', '']]
     assert extract_table_from_clipboard_text(clipboard_data) == table_data
     assert convert_table_to_clipboard_text(table_data) == clipboard_data
示例#7
0
 def test_non_empty_column(self):
     clipboard_data = 'A\nB'
     table_data = [['A'], ['B']]
     assert extract_table_from_clipboard_text(clipboard_data) == table_data
     assert convert_table_to_clipboard_text(table_data) == clipboard_data
示例#8
0
 def test_non_empty_row(self):
     clipboard_data = 'A\tB\tC'
     table_data = [['A', 'B', 'C']]
     assert extract_table_from_clipboard_text(clipboard_data) == table_data
     assert convert_table_to_clipboard_text(table_data) == clipboard_data
示例#9
0
 def test_empty_row(self):
     clipboard_data = '\t\t'
     table_data = [['', '', '']]
     assert extract_table_from_clipboard_text(clipboard_data) == table_data
     assert convert_table_to_clipboard_text(table_data) == clipboard_data
示例#10
0
 def test_one_non_empty_cell(self):
     clipboard_data = 'A'
     table_data = [['A']]
     assert extract_table_from_clipboard_text(clipboard_data) == table_data
     assert convert_table_to_clipboard_text(table_data) == clipboard_data
示例#11
0
def test_convert_and_extract_table_for_empty_column():
    clipboard_data = '\n'
    table_data = [[''], ['']]
    assert extract_table_from_clipboard_text(clipboard_data) == table_data
    assert convert_table_to_clipboard_text(table_data) == clipboard_data
示例#12
0
def test_convert_and_extract_table_for_one_empty_cell():
    clipboard_data = ''
    table_data = [['']]
    assert extract_table_from_clipboard_text(clipboard_data) == table_data
    assert convert_table_to_clipboard_text(table_data) == clipboard_data