Newer
Older
Import / applications / MakePDF / main.cpp
#include "LicenseCheck.h"
#ifdef GUI_APP
#  include <QFileOpenEvent>
#  include "ui.h"
#else
#  include "DocConvert.h"
#endif


extern void runTests();


// This to support macOS 'open with' and dropping files on the app icon
class Application : public QApplication
{
public:
  Application(int &argc, char **argv)
    : QApplication(argc, argv)
  {
  }

  bool event(QEvent *event) override
  {
    if (event->type() == QEvent::FileOpen)
    {
      QFileOpenEvent *openEvent = static_cast<QFileOpenEvent *>(event);
      QString fileName = openEvent->file();
      if (mainWindowPtr != 0)
        mainWindowPtr->openFile(fileName);
    }
    return QApplication::event(event);
  }

  MdiWindow* mainWindowPtr = 0;
};


int main(int argc, char* argv[])
{
#ifdef GUI_APP
/*
    // Qt MDI Example does this:
    Q_INIT_RESOURCE(mdi);
    QApplication app(argc, argv);
    QCoreApplication::setApplicationVersion(QT_VERSION_STR);
*/
    Application app(argc, argv);

    // Fixes weird macOS splitter re-size issue when native mac widgets are involved
    qApp->setAttribute(Qt::AA_DontCreateNativeWidgetSiblings); 

    // Parse command-line arguments
    QCommandLineParser parser;
    parser.setApplicationDescription("WickedDocs");
    parser.addHelpOption();
    parser.addVersionOption();
    parser.addPositionalArgument("file", "The markdown file to edit.");
    parser.process(app);

    UiContext ui;
    ui.setupUi();
    
    foreach (const QString &fileName, parser.positionalArguments())
      ui.mainWindow.openFile(fileName);

    app.mainWindowPtr = &ui.mainWindow;

    //YQ_LOG_DEBUG("This is a test message");
    //runTests();
    app.exec();
#else
    if (!CheckLicense())
      return 1;

    DocConvert convertor;
    convertor.SetTitle("Test Markdown to PDF");
    convertor.SetSource("test/test.md");
    convertor.OutputHTML("test/test.html");
    convertor.OutputPDF("test/test.pdf");
#endif
	return 0;
}