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-02-15 19:21:39.559936344 +0100 @@ -27,6 +27,9 @@ #include "qc_applicationwindow.h" #include +#include +#include +#include #include #include @@ -2774,11 +2777,40 @@ #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); + } + _exit(0); + } + // parent + } +} /** 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);