| 605 | } |
| 606 | |
| 607 | void MainWindow::saveSelectedGCodeFiles() |
| 608 | { |
| 609 | qDebug(); |
| 610 | if (m_project->pinsPlacedMessage()) |
| 611 | return; |
| 612 | |
| 613 | mvector<GCode::File*> gcFiles(m_project->files<GCode::File>()); |
| 614 | for (size_t i = 0; i < gcFiles.size(); ++i) { |
| 615 | if (!gcFiles[i]->itemGroup()->isVisible()) |
| 616 | gcFiles.remove(i--); |
| 617 | } |
| 618 | |
| 619 | using Key = std::pair<size_t, Side>; |
| 620 | using GcFiles = QList<GCode::File*>; |
| 621 | |
| 622 | std::map<Key, GcFiles> gcFilesMap; |
| 623 | for (GCode::File* file : gcFiles) |
| 624 | gcFilesMap[{ file->getTool().hash2(), file->side() }].append(file); |
| 625 | |
| 626 | for (const auto& [key, files] : gcFilesMap) { |
| 627 | if (files.size() < 2) { |
| 628 | for (GCode::File* file : files) { |
| 629 | QString name(GCode::GCUtils::getLastDir().append(file->shortName())); |
| 630 | if (!name.endsWith(GCode::Settings::fileExtension())) |
| 631 | name += QStringList({ "_TS", "_BS" })[file->side()]; |
| 632 | |
| 633 | name = QFileDialog::getSaveFileName(nullptr, |
| 634 | QObject::tr("Save GCode file"), |
| 635 | name, |
| 636 | QObject::tr("GCode (*.%1)").arg(GCode::Settings::fileExtension())); |
| 637 | |
| 638 | if (name.isEmpty()) |
| 639 | return; |
| 640 | file->save(name); |
| 641 | file->itemGroup()->setVisible(false); |
| 642 | } |
| 643 | } else { |
| 644 | QString name(GCode::GCUtils::getLastDir().append(files.first()->getTool().nameEnc())); |
| 645 | if (!name.endsWith(GCode::Settings::fileExtension())) |
| 646 | name += QStringList({ "_TS", "_BS" })[files.first()->side()]; |
| 647 | |
| 648 | name = QFileDialog::getSaveFileName(nullptr, |
| 649 | QObject::tr("Save GCode file"), |
| 650 | name, |
| 651 | QObject::tr("GCode (*.%1)").arg(GCode::Settings::fileExtension())); |
| 652 | |
| 653 | if (name.isEmpty()) |
| 654 | return; |
| 655 | mvector<QString> sl; |
| 656 | |
| 657 | sl.push_back(tr(";\tContains files:")); |
| 658 | for (auto file : files) |
| 659 | sl.push_back(";\t" + file->shortName()); |
| 660 | for (auto file : files) { |
| 661 | file->itemGroup()->setVisible(false); |
| 662 | file->initSave(); |
| 663 | if (file == files.front()) |
| 664 | file->statFile(); |
nothing calls this directly
no test coverage detected