From e434315940ba41833e4dc82152d36ad5ffdd4abe Mon Sep 17 00:00:00 2001 From: SET Date: Sun, 25 Oct 2020 17:28:47 +0100 Subject: [PATCH] Edit owner trust level. Inplace editing with a combobox if user is allowed. in app config file. --- AppConfig.cpp | 12 ++++ AppConfig.h | 6 ++ GpgMEWorker.cpp | 13 +++- GpgMEWorker.h | 26 ++++++++ K7Main.cpp | 14 +++- K7Main.h | 8 ++- KeyEdit.cpp | 102 ++++++++++++++++++++++++++++++ KeyEdit.h | 54 ++++++++++++++++ WTAPPROOT/K7/K7.xml | 5 ++ WTAPPROOT/K7/K7_fr.xml | 5 ++ WTAPPROOT/K7/k7config.json | 1 + global.h | 3 + nbproject/Makefile-ARM-Release.mk | 22 ++++--- nbproject/Makefile-Debug.mk | 22 ++++--- nbproject/Makefile-Release.mk | 22 ++++--- nbproject/configurations.xml | 17 +++++ 16 files changed, 304 insertions(+), 28 deletions(-) create mode 100644 KeyEdit.cpp create mode 100644 KeyEdit.h diff --git a/AppConfig.cpp b/AppConfig.cpp index fd298f2..f94ee47 100644 --- a/AppConfig.cpp +++ b/AppConfig.cpp @@ -29,6 +29,7 @@ using namespace std; "UserCommonName1" : { "canImport" : true, "canDelete" : true, + "canEditOwnerTrust" : true, "privKeyIds" : [ "fullKeyId1", "fullKeyId2" @@ -115,6 +116,17 @@ bool AppConfig::CanDelete() const return cnObject.get("canDelete"); } +bool AppConfig::CanEditOwnerTrust() const +{ + const WString commonName = GetSubjectDnAttribute(WSslCertificate::DnAttributeName::CommonName); + if (!m_SubjectCNObject.contains(commonName.toUTF8())) + return false; + Json::Object cnObject = m_SubjectCNObject.get(commonName.toUTF8()); + if (!cnObject.contains("canEditOwnerTrust")) + return false; + return cnObject.get("canEditOwnerTrust"); +} + vector AppConfig::PrivateKeyIds() const { // List private key identifiers. diff --git a/AppConfig.h b/AppConfig.h index 41e9799..ae2ed89 100644 --- a/AppConfig.h +++ b/AppConfig.h @@ -42,6 +42,12 @@ public: * @return */ bool CanDelete() const; + /** + * Allows to edit trust in key owner. Users who don't manage private keys + * can to that too. + * @return + */ + bool CanEditOwnerTrust() const; /** * List of full private key identifiers. The user may delete these private keys. * Must be full keyid, short keyid or fingerprint. diff --git a/GpgMEWorker.cpp b/GpgMEWorker.cpp index 28e1d72..7140ad5 100644 --- a/GpgMEWorker.cpp +++ b/GpgMEWorker.cpp @@ -77,4 +77,15 @@ const string GpgMEWorker::ImportKey(const char * filePath, Error& e) fclose(kFp); return keyid; -} \ No newline at end of file +} + +const Error GpgMEWorker::EditOwnerTrust(const char* anyFullId, GpgME::Key::OwnerTrust trustLevel) +{ + Error e; + Key k = FindKey(anyFullId, e, false); + if (e.code() != 0) + return e; + SetOwnerTrustEditInteractor * interactor = new SetOwnerTrustEditInteractor(trustLevel); + GpgME::Data d; // Internal processing data + return m_ctx->edit(k, std::unique_ptr (interactor), d); +} diff --git a/GpgMEWorker.h b/GpgMEWorker.h index 21cb397..36de407 100644 --- a/GpgMEWorker.h +++ b/GpgMEWorker.h @@ -13,10 +13,12 @@ #include #include #include +#include #include using namespace std; using namespace GpgME; + /** * Main class for GPGME OP, except deleting keys. */ @@ -50,10 +52,34 @@ public: * @return the keyid */ const string ImportKey(const char * filePath, Error& e); + /** + * Inplace editing of owner trust if allowed + * @param anyFullId + * @param trustLevel : New trust level in key owner + * @return + */ + const Error EditOwnerTrust(const char * anyFullId, GpgME::Key::OwnerTrust trustLevel); private: Context * m_ctx; }; +/** + * Edit trust in key owner + */ +class SetOwnerTrustEditInteractor : public GpgSetOwnerTrustEditInteractor +{ +public: + /** + * + * @param ownerTrust : New trust level + */ + SetOwnerTrustEditInteractor(GpgME::Key::OwnerTrust ownerTrust) + : GpgSetOwnerTrustEditInteractor(ownerTrust) {} + + virtual ~SetOwnerTrustEditInteractor() {} + +}; + #endif /* GPGMEWORKER_H */ diff --git a/K7Main.cpp b/K7Main.cpp index 51381b4..0e84955 100644 --- a/K7Main.cpp +++ b/K7Main.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -55,11 +56,13 @@ K7Main::K7Main(const WEnvironment& env) OwnerTrustLevel[GpgME::Key::OwnerTrust::Undefined] = TR("UidUndefined"); OwnerTrustLevel[GpgME::Key::OwnerTrust::Unknown] = TR("UidUnknown"); m_uploader = NULL; m_deleter = NULL; + m_keyEdit = new KeyEdit(this); } K7Main::~K7Main() { delete m_config; delete m_uploader; delete m_deleter; + delete m_keyEdit; } void @@ -255,7 +258,16 @@ void K7Main::DisplayKeys(const vector& kList, const WString& grpLabe anc->setAttributeValue("hasSecret", k.hasSecret() ? "1" : "0"); anc->clicked().connect(std::bind(&K7Main::OnKeyAnchorClicked, this, anc)); keyNode->setColumnWidget(1, unique_ptr (anc)); - keyNode->setColumnWidget(2, cpp14::make_unique (OwnerTrustLevel[k.ownerTrust()])); + WText * lblOwnerTrust = new WText(OwnerTrustLevel[k.ownerTrust()]); + if (m_config->CanEditOwnerTrust()) { + if (!m_keyEdit->IsOurKey(k.primaryFingerprint())) { + lblOwnerTrust->doubleClicked().connect(std::bind(&KeyEdit::OnOwnerTrustDoubleClicked, m_keyEdit, keyNode)); + lblOwnerTrust->setToolTip(TR("TTTDoubleCLick")); + } else { + lblOwnerTrust->setToolTip(TR("TTTYourKey")); + } + } + keyNode->setColumnWidget(2, unique_ptr (lblOwnerTrust)); keyNode->setColumnWidget(3, cpp14::make_unique (k.primaryFingerprint())); grpNode->addChildNode(unique_ptr (keyNode)); } diff --git a/K7Main.h b/K7Main.h index 373e00c..c9e793a 100644 --- a/K7Main.h +++ b/K7Main.h @@ -25,11 +25,16 @@ #include "PopupUploader.h" #include "PopupDeleter.h" #include "TransientMessageWidget.h" +#include "KeyEdit.h" +#include "global.h" using namespace Wt; +class KeyEdit; + class K7Main : public WApplication { + friend class KeyEdit; public: K7Main(const WEnvironment& env); virtual ~K7Main(); @@ -39,9 +44,7 @@ private: /** * Translate UID trusts to string */ - typedef map UidValidityMap; UidValidityMap UidValidities; - typedef map OwnerTrustMap; OwnerTrustMap OwnerTrustLevel; AppConfig * m_config; WGridLayout * m_grlMain; @@ -56,6 +59,7 @@ private: WTreeTable * m_ttbSubKeys; Uploader * m_uploader; Deleter * m_deleter; + KeyEdit * m_keyEdit; /** * Finds public keys as per criteria, * and private keys if any is declared in config file for current client. diff --git a/KeyEdit.cpp b/KeyEdit.cpp new file mode 100644 index 0000000..64a68c9 --- /dev/null +++ b/KeyEdit.cpp @@ -0,0 +1,102 @@ +/* + * File: KeyEdit.cpp + * Author: SET - nmset@yandex.com + * License : GPL v2 + * Copyright SET - © 2019 + * + * Created on October 25, 2020, 10:38 AM + */ + +#include "KeyEdit.h" +#include +#include +#include +#include "GpgMEWorker.h" + +using namespace std; + +KeyEdit::KeyEdit(K7Main * owner) +{ + m_owner = owner; +} + +KeyEdit::~KeyEdit() +{ +} + +void KeyEdit::OnOwnerTrustDoubleClicked(WTreeTableNode * keyNode) +{ + // We ought to trust our own keys + const WText * lblFpr = static_cast (keyNode->columnWidget(3)); + if (IsOurKey(lblFpr->text())) + return; + WComboBox * cmbOwnerTrust = new WComboBox(); + FillOwnerTrustCombo(cmbOwnerTrust); + cmbOwnerTrust->blurred().connect(std::bind(&KeyEdit::OnOwnerTrustBlurred, this, keyNode)); + WText * lblOwnerTrust = static_cast (keyNode->columnWidget(2)); + cmbOwnerTrust->setCurrentIndex(cmbOwnerTrust->findText(lblOwnerTrust->text())); + // If nothing gets changed, don't go to engine. + cmbOwnerTrust->setAttributeValue("previousTrustLevel", std::to_string(cmbOwnerTrust->currentIndex())); + keyNode->setColumnWidget(2, unique_ptr (cmbOwnerTrust)); + // +++ + cmbOwnerTrust->setFocus(); +} + +void KeyEdit::OnOwnerTrustBlurred(WTreeTableNode* keyNode) +{ + WComboBox * cmbOwnerTrust = static_cast (keyNode->columnWidget(2)); + WText * lblOwnerTrust = new WText(cmbOwnerTrust->currentText()); + lblOwnerTrust->doubleClicked().connect(std::bind(&KeyEdit::OnOwnerTrustDoubleClicked, this, keyNode)); + const WText * lblFpr = static_cast (keyNode->columnWidget(3)); + const uint newTrustLevel = cmbOwnerTrust->currentIndex(); + const WString previousTrustLevel = cmbOwnerTrust->attributeValue("previousTrustLevel"); + keyNode->setColumnWidget(2, unique_ptr (lblOwnerTrust)); + // If nothing was changed, don't go to engine. + if (WString(std::to_string(newTrustLevel)) == previousTrustLevel) + return; + + GpgMEWorker gpgWorker; + GpgME::Error e = gpgWorker.EditOwnerTrust(lblFpr->text().toUTF8().c_str(), (GpgME::Key::OwnerTrust) newTrustLevel); + if (e.code() != 0) + { + lblOwnerTrust->setText(previousTrustLevel); + m_owner->m_tmwMessage->SetText(TR("OwnerTrustFailure")); + return; + } + m_owner->m_tmwMessage->SetText(TR("OwnerTrustSuccess")); +} + +void KeyEdit::FillOwnerTrustCombo(WComboBox * cmb) +{ + /* + * We should perhaps exclude OwnerTrust::Ultimate. + * kleopatra doesn't do that. + */ + shared_ptr siModel = make_shared (); + OwnerTrustMap OwnerTrustLevel = m_owner->OwnerTrustLevel; + vector> colIndex; + vector> colText; + OwnerTrustMap::iterator it; + for (it = OwnerTrustLevel.begin(); it != OwnerTrustLevel.end(); it++) + { + colIndex.push_back(cpp14::make_unique (std::to_string((*it).first))); + colText.push_back(cpp14::make_unique ((*it).second)); + } + siModel->appendColumn(std::move(colIndex)); + siModel->appendColumn(std::move(colText)); + cmb->clear(); + cmb->setModel(siModel); + cmb->setModelColumn(1); +} + +bool KeyEdit::IsOurKey(const WString& fpr) +{ + vector ourKeys = m_owner->m_config->PrivateKeyIds(); + vector ::iterator it; + for (it = ourKeys.begin(); it != ourKeys.end(); it++) + { + if (*it == fpr) + return true; + } + return false; +} diff --git a/KeyEdit.h b/KeyEdit.h new file mode 100644 index 0000000..0edcbfa --- /dev/null +++ b/KeyEdit.h @@ -0,0 +1,54 @@ +/* + * File: KeyEdit.h + * Author: SET - nmset@yandex.com + * License : GPL v2 + * Copyright SET - © 2019 + * + * Created on October 25, 2020, 10:38 AM + */ + +#ifndef KEYEDIT_H +#define KEYEDIT_H + +#include +#include "K7Main.h" +#include + +using namespace Wt; + +class K7Main; + +/** + * Some key editing functionalities are or will be implemented here. For now, + * only owner trust level is editable. + */ +class KeyEdit +{ +public: + KeyEdit(K7Main * owner); + virtual ~KeyEdit(); + /** + * Shows a combobox with all trust levels + * @param keyNode + */ + void OnOwnerTrustDoubleClicked(WTreeTableNode * keyNode); + /** + * Saves any changes in trust level + * @param keyNode + */ + void OnOwnerTrustBlurred(WTreeTableNode * keyNode); + /** + * If the fingerprint is that of a private key we manage, returns true. + * @param fpr + * @return + */ + bool IsOurKey(const WString& fpr); + +private: + K7Main * m_owner; + + void FillOwnerTrustCombo(WComboBox * cmb); +}; + +#endif /* KEYEDIT_H */ + diff --git a/WTAPPROOT/K7/K7.xml b/WTAPPROOT/K7/K7.xml index 698cb5e..20ba155 100644 --- a/WTAPPROOT/K7/K7.xml +++ b/WTAPPROOT/K7/K7.xml @@ -63,4 +63,9 @@ Import success : Uploaded file could not be imported in the keyring Delete success : + + Double click to edit + This is your key + Owner trust level succesfully changed + Owner trust level failed to be changed \ No newline at end of file diff --git a/WTAPPROOT/K7/K7_fr.xml b/WTAPPROOT/K7/K7_fr.xml index 6f0ef8c..0a351f6 100644 --- a/WTAPPROOT/K7/K7_fr.xml +++ b/WTAPPROOT/K7/K7_fr.xml @@ -63,4 +63,9 @@ Importation réussie : Le fichier téléchargé n'a pu être importé dans le trousseau Suppression réussie : + + Double cliquez pour éditer + C'est votre clé + Confiance dans la certification changée avec succès + Échec de changement de la confiance dans la certification diff --git a/WTAPPROOT/K7/k7config.json b/WTAPPROOT/K7/k7config.json index 0623526..364b840 100644 --- a/WTAPPROOT/K7/k7config.json +++ b/WTAPPROOT/K7/k7config.json @@ -3,6 +3,7 @@ "user1" : { "canImport" : true, "canDelete" : true, + "canEditOwnerTrust" : true, "privKeyIds" : [ "FullKeyId1", "FullKeyId2" diff --git a/global.h b/global.h index dbcc380..2d51e50 100644 --- a/global.h +++ b/global.h @@ -21,6 +21,9 @@ const WString _APPVERSION_("1"); const WString _SPACE_(" "); const WString _COLON_(":"); +typedef map UidValidityMap; +typedef map OwnerTrustMap; + #endif /* GLOBAL_H */ diff --git a/nbproject/Makefile-ARM-Release.mk b/nbproject/Makefile-ARM-Release.mk index c24c1bd..fe8eda0 100644 --- a/nbproject/Makefile-ARM-Release.mk +++ b/nbproject/Makefile-ARM-Release.mk @@ -39,6 +39,7 @@ OBJECTFILES= \ ${OBJECTDIR}/GpgMECWorker.o \ ${OBJECTDIR}/GpgMEWorker.o \ ${OBJECTDIR}/K7Main.o \ + ${OBJECTDIR}/KeyEdit.o \ ${OBJECTDIR}/PopupDeleter.o \ ${OBJECTDIR}/PopupUploader.o \ ${OBJECTDIR}/TransientMessageWidget.o \ @@ -72,42 +73,47 @@ ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/k7: ${OBJECTFILES} ${OBJECTDIR}/AppConfig.o: AppConfig.cpp ${MKDIR} -p ${OBJECTDIR} ${RM} "$@.d" - $(COMPILE.cc) -O2 -s -DLARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -I/usr/local/Wt/include -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/AppConfig.o AppConfig.cpp + $(COMPILE.cc) -O2 -s -DLARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -I/usr/local/Wt/include -I/usr/include/gpgme++ -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/AppConfig.o AppConfig.cpp ${OBJECTDIR}/GpgMECWorker.o: GpgMECWorker.cpp ${MKDIR} -p ${OBJECTDIR} ${RM} "$@.d" - $(COMPILE.cc) -O2 -s -DLARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -I/usr/local/Wt/include -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/GpgMECWorker.o GpgMECWorker.cpp + $(COMPILE.cc) -O2 -s -DLARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -I/usr/local/Wt/include -I/usr/include/gpgme++ -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/GpgMECWorker.o GpgMECWorker.cpp ${OBJECTDIR}/GpgMEWorker.o: GpgMEWorker.cpp ${MKDIR} -p ${OBJECTDIR} ${RM} "$@.d" - $(COMPILE.cc) -O2 -s -DLARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -I/usr/local/Wt/include -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/GpgMEWorker.o GpgMEWorker.cpp + $(COMPILE.cc) -O2 -s -DLARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -I/usr/local/Wt/include -I/usr/include/gpgme++ -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/GpgMEWorker.o GpgMEWorker.cpp ${OBJECTDIR}/K7Main.o: K7Main.cpp ${MKDIR} -p ${OBJECTDIR} ${RM} "$@.d" - $(COMPILE.cc) -O2 -s -DLARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -I/usr/local/Wt/include -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/K7Main.o K7Main.cpp + $(COMPILE.cc) -O2 -s -DLARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -I/usr/local/Wt/include -I/usr/include/gpgme++ -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/K7Main.o K7Main.cpp + +${OBJECTDIR}/KeyEdit.o: KeyEdit.cpp + ${MKDIR} -p ${OBJECTDIR} + ${RM} "$@.d" + $(COMPILE.cc) -O2 -s -DLARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -I/usr/local/Wt/include -I/usr/include/gpgme++ -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/KeyEdit.o KeyEdit.cpp ${OBJECTDIR}/PopupDeleter.o: PopupDeleter.cpp ${MKDIR} -p ${OBJECTDIR} ${RM} "$@.d" - $(COMPILE.cc) -O2 -s -DLARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -I/usr/local/Wt/include -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/PopupDeleter.o PopupDeleter.cpp + $(COMPILE.cc) -O2 -s -DLARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -I/usr/local/Wt/include -I/usr/include/gpgme++ -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/PopupDeleter.o PopupDeleter.cpp ${OBJECTDIR}/PopupUploader.o: PopupUploader.cpp ${MKDIR} -p ${OBJECTDIR} ${RM} "$@.d" - $(COMPILE.cc) -O2 -s -DLARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -I/usr/local/Wt/include -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/PopupUploader.o PopupUploader.cpp + $(COMPILE.cc) -O2 -s -DLARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -I/usr/local/Wt/include -I/usr/include/gpgme++ -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/PopupUploader.o PopupUploader.cpp ${OBJECTDIR}/TransientMessageWidget.o: TransientMessageWidget.cpp ${MKDIR} -p ${OBJECTDIR} ${RM} "$@.d" - $(COMPILE.cc) -O2 -s -DLARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -I/usr/local/Wt/include -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/TransientMessageWidget.o TransientMessageWidget.cpp + $(COMPILE.cc) -O2 -s -DLARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -I/usr/local/Wt/include -I/usr/include/gpgme++ -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/TransientMessageWidget.o TransientMessageWidget.cpp ${OBJECTDIR}/main.o: main.cpp ${MKDIR} -p ${OBJECTDIR} ${RM} "$@.d" - $(COMPILE.cc) -O2 -s -DLARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -I/usr/local/Wt/include -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/main.o main.cpp + $(COMPILE.cc) -O2 -s -DLARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -I/usr/local/Wt/include -I/usr/include/gpgme++ -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/main.o main.cpp # Subprojects .build-subprojects: diff --git a/nbproject/Makefile-Debug.mk b/nbproject/Makefile-Debug.mk index b21e215..ffec279 100644 --- a/nbproject/Makefile-Debug.mk +++ b/nbproject/Makefile-Debug.mk @@ -39,6 +39,7 @@ OBJECTFILES= \ ${OBJECTDIR}/GpgMECWorker.o \ ${OBJECTDIR}/GpgMEWorker.o \ ${OBJECTDIR}/K7Main.o \ + ${OBJECTDIR}/KeyEdit.o \ ${OBJECTDIR}/PopupDeleter.o \ ${OBJECTDIR}/PopupUploader.o \ ${OBJECTDIR}/TransientMessageWidget.o \ @@ -72,42 +73,47 @@ ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/k7: ${OBJECTFILES} ${OBJECTDIR}/AppConfig.o: AppConfig.cpp ${MKDIR} -p ${OBJECTDIR} ${RM} "$@.d" - $(COMPILE.cc) -g -DDEVTIME -I/usr/local/Wt-Debug/include -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/AppConfig.o AppConfig.cpp + $(COMPILE.cc) -g -DDEVTIME -I/usr/local/Wt-Debug/include -I/usr/include/gpgme++ -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/AppConfig.o AppConfig.cpp ${OBJECTDIR}/GpgMECWorker.o: GpgMECWorker.cpp ${MKDIR} -p ${OBJECTDIR} ${RM} "$@.d" - $(COMPILE.cc) -g -DDEVTIME -I/usr/local/Wt-Debug/include -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/GpgMECWorker.o GpgMECWorker.cpp + $(COMPILE.cc) -g -DDEVTIME -I/usr/local/Wt-Debug/include -I/usr/include/gpgme++ -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/GpgMECWorker.o GpgMECWorker.cpp ${OBJECTDIR}/GpgMEWorker.o: GpgMEWorker.cpp ${MKDIR} -p ${OBJECTDIR} ${RM} "$@.d" - $(COMPILE.cc) -g -DDEVTIME -I/usr/local/Wt-Debug/include -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/GpgMEWorker.o GpgMEWorker.cpp + $(COMPILE.cc) -g -DDEVTIME -I/usr/local/Wt-Debug/include -I/usr/include/gpgme++ -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/GpgMEWorker.o GpgMEWorker.cpp ${OBJECTDIR}/K7Main.o: K7Main.cpp ${MKDIR} -p ${OBJECTDIR} ${RM} "$@.d" - $(COMPILE.cc) -g -DDEVTIME -I/usr/local/Wt-Debug/include -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/K7Main.o K7Main.cpp + $(COMPILE.cc) -g -DDEVTIME -I/usr/local/Wt-Debug/include -I/usr/include/gpgme++ -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/K7Main.o K7Main.cpp + +${OBJECTDIR}/KeyEdit.o: KeyEdit.cpp + ${MKDIR} -p ${OBJECTDIR} + ${RM} "$@.d" + $(COMPILE.cc) -g -DDEVTIME -I/usr/local/Wt-Debug/include -I/usr/include/gpgme++ -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/KeyEdit.o KeyEdit.cpp ${OBJECTDIR}/PopupDeleter.o: PopupDeleter.cpp ${MKDIR} -p ${OBJECTDIR} ${RM} "$@.d" - $(COMPILE.cc) -g -DDEVTIME -I/usr/local/Wt-Debug/include -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/PopupDeleter.o PopupDeleter.cpp + $(COMPILE.cc) -g -DDEVTIME -I/usr/local/Wt-Debug/include -I/usr/include/gpgme++ -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/PopupDeleter.o PopupDeleter.cpp ${OBJECTDIR}/PopupUploader.o: PopupUploader.cpp ${MKDIR} -p ${OBJECTDIR} ${RM} "$@.d" - $(COMPILE.cc) -g -DDEVTIME -I/usr/local/Wt-Debug/include -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/PopupUploader.o PopupUploader.cpp + $(COMPILE.cc) -g -DDEVTIME -I/usr/local/Wt-Debug/include -I/usr/include/gpgme++ -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/PopupUploader.o PopupUploader.cpp ${OBJECTDIR}/TransientMessageWidget.o: TransientMessageWidget.cpp ${MKDIR} -p ${OBJECTDIR} ${RM} "$@.d" - $(COMPILE.cc) -g -DDEVTIME -I/usr/local/Wt-Debug/include -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/TransientMessageWidget.o TransientMessageWidget.cpp + $(COMPILE.cc) -g -DDEVTIME -I/usr/local/Wt-Debug/include -I/usr/include/gpgme++ -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/TransientMessageWidget.o TransientMessageWidget.cpp ${OBJECTDIR}/main.o: main.cpp ${MKDIR} -p ${OBJECTDIR} ${RM} "$@.d" - $(COMPILE.cc) -g -DDEVTIME -I/usr/local/Wt-Debug/include -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/main.o main.cpp + $(COMPILE.cc) -g -DDEVTIME -I/usr/local/Wt-Debug/include -I/usr/include/gpgme++ -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/main.o main.cpp # Subprojects .build-subprojects: diff --git a/nbproject/Makefile-Release.mk b/nbproject/Makefile-Release.mk index 1293e5c..86df5fc 100644 --- a/nbproject/Makefile-Release.mk +++ b/nbproject/Makefile-Release.mk @@ -39,6 +39,7 @@ OBJECTFILES= \ ${OBJECTDIR}/GpgMECWorker.o \ ${OBJECTDIR}/GpgMEWorker.o \ ${OBJECTDIR}/K7Main.o \ + ${OBJECTDIR}/KeyEdit.o \ ${OBJECTDIR}/PopupDeleter.o \ ${OBJECTDIR}/PopupUploader.o \ ${OBJECTDIR}/TransientMessageWidget.o \ @@ -72,42 +73,47 @@ ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/k7: ${OBJECTFILES} ${OBJECTDIR}/AppConfig.o: AppConfig.cpp ${MKDIR} -p ${OBJECTDIR} ${RM} "$@.d" - $(COMPILE.cc) -O2 -s -I/usr/local/Wt/include -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/AppConfig.o AppConfig.cpp + $(COMPILE.cc) -O2 -s -I/usr/local/Wt/include -I/usr/include/gpgme++ -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/AppConfig.o AppConfig.cpp ${OBJECTDIR}/GpgMECWorker.o: GpgMECWorker.cpp ${MKDIR} -p ${OBJECTDIR} ${RM} "$@.d" - $(COMPILE.cc) -O2 -s -I/usr/local/Wt/include -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/GpgMECWorker.o GpgMECWorker.cpp + $(COMPILE.cc) -O2 -s -I/usr/local/Wt/include -I/usr/include/gpgme++ -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/GpgMECWorker.o GpgMECWorker.cpp ${OBJECTDIR}/GpgMEWorker.o: GpgMEWorker.cpp ${MKDIR} -p ${OBJECTDIR} ${RM} "$@.d" - $(COMPILE.cc) -O2 -s -I/usr/local/Wt/include -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/GpgMEWorker.o GpgMEWorker.cpp + $(COMPILE.cc) -O2 -s -I/usr/local/Wt/include -I/usr/include/gpgme++ -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/GpgMEWorker.o GpgMEWorker.cpp ${OBJECTDIR}/K7Main.o: K7Main.cpp ${MKDIR} -p ${OBJECTDIR} ${RM} "$@.d" - $(COMPILE.cc) -O2 -s -I/usr/local/Wt/include -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/K7Main.o K7Main.cpp + $(COMPILE.cc) -O2 -s -I/usr/local/Wt/include -I/usr/include/gpgme++ -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/K7Main.o K7Main.cpp + +${OBJECTDIR}/KeyEdit.o: KeyEdit.cpp + ${MKDIR} -p ${OBJECTDIR} + ${RM} "$@.d" + $(COMPILE.cc) -O2 -s -I/usr/local/Wt/include -I/usr/include/gpgme++ -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/KeyEdit.o KeyEdit.cpp ${OBJECTDIR}/PopupDeleter.o: PopupDeleter.cpp ${MKDIR} -p ${OBJECTDIR} ${RM} "$@.d" - $(COMPILE.cc) -O2 -s -I/usr/local/Wt/include -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/PopupDeleter.o PopupDeleter.cpp + $(COMPILE.cc) -O2 -s -I/usr/local/Wt/include -I/usr/include/gpgme++ -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/PopupDeleter.o PopupDeleter.cpp ${OBJECTDIR}/PopupUploader.o: PopupUploader.cpp ${MKDIR} -p ${OBJECTDIR} ${RM} "$@.d" - $(COMPILE.cc) -O2 -s -I/usr/local/Wt/include -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/PopupUploader.o PopupUploader.cpp + $(COMPILE.cc) -O2 -s -I/usr/local/Wt/include -I/usr/include/gpgme++ -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/PopupUploader.o PopupUploader.cpp ${OBJECTDIR}/TransientMessageWidget.o: TransientMessageWidget.cpp ${MKDIR} -p ${OBJECTDIR} ${RM} "$@.d" - $(COMPILE.cc) -O2 -s -I/usr/local/Wt/include -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/TransientMessageWidget.o TransientMessageWidget.cpp + $(COMPILE.cc) -O2 -s -I/usr/local/Wt/include -I/usr/include/gpgme++ -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/TransientMessageWidget.o TransientMessageWidget.cpp ${OBJECTDIR}/main.o: main.cpp ${MKDIR} -p ${OBJECTDIR} ${RM} "$@.d" - $(COMPILE.cc) -O2 -s -I/usr/local/Wt/include -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/main.o main.cpp + $(COMPILE.cc) -O2 -s -I/usr/local/Wt/include -I/usr/include/gpgme++ -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/main.o main.cpp # Subprojects .build-subprojects: diff --git a/nbproject/configurations.xml b/nbproject/configurations.xml index 51be029..2ce1f9c 100644 --- a/nbproject/configurations.xml +++ b/nbproject/configurations.xml @@ -8,6 +8,7 @@ GpgMECWorker.h GpgMEWorker.h K7Main.h + KeyEdit.h PopupDeleter.h PopupUploader.h TransientMessageWidget.h @@ -26,6 +27,7 @@ GpgMECWorker.cpp GpgMEWorker.cpp K7Main.cpp + KeyEdit.cpp PopupDeleter.cpp PopupUploader.cpp TransientMessageWidget.cpp @@ -55,6 +57,7 @@ /usr/local/Wt-Debug/include + /usr/include/gpgme++ -Wno-deprecated -Wno-deprecated-declarations @@ -89,6 +92,10 @@ + + + + @@ -126,6 +133,7 @@ true /usr/local/Wt/include + /usr/include/gpgme++ -Wno-deprecated -Wno-deprecated-declarations @@ -164,6 +172,10 @@ + + + + @@ -201,6 +213,7 @@ true /usr/local/Wt/include + /usr/include/gpgme++ -Wno-deprecated -Wno-deprecated-declarations @@ -243,6 +256,10 @@ + + + +