| Line |
Branch |
Decision |
Call |
Exec |
Source |
| 1 |
|
|
|
|
#include "ChrysalisExtension.h" |
| 2 |
|
|
|
|
|
| 3 |
|
|
|
|
#include <memory> |
| 4 |
|
|
|
|
|
| 5 |
|
|
|
|
#include <QLayout> |
| 6 |
|
|
|
|
#include <QFileDialog> |
| 7 |
|
|
|
|
#include <QMainWindow> |
| 8 |
|
|
|
|
#include <QToolButton> |
| 9 |
|
|
|
|
|
| 10 |
|
|
|
|
#include "Project.h" |
| 11 |
|
|
|
|
#include "MVDockingButton.h" |
| 12 |
|
|
|
|
#include "LocalServerListener.h" |
| 13 |
|
|
|
|
#include "PatternImportDialog.h" |
| 14 |
|
|
|
|
#include "MVDockWidgetTitleBar.h" |
| 15 |
|
|
|
|
#include "PatternBuilderDockWidget.h" |
| 16 |
|
|
|
|
|
| 17 |
|
|
|
|
#include "Logging.h" |
| 18 |
|
|
|
|
#define LOGGER_NAME "Chrysalis Extension" |
| 19 |
|
|
|
|
|
| 20 |
|
|
|
|
using namespace CLO3D; |
| 21 |
|
|
|
|
using namespace Chrysalis; |
| 22 |
|
|
|
|
|
| 23 |
|
|
|
✗ |
void ChrysalisExtension::configureMenu(QMenu* extensionMenu) { |
| 24 |
|
|
0/11
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 6 not invoked.
✗ Call 7 not invoked.
✗ Call 10 not invoked.
✗ Call 11 not invoked.
✗ Call 12 not invoked.
✗ Call 13 not invoked.
✗ Call 16 not invoked.
|
✗ |
const auto menu = new QMenu("Chrysalis", extensionMenu); |
| 25 |
|
|
0/4
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
|
✗ |
extensionMenu->addMenu(menu); |
| 26 |
|
|
|
|
|
| 27 |
|
|
0/25
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
✗ Call 5 not invoked.
✗ Call 6 not invoked.
✗ Call 7 not invoked.
✗ Call 8 not invoked.
✗ Call 9 not invoked.
✗ Call 10 not invoked.
✗ Call 11 not invoked.
✗ Call 14 not invoked.
✗ Call 15 not invoked.
✗ Call 16 not invoked.
✗ Call 17 not invoked.
✗ Call 18 not invoked.
✗ Call 19 not invoked.
✗ Call 20 not invoked.
✗ Call 21 not invoked.
✗ Call 22 not invoked.
✗ Call 23 not invoked.
✗ Call 24 not invoked.
✗ Call 25 not invoked.
✗ Call 28 not invoked.
|
✗ |
const auto fileDialog = new QFileDialog(menu); |
| 28 |
|
|
0/11
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
✗ Call 7 not invoked.
✗ Call 8 not invoked.
✗ Call 11 not invoked.
✗ Call 12 not invoked.
✗ Call 13 not invoked.
✗ Call 14 not invoked.
|
✗ |
fileDialog->setNameFilter(Project::PROJECT_NAME_FILTER); |
| 29 |
|
|
0/11
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
✗ Call 7 not invoked.
✗ Call 8 not invoked.
✗ Call 11 not invoked.
✗ Call 12 not invoked.
✗ Call 13 not invoked.
✗ Call 14 not invoked.
|
✗ |
fileDialog->setDefaultSuffix(Project::PROJECT_FILE_SUFFIX); |
| 30 |
|
|
|
|
|
| 31 |
|
|
0/11
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 6 not invoked.
✗ Call 7 not invoked.
✗ Call 10 not invoked.
✗ Call 11 not invoked.
✗ Call 12 not invoked.
✗ Call 13 not invoked.
✗ Call 16 not invoked.
|
✗ |
const auto importPatternAction = new QAction("Import", menu); |
| 32 |
|
|
0/5
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 4 not invoked.
✗ Call 5 not invoked.
✗ Call 6 not invoked.
|
✗ |
QObject::connect(importPatternAction, &QAction::triggered, fileDialog, [fileDialog]{ |
| 33 |
|
|
0/14
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
✗ Call 5 not invoked.
✗ Call 6 not invoked.
✗ Call 7 not invoked.
✗ Call 8 not invoked.
✗ Call 9 not invoked.
✗ Call 10 not invoked.
✗ Call 11 not invoked.
✗ Call 12 not invoked.
✗ Call 13 not invoked.
|
✗ |
fileDialog->exec(); |
| 34 |
|
|
|
✗ |
}); |
| 35 |
|
|
0/5
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 4 not invoked.
✗ Call 5 not invoked.
✗ Call 6 not invoked.
|
✗ |
QObject::connect(fileDialog, &QFileDialog::accepted, importPatternAction, [fileDialog] { |
| 36 |
|
|
0/11
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 6 not invoked.
✗ Call 7 not invoked.
✗ Call 10 not invoked.
✗ Call 13 not invoked.
✗ Call 14 not invoked.
✗ Call 15 not invoked.
✗ Call 16 not invoked.
|
✗ |
const auto& filePath = fileDialog->selectedFiles().first().toStdString(); |
| 37 |
|
|
0/4
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 4 not invoked.
✗ Call 5 not invoked.
|
✗ |
LOG_INFO("Importing project: {}", filePath); |
| 38 |
|
|
|
|
|
| 39 |
|
|
0/3
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
|
✗ |
auto project = Project::read(filePath); |
| 40 |
|
|
0/7
✗ Call 0 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
✗ Call 5 not invoked.
✗ Call 6 not invoked.
✗ Call 9 not invoked.
✗ Call 14 not invoked.
|
✗ |
const auto parametersModel = new UI::ParametersModel(project->getParameters()); |
| 41 |
|
|
0/4
✗ Call 0 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
✗ Call 9 not invoked.
|
✗ |
const auto parametersDelegate = new UI::ParameterDelegate(parametersModel); |
| 42 |
|
|
0/12
✗ Call 0 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
✗ Call 5 not invoked.
✗ Call 6 not invoked.
✗ Call 7 not invoked.
✗ Call 8 not invoked.
✗ Call 11 not invoked.
✗ Call 12 not invoked.
✗ Call 13 not invoked.
✗ Call 14 not invoked.
✗ Call 17 not invoked.
|
✗ |
const auto importer = new PatternImporter(std::move(project)); |
| 43 |
|
|
0/12
✗ Call 0 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
✗ Call 7 not invoked.
✗ Call 8 not invoked.
✗ Call 9 not invoked.
✗ Call 10 not invoked.
✗ Call 11 not invoked.
✗ Call 12 not invoked.
✗ Call 13 not invoked.
✗ Call 14 not invoked.
✗ Call 19 not invoked.
|
✗ |
(new UI::PatternImportDialog(importer, parametersModel, parametersDelegate))->exec(); |
| 44 |
|
|
0/4
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
|
✗ |
}); |
| 45 |
|
|
0/5
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
|
✗ |
menu->addAction(importPatternAction); |
| 46 |
|
|
|
✗ |
} |
| 47 |
|
|
|
|
|
| 48 |
|
|
|
✗ |
void ChrysalisExtension::configureStatusBar(QWidget *parent) { |
| 49 |
|
0/1
? Decision couldn't be analyzed.
|
0/22
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
✗ Call 5 not invoked.
✗ Call 6 not invoked.
✗ Call 7 not invoked.
✗ Call 10 not invoked.
✗ Call 11 not invoked.
✗ Call 12 not invoked.
✗ Call 13 not invoked.
✗ Call 14 not invoked.
✗ Call 17 not invoked.
✗ Call 18 not invoked.
✗ Call 21 not invoked.
✗ Call 24 not invoked.
✗ Call 25 not invoked.
✗ Call 26 not invoked.
✗ Call 29 not invoked.
✗ Call 30 not invoked.
✗ Call 31 not invoked.
|
✗ |
for (const auto childIcon: parent->findChildren<QToolButton*>()) { |
| 50 |
|
0/2
✗ Decision 'true' not taken.
✗ Decision 'false' not taken.
|
0/9
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 5 not invoked.
✗ Call 6 not invoked.
✗ Call 9 not invoked.
✗ Call 10 not invoked.
✗ Call 13 not invoked.
✗ Call 14 not invoked.
|
✗ |
if (childIcon->toolTip() == "3D / 2D Window") { |
| 51 |
|
|
|
|
|
| 52 |
|
|
|
|
// TODO: |
| 53 |
|
|
|
|
// - change icon on hover |
| 54 |
|
|
|
|
// - configure clicks |
| 55 |
|
|
|
|
|
| 56 |
|
|
0/4
✗ Call 0 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
✗ Call 9 not invoked.
|
✗ |
const auto patternBuilderIcon = new QToolButton(parent); |
| 57 |
|
|
|
|
|
| 58 |
|
|
0/19
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
✗ Call 5 not invoked.
✗ Call 6 not invoked.
✗ Call 9 not invoked.
✗ Call 10 not invoked.
✗ Call 13 not invoked.
✗ Call 14 not invoked.
✗ Call 17 not invoked.
✗ Call 18 not invoked.
✗ Call 19 not invoked.
✗ Call 20 not invoked.
✗ Call 21 not invoked.
✗ Call 22 not invoked.
✗ Call 23 not invoked.
✗ Call 24 not invoked.
|
✗ |
patternBuilderIcon->setIcon(QIcon(":/patternBuilder.png")); |
| 59 |
|
|
|
|
|
| 60 |
|
|
0/14
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
✗ Call 5 not invoked.
✗ Call 6 not invoked.
✗ Call 7 not invoked.
✗ Call 8 not invoked.
✗ Call 9 not invoked.
✗ Call 12 not invoked.
✗ Call 13 not invoked.
✗ Call 16 not invoked.
✗ Call 17 not invoked.
|
✗ |
patternBuilderIcon->setIconSize(childIcon->iconSize()); |
| 61 |
|
|
0/14
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
✗ Call 5 not invoked.
✗ Call 6 not invoked.
✗ Call 7 not invoked.
✗ Call 8 not invoked.
✗ Call 9 not invoked.
✗ Call 12 not invoked.
✗ Call 13 not invoked.
✗ Call 16 not invoked.
✗ Call 17 not invoked.
|
✗ |
patternBuilderIcon->setFixedSize(childIcon->size()); |
| 62 |
|
|
0/13
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
✗ Call 5 not invoked.
✗ Call 6 not invoked.
✗ Call 9 not invoked.
✗ Call 10 not invoked.
✗ Call 13 not invoked.
✗ Call 14 not invoked.
✗ Call 15 not invoked.
✗ Call 16 not invoked.
|
✗ |
patternBuilderIcon->setStyleSheet(childIcon->styleSheet()); |
| 63 |
|
|
|
|
|
| 64 |
|
|
0/12
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
✗ Call 5 not invoked.
✗ Call 8 not invoked.
✗ Call 9 not invoked.
✗ Call 12 not invoked.
✗ Call 13 not invoked.
✗ Call 14 not invoked.
✗ Call 15 not invoked.
|
✗ |
patternBuilderIcon->setToolTip("Pattern Builder"); |
| 65 |
|
|
|
|
|
| 66 |
|
|
0/37
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 4 not invoked.
✗ Call 5 not invoked.
✗ Call 6 not invoked.
✗ Call 7 not invoked.
✗ Call 8 not invoked.
✗ Call 9 not invoked.
✗ Call 10 not invoked.
✗ Call 11 not invoked.
✗ Call 14 not invoked.
✗ Call 15 not invoked.
✗ Call 16 not invoked.
✗ Call 17 not invoked.
✗ Call 18 not invoked.
✗ Call 19 not invoked.
✗ Call 20 not invoked.
✗ Call 21 not invoked.
✗ Call 22 not invoked.
✗ Call 23 not invoked.
✗ Call 26 not invoked.
✗ Call 27 not invoked.
✗ Call 28 not invoked.
✗ Call 29 not invoked.
✗ Call 30 not invoked.
✗ Call 31 not invoked.
✗ Call 32 not invoked.
✗ Call 33 not invoked.
✗ Call 34 not invoked.
✗ Call 37 not invoked.
✗ Call 38 not invoked.
✗ Call 39 not invoked.
✗ Call 40 not invoked.
✗ Call 41 not invoked.
✗ Call 42 not invoked.
✗ Call 43 not invoked.
✗ Call 44 not invoked.
|
✗ |
LOG_INFO("Position: {}, {}", childIcon->pos().x() - childIcon->width(), childIcon->pos().y()); |
| 67 |
|
|
|
|
|
| 68 |
|
|
0/30
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
✗ Call 5 not invoked.
✗ Call 6 not invoked.
✗ Call 7 not invoked.
✗ Call 8 not invoked.
✗ Call 9 not invoked.
✗ Call 12 not invoked.
✗ Call 13 not invoked.
✗ Call 14 not invoked.
✗ Call 15 not invoked.
✗ Call 16 not invoked.
✗ Call 17 not invoked.
✗ Call 18 not invoked.
✗ Call 19 not invoked.
✗ Call 22 not invoked.
✗ Call 23 not invoked.
✗ Call 24 not invoked.
✗ Call 25 not invoked.
✗ Call 26 not invoked.
✗ Call 27 not invoked.
✗ Call 28 not invoked.
✗ Call 29 not invoked.
✗ Call 32 not invoked.
✗ Call 33 not invoked.
✗ Call 34 not invoked.
✗ Call 35 not invoked.
|
✗ |
patternBuilderIcon->move(childIcon->pos().x() - childIcon->width(), childIcon->pos().y()); |
| 69 |
|
|
0/5
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
|
✗ |
patternBuilderIcon->show(); |
| 70 |
|
|
|
✗ |
return; |
| 71 |
|
|
|
|
} |
| 72 |
|
|
0/2
✗ Call 0 not invoked.
✗ Call 3 not invoked.
|
✗ |
} |
| 73 |
|
|
0/4
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
|
✗ |
LOG_CRITICAL("\"Pattern Builder\" cannot be configured. \"3D / 2D Window\" wasn't found in status bar."); |
| 74 |
|
|
|
|
} |
| 75 |
|
|
|
|
|
| 76 |
|
|
|
✗ |
void ChrysalisExtension::configure(QWidget *widget) { |
| 77 |
|
0/2
✗ Decision 'true' not taken.
✗ Decision 'false' not taken.
|
0/37
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 5 not invoked.
✗ Call 6 not invoked.
✗ Call 11 not invoked.
✗ Call 12 not invoked.
✗ Call 13 not invoked.
✗ Call 14 not invoked.
✗ Call 15 not invoked.
✗ Call 16 not invoked.
✗ Call 17 not invoked.
✗ Call 18 not invoked.
✗ Call 19 not invoked.
✗ Call 20 not invoked.
✗ Call 21 not invoked.
✗ Call 22 not invoked.
✗ Call 23 not invoked.
✗ Call 24 not invoked.
✗ Call 25 not invoked.
✗ Call 28 not invoked.
✗ Call 31 not invoked.
✗ Call 32 not invoked.
✗ Call 39 not invoked.
✗ Call 42 not invoked.
✗ Call 45 not invoked.
✗ Call 48 not invoked.
✗ Call 51 not invoked.
✗ Call 54 not invoked.
✗ Call 57 not invoked.
✗ Call 62 not invoked.
✗ Call 65 not invoked.
✗ Call 68 not invoked.
✗ Call 71 not invoked.
✗ Call 74 not invoked.
✗ Call 77 not invoked.
✗ Call 80 not invoked.
|
✗ |
if (widget->objectName() == "dockingBarContents" && widget->parent()->findChild<QAction*>()->iconText() == "Right Docking Bar") { |
| 78 |
|
|
0/4
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
|
✗ |
LOG_INFO("Configuring right docking bar."); |
| 79 |
|
|
0/4
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 7 not invoked.
|
✗ |
const auto patternBuilderDockItem = new UI::MVDockingButton(widget); |
| 80 |
|
|
0/14
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
✗ Call 5 not invoked.
✗ Call 6 not invoked.
✗ Call 7 not invoked.
✗ Call 8 not invoked.
✗ Call 9 not invoked.
✗ Call 10 not invoked.
✗ Call 11 not invoked.
✗ Call 14 not invoked.
✗ Call 15 not invoked.
|
✗ |
qobject_cast<QVBoxLayout*>(widget->layout())->insertWidget(8, patternBuilderDockItem); |
| 81 |
|
|
0/5
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
|
✗ |
patternBuilderDockItem->show(); |
| 82 |
|
0/2
✗ Decision 'true' not taken.
✗ Decision 'false' not taken.
|
0/9
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 5 not invoked.
✗ Call 6 not invoked.
✗ Call 9 not invoked.
✗ Call 10 not invoked.
✗ Call 13 not invoked.
✗ Call 14 not invoked.
|
✗ |
} else if (widget->objectName() == "DummyDockingWindow") { |
| 83 |
|
|
0/1
✗ Call 0 not invoked.
|
✗ |
const auto mainWindow = qobject_cast<QMainWindow*>(widget); |
| 84 |
|
|
0/4
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 7 not invoked.
|
✗ |
const auto patternBuilderDockWidget = new UI::PatternBuilderDockWidget(widget); |
| 85 |
|
|
0/4
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
|
✗ |
mainWindow->addDockWidget(Qt::DockWidgetArea::RightDockWidgetArea, patternBuilderDockWidget); |
| 86 |
|
|
0/8
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
✗ Call 5 not invoked.
✗ Call 8 not invoked.
✗ Call 13 not invoked.
|
✗ |
patternBuilderDockWidget->setTitleBarWidget(new UI::MVDockWidgetTitleBar()); |
| 87 |
|
|
|
|
|
| 88 |
|
|
0/12
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
✗ Call 5 not invoked.
✗ Call 8 not invoked.
✗ Call 9 not invoked.
✗ Call 12 not invoked.
✗ Call 13 not invoked.
✗ Call 14 not invoked.
✗ Call 15 not invoked.
|
✗ |
patternBuilderDockWidget->setStyleSheet("background-color: rgb(37, 37, 40);"); |
| 89 |
|
|
|
|
} |
| 90 |
|
|
|
✗ |
} |
| 91 |
|
|
|
|
|
| 92 |
|
|
|
✗ |
extern "C" CLO3D_EXTENSION_ENTRY BaseExtension* create() { |
| 93 |
|
|
0/3
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
|
✗ |
return new ChrysalisExtension(); |
| 94 |
|
|
|
|
} |
| 95 |
|
|
|
|
|
| 96 |
|
|
|
✗ |
void ChrysalisExtension::configureLocalServer(LocalServer* localServer) { |
| 97 |
|
|
0/15
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 6 not invoked.
✗ Call 7 not invoked.
✗ Call 8 not invoked.
✗ Call 11 not invoked.
✗ Call 12 not invoked.
✗ Call 13 not invoked.
✗ Call 14 not invoked.
✗ Call 15 not invoked.
✗ Call 16 not invoked.
✗ Call 17 not invoked.
✗ Call 18 not invoked.
|
✗ |
localServer->listen(std::make_unique<LocalServerListener>()); |
| 98 |
|
|
|
✗ |
} |
| 99 |
|
|
|
|
|