#
# src/support
#
-frontend_env['QT4_MOCHPREFIX'] = ''
-frontend_env['QT4_MOCHSUFFIX'] = '_moc.cpp'
-
-support_moced_files = [frontend_env.Moc4('$BUILDDIR/src/support/%s' % x)
- for x in src_support_header_files ]
support = frontend_env.StaticLibrary(
target = '$LOCALLIBPATH/support',
source = ['$BUILDDIR/src/support/%s' % x for x in src_support_files] + \
'-DQT_NO_STL',
'-DQT_NO_KEYWORDS',
],
- CPPPATH = ['$CPPPATH', '$BUILDDIR/src/support', '$TOP_SRCDIR/src/support/minizip']
+ CPPPATH = ['$CPPPATH', '$TOP_SRCDIR/src/support/minizip']
)
Alias('support', support)
#
# src/frontend/qt4
#
+frontend_env['QT4_MOCHPREFIX'] = ''
+frontend_env['QT4_MOCHSUFFIX'] = '_moc.cpp'
+
# tells scons how to get these moced files, although not all moced files are needed
# (or are actually generated).
qt4_moced_files = [frontend_env.Moc4('$BUILDDIR/src/frontends/qt4/%s' % x)
RandomAccessList.h
SignalSlot.h
SignalSlotPrivate.h
- ProgressInterface.h
Systemcall.h
- SystemcallPrivate.h
Timeout.h
Translator.h
convert.h
Path.cpp
SignalSlot.cpp
Systemcall.cpp
- SystemcallPrivate.cpp
Timeout.cpp
abort.cpp
convert.cpp
GuiPopupMenu.h
GuiPrefs.h
GuiPrint.h
- GuiProgress.h
GuiRef.h
GuiSearch.h
GuiSelection.h
GuiParagraph.cpp
GuiPopupMenu.cpp
GuiPrefs.cpp
- GuiProgress.cpp
GuiPrint.cpp
GuiRef.cpp
GuiSearch.cpp
Item "Fold Math Macro" "math-macro-fold"
Separator
Item "View Source|S" "dialog-toggle view-source"
- Item "View Console" "dialog-toggle view-console"
Submenu "Update|U" "view_update"
ViewFormats
Separator
if (output_preamble) {
if (!runparams.nice) {
// code for usual, NOT nice-latex-file
- os << "\\nonstopmode\n";
+ os << "\\batchmode\n"; // changed
+ // from \nonstopmode
d->texrow.newline();
}
if (!original_path.empty()) {
int LaTeX::startscript()
{
// onlyFilename() is needed for cygwin
- string tmp = cmd + ' ' + "-max-print-line=200 "
- + quoteName(onlyFilename(file.toFilesystemEncoding()));
- return Systemcall().startscript(Systemcall::Wait, tmp);
+ string tmp = cmd + ' '
+ + quoteName(onlyFilename(file.toFilesystemEncoding()))
+ + " > " + os::nulldev();
+ Systemcall one;
+ return one.startscript(Systemcall::Wait, tmp);
}
+++ /dev/null
-// -*- C++ -*-
-/**
- * \file GuiProgress.cpp
- * This file is part of LyX, the document processor.
- * Licence details can be found in the file COPYING.
- *
- * \author Peter Kümmel
- *
- * Full author contact details are available in file CREDITS.
- */
-
-#include <config.h>
-
-#include "GuiProgress.h"
-
-#include "qt_helpers.h"
-
-#include "support/Systemcall.h"
-
-#include <QApplication>
-
-
-namespace lyx {
-namespace frontend {
-
-
-GuiProgress::GuiProgress(GuiView & parent, Qt::DockWidgetArea area,
- Qt::WindowFlags flags) : DockView(parent, "view-console", area, flags)
-{
- setWindowTitle(qt_("External process monitoring"));
- setWidget(&text_edit);
- support::Systemcall::registerProgressInterface(this);
-}
-
-
-void GuiProgress::appendMessage(QString const & msg)
-{
- text_edit.append(msg);
- // QEventLoop::ExcludeUserInputEvents:
- // don't allow user inputs while processing a document
- // if we allow it, we open will Pandora's Box of multithreading
- QApplication::processEvents(QEventLoop::ExcludeUserInputEvents);
-}
-
-
-void GuiProgress::clearMessages()
-{
- text_edit.clear();
-}
-
-
-Dialog * createGuiProgress(GuiView & lv)
-{
- GuiView & guiview = static_cast<GuiView &>(lv);
-#ifdef Q_WS_MACX
- // TODO where to show up on the Mac?
- //return new GuiProgress(guiview, Qt::RightDockWidgetArea, Qt::Drawer);
-#else
- return new GuiProgress(guiview, Qt::BottomDockWidgetArea);
-#endif
-}
-
-} // namespace frontend
-} // namespace lyx
-
-
+++ /dev/null
-// -*- C++ -*-
-/**
- * \file GuiProgress.h
- * This file is part of LyX, the document processor.
- * Licence details can be found in the file COPYING.
- *
- * \author Peter Kümmel
- *
- * Full author contact details are available in file CREDITS.
- */
-
-#ifndef GUIPROGRESS_H
-#define GUIPROGRESS_H
-
-#include "support/ProgressInterface.h"
-
-#include "DockView.h"
-
-#include <QTextEdit>
-
-#include <string>
-
-
-namespace lyx {
-namespace frontend {
-
-
-class GuiProgress :
- public DockView,
- public lyx::support::ProgressInterface
-{
-
-public:
- GuiProgress(
- GuiView & parent, ///< the main window where to dock.
- Qt::DockWidgetArea area, ///< Position of the dock (and also drawer)
- Qt::WindowFlags flags = 0);
-
- void appendMessage(QString const &);
- void clearMessages();
-
- /// Controller inherited method.
- ///@{
- bool initialiseParams(std::string const & source) { return true; }
- void clearParams() {}
- void dispatchParams() {}
- bool isBufferDependent() const { return false; }
- bool canApply() const { return true; }
- bool canApplyToReadOnly() const { return true; }
- void updateView() {}
- ///@}
-
-private:
- QTextEdit text_edit;
-};
-
-
-} // namespace frontend
-} // namespace lyx
-
-#endif
-
#include "GuiMenubar.h"
#include "GuiToolbar.h"
#include "GuiToolbars.h"
-#include "GuiProgress.h"
#include "qt_helpers.h"
"thesaurus",
#endif
-"texinfo", "toc", "href", "view-source", "view-console", "vspace", "wrap", "listings" };
+"texinfo", "toc", "href", "view-source", "vspace", "wrap", "listings" };
char const * const * const end_dialognames =
dialognames + (sizeof(dialognames) / sizeof(char *));
Dialog * createGuiHyperlink(GuiView & lv);
Dialog * createGuiVSpace(GuiView & lv);
Dialog * createGuiViewSource(GuiView & lv);
-Dialog * createGuiProgress(GuiView & lv);
Dialog * createGuiWrap(GuiView & lv);
return createGuiLog(*this);
if (name == "view-source")
return createGuiViewSource(*this);
- if (name == "view-console")
- return createGuiProgress(*this);
if (name == "mathdelimiter")
return createGuiDelimiter(*this);
if (name == "mathmatrix")
GuiPopupMenu.cpp \
GuiPrefs.cpp \
GuiPrint.cpp \
- GuiProgress.cpp \
GuiRef.cpp \
GuiSearch.cpp \
GuiSelection.cpp \
GuiPopupMenu.h \
GuiPrefs.h \
GuiPrint.h \
- GuiProgress.h \
GuiRef.h \
GuiSearch.h \
GuiSelection.h \
BUILT_SOURCES = $(PCH_FILE)
-######################### Qt stuff #############################
-#
-
-CLEANFILES += $(MOCEDFILES)
-BUILT_SOURCES += $(MOCEDFILES)
-
-MOCEDFILES = $(MOCHEADER:%.h=%_moc.cpp)
-
-%_moc.cpp: %.h
- $(MOC4) -o $@ $<
-
-MOCHEADER = \
- SystemcallPrivate.h
-
-liblyxsupport_la_DEPENDENCIES = $(MOCEDFILES)
-
-#
-#################################################################
-
AM_CPPFLAGS += $(PCH_FLAGS) -I$(srcdir)/.. $(BOOST_INCLUDES)
AM_CPPFLAGS += $(QT4_CPPFLAGS) $(QT4_CORE_INCLUDES) -I$(srcdir)/minizip
liblyxsupport_la_CFLAGS = -x c++
liblyxsupport_la_SOURCES = \
- $(MOCHEADER) \
FileMonitor.h \
FileMonitor.cpp \
RandomAccessList.h \
strfwd.h \
Systemcall.cpp \
Systemcall.h \
- SystemcallPrivate.cpp \
- ProgressInterface.h \
SignalSlot.cpp \
SignalSlot.h \
SignalSlotPrivate.h \
+++ /dev/null
-// -*- C++ -*-
-/**
- * \file ProgressInterface.h
- * This file is part of LyX, the document processor.
- * Licence details can be found in the file COPYING.
- *
- * \author Peter Kümmel
- *
- * Full author contact details are available in file CREDITS.
- */
-
-#ifndef LYX_SUPPORT_PROGRESSINTERFACE_H
-#define LYX_SUPPORT_PROGRESSINTERFACE_H
-
-class QString;
-
-namespace lyx {
-namespace support {
-
-
-class ProgressInterface
-{
-public:
- virtual ~ProgressInterface() {}
-
- virtual void appendMessage(QString const &) = 0;
- virtual void clearMessages() = 0;
-
-protected:
- ProgressInterface() {}
-};
-
-
-} // namespace support
-} // namespace lyx
-
-#endif // LYX_SUPPORT_PROGRESSINTERFACE_H
-
* Licence details can be found in the file COPYING.
*
* \author Asger Alstrup
- * \author Peter Kümmel
*
* Interface cleaned up by
* \author Angus Leeming
#include <config.h>
#include "support/Systemcall.h"
-#include "support/SystemcallPrivate.h"
-#include "support/ProgressInterface.h"
+#include "support/os.h"
-namespace lyx {
-namespace support {
-
-static ProgressInterface* progress_impl = 0;
-
-
-void Systemcall::registerProgressInterface(ProgressInterface* p)
-{
- progress_impl = p;
-}
+#include <cstdlib>
+using std::string;
-ProgressInterface* Systemcall::progress()
-{
- return progress_impl;
-}
+#ifndef CXX_GLOBAL_CSTD
+using std::system;
+#endif
+namespace lyx {
+namespace support {
-int Systemcall::startscript(Starttype how, std::string const & what)
+// Reuse of instance
+int Systemcall::startscript(Starttype how, string const & what)
{
- // TODO Reuse of instance?
- SystemcallPrivate* process = new SystemcallPrivate;
- if (how == Wait)
- return process->start(what, true);
- return process->start(what, false);
+ string command = what;
+
+ if (how == DontWait) {
+ switch (os::shell()) {
+ case os::UNIX:
+ command += " &";
+ break;
+ case os::CMD_EXE:
+ command = "start /min " + command;
+ break;
+ }
+ }
+
+ return ::system(command.c_str());
}
-
} // namespace support
} // namespace lyx
* Licence details can be found in the file COPYING.
*
* \author Asger Alstrup
- * \author Peter Kümmel
*
* Interface cleaned up by
* \author Angus Leeming
namespace lyx {
namespace support {
-class ProgressInterface;
-
/**
* An instance of Class Systemcall represents a single child process.
*
- * Class Systemcall uses SystemcallPrivate to launch the child process.
+ * Class Systemcall uses system() to launch the child process.
* The user can choose to wait or not wait for the process to complete, but no
* callback is invoked upon completion of the child.
*
* by spaces.
*/
int startscript(Starttype how, std::string const & what);
-
- static void registerProgressInterface(ProgressInterface*);
- static ProgressInterface* progress();
};
} // namespace support
+++ /dev/null
-// -*- C++ -*-
-/**
- * \file SystemcallPrivate.cpp
- * This file is part of LyX, the document processor.
- * Licence details can be found in the file COPYING.
- *
- * \author Peter Kümmel
- *
- * Full author contact details are available in file CREDITS.
- */
-
-#include <config.h>
-
-#include "SystemcallPrivate.h"
-
-#include "Systemcall.h"
-#include "ProgressInterface.h"
-
-#include "gettext.h"
-#include "qstring_helpers.h"
-
-
-namespace lyx {
-namespace support {
-
-
-// TODO should we move qt_ to qstring_helpers?
-static
-QString const qt_(char const * str)
-{
- return toqstr(_(str));
-}
-
-
-
-SystemcallPrivate::SystemcallPrivate()
-{
- ProgressInterface* progress = Systemcall::progress();
- if (progress) {
- connect(&process, SIGNAL(readyReadStandardOutput()), this, SLOT(newProcessOutput()));
- connect(&process, SIGNAL(started()), this, SLOT(processStarted()));
- connect(&process, SIGNAL(error(QProcess::ProcessError)), this, SLOT(processError(QProcess::ProcessError)));
- connect(&process, SIGNAL(finished(int, QProcess::ExitStatus)),
- this, SLOT(processFinished(int, QProcess::ExitStatus)));
- }
-}
-
-
-int SystemcallPrivate::start(const std::string & cmd, bool waitForFinished)
-{
- ProgressInterface* progress = Systemcall::progress();
- if (progress) {
- progress->clearMessages();
- progress->appendMessage(qt_("Starting process with command "));
- progress->appendMessage(toqstr(cmd));
- }
-
- process.setReadChannel(QProcess::StandardOutput);
- process.start(toqstr(cmd), QStringList(), QIODevice::ReadOnly);
- // wait some seconds until the process has started
- process.waitForStarted(10 * 1000);
- if (waitForFinished) {
- // with waitForFinished(-1); we only get one signal per run
- while (process.state() == QProcess::Running)
- process.waitForFinished(500);
- return process.exitCode();
- }
- if (process.state() != QProcess::Running) {
- process.kill();
- // TODO this needs more testing
- deleteLater();
- return -1;
- }
- return 0;
-}
-
-
-void SystemcallPrivate::newProcessOutput()
-{
- ProgressInterface* progress = Systemcall::progress();
- if (progress) {
- const QString output = QString::fromLocal8Bit(process.readAllStandardOutput());
- progress->appendMessage(output);
- }
-}
-
-
-void SystemcallPrivate::processStarted()
-{
- ProgressInterface* progress = Systemcall::progress();
- if (progress) {
- progress->appendMessage(qt_("Process started\n"));
- }
-}
-
-
-void SystemcallPrivate::processError(QProcess::ProcessError err)
-{
- ProgressInterface* progress = Systemcall::progress();
- if (progress) {
- QString message;
- switch (err) {
- case QProcess::FailedToStart:
- message = qt_("The process failed to start. Either the invoked program is missing, "
- "or you may have insufficient permissions to invoke the program.");
- break;
- case QProcess::Crashed:
- message = qt_("The process crashed some time after starting successfully.");
- break;
- case QProcess::Timedout:
- message = qt_("The process timed out. It might be restarted automatically.");
- break;
- case QProcess::WriteError:
- message = qt_("An error occurred when attempting to write to the process. For example, "
- "the process may not be running, or it may have closed its input channel.");
- break;
- case QProcess::ReadError:
- message = qt_("An error occurred when attempting to read from the process. For example, "
- "the process may not be running.");
- break;
- case QProcess::UnknownError:
- default:
- message = qt_("An unknown error occured.");
- break;
- }
- progress->appendMessage(qt_("The process failed: ") + message + '\n');
- }
-}
-
-
-void SystemcallPrivate::processFinished(int, QProcess::ExitStatus status)
-{
- ProgressInterface* progress = Systemcall::progress();
- if (progress) {
- QString message;
- switch (status) {
- case QProcess::NormalExit:
- message = qt_("The process exited normally.");
- break;
- case QProcess::CrashExit:
- message = qt_("The process crashed.");
- break;
- default:
- message = qt_("Unknown exit state.");
- break;
- }
- progress->appendMessage(qt_("Process finished: ") + message + '\n');
- }
- deleteLater();
-}
-
-
-} // namespace support
-} // namespace lyx
-
-#include "SystemcallPrivate_moc.cpp"
+++ /dev/null
-// -*- C++ -*-
-/**
- * \file SystemcallPrivate.h
- * This file is part of LyX, the document processor.
- * Licence details can be found in the file COPYING.
- *
- * \author Peter Kümmel
- *
- * Full author contact details are available in file CREDITS.
- */
-
-#ifndef LYX_SUPPORT_SYSTEMCALLPRIVATE_H
-#define LYX_SUPPORT_SYSTEMCALLPRIVATE_H
-
-#include <QObject>
-#include <QProcess>
-
-#include <string>
-
-
-namespace lyx {
-namespace support {
-
-class ProgressInterface;
-
-class SystemcallPrivate : public QObject
-{
- Q_OBJECT
-
-public:
- SystemcallPrivate();
-
- // When waitForFinished == true : returns the exit code of the process
- // When waitForFinished == false: returns 0 if the process could be started
- int start(const std::string & cmd, bool waitForFinished);
-
-public Q_SLOTS:
- void newProcessOutput();
- void processStarted();
- void processError(QProcess::ProcessError);
- void processFinished(int, QProcess::ExitStatus);
-
-private:
- QProcess process;
-};
-
-
-} // namespace support
-} // namespace lyx
-
-#endif // LYX_SUPPORT_SYSTEMCALLPRIVATE_H