2015-01-11 13:06:17 +00:00
|
|
|
/**
|
|
|
|
* \file ConsoleApplication.h
|
|
|
|
* This file is part of LyX, the document processor.
|
|
|
|
* Licence details can be found in the file COPYING.
|
|
|
|
*
|
|
|
|
* \author Georg Baum
|
|
|
|
*
|
|
|
|
* Full author contact details are available in file CREDITS.
|
|
|
|
*/
|
|
|
|
|
2015-01-13 20:59:39 +00:00
|
|
|
#ifndef CONSOLEAPPLICATION_H
|
|
|
|
#define CONSOLEAPPLICATION_H
|
2015-01-11 13:06:17 +00:00
|
|
|
|
|
|
|
#include "support/strfwd.h"
|
|
|
|
|
|
|
|
namespace lyx {
|
|
|
|
|
|
|
|
namespace support {
|
|
|
|
|
|
|
|
class ConsoleApplicationPrivate;
|
|
|
|
|
|
|
|
/// The main application class for console mode.
|
|
|
|
/**
|
|
|
|
There should be only one instance of this class. No Qt object
|
|
|
|
initialisation should be done before the instantiation of this class.
|
|
|
|
This class could be moved to src/frontends/console in the future.
|
2017-07-03 17:45:58 +00:00
|
|
|
This would make sense if more console app related code is created.
|
2015-01-11 13:06:17 +00:00
|
|
|
*/
|
|
|
|
class ConsoleApplication
|
|
|
|
{
|
|
|
|
friend class ConsoleApplicationPrivate;
|
|
|
|
public:
|
|
|
|
ConsoleApplication(std::string const & app, int & argc, char ** argv);
|
|
|
|
virtual ~ConsoleApplication();
|
|
|
|
|
|
|
|
/// Start the event loop and execute the application
|
|
|
|
int exec();
|
|
|
|
|
|
|
|
protected:
|
|
|
|
/// Do the real work.
|
|
|
|
/// This is called after the event loop was started.
|
|
|
|
virtual void doExec() = 0;
|
|
|
|
/**
|
|
|
|
* Exit the application with status \p status.
|
|
|
|
* This must be called from doExec(), otherwise the application runs
|
|
|
|
* forever.
|
|
|
|
* Note that in contrast to the ISO C function ::exit() this method does
|
|
|
|
* return. It only registers that the program is to be stopped with the
|
|
|
|
* given status code, and this happens the next time the event loop is
|
|
|
|
* processed.
|
|
|
|
*/
|
|
|
|
void exit(int status);
|
|
|
|
|
|
|
|
private:
|
|
|
|
ConsoleApplicationPrivate * const d;
|
|
|
|
};
|
|
|
|
|
|
|
|
} // namespace support
|
|
|
|
} // namespace lyx
|
|
|
|
|
2015-01-13 20:59:39 +00:00
|
|
|
#endif // CONSOLEAPPLICATION_H
|