| 1457 | } |
| 1458 | |
| 1459 | void CsvApplication::copySelection() { |
| 1460 | table_index_t row_top, row_bottom, col_top, col_bottom; |
| 1461 | std::string copy = ""; |
| 1462 | std::vector<std::string> vec; |
| 1463 | std::vector<std::vector<std::string>> block; |
| 1464 | |
| 1465 | windows[topWindow].grid->get_selection(row_top, col_top, row_bottom, col_bottom); |
| 1466 | if( row_top == row_bottom && col_top == col_bottom ) { |
| 1467 | // copy a single cell |
| 1468 | copy = windows[topWindow].table->getCell(row_top, col_top); |
| 1469 | Fl::copy( copy.c_str(), strlen(copy.c_str()), 1 ); |
| 1470 | } else { |
| 1471 | // copy multiple cells |
| 1472 | block = windows[topWindow].table->copyBlock(row_top, col_top, row_bottom, col_bottom); |
| 1473 | |
| 1474 | for( table_index_t i = 0; i < (table_index_t) block.size(); ++i ) { |
| 1475 | vec = block.at(i); |
| 1476 | copy.append( windows[topWindow].table->encodeCsvLine( &vec, windows[topWindow].table->getDefinition() ) ); |
| 1477 | } |
| 1478 | Fl::copy( copy.c_str(), strlen(copy.c_str()), 1 ); |
| 1479 | } |
| 1480 | } |
| 1481 | |
| 1482 | |
| 1483 | void CsvApplication::paste(bool askUser, bool fillSelection) { |
no test coverage detected