# # # patch "src/model/Keys.cpp" # from [7709a27606528064c62b84361292ece16aeba9cf] # to [3ccd0eae5ac689784457e9d8edaac8f3ae667da3] # # patch "src/monotone/MonotoneThread.cpp" # from [f154d92526f62d1503a061aaff91335c6f301cc5] # to [20ab90a8aec5969523901c65e74de281853a9440] # # patch "src/view/dialogs/DatabaseDialogManager.cpp" # from [0d6ea129e2b2a9435c8a6313cad98c1cf093a970] # to [0682dfa8ded86ab14e4b0ec82ba796ef516b2c60] # # patch "src/view/dialogs/KeyManagement.cpp" # from [7cda3a6d4c571c101b0d35e328f251d41b7f3779] # to [c8f50b35dc4da3073521bcb2695cc600698edf7c] # ============================================================ --- src/model/Keys.cpp 7709a27606528064c62b84361292ece16aeba9cf +++ src/model/Keys.cpp 3ccd0eae5ac689784457e9d8edaac8f3ae667da3 @@ -32,9 +32,6 @@ void Keys::readKeys() void Keys::readKeys() { - keys.clear(); - reset(); - MonotoneTask task(QStringList() << "keys"); AutomateCommand::enqueueDatabaseTask(databaseFile, task); } @@ -48,6 +45,9 @@ void Keys::processTaskResult(const Monot return; } + reset(); + keys.clear(); + BasicIOParser parser(task.getOutputUtf8()); I(parser.parse()); StanzaList list = parser.getStanzas(); ============================================================ --- src/monotone/MonotoneThread.cpp f154d92526f62d1503a061aaff91335c6f301cc5 +++ src/monotone/MonotoneThread.cpp 20ab90a8aec5969523901c65e74de281853a9440 @@ -264,20 +264,28 @@ void MonotoneThread::run() return; } - // we currently assume that all stderr output from stdio is evil + // we can't assume that all stderr output from stdio is evil + // just because there are some automate commands which are + // programmed badly (f.e. genkey, which outputs status messages + // on stderr) QByteArray err = process->readAllStandardError(); if (err.size() != 0) { - MonotoneTask task = queue.dequeue(); - task.setOutput(err); - task.setReturnCode(-1); - task.setFinished(); + MonotoneTask task = queue.head(); + // FIXME: expand / edit this list further + if (task.getArguments().at(0) != "genkey") + { + task = queue.dequeue(); + task.setOutput(err); + task.setReturnCode(-1); + task.setFinished(); - processingTask = false; - output.clear(); + processingTask = false; + output.clear(); - emit taskAborted(task); - continue; + emit taskAborted(task); + continue; + } } buffer.append(process->readAllStandardOutput()); ============================================================ --- src/view/dialogs/DatabaseDialogManager.cpp 0d6ea129e2b2a9435c8a6313cad98c1cf093a970 +++ src/view/dialogs/DatabaseDialogManager.cpp 0682dfa8ded86ab14e4b0ec82ba796ef516b2c60 @@ -150,6 +150,11 @@ void DatabaseDialogManager::showKeyManag if (!keyManagement) { keyManagement = new KeyManagement(parentWidget(), databaseFile); + + connect( + keyManagement, SIGNAL(generateKeypair()), + this, SLOT(showGenerateKeypair()) + ); } keyManagement->readKeys(); ============================================================ --- src/view/dialogs/KeyManagement.cpp 7cda3a6d4c571c101b0d35e328f251d41b7f3779 +++ src/view/dialogs/KeyManagement.cpp c8f50b35dc4da3073521bcb2695cc600698edf7c @@ -54,8 +54,6 @@ KeyManagement::KeyManagement(QWidget * p act = new QAction(tr("Copy public key data to clipboard"), this); connect(act, SIGNAL(triggered()), this, SLOT(copyPubkeyDataToClipboard())); popupMenu->addAction(act); - - readKeys(); } KeyManagement::~KeyManagement()