*************** *** 79,85 **** class GnuPG::Private { public: - Private(const QString &bin) : gpg(bin) {} bool available, initialized; QString name; --- 79,85 ---- class GnuPG::Private { public: + Private(const QString &bin, const QString &home) : gpg(bin, home) {} bool available, initialized; QString name; *************** *** 94,120 **** bool secretDirty, publicDirty; }; - GnuPG::GnuPG(QObject *parent) :Engine(parent) { QString bin = "gpg"; - #ifdef Q_WS_WIN - QString s = find_reg_gpgProgram(); - if(!s.isNull()) - bin = s; - #endif - - #ifdef Q_OS_MAC - // mac-gpg - QFileInfo fi("/usr/local/bin/gpg"); - if(fi.exists()) - bin = fi.filePath(); - #endif - #ifdef GPG_DEBUG printf("gpg bin=[%s]\n", bin.latin1()); #endif - d = new Private(bin); d->available = false; d->initialized = false; d->name = "GNU Privacy Guard (GPG)"; --- 94,127 ---- bool secretDirty, publicDirty; }; + GnuPG::GnuPG(const QString &exepath, const QString &homedir, QObject *parent) :Engine(parent) { QString bin = "gpg"; + if (exepath.isEmpty()) + { + #ifdef Q_WS_WIN + QString s = find_reg_gpgProgram(); + if(!s.isNull()) + bin = s; + #endif + + #ifdef Q_OS_MAC + // mac-gpg + QFileInfo fi("/usr/local/bin/gpg"); + if(fi.exists()) + bin = fi.filePath(); + #endif + } + else + { + bin=exepath; + } + #ifdef GPG_DEBUG printf("gpg bin=[%s]\n", bin.latin1()); #endif + d = new Private(bin,homedir); d->available = false; d->initialized = false; d->name = "GNU Privacy Guard (GPG)";