Added BLOOM_COMPILED_RESOURCES_PATH_OVERRIDE macro to avoid using compiled resources in debug builds
This commit is contained in:
@@ -34,6 +34,14 @@ set(CMAKE_BUILD_RPATH ${CMAKE_INSTALL_RPATH})
|
|||||||
if (${CMAKE_BUILD_TYPE} STREQUAL "Debug")
|
if (${CMAKE_BUILD_TYPE} STREQUAL "Debug")
|
||||||
add_compile_definitions(BLOOM_DEBUG_BUILD)
|
add_compile_definitions(BLOOM_DEBUG_BUILD)
|
||||||
|
|
||||||
|
# BLOOM_COMPILED_RESOURCES_PATH_OVERRIDE can be used to override the file path used for compiled resources.
|
||||||
|
# We override this path in debug builds to avoid using compiled resources. This makes debugging and small tweaks
|
||||||
|
# a lot easier, as it removes the need to recompile for each tweak.
|
||||||
|
# CAUTION: Although convenient, this does add a limitation; the debug build can only be run on the same machine
|
||||||
|
# that compiled it. Or a machine that has the Bloom source located in the same place.
|
||||||
|
# See Paths::compiledResourcesPath() for more.
|
||||||
|
add_compile_definitions(BLOOM_COMPILED_RESOURCES_PATH_OVERRIDE="${CMAKE_CURRENT_SOURCE_DIR}")
|
||||||
|
|
||||||
# CMAKE_SKIP_BUILD_RPATH needs to be set to true to use Gammaray during development.
|
# CMAKE_SKIP_BUILD_RPATH needs to be set to true to use Gammaray during development.
|
||||||
# This is because the distributed Qt binaries may not be compatible with the local installation of Gammaray
|
# This is because the distributed Qt binaries may not be compatible with the local installation of Gammaray
|
||||||
set(CMAKE_SKIP_BUILD_RPATH true)
|
set(CMAKE_SKIP_BUILD_RPATH true)
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
|
|
||||||
#include "Application.hpp"
|
#include "Application.hpp"
|
||||||
#include "src/Logger/Logger.hpp"
|
#include "src/Logger/Logger.hpp"
|
||||||
|
#include "src/Helpers/Paths.hpp"
|
||||||
#include "SignalHandler/SignalHandler.hpp"
|
#include "SignalHandler/SignalHandler.hpp"
|
||||||
#include "Exceptions/InvalidConfig.hpp"
|
#include "Exceptions/InvalidConfig.hpp"
|
||||||
|
|
||||||
@@ -149,7 +150,11 @@ int Application::presentHelpText() {
|
|||||||
Logger::silence();
|
Logger::silence();
|
||||||
|
|
||||||
// The file help.txt is included in the binary image as a resource. See src/resource.qrc
|
// The file help.txt is included in the binary image as a resource. See src/resource.qrc
|
||||||
auto helpFile = QFile(":/compiled/resources/help.txt");
|
auto helpFile = QFile(QString::fromStdString(
|
||||||
|
Paths::compiledResourcesPath()
|
||||||
|
+ "/resources/help.txt"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
if (!helpFile.open(QIODevice::ReadOnly)) {
|
if (!helpFile.open(QIODevice::ReadOnly)) {
|
||||||
// This should never happen - if it does, something has gone very wrong
|
// This should never happen - if it does, something has gone very wrong
|
||||||
@@ -188,7 +193,11 @@ int Application::initProject() {
|
|||||||
*
|
*
|
||||||
* We simply copy the template file into the user's working directory.
|
* We simply copy the template file into the user's working directory.
|
||||||
*/
|
*/
|
||||||
auto templateConfigFile = QFile(":/compiled/resources/bloom.template.json");
|
auto templateConfigFile = QFile(QString::fromStdString(
|
||||||
|
Paths::compiledResourcesPath()
|
||||||
|
+ "/resources/bloom.template.json"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
if (!templateConfigFile.open(QIODevice::ReadOnly)) {
|
if (!templateConfigFile.open(QIODevice::ReadOnly)) {
|
||||||
throw Exception("Failed to open template configuration file - please report this issue at https://bloom.oscillate.io/report-issue");
|
throw Exception("Failed to open template configuration file - please report this issue at https://bloom.oscillate.io/report-issue");
|
||||||
@@ -333,20 +342,6 @@ void Application::onDebugServerThreadStateChanged(EventPointer<Events::DebugServ
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string Application::getApplicationDirPath() {
|
|
||||||
auto pathCharArray = std::array<char, PATH_MAX>();
|
|
||||||
|
|
||||||
if (readlink("/proc/self/exe", pathCharArray.data(), PATH_MAX) < 0) {
|
|
||||||
throw Exception("Failed to obtain application directory path.");
|
|
||||||
}
|
|
||||||
|
|
||||||
return std::filesystem::path(std::string(pathCharArray.begin(), pathCharArray.end())).parent_path();
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string Application::getResourcesDirPath() {
|
|
||||||
return Application::getApplicationDirPath() + "/../resources/";
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Application::isRunningAsRoot() {
|
bool Application::isRunningAsRoot() {
|
||||||
return geteuid() == 0;
|
return geteuid() == 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -248,20 +248,6 @@ namespace Bloom
|
|||||||
*/
|
*/
|
||||||
void onShutdownApplicationRequest(Events::EventPointer<Events::ShutdownApplication>);
|
void onShutdownApplicationRequest(Events::EventPointer<Events::ShutdownApplication>);
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the path to the directory in which the Bloom binary resides.
|
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
static std::string getApplicationDirPath();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the path to the Resources directory, located in the application directory.
|
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
static std::string getResourcesDirPath();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks if the current effective user running Bloom has root privileges.
|
* Checks if the current effective user running Bloom has root privileges.
|
||||||
*
|
*
|
||||||
|
|||||||
19
src/Helpers/Paths.cpp
Normal file
19
src/Helpers/Paths.cpp
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
#include <unistd.h>
|
||||||
|
#include <array>
|
||||||
|
#include <filesystem>
|
||||||
|
#include <climits>
|
||||||
|
#include <src/Exceptions/Exception.hpp>
|
||||||
|
|
||||||
|
#include "Paths.hpp"
|
||||||
|
|
||||||
|
using namespace Bloom;
|
||||||
|
|
||||||
|
std::string Paths::applicationDirPath() {
|
||||||
|
auto pathCharArray = std::array<char, PATH_MAX>();
|
||||||
|
|
||||||
|
if (readlink("/proc/self/exe", pathCharArray.data(), PATH_MAX) < 0) {
|
||||||
|
throw Exceptions::Exception("Failed to obtain application directory path.");
|
||||||
|
}
|
||||||
|
|
||||||
|
return std::filesystem::path(std::string(pathCharArray.begin(), pathCharArray.end())).parent_path();
|
||||||
|
}
|
||||||
43
src/Helpers/Paths.hpp
Normal file
43
src/Helpers/Paths.hpp
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
namespace Bloom
|
||||||
|
{
|
||||||
|
class Paths
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* Returns the path to the directory in which the Bloom binary resides.
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
static std::string applicationDirPath();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the path to the Resources directory, located in the application directory.
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
static inline std::string resourcesDirPath() {
|
||||||
|
return Paths::applicationDirPath() + "/../resources/";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the path to Bloom's compiled resources.
|
||||||
|
*
|
||||||
|
* If the debug configuration is enabled, this function will return the absolute path to Bloom's source code,
|
||||||
|
* meaning we won't use compiled resources for debug builds. This is useful for debugging and tweaking QT UI
|
||||||
|
* files such as QT stylesheets and UI templates.
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
static inline const std::string compiledResourcesPath() {
|
||||||
|
#ifdef BLOOM_COMPILED_RESOURCES_PATH_OVERRIDE
|
||||||
|
return std::string(BLOOM_COMPILED_RESOURCES_PATH_OVERRIDE);
|
||||||
|
#else
|
||||||
|
return std::string(":/compiled");
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
#include "Insight.hpp"
|
#include "Insight.hpp"
|
||||||
#include "InsightWorker.hpp"
|
#include "InsightWorker.hpp"
|
||||||
#include "src/Application.hpp"
|
#include "src/Helpers/Paths.hpp"
|
||||||
#include "src/Logger/Logger.hpp"
|
#include "src/Logger/Logger.hpp"
|
||||||
#include "src/Exceptions/InvalidConfig.hpp"
|
#include "src/Exceptions/InvalidConfig.hpp"
|
||||||
#include "src/Targets/TargetState.hpp"
|
#include "src/Targets/TargetState.hpp"
|
||||||
@@ -49,7 +49,7 @@ void Insight::startup() {
|
|||||||
auto targetDescriptor = this->targetControllerConsole.getTargetDescriptor();
|
auto targetDescriptor = this->targetControllerConsole.getTargetDescriptor();
|
||||||
|
|
||||||
#ifndef BLOOM_DEBUG_BUILD
|
#ifndef BLOOM_DEBUG_BUILD
|
||||||
QCoreApplication::addLibraryPath(QString::fromStdString(Application::getApplicationDirPath() + "/plugins"));
|
QCoreApplication::addLibraryPath(QString::fromStdString(Paths::applicationDirPath() + "/plugins"));
|
||||||
#endif
|
#endif
|
||||||
QCoreApplication::setAttribute(Qt::AA_ShareOpenGLContexts, true);
|
QCoreApplication::setAttribute(Qt::AA_ShareOpenGLContexts, true);
|
||||||
|
|
||||||
|
|||||||
@@ -5,14 +5,23 @@
|
|||||||
#include "src/Logger/Logger.hpp"
|
#include "src/Logger/Logger.hpp"
|
||||||
#include "src/Exceptions/Exception.hpp"
|
#include "src/Exceptions/Exception.hpp"
|
||||||
#include "src/Application.hpp"
|
#include "src/Application.hpp"
|
||||||
|
#include "src/Helpers/Paths.hpp"
|
||||||
|
|
||||||
using namespace Bloom;
|
using namespace Bloom;
|
||||||
using namespace InsightTargetWidgets;
|
using namespace InsightTargetWidgets;
|
||||||
using namespace Exceptions;
|
using namespace Exceptions;
|
||||||
|
|
||||||
AboutWindow::AboutWindow(QWidget* parent): QObject(parent) {
|
AboutWindow::AboutWindow(QWidget* parent): QObject(parent) {
|
||||||
auto aboutWindowUiFile = QFile(":/compiled/Insight/UserInterfaces/InsightWindow/UiFiles/AboutWindow.ui");
|
auto aboutWindowUiFile = QFile(QString::fromStdString(
|
||||||
auto aboutWindowStylesheet = QFile(":/compiled/Insight/UserInterfaces/InsightWindow/Stylesheets/AboutWindow.qss");
|
Paths::compiledResourcesPath()
|
||||||
|
+ "/src/Insight/UserInterfaces/InsightWindow/UiFiles/AboutWindow.ui"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
auto aboutWindowStylesheet = QFile(QString::fromStdString(
|
||||||
|
Paths::compiledResourcesPath()
|
||||||
|
+ "/src/Insight/UserInterfaces/InsightWindow/Stylesheets/AboutWindow.qss"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
if (!aboutWindowUiFile.open(QFile::ReadOnly)) {
|
if (!aboutWindowUiFile.open(QFile::ReadOnly)) {
|
||||||
throw Exception("Failed to open AboutWindow UI file");
|
throw Exception("Failed to open AboutWindow UI file");
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
#include "src/Logger/Logger.hpp"
|
#include "src/Logger/Logger.hpp"
|
||||||
#include "src/Exceptions/Exception.hpp"
|
#include "src/Exceptions/Exception.hpp"
|
||||||
#include "src/Targets/TargetDescriptor.hpp"
|
#include "src/Targets/TargetDescriptor.hpp"
|
||||||
|
#include "src/Helpers/Paths.hpp"
|
||||||
|
|
||||||
using namespace Bloom;
|
using namespace Bloom;
|
||||||
using namespace Bloom::Exceptions;
|
using namespace Bloom::Exceptions;
|
||||||
@@ -25,8 +26,16 @@ void InsightWindow::init(
|
|||||||
) {
|
) {
|
||||||
this->targetDescriptor = targetDescriptor;
|
this->targetDescriptor = targetDescriptor;
|
||||||
|
|
||||||
auto mainWindowUiFile = QFile(":/compiled/Insight/UserInterfaces/InsightWindow/UiFiles/InsightWindow.ui");
|
auto mainWindowUiFile = QFile(
|
||||||
auto mainWindowStylesheet = QFile(":/compiled/Insight/UserInterfaces/InsightWindow/Stylesheets/InsightWindow.qss");
|
QString::fromStdString(Paths::compiledResourcesPath()
|
||||||
|
+ "/src/Insight/UserInterfaces/InsightWindow/UiFiles/InsightWindow.ui"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
auto mainWindowStylesheet = QFile(
|
||||||
|
QString::fromStdString(Paths::compiledResourcesPath()
|
||||||
|
+ "/src/Insight/UserInterfaces/InsightWindow/Stylesheets/InsightWindow.qss"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
if (!mainWindowUiFile.open(QFile::ReadOnly)) {
|
if (!mainWindowUiFile.open(QFile::ReadOnly)) {
|
||||||
throw Exception("Failed to open InsightWindow UI file");
|
throw Exception("Failed to open InsightWindow UI file");
|
||||||
@@ -40,7 +49,11 @@ void InsightWindow::init(
|
|||||||
this->mainWindowWidget = uiLoader.load(&mainWindowUiFile);
|
this->mainWindowWidget = uiLoader.load(&mainWindowUiFile);
|
||||||
this->mainWindowWidget->setStyleSheet(mainWindowStylesheet.readAll());
|
this->mainWindowWidget->setStyleSheet(mainWindowStylesheet.readAll());
|
||||||
|
|
||||||
application.setWindowIcon(QIcon(":/compiled/Insight/UserInterfaces/InsightWindow/Images/BloomIcon.svg"));
|
application.setWindowIcon(QIcon(
|
||||||
|
QString::fromStdString(Paths::compiledResourcesPath()
|
||||||
|
+ "/src/Insight/UserInterfaces/InsightWindow/Images/BloomIcon.svg"
|
||||||
|
)
|
||||||
|
));
|
||||||
this->ioContainerWidget = this->mainWindowWidget->findChild<QWidget*>("io-container");
|
this->ioContainerWidget = this->mainWindowWidget->findChild<QWidget*>("io-container");
|
||||||
this->ioUnavailableWidget = this->mainWindowWidget->findChild<QLabel*>("io-inspection-unavailable");
|
this->ioUnavailableWidget = this->mainWindowWidget->findChild<QLabel*>("io-inspection-unavailable");
|
||||||
this->mainMenuBar = this->mainWindowWidget->findChild<QMenuBar*>("menu-bar");
|
this->mainMenuBar = this->mainWindowWidget->findChild<QMenuBar*>("menu-bar");
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ QMainWindow {
|
|||||||
min-width: 150px;
|
min-width: 150px;
|
||||||
max-height: 150px;
|
max-height: 150px;
|
||||||
max-width: 150px;
|
max-width: 150px;
|
||||||
image: url(":/compiled/Insight/UserInterfaces/InsightWindow/Images/BloomIcon.svg");
|
image: url(":/compiled/src/Insight/UserInterfaces/InsightWindow/Images/BloomIcon.svg");
|
||||||
image-position: center;
|
image-position: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -21,4 +21,4 @@ QMainWindow {
|
|||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
color: #adadb1;
|
color: #adadb1;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ QMenu#help-menu::separator {
|
|||||||
height: 25px;
|
height: 25px;
|
||||||
color: #000;
|
color: #000;
|
||||||
border: none;
|
border: none;
|
||||||
qproperty-icon: url(":/compiled/Insight/UserInterfaces/InsightWindow/Images/RAM.svg");
|
qproperty-icon: url(":/compiled/src/Insight/UserInterfaces/InsightWindow/Images/RAM.svg");
|
||||||
icon-size: 25px;
|
icon-size: 25px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
#include "DualInlinePackageWidget.hpp"
|
#include "DualInlinePackageWidget.hpp"
|
||||||
#include "src/Logger/Logger.hpp"
|
#include "src/Logger/Logger.hpp"
|
||||||
#include "src/Exceptions/Exception.hpp"
|
#include "src/Exceptions/Exception.hpp"
|
||||||
|
#include "src/Helpers/Paths.hpp"
|
||||||
#include "PinWidget.hpp"
|
#include "PinWidget.hpp"
|
||||||
#include "BodyWidget.hpp"
|
#include "BodyWidget.hpp"
|
||||||
|
|
||||||
@@ -22,7 +23,11 @@ DualInlinePackageWidget::DualInlinePackageWidget(
|
|||||||
QObject* insightWindowObj,
|
QObject* insightWindowObj,
|
||||||
QWidget* parent
|
QWidget* parent
|
||||||
): TargetPackageWidget(targetVariant, insightWindowObj, parent) {
|
): TargetPackageWidget(targetVariant, insightWindowObj, parent) {
|
||||||
auto stylesheetFile = QFile(":/compiled/Insight/UserInterfaces/InsightWindow/TargetWidgets/DIP/Stylesheets/DualInlinePackage.qss");
|
auto stylesheetFile = QFile(QString::fromStdString(
|
||||||
|
Paths::compiledResourcesPath()
|
||||||
|
+ "/src/Insight/UserInterfaces/InsightWindow/TargetWidgets/DIP/Stylesheets/DualInlinePackage.qss"
|
||||||
|
)
|
||||||
|
);
|
||||||
stylesheetFile.open(QFile::ReadOnly);
|
stylesheetFile.open(QFile::ReadOnly);
|
||||||
this->setStyleSheet(stylesheetFile.readAll());
|
this->setStyleSheet(stylesheetFile.readAll());
|
||||||
|
|
||||||
@@ -121,4 +126,3 @@ void DualInlinePackageWidget::drawWidget(QPainter& painter) {
|
|||||||
height
|
height
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
|
|
||||||
#include "../../InsightWindow.hpp"
|
#include "../../InsightWindow.hpp"
|
||||||
#include "QuadFlatPackageWidget.hpp"
|
#include "QuadFlatPackageWidget.hpp"
|
||||||
|
#include "src/Helpers/Paths.hpp"
|
||||||
#include "PinWidget.hpp"
|
#include "PinWidget.hpp"
|
||||||
#include "BodyWidget.hpp"
|
#include "BodyWidget.hpp"
|
||||||
|
|
||||||
@@ -20,7 +21,11 @@ QuadFlatPackageWidget::QuadFlatPackageWidget(
|
|||||||
): TargetPackageWidget(targetVariant, insightWindowObj, parent) {
|
): TargetPackageWidget(targetVariant, insightWindowObj, parent) {
|
||||||
assert((targetVariant.pinDescriptorsByNumber.size() % 4) == 0);
|
assert((targetVariant.pinDescriptorsByNumber.size() % 4) == 0);
|
||||||
|
|
||||||
auto stylesheetFile = QFile(":/compiled/Insight/UserInterfaces/InsightWindow/TargetWidgets/QFP/Stylesheets/QuadFlatPackage.qss");
|
auto stylesheetFile = QFile(QString::fromStdString(
|
||||||
|
Paths::compiledResourcesPath()
|
||||||
|
+ "/src/Insight/UserInterfaces/InsightWindow/TargetWidgets//QFP/Stylesheets/QuadFlatPackage.qss"
|
||||||
|
)
|
||||||
|
);
|
||||||
stylesheetFile.open(QFile::ReadOnly);
|
stylesheetFile.open(QFile::ReadOnly);
|
||||||
this->setStyleSheet(stylesheetFile.readAll());
|
this->setStyleSheet(stylesheetFile.readAll());
|
||||||
|
|
||||||
|
|||||||
@@ -62,8 +62,8 @@
|
|||||||
<widget class="QToolButton" name="refresh-io-inspection-btn">
|
<widget class="QToolButton" name="refresh-io-inspection-btn">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset>
|
<iconset>
|
||||||
<disabledoff>:/compiled/Insight/UserInterfaces/InsightWindow/Images/refresh-disabled.svg</disabledoff>
|
<disabledoff>:/compiled/src/Insight/UserInterfaces/InsightWindow/Images/refresh-disabled.svg</disabledoff>
|
||||||
<normalon>:/compiled/Insight/UserInterfaces/InsightWindow/Images/refresh.svg</normalon>
|
<normalon>:/compiled/src/Insight/UserInterfaces/InsightWindow/Images/refresh.svg</normalon>
|
||||||
</iconset>
|
</iconset>
|
||||||
</property>
|
</property>
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
#include "src/Exceptions/TargetControllerStartupFailure.hpp"
|
#include "src/Exceptions/TargetControllerStartupFailure.hpp"
|
||||||
#include "src/Exceptions/DeviceCommunicationFailure.hpp"
|
#include "src/Exceptions/DeviceCommunicationFailure.hpp"
|
||||||
#include "src/Application.hpp"
|
#include "src/Application.hpp"
|
||||||
|
#include "src/Helpers/Paths.hpp"
|
||||||
|
|
||||||
using namespace Bloom;
|
using namespace Bloom;
|
||||||
using namespace Bloom::Targets;
|
using namespace Bloom::Targets;
|
||||||
@@ -87,7 +88,7 @@ void TargetController::startup() {
|
|||||||
|
|
||||||
void TargetController::checkUdevRules() {
|
void TargetController::checkUdevRules() {
|
||||||
auto bloomRulesPath = std::string("/etc/udev/rules.d/99-bloom.rules");
|
auto bloomRulesPath = std::string("/etc/udev/rules.d/99-bloom.rules");
|
||||||
auto latestBloomRulesPath = Application::getResourcesDirPath() + "/UDevRules/99-bloom.rules";
|
auto latestBloomRulesPath = Paths::resourcesDirPath() + "/UDevRules/99-bloom.rules";
|
||||||
|
|
||||||
if (!std::filesystem::exists(bloomRulesPath)) {
|
if (!std::filesystem::exists(bloomRulesPath)) {
|
||||||
Logger::warning("Bloom udev rules missing - attempting installation");
|
Logger::warning("Bloom udev rules missing - attempting installation");
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
|
#include <QJsonDocument>
|
||||||
|
#include <QJsonArray>
|
||||||
|
|
||||||
#include "PartDescriptionFile.hpp"
|
#include "PartDescriptionFile.hpp"
|
||||||
#include "src/Targets/Microchip/AVR/Exceptions/PartDescriptionParsingFailureException.hpp"
|
#include "src/Targets/Microchip/AVR/Exceptions/PartDescriptionParsingFailureException.hpp"
|
||||||
#include "src/Logger/Logger.hpp"
|
#include "src/Logger/Logger.hpp"
|
||||||
#include "src/Application.hpp"
|
#include "src/Helpers/Paths.hpp"
|
||||||
|
|
||||||
using namespace Bloom::Targets::Microchip::Avr::Avr8Bit::PartDescription;
|
using namespace Bloom::Targets::Microchip::Avr::Avr8Bit::PartDescription;
|
||||||
using namespace Bloom::Targets::Microchip::Avr::Avr8Bit;
|
using namespace Bloom::Targets::Microchip::Avr::Avr8Bit;
|
||||||
@@ -35,7 +38,7 @@ PartDescriptionFile::PartDescriptionFile(const std::string& targetSignatureHex,
|
|||||||
|
|
||||||
if (matchingDescriptionFiles.size() == 1) {
|
if (matchingDescriptionFiles.size() == 1) {
|
||||||
// Attempt to load the XML part description file
|
// Attempt to load the XML part description file
|
||||||
auto descriptionFilePath = QString::fromStdString(Application::getApplicationDirPath()) + "/"
|
auto descriptionFilePath = QString::fromStdString(Paths::applicationDirPath()) + "/"
|
||||||
+ matchingDescriptionFiles.front().toObject().find("targetDescriptionFilePath")->toString();
|
+ matchingDescriptionFiles.front().toObject().find("targetDescriptionFilePath")->toString();
|
||||||
|
|
||||||
Logger::debug("Loading AVR8 part description file: " + descriptionFilePath.toStdString());
|
Logger::debug("Loading AVR8 part description file: " + descriptionFilePath.toStdString());
|
||||||
@@ -102,7 +105,7 @@ void PartDescriptionFile::init(const QDomDocument& xml) {
|
|||||||
|
|
||||||
QJsonObject PartDescriptionFile::getPartDescriptionMapping() {
|
QJsonObject PartDescriptionFile::getPartDescriptionMapping() {
|
||||||
auto mappingFile = QFile(
|
auto mappingFile = QFile(
|
||||||
QString::fromStdString(Application::getResourcesDirPath() + "/TargetPartDescriptions/AVR/Mapping.json")
|
QString::fromStdString(Paths::resourcesDirPath() + "/TargetPartDescriptions/AVR/Mapping.json")
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!mappingFile.exists()) {
|
if (!mappingFile.exists()) {
|
||||||
|
|||||||
@@ -1,6 +1,15 @@
|
|||||||
<!DOCTYPE RCC>
|
<!DOCTYPE RCC>
|
||||||
<RCC version="1.0">
|
<RCC version="1.0">
|
||||||
<qresource>
|
<qresource>
|
||||||
|
<!--
|
||||||
|
CAUTION: For aliases, please be sure to use the path of the file, relative to the Bloom project dir, but prefixed
|
||||||
|
with "/compiled/". See below for examples.
|
||||||
|
|
||||||
|
This is required because Bloom does not use compiled resources for debug builds. Instead, it will use the files
|
||||||
|
located in the Bloom project directory. See comment for BLOOM_COMPILED_RESOURCES_PATH_OVERRIDE macro
|
||||||
|
in CMakeLists.txt for more.
|
||||||
|
-->
|
||||||
|
|
||||||
<!-- The contents of help.txt is presented to the user in response to the invocation of the help command-->
|
<!-- The contents of help.txt is presented to the user in response to the invocation of the help command-->
|
||||||
<file alias="/compiled/resources/help.txt">../resources/help.txt</file>
|
<file alias="/compiled/resources/help.txt">../resources/help.txt</file>
|
||||||
|
|
||||||
@@ -8,19 +17,19 @@
|
|||||||
<file alias="/compiled/resources/bloom.template.json">../resources/bloom.template.json</file>
|
<file alias="/compiled/resources/bloom.template.json">../resources/bloom.template.json</file>
|
||||||
|
|
||||||
<!-- QT UI templates for Insight-->
|
<!-- QT UI templates for Insight-->
|
||||||
<file alias="/compiled/Insight/UserInterfaces/InsightWindow/UiFiles/InsightWindow.ui">./Insight/UserInterfaces/InsightWindow/UiFiles/InsightWindow.ui</file>
|
<file alias="/compiled/src/Insight/UserInterfaces/InsightWindow/UiFiles/InsightWindow.ui">./Insight/UserInterfaces/InsightWindow/UiFiles/InsightWindow.ui</file>
|
||||||
<file alias="/compiled/Insight/UserInterfaces/InsightWindow/UiFiles/AboutWindow.ui">./Insight/UserInterfaces/InsightWindow/UiFiles/AboutWindow.ui</file>
|
<file alias="/compiled/src/Insight/UserInterfaces/InsightWindow/UiFiles/AboutWindow.ui">./Insight/UserInterfaces/InsightWindow/UiFiles/AboutWindow.ui</file>
|
||||||
|
|
||||||
<!-- QT UI stylesheets for Insight-->
|
<!-- QT UI stylesheets for Insight-->
|
||||||
<file alias="/compiled/Insight/UserInterfaces/InsightWindow/Stylesheets/InsightWindow.qss">./Insight/UserInterfaces/InsightWindow/Stylesheets/InsightWindow.qss</file>
|
<file alias="/compiled/src/Insight/UserInterfaces/InsightWindow/Stylesheets/InsightWindow.qss">./Insight/UserInterfaces/InsightWindow/Stylesheets/InsightWindow.qss</file>
|
||||||
<file alias="/compiled/Insight/UserInterfaces/InsightWindow/Stylesheets/AboutWindow.qss">./Insight/UserInterfaces/InsightWindow/Stylesheets/AboutWindow.qss</file>
|
<file alias="/compiled/src/Insight/UserInterfaces/InsightWindow/Stylesheets/AboutWindow.qss">./Insight/UserInterfaces/InsightWindow/Stylesheets/AboutWindow.qss</file>
|
||||||
<file alias="/compiled/Insight/UserInterfaces/InsightWindow/TargetWidgets/DIP/Stylesheets/DualInlinePackage.qss">./Insight/UserInterfaces/InsightWindow/TargetWidgets/DIP/Stylesheets/DualInlinePackage.qss</file>
|
<file alias="/compiled/src/Insight/UserInterfaces/InsightWindow/TargetWidgets/DIP/Stylesheets/DualInlinePackage.qss">./Insight/UserInterfaces/InsightWindow/TargetWidgets/DIP/Stylesheets/DualInlinePackage.qss</file>
|
||||||
<file alias="/compiled/Insight/UserInterfaces/InsightWindow/TargetWidgets/QFP/Stylesheets/QuadFlatPackage.qss">./Insight/UserInterfaces/InsightWindow/TargetWidgets/QFP/Stylesheets/QuadFlatPackage.qss</file>
|
<file alias="/compiled/src/Insight/UserInterfaces/InsightWindow/TargetWidgets/QFP/Stylesheets/QuadFlatPackage.qss">./Insight/UserInterfaces/InsightWindow/TargetWidgets/QFP/Stylesheets/QuadFlatPackage.qss</file>
|
||||||
|
|
||||||
<!-- Icons for Insight-->
|
<!-- Icons for Insight-->
|
||||||
<file alias="/compiled/Insight/UserInterfaces/InsightWindow/Images/BloomIcon.svg">./Insight/UserInterfaces/InsightWindow/Images/BloomIcon.svg</file>
|
<file alias="/compiled/src/Insight/UserInterfaces/InsightWindow/Images/BloomIcon.svg">./Insight/UserInterfaces/InsightWindow/Images/BloomIcon.svg</file>
|
||||||
<file alias="/compiled/Insight/UserInterfaces/InsightWindow/Images/RAM.svg">./Insight/UserInterfaces/InsightWindow/Images/RAM.svg</file>
|
<file alias="/compiled/src/Insight/UserInterfaces/InsightWindow/Images/RAM.svg">./Insight/UserInterfaces/InsightWindow/Images/RAM.svg</file>
|
||||||
<file alias="/compiled/Insight/UserInterfaces/InsightWindow/Images/refresh.svg">./Insight/UserInterfaces/InsightWindow/Images/refresh.svg</file>
|
<file alias="/compiled/src/Insight/UserInterfaces/InsightWindow/Images/refresh.svg">./Insight/UserInterfaces/InsightWindow/Images/refresh.svg</file>
|
||||||
<file alias="/compiled/Insight/UserInterfaces/InsightWindow/Images/refresh-disabled.svg">./Insight/UserInterfaces/InsightWindow/Images/refresh-disabled.svg</file>
|
<file alias="/compiled/src/Insight/UserInterfaces/InsightWindow/Images/refresh-disabled.svg">./Insight/UserInterfaces/InsightWindow/Images/refresh-disabled.svg</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
</RCC>
|
</RCC>
|
||||||
|
|||||||
Reference in New Issue
Block a user