[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/ORNLSlicer/ORNLSlicer/develop/src/main.cpp [Back]  [Original]

#include 
#include 
#include 

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#include "configs/settings_base.h"
#include "console/command_line_processor.h"
#include "console/main_control.h"
#include "gcode/gcode_command.h"
#include "gcode/gcode_meta.h"
#include "geometry/mesh/closed_mesh.h"
#include "geometry/mesh/mesh_base.h"
#include "geometry/mesh/open_mesh.h"
#include "geometry/segment_base.h"
#include "ornlslicer/build_info.h"
#include "part/part.h"
#include "threading/mesh_loader.h"
#include "units/unit.h"
#include "utilities/constants.h"
#include "utilities/enums.h"
#include "utilities/qt_json_conversion.h"
#include "utilities/runtime_diagnostics.h"
#include "windows/main_window.h"

int main(int argc, char* argv[]) {
    QCoreApplication::setAttribute(Qt::AA_UseDesktopOpenGL);

    // Register the meta type so we can use queued signals/slots.
    qRegisterMetaType("QSharedPointer");
    qRegisterMetaType("QSharedPointer");
    qRegisterMetaType("QSharedPointer");
    qRegisterMetaType("QSharedPointer");
    qRegisterMetaType(
        "QVector");
    qRegisterMetaType("Distance");
    qRegisterMetaType("Velocity");
    qRegisterMetaType("Acceleration");
    qRegisterMetaType("Angle");
    qRegisterMetaType("Time");
    qRegisterMetaType("Temperature");
    qRegisterMetaType("Voltage");
    qRegisterMetaType("Mass");
    qRegisterMetaType("QHash");
    qRegisterMetaType("QList");
    qRegisterMetaType("QList");
    qRegisterMetaType("QList");
    qRegisterMetaType("StatusUpdateStepType");
    qRegisterMetaType("GcodeCommand");
    qRegisterMetaType("GcodeMeta");
    qRegisterMetaType("fifojson");
    qRegisterMetaType("nlohmann::json");
    qRegisterMetaType("quintptr");
    qRegisterMetaType("MeshData");
    qRegisterMetaType("qintptr");
    // Register the message handler so all output is printed in the main window as well.

    QCommandLineParser parser;

    if (argc > 1) {
        QCoreApplication ca(argc, argv);
        QCoreApplication::setApplicationName("ornlslicer");
        QCoreApplication::setOrganizationName("ornl");
        QCoreApplication::setApplicationVersion(QString::fromUtf8(ORNL::BuildInfo::Version));

        QSharedPointer options = QSharedPointer::create();
        ORNL::CommandLineConverter clc;
        clc.setupCommandLineParser(parser);

        parser.process(ca);

        bool setupResult = clc.convertOptions(parser, options);

        if (setupResult) {
            ORNL::Diagnostics::logRuntimeSummary(QStringLiteral("cli"));
            ORNL::MainControl* control = new ORNL::MainControl(options);
            QObject::connect(control, &ORNL::MainControl::finished, &ca, &QCoreApplication::quit, Qt::QueuedConnection);

            control->run();
            int ret = ca.exec();

            delete control;
            return ret;
        }
        return parser.isSet(ORNL::Constants::ConsoleOptionStrings::kVersion) ? 0 : 1;
    }
    else {
        QApplication a(argc, argv);
        QApplication::setStyle(QStyleFactory::create("fusion"));

        QApplication::setApplicationName("ornlslicer");
        QApplication::setOrganizationName("ornl");
        QApplication::setApplicationVersion(QString::fromUtf8(ORNL::BuildInfo::Version));
        QApplication::setApplicationDisplayName(QString("ORNLSlicer-") + QString::fromUtf8(ORNL::BuildInfo::Version));
        ORNL::Diagnostics::logRuntimeSummary(QStringLiteral("gui"));

        Q_INIT_RESOURCE(icons);
        Q_INIT_RESOURCE(shaders);
        Q_INIT_RESOURCE(styles);
        Q_INIT_RESOURCE(configs);

        // Get the instance of the main window and show it.
        ORNL::MainWindow* w = ORNL::MainWindow::getInstance();
        w->show();

        int ret = a.exec();
        delete w;

        return ret;
    }
}

Web Proxy Viewer  |  New URL  |  Original Page