diff -Nur qcad-2.0.4.0-1.src-orig/qcad/src/qc_applicationwindow.cpp qcad-2.0.4.0-1.src/qcad/src/qc_applicationwindow.cpp --- qcad-2.0.4.0-1.src-orig/qcad/src/qc_applicationwindow.cpp 2004-09-14 22:13:07.000000000 +0200 +++ qcad-2.0.4.0-1.src/qcad/src/qc_applicationwindow.cpp 2005-04-05 15:40:25.000000000 +0200 @@ -27,6 +27,9 @@ #include "qc_applicationwindow.h" #include <fstream> +#include <sys/types.h> +#include <sys/wait.h> +#include <unistd.h> #include <qaccel.h> #include <qaction.h> @@ -2774,11 +2777,44 @@ #if QT_VERSION>=0x030200 assistant->setArguments(args); #endif + connect( assistant, SIGNAL(error(const QString&)), this, SLOT(slotAssistantError(const QString&)) ); } assistant->openAssistant(); //assistant->showPage("index.html"); } +void QC_ApplicationWindow::slotAssistantError(const QString&) { + if ( !assistant->isOpen() ) { + pid_t pid; + if ( (pid = fork()) < 0 ) { + perror( "fork" ); + QMessageBox::critical( this, QC_APPNAME, "Could not fork child process." ); + return; + } + if ( pid==0 ) { // child + pid_t gcpid; + if ( (gcpid = fork()) < 0 ) { + perror( "fork" ); + _exit(1); + } + if ( gcpid==0 ) { // grandchild + char* argv[] = { "gnome-open", + "/usr/share/qcad/doc/cad/index.html", + 0 + }; + execvp( argv[0], argv); + perror( "execvp" ); + _exit(1); + } + int status; + waitpid( pid, &status, 0 ); + _exit(0); + } + // parent + int status; + waitpid( pid, &status, 0 ); + } +} /** diff -Nur qcad-2.0.4.0-1.src-orig/qcad/src/qc_applicationwindow.h qcad-2.0.4.0-1.src/qcad/src/qc_applicationwindow.h --- qcad-2.0.4.0-1.src-orig/qcad/src/qc_applicationwindow.h 2004-09-14 22:13:07.000000000 +0200 +++ qcad-2.0.4.0-1.src/qcad/src/qc_applicationwindow.h 2005-02-14 23:03:46.000000000 +0100 @@ -224,6 +224,8 @@ /** resizes window to 640x480 for screen shots */ void slotTestResize1024(); + void slotAssistantError(const QString&); + signals: void gridChanged(bool on); void draftChanged(bool on);