#include #include #include #include "GrapheneApplication.hpp" #include "ChainDataModel.hpp" #include "Transaction.hpp" #include "Operations.hpp" #include "Balance.hpp" #include "Wallet.hpp" class Crypto { Q_GADGET public: Q_INVOKABLE QString sha256(QByteArray data) { return QCryptographicHash::hash(data, QCryptographicHash::Sha256).toHex(); } }; QML_DECLARE_TYPE(Crypto) int main(int argc, char *argv[]) { #ifndef NDEBUG QQmlDebuggingEnabler enabler; #endif fc::thread::current().set_name("main"); QApplication app(argc, argv); app.setApplicationName("Graphene Client"); app.setOrganizationDomain("cryptonomex.org"); app.setOrganizationName("Cryptonomex, Inc."); qRegisterMetaType>(); qRegisterMetaType(); qRegisterMetaType>(); qmlRegisterType("Graphene.Client", 0, 1, "Asset"); qmlRegisterType("Graphene.Client", 0, 1, "Balance"); qmlRegisterType("Graphene.Client", 0, 1, "Account"); qmlRegisterType("Graphene.Client", 0, 1, "DataModel"); qmlRegisterType("Graphene.Client", 0, 1, "Wallet"); qmlRegisterType("Graphene.Client", 0, 1, "GrapheneApplication"); qmlRegisterType("Graphene.Client", 0, 1, "Transaction"); qmlRegisterInterface("OperationBase"); qmlRegisterType("Graphene.Client", 0, 1, "TransferOperation"); qmlRegisterUncreatableType("Graphene.Client", 0, 1, "OperationBuilder", QStringLiteral("OperationBuilder cannot be created from QML")); QQmlApplicationEngine engine; QVariant crypto; crypto.setValue(Crypto()); engine.rootContext()->setContextProperty("Crypto", crypto); #ifdef NDEBUG engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); #else engine.load(QUrl(QStringLiteral("qml/main.qml"))); QFileSystemWatcher watcher; qDebug() << watcher.addPath("qml/"); QObject::connect(&watcher, &QFileSystemWatcher::directoryChanged, &engine, [&](QString path) { qDebug() << "Changed file" << path; engine.clearComponentCache(); }); #endif return app.exec(); } #include "main.moc"