/* * This file is part of project OpenEmbroidery. It's copyrighted by * the contributors recorded in the version control history of the file. * Original project location https://code.electrolab.fr/openEmbroidery/openEmbroidery_software * * SPDX-License-Identifier: CECILL-2.1 * License-Filename: Licence_CeCILL_V2.1-en.txt */ #include "src/qt/mainwindow.h" #include #include #include #include "main.h" // TODO: fix qwerty mapping // TODO: handlers, qui a besoin de qui et quand, pas de redondance ? chemins les + simples ? // TODO: lock pour la modif, histoire de péter tout le backend sans que l'ihm explose // TODO: list les features présentes et à venir, disons jusqu'à la v1.0 alpha pour commencer // TODO MF: intégration/merge avec autre doc, gaffe aux scaling, normalisation générale des coords pour nos fichiers ? // TODO: stitch de remplissage de formes // TODO: rotation des selections // TODO: creation des groupes // TODO: export des .pes // TODO: edition des motifs // TODO: set des motifs des linestitchs avec miniature // TODO: echelle dans la vue (cm/mm) // TODO: actual exit logo is under CC license, https://thenounproject.com/search/?q=exit&i=1039024, change it or conform to license agreement // TODO: fix bug on OE_actions::curDocument that can't work on multiple documents // liste des bugs identifiés a corriger // TODO bug dans OE_interfaceDisplay::selectApply la selection ne clear qu'un seul type (curve ou stitch) quand on selection uniquement des objets de l'autre type // TODO bug dans les selections avec ajout sur les stitchs // TODO cleanup actions on shortcut vs action on key event direct // TODO put all actions on release by default int main(int argc, char *argv[]) { QApplication a(argc, argv); QCommandLineParser parser; parser.setApplicationDescription("OE Designer CLI interface"); parser.addHelpOption(); parser.addOptions({ {"headless", QCoreApplication::translate("main", "Do not start GUI")}, {"export", QCoreApplication::translate("main", "Export active document to file."), QCoreApplication::translate("main", "exportFile")}, }); parser.addPositionalArgument("open", QCoreApplication::translate("main", "Load file as active document.")); parser.process(a); bool headless = parser.isSet("headless"); QString openFile = parser.positionalArguments().empty() ? "" : parser.positionalArguments().first(); if (!headless) { MainWindow w; w.setWindowState(Qt::WindowMaximized); w.show(); if (openFile != "") { OE_interfaceDisplay* display = w.getCurrentRoot()->interfaceDisplay; display->loadFile(openFile.toStdString()); display->zoomSelection(); display->update(); } return a.exec(); } OE_document doc; if (openFile != "") { if (!doc.loadFromFile(openFile.toStdString())) { qDebug() << "Failed to open" << parser.value("open"); return 1; } } if (parser.isSet("export")) { if (!doc.saveToFile(parser.value("export").toStdString())) { qDebug() << "Failed to save" << parser.value("export"); return 1; } } return 0; }