diff options
28 files changed, 3970 insertions, 2066 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 4b4467db..c11b26af 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.16) -project(GpgFrontend VERSION 1.0.8 LANGUAGES CXX) +project(GpgFrontend VERSION 1.1.0 LANGUAGES CXX) message(STATUS "GPGFrontend Build Configuration Started CMAKE Version ${CMAKE_VERSION}") @@ -187,4 +187,3 @@ mingw-w64: http://mingw-w64.org/doku.php The icons of this software use materials from Alibaba vector icon library. The Alibaba vector icon library is free to use. The icons in the free library aren't registered as trademarks. There is no copyright issue involved and can be used commercially. - diff --git a/include/MainWindow.h b/include/MainWindow.h index c5937e0d..a6ddfc3a 100644 --- a/include/MainWindow.h +++ b/include/MainWindow.h @@ -41,6 +41,8 @@ #include "gpg/result_analyse/EncryptResultAnalyse.h" #include "gpg/result_analyse/DecryptResultAnalyse.h" +#include "gpg/GpgFileOpera.h" + /** * @brief @@ -67,6 +69,44 @@ protected: */ void closeEvent(QCloseEvent *event) override; +public slots: + + /** + * @details Open a new tab for path + */ + void slotOpenFile(QString &path); + + /** + * @details Open dialog for encrypting file. + */ + void slotFileEncrypt(); + + /** + * @details Open dialog for decrypting file. + */ + void slotFileDecrypt(); + + /** + * @details Open dialog for signing file. + */ + void slotFileSign(); + + /** + * @details Open dialog for verifying file. + */ + void slotFileVerify(); + + /** + * @details Open dialog for signing file. + */ + void slotFileEncryptSign(); + + /** + * @details Open dialog for verifying file. + */ + void slotFileDecryptVerify(); + + private slots: /** @@ -105,6 +145,26 @@ private slots: void slotDecryptVerify(); /** + * @details Open dialog for encrypting file. + */ + void slotFileEncryptCustom(); + + /** + * @details Open dialog for decrypting file. + */ + void slotFileDecryptCustom(); + + /** + * @details Open dialog for signing file. + */ + void slotFileSignCustom(); + + /** + * @details Open dialog for verifying file. + */ + void slotFileVerifyCustom(); + + /** * @details Show the details of the first of the first of selected keys */ void slotShowKeyDetails(); @@ -156,26 +216,6 @@ private slots: void slotAbout(); /** - * @details Open dialog for encrypting file. - */ - void slotFileEncrypt(); - - /** - * @details Open dialog for decrypting file. - */ - void slotFileDecrypt(); - - /** - * @details Open dialog for signing file. - */ - void slotFileSign(); - - /** - * @details Open dialog for verifying file. - */ - void slotFileVerify(); - - /** * @details Open File Opera Tab */ void slotOpenFileTab(); @@ -293,6 +333,7 @@ private: QAction *switchTabUpAct; /** Action to switch tab up*/ QAction *switchTabDownAct; /** Action to switch tab down */ QAction *openAct; /** Action to open file */ + QAction *browserAct; /** Action to open file browser*/ QAction *saveAct; /** Action to save file */ QAction *saveAsAct; /** Action to save file as */ QAction *printAct; /** Action to print */ diff --git a/include/gpg/GpgFileOpera.h b/include/gpg/GpgFileOpera.h new file mode 100644 index 00000000..9b5e118c --- /dev/null +++ b/include/gpg/GpgFileOpera.h @@ -0,0 +1,51 @@ +/** + * This file is part of GPGFrontend. + * + * GPGFrontend is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Foobar is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Foobar. If not, see <https://www.gnu.org/licenses/>. + * + * The initial version of the source code is inherited from gpg4usb-team. + * Their source code version also complies with GNU General Public License. + * + * The source code version of this software was modified and released + * by Saturneric<[email protected]> starting on May 12, 2021. + * + */ + +#ifndef GPGFRONTEND_GPGFILEOPERA_H +#define GPGFRONTEND_GPGFILEOPERA_H + +#include "GpgFrontend.h" +#include "gpg/GpgContext.h" + +class GpgFileOpera { +public: + static gpgme_error_t encryptFile(GpgME::GpgContext *ctx, QVector<GpgKey> &keys, const QString &mPath, + gpgme_encrypt_result_t *result); + + static gpgme_error_t decryptFile(GpgME::GpgContext *ctx, const QString &mPath, gpgme_decrypt_result_t *result); + + static gpgme_error_t signFile(GpgME::GpgContext *ctx, QVector<GpgKey> &keys, const QString &mPath, + gpgme_sign_result_t *result); + + static gpgme_error_t verifyFile(GpgME::GpgContext *ctx, const QString &mPath, gpgme_verify_result_t *result); + + static gpg_error_t + encryptSignFile(GpgME::GpgContext *ctx, QVector<GpgKey> &keys, const QString &mPath, gpgme_encrypt_result_t *encr_res, gpgme_sign_result_t *sign_res); + + static gpg_error_t decryptVerifyFile(GpgME::GpgContext *ctx, const QString &mPath, gpgme_decrypt_result_t *decr_res, gpgme_verify_result_t *verify_res); + +}; + + +#endif //GPGFRONTEND_GPGFILEOPERA_H diff --git a/include/ui/SettingsDialog.h b/include/ui/SettingsDialog.h index 5cb526f9..f1a2863c 100755 --- a/include/ui/SettingsDialog.h +++ b/include/ui/SettingsDialog.h @@ -49,6 +49,7 @@ private: QComboBox *ownKeySelectBox; QHash<QString, QString> lang; QHash<QString, QString> keyIds; + QVector<QString> keyIdsList; QString ownKeyId; KeyList *mKeyList; GpgME::GpgContext *mCtx; /** The current gpg context */ diff --git a/include/ui/widgets/FilePage.h b/include/ui/widgets/FilePage.h index 6585bed9..3d2c8e72 100644 --- a/include/ui/widgets/FilePage.h +++ b/include/ui/widgets/FilePage.h @@ -25,7 +25,7 @@ #ifndef GPGFRONTEND_FILEPAGE_H #define GPGFRONTEND_FILEPAGE_H -#include <GpgFrontend.h> +#include "GpgFrontend.h" class FilePage : public QWidget { Q_OBJECT @@ -33,8 +33,12 @@ public: explicit FilePage(QWidget* parent = nullptr); - void getSelected(QString &path); + [[nodiscard]] QString getSelected() const; + void createPopupMenu(); + +signals: + void pathChanged(const QString &path); private slots: @@ -42,13 +46,36 @@ private slots: void fileTreeViewItemDoubleClicked(const QModelIndex &index); void slotUpLevel(); + void slotGoPath(); + + void slotOpenItem(); + void slotDeleteItem(); + void slotEncryptItem(); + void slotDecryptItem(); + void slotSignItem(); + void slotVerifyItem(); + + void onCustomContextMenu(const QPoint &point); + private: + QFileSystemModel *dirModel; QTreeView *dirTreeView; + QLineEdit *pathEdit; QString mPath; QPushButton *upLevelButton; + QPushButton *goPathButton; + QPushButton *refreshButton; + + QMenu *popUpMenu{}; + QAction *encryptItemAct{}; + QAction *decryptItemAct{}; + QAction *signItemAct{}; + QAction *verifyItemAct{}; + + QWidget *firstParent; }; diff --git a/include/ui/widgets/InfoBoardWidget.h b/include/ui/widgets/InfoBoardWidget.h index 9d3dbd16..f487b72c 100644 --- a/include/ui/widgets/InfoBoardWidget.h +++ b/include/ui/widgets/InfoBoardWidget.h @@ -26,6 +26,7 @@ #define __VERIFYNOTIFICATION_H__ #include "EditorPage.h" +#include "FilePage.h" #include "ui/VerifyDetailsDialog.h" #include "gpg/result_analyse/VerifyResultAnalyse.h" @@ -56,6 +57,10 @@ public: void associateTextEdit(QTextEdit *edit); + void associateFileTreeView(FilePage *treeView); + + void associateTabWidget(QTabWidget *tab); + void addOptionalAction(const QString& name, const std::function<void()>& action); void resetOptionActionsMenu(); @@ -95,7 +100,11 @@ private: QTextEdit *infoBoard; GpgME::GpgContext *mCtx; /** GpgME Context */ KeyList *mKeyList; /** Table holding the keys */ - QTextEdit *mTextPage{ nullptr }; /** Textedit associated to the notification */ + + QTextEdit *mTextPage{ nullptr }; /** TextEdit associated to the notification */ + FilePage *mFileTreeView{nullptr }; /** TreeView associated to the notification */ + QTabWidget *mTabWidget{ nullptr }; /** TreeView associated to the notification */ + QHBoxLayout *actionButtonLayout; diff --git a/include/ui/widgets/TextEdit.h b/include/ui/widgets/TextEdit.h index f98da145..b807d6c6 100644 --- a/include/ui/widgets/TextEdit.h +++ b/include/ui/widgets/TextEdit.h @@ -40,7 +40,7 @@ public: /** * @brief */ - TextEdit(); + TextEdit(QWidget *parent); /** * @details Load the content of file into the current textpage @@ -69,7 +69,7 @@ public: */ [[nodiscard]] QTextEdit *curTextPage() const; - [[nodiscard]] QTextBrowser *curHelpPage() const; + [[nodiscard]] FilePage * curFilePage() const; /** * @details List of currently unsaved tabs. @@ -82,10 +82,16 @@ public: public slots: /** - * @details Return pointer to the currently activated tabpage. + * @details Return pointer to the currently activated text edit tab page. * */ - [[nodiscard]] EditorPage *slotCurPage() const; + [[nodiscard]] EditorPage *slotCurPageTextEdit() const; + + /** + * @details Return pointer to the currently activated file treeview tab page. + * + */ + [[nodiscard]] FilePage *slotCurPageFileTreeView() const; /** * @details Insert a ">" at the begining of every line of current textedit. @@ -130,6 +136,11 @@ public slots: void slotNewTab(); /** + * @details Adds a new tab with opening file by path + */ + void slotOpenFile(QString &path); + + /** * @details Adds a new tab with the given title and opens given html file. * Increase Tab-Count by one * @param title title for the tab @@ -189,6 +200,8 @@ private: private slots: + void slotFilePagePathChanged(const QString& path); + /** * @details Remove the tab with given index * diff --git a/resource/conf/gpgfrontend.ini b/resource/conf/gpgfrontend.ini index 1fc723e4..3fc1c1b8 100644 --- a/resource/conf/gpgfrontend.ini +++ b/resource/conf/gpgfrontend.ini @@ -5,6 +5,9 @@ defaultKeyServer=https://keyserver.ubuntu.com [int] lang=en_us +[keys] +saveKeyChecked=true + [wizard] showWizard=true diff --git a/resource/ts/gpg_frontend_fr.ts b/resource/ts/gpg_frontend_fr.ts index a2beac40..bbd05c12 100644 --- a/resource/ts/gpg_frontend_fr.ts +++ b/resource/ts/gpg_frontend_fr.ts @@ -22,12 +22,12 @@ <context> <name>AdvancedTab</name> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="618"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="580"/> <source>Show Steganography Options [Advanced]</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="620"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="582"/> <source>Show Steganographic Options.</source> <translation type="unfinished"></translation> </message> @@ -35,52 +35,52 @@ <context> <name>AppearanceTab</name> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="411"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="368"/> <source>Iconsize</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="413"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="370"/> <source>small</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="414"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="371"/> <source>medium</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="415"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="372"/> <source>large</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="431"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="388"/> <source>Iconstyle</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="433"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="390"/> <source>just text</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="434"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="391"/> <source>just icons</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="435"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="392"/> <source>text and icons</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="451"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="408"/> <source>Windowstate</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="453"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="411"/> <source>Save window size and position on exit.</source> <translation type="unfinished"></translation> </message> @@ -149,59 +149,65 @@ </message> <message> <location filename="../../src/ui/Wizard.cpp" line="164"/> - <source>If you have never used GPGFrontend before and also don't own a gpg key yet you may possibly want to </source> + <source>If you have never used GPGFrontend before and also don't own a gpg key yet you may possibly want to read how to</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="166"/> - <source>create a new keypair</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/ui/Wizard.cpp" line="170"/> - <source>If you upgrade from an older version of GPGFrontend you may want to </source> + <location filename="../../src/ui/Wizard.cpp" line="172"/> + <source>If you want to learn how to encrypt and decrypt text, you can read </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="172"/> - <source>import settings and/or keys from GPGFrontend</source> + <location filename="../../src/ui/Wizard.cpp" line="174"/> + <location filename="../../src/ui/Wizard.cpp" line="183"/> + <source>this document</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="176"/> - <source>If you are already using GnuPG you may want to </source> + <location filename="../../src/ui/Wizard.cpp" line="181"/> + <source>If you want to sign and verify text, you can read </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="178"/> - <source>import keys from GnuPG</source> + <location filename="../../src/ui/Wizard.cpp" line="166"/> + <source>create a new keypair</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ConclusionPage</name> <message> - <location filename="../../src/ui/Wizard.cpp" line="389"/> + <location filename="../../src/ui/Wizard.cpp" line="397"/> <source>Ready.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="390"/> + <location filename="../../src/ui/Wizard.cpp" line="398"/> <source>Have fun with GPGFrontend!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="392"/> - <source>You are ready to use GPGFrontend now.<br><br>The offline help will get you started with GPGFrontend. It will open in the main window.<br></source> + <location filename="../../src/ui/Wizard.cpp" line="400"/> + <source>You are ready to use GPGFrontend now.<br><br></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/Wizard.cpp" line="402"/> + <source>The Online Document</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="397"/> + <location filename="../../src/ui/Wizard.cpp" line="403"/> + <source> will get you started with GPGFrontend. It will open in the main window.<br></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/Wizard.cpp" line="410"/> <source>Open offline help.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="400"/> + <location filename="../../src/ui/Wizard.cpp" line="413"/> <source>Dont show the wizard again.</source> <translation type="unfinished"></translation> </message> @@ -284,6 +290,59 @@ </message> </context> <context> + <name>FilePage</name> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="137"/> + <source>Open</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="139"/> + <source>Delete</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="141"/> + <source>Encrypt and Sign</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="143"/> + <source>Decrypt and Verify</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="145"/> + <source>Only Sign</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="147"/> + <source>Only Verify</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="199"/> + <source>Warning</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="200"/> + <source>Are you sure you want to delete it?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="210"/> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="211"/> + <source>Unable to delete the file or folder.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>FindWidget</name> <message> <location filename="../../src/ui/FindWidget.cpp" line="38"/> @@ -294,58 +353,58 @@ <context> <name>GeneralTab</name> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="131"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="135"/> <source>Remember Password</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="133"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="138"/> <source>Remember password until closing gpg4usb</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="140"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="145"/> <source>Save Checked Keys</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="142"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="148"/> <source>Save checked private keys on exit and restore them on next start.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="150"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="157"/> <source>Confirm drag'n'drop key import</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="152"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="160"/> <source>Import files dropped on the keylist without confirmation.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="159"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="167"/> <source>Language</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="170"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="176"/> <source><b>NOTE: </b> GpgFrontend will restart automatically if you change the language!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="177"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="185"/> <source>Own key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="185"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="193"/> <source><none></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="205"/> - <source>Encrypt all messages additionally to the chosen key:</source> + <location filename="../../src/ui/SettingsDialog.cpp" line="207"/> + <source>Key pair for synchronization and identity authentication</source> <translation type="unfinished"></translation> </message> </context> @@ -377,17 +436,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/gpg/GpgContext.cpp" line="759"/> + <location filename="../../src/gpg/GpgContext.cpp" line="764"/> <source>Key Selection</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/gpg/GpgContext.cpp" line="759"/> + <location filename="../../src/gpg/GpgContext.cpp" line="764"/> <source>No Private Key Selected</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/gpg/GpgContext.cpp" line="799"/> + <location filename="../../src/gpg/GpgContext.cpp" line="804"/> <source>Error in signing:</source> <translation type="unfinished"></translation> </message> @@ -395,22 +454,22 @@ <context> <name>GpgPathsTab</name> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="650"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="612"/> <source>Relative path to keydb</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="662"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="625"/> <source>Current keydb path: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="667"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="630"/> <source><b>NOTE: </b> Gpg4usb will restart automatically if you change the keydb path!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="694"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="659"/> <source>Choose keydb directory</source> <translation type="unfinished"></translation> </message> @@ -418,32 +477,32 @@ <context> <name>ImportFromGnupgPage</name> <message> - <location filename="../../src/ui/Wizard.cpp" line="285"/> + <location filename="../../src/ui/Wizard.cpp" line="292"/> <source>Import keys...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="286"/> + <location filename="../../src/ui/Wizard.cpp" line="293"/> <source>...from existing GnuPG installation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="288"/> + <location filename="../../src/ui/Wizard.cpp" line="295"/> <source>You can import keys from a locally installed GnuPG.<br><br> The location is read from registry in Windows or assumed to be the .gnupg folder in the your home directory in Linux.<br></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="292"/> + <location filename="../../src/ui/Wizard.cpp" line="299"/> <source>Import keys from GnuPG</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="306"/> + <location filename="../../src/ui/Wizard.cpp" line="313"/> <source>Import Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="306"/> + <location filename="../../src/ui/Wizard.cpp" line="313"/> <source>Couldn't locate GnuPG home directory</source> <translation type="unfinished"></translation> </message> @@ -451,47 +510,47 @@ <context> <name>ImportFromGpg4usbPage</name> <message> - <location filename="../../src/ui/Wizard.cpp" line="208"/> + <location filename="../../src/ui/Wizard.cpp" line="215"/> <source>Import from...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="209"/> + <location filename="../../src/ui/Wizard.cpp" line="216"/> <source>...existing GPGFrontend</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="211"/> + <location filename="../../src/ui/Wizard.cpp" line="218"/> <source>You can import keys and/or settings from existing GPGFrontend. <br><br>Just check what you want to import, click the import button and choose the directory of your other GPGFrontend in the appearing file dialog.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="218"/> + <location filename="../../src/ui/Wizard.cpp" line="225"/> <source>Keys</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="222"/> + <location filename="../../src/ui/Wizard.cpp" line="229"/> <source>Configuration</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="224"/> + <location filename="../../src/ui/Wizard.cpp" line="231"/> <source>Import from GPGFrontend</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="239"/> + <location filename="../../src/ui/Wizard.cpp" line="246"/> <source>Other GPGFrontend directory</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="258"/> + <location filename="../../src/ui/Wizard.cpp" line="265"/> <source>Configuration Imported</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="259"/> + <location filename="../../src/ui/Wizard.cpp" line="266"/> <source>Imported Configuration from old GPGFrontend.<br>Will now restart to activate the configuration.</source> <translation type="unfinished"></translation> </message> @@ -499,7 +558,7 @@ <context> <name>InfoBoardWidget</name> <message> - <location filename="../../src/ui/widgets/InfoBoardWidget.cpp" line="37"/> + <location filename="../../src/ui/widgets/InfoBoardWidget.cpp" line="38"/> <source>Import missing key from Keyserver</source> <translation type="unfinished"></translation> </message> @@ -699,27 +758,27 @@ <context> <name>KeyGenPage</name> <message> - <location filename="../../src/ui/Wizard.cpp" line="349"/> + <location filename="../../src/ui/Wizard.cpp" line="356"/> <source>Create a keypair...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="350"/> + <location filename="../../src/ui/Wizard.cpp" line="357"/> <source>...for decrypting and signing messages</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="351"/> + <location filename="../../src/ui/Wizard.cpp" line="358"/> <source>You should create a new keypair.The pair consists of a public and a private key.<br>Other users can use the public key to encrypt messages for you and verify messages signed by you.You can use the private key to decrypt and sign messages.<br>For more information have a look at the offline tutorial (which then is shown in the main window):</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="358"/> + <location filename="../../src/ui/Wizard.cpp" line="365"/> <source>Offline tutorial</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="365"/> + <location filename="../../src/ui/Wizard.cpp" line="372"/> <source>Create New Key</source> <translation type="unfinished"></translation> </message> @@ -727,119 +786,119 @@ <context> <name>KeyImportDetailDialog</name> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="35"/> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="54"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="34"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="53"/> <source>Key Update Details</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="35"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="34"/> <source>No keys found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="37"/> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="56"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="36"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="55"/> <source>Key Import Details</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="37"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="36"/> <source>No keys found to import</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="65"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="64"/> <source>General key info</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="68"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="67"/> <source>Considered:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="72"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="71"/> <source>Public unchanged:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="77"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="76"/> <source>Imported:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="82"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="81"/> <source>Not imported:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="87"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="86"/> <source>Private read:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="92"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="91"/> <source>Private imported:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="97"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="96"/> <source>Private unchanged:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="112"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="111"/> <source>Name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="112"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="111"/> <source>Email</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="112"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="111"/> <source>Status</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="112"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="111"/> <source>Fingerprint</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="136"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="135"/> <source>private</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="139"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="138"/> <source>public</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="142"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="141"/> <source>unchanged</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="145"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="144"/> <source>new key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="148"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="147"/> <source>new subkey</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="152"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="151"/> <source>new signature</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="156"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="155"/> <source>new uid</source> <translation type="unfinished"></translation> </message> @@ -882,23 +941,23 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="311"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="310"/> <source>Import Keys</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="313"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="312"/> <source>You've dropped something on the table. GpgFrontend will now try to import key(s).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="316"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="315"/> <source>Always import without bothering.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="352"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="351"/> <source>Couldn't Open File: </source> <translation type="unfinished"></translation> </message> @@ -1283,72 +1342,72 @@ </message> <message> <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="134"/> - <source>Export Private Key</source> + <source>Export Private Key (Include Subkeys)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="139"/> - <source>Modify Expiration Datetime</source> + <source>Modify Expiration Datetime (Master Key)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="143"/> - <source>Key Server Operation</source> + <source>Key Server Operation (Pubkey)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="165"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="166"/> <source>Warning: The Master Key has expired.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="168"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="169"/> <source>Warning: The Master Key has been revoked</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="191"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="192"/> <source>Exporting private Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="192"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="193"/> <source><h3>You are about to export your <font color="red">PRIVATE KEY</font>!</h3> This is NOT your Public Key, so DON'T give it away.<br />Do you REALLY want to export your PRIVATE KEY?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="204"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="210"/> <source>Export Key To File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="205"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="211"/> <source>Key Files</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="208"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="214"/> <source>Export Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="208"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="214"/> <source>Couldn't open %1 for writing</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="278"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="284"/> <source>Never Expire</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="298"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="304"/> <source>Upload Key Pair</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="300"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="306"/> <source>Update Key Pair</source> <translation type="unfinished"></translation> </message> @@ -1672,105 +1731,105 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="160"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="158"/> <source>UID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="160"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="158"/> <source>Creation date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="160"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="158"/> <source>KeyID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="160"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="158"/> <source>Tag</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="181"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="179"/> <source><h4>Text is empty.</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="215"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="213"/> <source>Not Key Found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="218"/> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="388"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="216"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="386"/> <source>Timeout</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="221"/> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="391"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="219"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="389"/> <source>Key Server Not Found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="224"/> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="394"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="222"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="392"/> <source>Connection Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="232"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="230"/> <source><h4>CToo many responses from keyserver!</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="239"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="237"/> <source><h4>No keys found, input may be kexId, retrying search with 0x.</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="244"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="242"/> <source><h4>No keys found containing the search string!</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="248"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="246"/> <source><h4>Insufficiently specific search string!</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="276"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="274"/> <source>revoked</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="279"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="277"/> <source>disabled</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="319"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="317"/> <source><h4>%1 keys found. Double click a key to import it.</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="385"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="383"/> <source>Key Not Found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="412"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="410"/> <source><h4>Key Updated</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="414"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="412"/> <source><h4>Key Imported</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="475"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="473"/> <source>Upload Keys from Keyserver</source> <translation type="unfinished"></translation> </message> @@ -1834,27 +1893,27 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL <context> <name>KeyUploadDialog</name> <message> - <location filename="../../src/ui/KeyUploadDialog.cpp" line="72"/> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="45"/> <source>Uploading Public Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyUploadDialog.cpp" line="107"/> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="108"/> <source>Key Not Found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyUploadDialog.cpp" line="110"/> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="111"/> <source>Timeout</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyUploadDialog.cpp" line="113"/> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="114"/> <source>Key Server Not Found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyUploadDialog.cpp" line="116"/> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="117"/> <source>Connection Error</source> <translation type="unfinished"></translation> </message> @@ -1862,12 +1921,12 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL <context> <name>KeyserverTab</name> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="548"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="508"/> <source>Default Keyserver for import:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="564"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="525"/> <source>Add</source> <translation type="unfinished"></translation> </message> @@ -1875,38 +1934,150 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL <context> <name>MainWindow</name> <message> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="36"/> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="83"/> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="281"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="37"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="88"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="220"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="395"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="538"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="681"/> <source>No Key Selected</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="43"/> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="90"/> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="288"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="44"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="95"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="227"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="402"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="545"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="688"/> <source>Invalid Operation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="44"/> - <source>The selected key contains a key that does not actually have a encrypt function.<br/></source> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="45"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="403"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="546"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="689"/> + <source>The selected key contains a key that does not actually have a encrypt usage.<br/></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="45"/> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="92"/> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="290"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="96"/> + <source>The selected key contains a key that does not actually have a signature usage.<br/></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="369"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="373"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="377"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="431"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="444"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="448"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="452"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="495"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="511"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="515"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="519"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="574"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="602"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="607"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="611"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="642"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="655"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="659"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="663"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="723"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="734"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="738"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="742"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="786"/> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="373"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="448"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="515"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="659"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="738"/> + <source>No permission to read this file.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="377"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="452"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="519"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="663"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="742"/> + <source>No permission to create file.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="382"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="467"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="525"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="668"/> + <source>Warning</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="383"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="468"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="526"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="669"/> + <source>The target file already exists, do you need to overwrite it?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="431"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="495"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="574"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="642"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="723"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="786"/> + <source>An error occurred during operation.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="603"/> + <source>Please select the appropriate target file or signature file. Ensure that both are in this directory.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="607"/> + <source>No permission to read target file.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="611"/> + <source>No permission to read signature file.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="734"/> + <source>Select a file(.gpg/.asc) before doing it.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="46"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="97"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="229"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="404"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="547"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="690"/> <source><br/>For example the Following Key: <br/></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="91"/> - <source>The selected key contains a key that does not actually have a signature function.<br/></source> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="369"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="444"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="511"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="655"/> + <source>Select a file before doing it.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="289"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="228"/> <source>The selected key cannot be used for signing and encryption at the same time.<br/></source> <translation type="unfinished"></translation> </message> @@ -2356,62 +2527,62 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="349"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="348"/> <source>Crypt</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="359"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="358"/> <source>Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="364"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="363"/> <source>Edit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="371"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="370"/> <source>Special Edit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="383"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="382"/> <source>Import key from...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="384"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="383"/> <source>Import key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="393"/> - <source>Opera File</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="392"/> + <source>Browser to view and operate file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="394"/> - <source>File Crypto</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="393"/> + <source>Browser</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="412"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="411"/> <source>Ready</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="419"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="418"/> <source>Key ToolBox</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="427"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="426"/> <source>Information Board</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="447"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="446"/> <source>Attached files:</source> <translation type="unfinished"></translation> </message> @@ -2419,37 +2590,37 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL <context> <name>MimeTab</name> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="340"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="289"/> <source>Decode quoted printable</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="342"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="292"/> <source>Try to recognize quoted printable.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="346"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="296"/> <source>Parse PGP/MIME (Experimental)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="348"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="299"/> <source>Try to split attachments from PGP-MIME ecrypted messages.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="352"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="304"/> <source>Open with external application (Experimental)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="354"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="306"/> <source>Open attachments with default application for the filetype.<br> There are at least two possible problems with this behaviour:<ol><li>File needs to be saved unencrypted to attachments folder.<br> Its your job to clean this folder.</li><li>The external application may have its own temp files.</li></ol></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="361"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="315"/> <source>Enable opening with external applications.</source> <translation type="unfinished"></translation> </message> @@ -2618,7 +2789,7 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="97"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="101"/> <source>System Default</source> <translation type="unfinished"></translation> </message> @@ -2722,51 +2893,57 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="76"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="99"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="131"/> + <source>Warning</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="106"/> <source>Open file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="101"/> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="379"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="203"/> + <source>Save file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="415"/> <source>Application</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="102"/> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="380"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="100"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="132"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="416"/> <source>Cannot read file %1: %2.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="151"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="181"/> <source>File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="152"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="182"/> <source>Cannot write file %1: %2.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="173"/> - <source>Save file </source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="237"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="267"/> <source>Unsaved document</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="238"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="268"/> <source><h3>The document "%1" has been modified.<br/>Do you want to save your changes?</h3></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="240"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="270"/> <source><b>Note:</b> If you don't save these files, all changes are lost.<br/></source> <translation type="unfinished"></translation> </message> @@ -2795,150 +2972,150 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL </message> <message> <location filename="../../src/ui/VerifyDetailsDialog.cpp" line="70"/> - <source>File was signed on %1 <br/> It Contains:<br/></source> + <source>File was signed on %1 <br/> It Contains:<br/><br/></source> <translation type="unfinished"></translation> </message> <message> <location filename="../../src/ui/VerifyDetailsDialog.cpp" line="72"/> - <source>Signed on %1 <br/> It Contains:<br/></source> + <source>Signed on %1 <br/> It Contains:<br /><br/></source> <translation type="unfinished"></translation> </message> </context> <context> <name>VerifyKeyDetailBox</name> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="39"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="36"/> <source>Import from keyserver</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="42"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="39"/> <source>Key not present with id 0x</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="46"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="43"/> <source>Status:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="48"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="45"/> <source>Key not present in keylist</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="61"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="75"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="89"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="104"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="118"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="132"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="58"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="72"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="86"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="101"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="115"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="129"/> <source>Key Information is NOT Available</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="63"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="77"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="91"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="106"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="120"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="134"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="60"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="74"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="88"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="103"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="117"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="131"/> <source>Fingerprint: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="70"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="67"/> <source>Status: Cert Revoked</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="84"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="98"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="81"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="95"/> <source>Status: Signature Expired</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="99"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="96"/> <source>Status: Key Expired</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="113"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="110"/> <source>Status: General Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="127"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="124"/> <source>Status: Unknown Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="162"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="159"/> <source>Signer Name:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="163"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="160"/> <source>Signer Email:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="164"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="161"/> <source>Key's Fingerprint:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="165"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="162"/> <source>Valid:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="166"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="163"/> <source>Flags:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="174"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="171"/> <source>Fully Valid</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="176"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="173"/> <source>NOT Fully Valid</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="183"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="180"/> <source>Good </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="186"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="183"/> <source>Bad </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="189"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="186"/> <source>Expired </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="192"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="189"/> <source>Missing Key </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="195"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="192"/> <source>Revoked Key </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="198"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="195"/> <source>Expired Key </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="201"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="198"/> <source>Missing CRL </source> <translation type="unfinished"></translation> </message> diff --git a/resource/ts/gpg_frontend_ru.ts b/resource/ts/gpg_frontend_ru.ts index b65a61d8..97bed6b7 100644 --- a/resource/ts/gpg_frontend_ru.ts +++ b/resource/ts/gpg_frontend_ru.ts @@ -22,12 +22,12 @@ <context> <name>AdvancedTab</name> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="618"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="580"/> <source>Show Steganography Options [Advanced]</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="620"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="582"/> <source>Show Steganographic Options.</source> <translation type="unfinished"></translation> </message> @@ -35,52 +35,52 @@ <context> <name>AppearanceTab</name> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="411"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="368"/> <source>Iconsize</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="413"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="370"/> <source>small</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="414"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="371"/> <source>medium</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="415"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="372"/> <source>large</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="431"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="388"/> <source>Iconstyle</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="433"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="390"/> <source>just text</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="434"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="391"/> <source>just icons</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="435"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="392"/> <source>text and icons</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="451"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="408"/> <source>Windowstate</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="453"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="411"/> <source>Save window size and position on exit.</source> <translation type="unfinished"></translation> </message> @@ -149,59 +149,65 @@ </message> <message> <location filename="../../src/ui/Wizard.cpp" line="164"/> - <source>If you have never used GPGFrontend before and also don't own a gpg key yet you may possibly want to </source> + <source>If you have never used GPGFrontend before and also don't own a gpg key yet you may possibly want to read how to</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="166"/> - <source>create a new keypair</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/ui/Wizard.cpp" line="170"/> - <source>If you upgrade from an older version of GPGFrontend you may want to </source> + <location filename="../../src/ui/Wizard.cpp" line="172"/> + <source>If you want to learn how to encrypt and decrypt text, you can read </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="172"/> - <source>import settings and/or keys from GPGFrontend</source> + <location filename="../../src/ui/Wizard.cpp" line="174"/> + <location filename="../../src/ui/Wizard.cpp" line="183"/> + <source>this document</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="176"/> - <source>If you are already using GnuPG you may want to </source> + <location filename="../../src/ui/Wizard.cpp" line="181"/> + <source>If you want to sign and verify text, you can read </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="178"/> - <source>import keys from GnuPG</source> + <location filename="../../src/ui/Wizard.cpp" line="166"/> + <source>create a new keypair</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ConclusionPage</name> <message> - <location filename="../../src/ui/Wizard.cpp" line="389"/> + <location filename="../../src/ui/Wizard.cpp" line="397"/> <source>Ready.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="390"/> + <location filename="../../src/ui/Wizard.cpp" line="398"/> <source>Have fun with GPGFrontend!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="392"/> - <source>You are ready to use GPGFrontend now.<br><br>The offline help will get you started with GPGFrontend. It will open in the main window.<br></source> + <location filename="../../src/ui/Wizard.cpp" line="400"/> + <source>You are ready to use GPGFrontend now.<br><br></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/Wizard.cpp" line="402"/> + <source>The Online Document</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="397"/> + <location filename="../../src/ui/Wizard.cpp" line="403"/> + <source> will get you started with GPGFrontend. It will open in the main window.<br></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/Wizard.cpp" line="410"/> <source>Open offline help.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="400"/> + <location filename="../../src/ui/Wizard.cpp" line="413"/> <source>Dont show the wizard again.</source> <translation type="unfinished"></translation> </message> @@ -284,6 +290,59 @@ </message> </context> <context> + <name>FilePage</name> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="137"/> + <source>Open</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="139"/> + <source>Delete</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="141"/> + <source>Encrypt and Sign</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="143"/> + <source>Decrypt and Verify</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="145"/> + <source>Only Sign</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="147"/> + <source>Only Verify</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="199"/> + <source>Warning</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="200"/> + <source>Are you sure you want to delete it?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="210"/> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="211"/> + <source>Unable to delete the file or folder.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>FindWidget</name> <message> <location filename="../../src/ui/FindWidget.cpp" line="38"/> @@ -294,58 +353,58 @@ <context> <name>GeneralTab</name> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="131"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="135"/> <source>Remember Password</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="133"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="138"/> <source>Remember password until closing gpg4usb</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="140"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="145"/> <source>Save Checked Keys</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="142"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="148"/> <source>Save checked private keys on exit and restore them on next start.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="150"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="157"/> <source>Confirm drag'n'drop key import</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="152"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="160"/> <source>Import files dropped on the keylist without confirmation.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="159"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="167"/> <source>Language</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="170"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="176"/> <source><b>NOTE: </b> GpgFrontend will restart automatically if you change the language!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="177"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="185"/> <source>Own key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="185"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="193"/> <source><none></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="205"/> - <source>Encrypt all messages additionally to the chosen key:</source> + <location filename="../../src/ui/SettingsDialog.cpp" line="207"/> + <source>Key pair for synchronization and identity authentication</source> <translation type="unfinished"></translation> </message> </context> @@ -377,17 +436,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/gpg/GpgContext.cpp" line="759"/> + <location filename="../../src/gpg/GpgContext.cpp" line="764"/> <source>Key Selection</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/gpg/GpgContext.cpp" line="759"/> + <location filename="../../src/gpg/GpgContext.cpp" line="764"/> <source>No Private Key Selected</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/gpg/GpgContext.cpp" line="799"/> + <location filename="../../src/gpg/GpgContext.cpp" line="804"/> <source>Error in signing:</source> <translation type="unfinished"></translation> </message> @@ -395,22 +454,22 @@ <context> <name>GpgPathsTab</name> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="650"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="612"/> <source>Relative path to keydb</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="662"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="625"/> <source>Current keydb path: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="667"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="630"/> <source><b>NOTE: </b> Gpg4usb will restart automatically if you change the keydb path!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="694"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="659"/> <source>Choose keydb directory</source> <translation type="unfinished"></translation> </message> @@ -418,32 +477,32 @@ <context> <name>ImportFromGnupgPage</name> <message> - <location filename="../../src/ui/Wizard.cpp" line="285"/> + <location filename="../../src/ui/Wizard.cpp" line="292"/> <source>Import keys...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="286"/> + <location filename="../../src/ui/Wizard.cpp" line="293"/> <source>...from existing GnuPG installation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="288"/> + <location filename="../../src/ui/Wizard.cpp" line="295"/> <source>You can import keys from a locally installed GnuPG.<br><br> The location is read from registry in Windows or assumed to be the .gnupg folder in the your home directory in Linux.<br></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="292"/> + <location filename="../../src/ui/Wizard.cpp" line="299"/> <source>Import keys from GnuPG</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="306"/> + <location filename="../../src/ui/Wizard.cpp" line="313"/> <source>Import Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="306"/> + <location filename="../../src/ui/Wizard.cpp" line="313"/> <source>Couldn't locate GnuPG home directory</source> <translation type="unfinished"></translation> </message> @@ -451,47 +510,47 @@ <context> <name>ImportFromGpg4usbPage</name> <message> - <location filename="../../src/ui/Wizard.cpp" line="208"/> + <location filename="../../src/ui/Wizard.cpp" line="215"/> <source>Import from...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="209"/> + <location filename="../../src/ui/Wizard.cpp" line="216"/> <source>...existing GPGFrontend</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="211"/> + <location filename="../../src/ui/Wizard.cpp" line="218"/> <source>You can import keys and/or settings from existing GPGFrontend. <br><br>Just check what you want to import, click the import button and choose the directory of your other GPGFrontend in the appearing file dialog.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="218"/> + <location filename="../../src/ui/Wizard.cpp" line="225"/> <source>Keys</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="222"/> + <location filename="../../src/ui/Wizard.cpp" line="229"/> <source>Configuration</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="224"/> + <location filename="../../src/ui/Wizard.cpp" line="231"/> <source>Import from GPGFrontend</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="239"/> + <location filename="../../src/ui/Wizard.cpp" line="246"/> <source>Other GPGFrontend directory</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="258"/> + <location filename="../../src/ui/Wizard.cpp" line="265"/> <source>Configuration Imported</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="259"/> + <location filename="../../src/ui/Wizard.cpp" line="266"/> <source>Imported Configuration from old GPGFrontend.<br>Will now restart to activate the configuration.</source> <translation type="unfinished"></translation> </message> @@ -499,7 +558,7 @@ <context> <name>InfoBoardWidget</name> <message> - <location filename="../../src/ui/widgets/InfoBoardWidget.cpp" line="37"/> + <location filename="../../src/ui/widgets/InfoBoardWidget.cpp" line="38"/> <source>Import missing key from Keyserver</source> <translation type="unfinished"></translation> </message> @@ -699,27 +758,27 @@ <context> <name>KeyGenPage</name> <message> - <location filename="../../src/ui/Wizard.cpp" line="349"/> + <location filename="../../src/ui/Wizard.cpp" line="356"/> <source>Create a keypair...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="350"/> + <location filename="../../src/ui/Wizard.cpp" line="357"/> <source>...for decrypting and signing messages</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="351"/> + <location filename="../../src/ui/Wizard.cpp" line="358"/> <source>You should create a new keypair.The pair consists of a public and a private key.<br>Other users can use the public key to encrypt messages for you and verify messages signed by you.You can use the private key to decrypt and sign messages.<br>For more information have a look at the offline tutorial (which then is shown in the main window):</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="358"/> + <location filename="../../src/ui/Wizard.cpp" line="365"/> <source>Offline tutorial</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="365"/> + <location filename="../../src/ui/Wizard.cpp" line="372"/> <source>Create New Key</source> <translation type="unfinished"></translation> </message> @@ -727,119 +786,119 @@ <context> <name>KeyImportDetailDialog</name> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="35"/> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="54"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="34"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="53"/> <source>Key Update Details</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="35"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="34"/> <source>No keys found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="37"/> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="56"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="36"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="55"/> <source>Key Import Details</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="37"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="36"/> <source>No keys found to import</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="65"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="64"/> <source>General key info</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="68"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="67"/> <source>Considered:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="72"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="71"/> <source>Public unchanged:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="77"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="76"/> <source>Imported:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="82"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="81"/> <source>Not imported:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="87"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="86"/> <source>Private read:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="92"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="91"/> <source>Private imported:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="97"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="96"/> <source>Private unchanged:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="112"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="111"/> <source>Name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="112"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="111"/> <source>Email</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="112"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="111"/> <source>Status</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="112"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="111"/> <source>Fingerprint</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="136"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="135"/> <source>private</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="139"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="138"/> <source>public</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="142"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="141"/> <source>unchanged</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="145"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="144"/> <source>new key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="148"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="147"/> <source>new subkey</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="152"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="151"/> <source>new signature</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="156"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="155"/> <source>new uid</source> <translation type="unfinished"></translation> </message> @@ -882,23 +941,23 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="311"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="310"/> <source>Import Keys</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="313"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="312"/> <source>You've dropped something on the table. GpgFrontend will now try to import key(s).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="316"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="315"/> <source>Always import without bothering.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="352"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="351"/> <source>Couldn't Open File: </source> <translation type="unfinished"></translation> </message> @@ -1283,72 +1342,72 @@ </message> <message> <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="134"/> - <source>Export Private Key</source> + <source>Export Private Key (Include Subkeys)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="139"/> - <source>Modify Expiration Datetime</source> + <source>Modify Expiration Datetime (Master Key)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="143"/> - <source>Key Server Operation</source> + <source>Key Server Operation (Pubkey)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="165"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="166"/> <source>Warning: The Master Key has expired.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="168"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="169"/> <source>Warning: The Master Key has been revoked</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="191"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="192"/> <source>Exporting private Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="192"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="193"/> <source><h3>You are about to export your <font color="red">PRIVATE KEY</font>!</h3> This is NOT your Public Key, so DON'T give it away.<br />Do you REALLY want to export your PRIVATE KEY?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="204"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="210"/> <source>Export Key To File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="205"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="211"/> <source>Key Files</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="208"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="214"/> <source>Export Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="208"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="214"/> <source>Couldn't open %1 for writing</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="278"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="284"/> <source>Never Expire</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="298"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="304"/> <source>Upload Key Pair</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="300"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="306"/> <source>Update Key Pair</source> <translation type="unfinished"></translation> </message> @@ -1672,105 +1731,105 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="160"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="158"/> <source>UID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="160"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="158"/> <source>Creation date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="160"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="158"/> <source>KeyID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="160"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="158"/> <source>Tag</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="181"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="179"/> <source><h4>Text is empty.</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="215"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="213"/> <source>Not Key Found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="218"/> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="388"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="216"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="386"/> <source>Timeout</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="221"/> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="391"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="219"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="389"/> <source>Key Server Not Found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="224"/> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="394"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="222"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="392"/> <source>Connection Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="232"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="230"/> <source><h4>CToo many responses from keyserver!</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="239"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="237"/> <source><h4>No keys found, input may be kexId, retrying search with 0x.</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="244"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="242"/> <source><h4>No keys found containing the search string!</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="248"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="246"/> <source><h4>Insufficiently specific search string!</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="276"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="274"/> <source>revoked</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="279"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="277"/> <source>disabled</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="319"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="317"/> <source><h4>%1 keys found. Double click a key to import it.</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="385"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="383"/> <source>Key Not Found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="412"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="410"/> <source><h4>Key Updated</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="414"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="412"/> <source><h4>Key Imported</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="475"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="473"/> <source>Upload Keys from Keyserver</source> <translation type="unfinished"></translation> </message> @@ -1834,27 +1893,27 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL <context> <name>KeyUploadDialog</name> <message> - <location filename="../../src/ui/KeyUploadDialog.cpp" line="72"/> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="45"/> <source>Uploading Public Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyUploadDialog.cpp" line="107"/> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="108"/> <source>Key Not Found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyUploadDialog.cpp" line="110"/> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="111"/> <source>Timeout</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyUploadDialog.cpp" line="113"/> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="114"/> <source>Key Server Not Found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyUploadDialog.cpp" line="116"/> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="117"/> <source>Connection Error</source> <translation type="unfinished"></translation> </message> @@ -1862,12 +1921,12 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL <context> <name>KeyserverTab</name> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="548"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="508"/> <source>Default Keyserver for import:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="564"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="525"/> <source>Add</source> <translation type="unfinished"></translation> </message> @@ -1875,38 +1934,150 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL <context> <name>MainWindow</name> <message> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="36"/> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="83"/> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="281"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="37"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="88"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="220"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="395"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="538"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="681"/> <source>No Key Selected</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="43"/> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="90"/> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="288"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="44"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="95"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="227"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="402"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="545"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="688"/> <source>Invalid Operation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="44"/> - <source>The selected key contains a key that does not actually have a encrypt function.<br/></source> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="45"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="403"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="546"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="689"/> + <source>The selected key contains a key that does not actually have a encrypt usage.<br/></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="45"/> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="92"/> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="290"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="96"/> + <source>The selected key contains a key that does not actually have a signature usage.<br/></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="369"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="373"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="377"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="431"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="444"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="448"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="452"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="495"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="511"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="515"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="519"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="574"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="602"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="607"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="611"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="642"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="655"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="659"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="663"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="723"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="734"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="738"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="742"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="786"/> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="373"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="448"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="515"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="659"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="738"/> + <source>No permission to read this file.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="377"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="452"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="519"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="663"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="742"/> + <source>No permission to create file.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="382"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="467"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="525"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="668"/> + <source>Warning</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="383"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="468"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="526"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="669"/> + <source>The target file already exists, do you need to overwrite it?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="431"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="495"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="574"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="642"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="723"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="786"/> + <source>An error occurred during operation.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="603"/> + <source>Please select the appropriate target file or signature file. Ensure that both are in this directory.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="607"/> + <source>No permission to read target file.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="611"/> + <source>No permission to read signature file.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="734"/> + <source>Select a file(.gpg/.asc) before doing it.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="46"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="97"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="229"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="404"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="547"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="690"/> <source><br/>For example the Following Key: <br/></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="91"/> - <source>The selected key contains a key that does not actually have a signature function.<br/></source> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="369"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="444"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="511"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="655"/> + <source>Select a file before doing it.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="289"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="228"/> <source>The selected key cannot be used for signing and encryption at the same time.<br/></source> <translation type="unfinished"></translation> </message> @@ -2356,62 +2527,62 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="349"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="348"/> <source>Crypt</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="359"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="358"/> <source>Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="364"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="363"/> <source>Edit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="371"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="370"/> <source>Special Edit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="383"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="382"/> <source>Import key from...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="384"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="383"/> <source>Import key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="393"/> - <source>Opera File</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="392"/> + <source>Browser to view and operate file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="394"/> - <source>File Crypto</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="393"/> + <source>Browser</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="412"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="411"/> <source>Ready</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="419"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="418"/> <source>Key ToolBox</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="427"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="426"/> <source>Information Board</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="447"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="446"/> <source>Attached files:</source> <translation type="unfinished"></translation> </message> @@ -2419,37 +2590,37 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL <context> <name>MimeTab</name> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="340"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="289"/> <source>Decode quoted printable</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="342"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="292"/> <source>Try to recognize quoted printable.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="346"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="296"/> <source>Parse PGP/MIME (Experimental)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="348"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="299"/> <source>Try to split attachments from PGP-MIME ecrypted messages.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="352"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="304"/> <source>Open with external application (Experimental)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="354"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="306"/> <source>Open attachments with default application for the filetype.<br> There are at least two possible problems with this behaviour:<ol><li>File needs to be saved unencrypted to attachments folder.<br> Its your job to clean this folder.</li><li>The external application may have its own temp files.</li></ol></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="361"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="315"/> <source>Enable opening with external applications.</source> <translation type="unfinished"></translation> </message> @@ -2618,7 +2789,7 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="97"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="101"/> <source>System Default</source> <translation type="unfinished"></translation> </message> @@ -2722,51 +2893,57 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="76"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="99"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="131"/> + <source>Warning</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="106"/> <source>Open file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="101"/> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="379"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="203"/> + <source>Save file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="415"/> <source>Application</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="102"/> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="380"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="100"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="132"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="416"/> <source>Cannot read file %1: %2.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="151"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="181"/> <source>File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="152"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="182"/> <source>Cannot write file %1: %2.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="173"/> - <source>Save file </source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="237"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="267"/> <source>Unsaved document</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="238"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="268"/> <source><h3>The document "%1" has been modified.<br/>Do you want to save your changes?</h3></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="240"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="270"/> <source><b>Note:</b> If you don't save these files, all changes are lost.<br/></source> <translation type="unfinished"></translation> </message> @@ -2795,150 +2972,150 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL </message> <message> <location filename="../../src/ui/VerifyDetailsDialog.cpp" line="70"/> - <source>File was signed on %1 <br/> It Contains:<br/></source> + <source>File was signed on %1 <br/> It Contains:<br/><br/></source> <translation type="unfinished"></translation> </message> <message> <location filename="../../src/ui/VerifyDetailsDialog.cpp" line="72"/> - <source>Signed on %1 <br/> It Contains:<br/></source> + <source>Signed on %1 <br/> It Contains:<br /><br/></source> <translation type="unfinished"></translation> </message> </context> <context> <name>VerifyKeyDetailBox</name> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="39"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="36"/> <source>Import from keyserver</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="42"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="39"/> <source>Key not present with id 0x</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="46"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="43"/> <source>Status:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="48"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="45"/> <source>Key not present in keylist</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="61"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="75"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="89"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="104"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="118"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="132"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="58"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="72"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="86"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="101"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="115"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="129"/> <source>Key Information is NOT Available</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="63"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="77"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="91"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="106"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="120"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="134"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="60"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="74"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="88"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="103"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="117"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="131"/> <source>Fingerprint: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="70"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="67"/> <source>Status: Cert Revoked</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="84"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="98"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="81"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="95"/> <source>Status: Signature Expired</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="99"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="96"/> <source>Status: Key Expired</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="113"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="110"/> <source>Status: General Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="127"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="124"/> <source>Status: Unknown Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="162"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="159"/> <source>Signer Name:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="163"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="160"/> <source>Signer Email:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="164"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="161"/> <source>Key's Fingerprint:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="165"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="162"/> <source>Valid:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="166"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="163"/> <source>Flags:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="174"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="171"/> <source>Fully Valid</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="176"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="173"/> <source>NOT Fully Valid</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="183"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="180"/> <source>Good </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="186"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="183"/> <source>Bad </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="189"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="186"/> <source>Expired </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="192"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="189"/> <source>Missing Key </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="195"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="192"/> <source>Revoked Key </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="198"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="195"/> <source>Expired Key </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="201"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="198"/> <source>Missing CRL </source> <translation type="unfinished"></translation> </message> diff --git a/resource/ts/gpgfrontend_en_us.ts b/resource/ts/gpgfrontend_en_us.ts index 932bf4d0..44140c18 100644 --- a/resource/ts/gpgfrontend_en_us.ts +++ b/resource/ts/gpgfrontend_en_us.ts @@ -22,12 +22,12 @@ <context> <name>AdvancedTab</name> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="618"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="580"/> <source>Show Steganography Options [Advanced]</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="620"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="582"/> <source>Show Steganographic Options.</source> <translation type="unfinished"></translation> </message> @@ -35,52 +35,52 @@ <context> <name>AppearanceTab</name> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="411"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="368"/> <source>Iconsize</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="413"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="370"/> <source>small</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="414"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="371"/> <source>medium</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="415"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="372"/> <source>large</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="431"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="388"/> <source>Iconstyle</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="433"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="390"/> <source>just text</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="434"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="391"/> <source>just icons</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="435"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="392"/> <source>text and icons</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="451"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="408"/> <source>Windowstate</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="453"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="411"/> <source>Save window size and position on exit.</source> <translation type="unfinished"></translation> </message> @@ -149,59 +149,65 @@ </message> <message> <location filename="../../src/ui/Wizard.cpp" line="164"/> - <source>If you have never used GPGFrontend before and also don't own a gpg key yet you may possibly want to </source> + <source>If you have never used GPGFrontend before and also don't own a gpg key yet you may possibly want to read how to</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="166"/> - <source>create a new keypair</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/ui/Wizard.cpp" line="170"/> - <source>If you upgrade from an older version of GPGFrontend you may want to </source> + <location filename="../../src/ui/Wizard.cpp" line="172"/> + <source>If you want to learn how to encrypt and decrypt text, you can read </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="172"/> - <source>import settings and/or keys from GPGFrontend</source> + <location filename="../../src/ui/Wizard.cpp" line="174"/> + <location filename="../../src/ui/Wizard.cpp" line="183"/> + <source>this document</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="176"/> - <source>If you are already using GnuPG you may want to </source> + <location filename="../../src/ui/Wizard.cpp" line="181"/> + <source>If you want to sign and verify text, you can read </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="178"/> - <source>import keys from GnuPG</source> + <location filename="../../src/ui/Wizard.cpp" line="166"/> + <source>create a new keypair</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ConclusionPage</name> <message> - <location filename="../../src/ui/Wizard.cpp" line="389"/> + <location filename="../../src/ui/Wizard.cpp" line="397"/> <source>Ready.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="390"/> + <location filename="../../src/ui/Wizard.cpp" line="398"/> <source>Have fun with GPGFrontend!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="392"/> - <source>You are ready to use GPGFrontend now.<br><br>The offline help will get you started with GPGFrontend. It will open in the main window.<br></source> + <location filename="../../src/ui/Wizard.cpp" line="400"/> + <source>You are ready to use GPGFrontend now.<br><br></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/Wizard.cpp" line="402"/> + <source>The Online Document</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="397"/> + <location filename="../../src/ui/Wizard.cpp" line="403"/> + <source> will get you started with GPGFrontend. It will open in the main window.<br></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/Wizard.cpp" line="410"/> <source>Open offline help.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="400"/> + <location filename="../../src/ui/Wizard.cpp" line="413"/> <source>Dont show the wizard again.</source> <translation type="unfinished"></translation> </message> @@ -284,6 +290,59 @@ </message> </context> <context> + <name>FilePage</name> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="137"/> + <source>Open</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="139"/> + <source>Delete</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="141"/> + <source>Encrypt and Sign</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="143"/> + <source>Decrypt and Verify</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="145"/> + <source>Only Sign</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="147"/> + <source>Only Verify</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="199"/> + <source>Warning</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="200"/> + <source>Are you sure you want to delete it?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="210"/> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="211"/> + <source>Unable to delete the file or folder.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>FindWidget</name> <message> <location filename="../../src/ui/FindWidget.cpp" line="38"/> @@ -294,58 +353,58 @@ <context> <name>GeneralTab</name> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="131"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="135"/> <source>Remember Password</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="133"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="138"/> <source>Remember password until closing gpg4usb</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="140"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="145"/> <source>Save Checked Keys</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="142"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="148"/> <source>Save checked private keys on exit and restore them on next start.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="150"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="157"/> <source>Confirm drag'n'drop key import</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="152"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="160"/> <source>Import files dropped on the keylist without confirmation.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="159"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="167"/> <source>Language</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="170"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="176"/> <source><b>NOTE: </b> GpgFrontend will restart automatically if you change the language!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="177"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="185"/> <source>Own key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="185"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="193"/> <source><none></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="205"/> - <source>Encrypt all messages additionally to the chosen key:</source> + <location filename="../../src/ui/SettingsDialog.cpp" line="207"/> + <source>Key pair for synchronization and identity authentication</source> <translation type="unfinished"></translation> </message> </context> @@ -377,17 +436,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/gpg/GpgContext.cpp" line="759"/> + <location filename="../../src/gpg/GpgContext.cpp" line="764"/> <source>Key Selection</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/gpg/GpgContext.cpp" line="759"/> + <location filename="../../src/gpg/GpgContext.cpp" line="764"/> <source>No Private Key Selected</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/gpg/GpgContext.cpp" line="799"/> + <location filename="../../src/gpg/GpgContext.cpp" line="804"/> <source>Error in signing:</source> <translation type="unfinished"></translation> </message> @@ -395,22 +454,22 @@ <context> <name>GpgPathsTab</name> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="650"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="612"/> <source>Relative path to keydb</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="662"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="625"/> <source>Current keydb path: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="667"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="630"/> <source><b>NOTE: </b> Gpg4usb will restart automatically if you change the keydb path!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="694"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="659"/> <source>Choose keydb directory</source> <translation type="unfinished"></translation> </message> @@ -418,32 +477,32 @@ <context> <name>ImportFromGnupgPage</name> <message> - <location filename="../../src/ui/Wizard.cpp" line="285"/> + <location filename="../../src/ui/Wizard.cpp" line="292"/> <source>Import keys...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="286"/> + <location filename="../../src/ui/Wizard.cpp" line="293"/> <source>...from existing GnuPG installation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="288"/> + <location filename="../../src/ui/Wizard.cpp" line="295"/> <source>You can import keys from a locally installed GnuPG.<br><br> The location is read from registry in Windows or assumed to be the .gnupg folder in the your home directory in Linux.<br></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="292"/> + <location filename="../../src/ui/Wizard.cpp" line="299"/> <source>Import keys from GnuPG</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="306"/> + <location filename="../../src/ui/Wizard.cpp" line="313"/> <source>Import Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="306"/> + <location filename="../../src/ui/Wizard.cpp" line="313"/> <source>Couldn't locate GnuPG home directory</source> <translation type="unfinished"></translation> </message> @@ -451,47 +510,47 @@ <context> <name>ImportFromGpg4usbPage</name> <message> - <location filename="../../src/ui/Wizard.cpp" line="208"/> + <location filename="../../src/ui/Wizard.cpp" line="215"/> <source>Import from...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="209"/> + <location filename="../../src/ui/Wizard.cpp" line="216"/> <source>...existing GPGFrontend</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="211"/> + <location filename="../../src/ui/Wizard.cpp" line="218"/> <source>You can import keys and/or settings from existing GPGFrontend. <br><br>Just check what you want to import, click the import button and choose the directory of your other GPGFrontend in the appearing file dialog.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="218"/> + <location filename="../../src/ui/Wizard.cpp" line="225"/> <source>Keys</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="222"/> + <location filename="../../src/ui/Wizard.cpp" line="229"/> <source>Configuration</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="224"/> + <location filename="../../src/ui/Wizard.cpp" line="231"/> <source>Import from GPGFrontend</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="239"/> + <location filename="../../src/ui/Wizard.cpp" line="246"/> <source>Other GPGFrontend directory</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="258"/> + <location filename="../../src/ui/Wizard.cpp" line="265"/> <source>Configuration Imported</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="259"/> + <location filename="../../src/ui/Wizard.cpp" line="266"/> <source>Imported Configuration from old GPGFrontend.<br>Will now restart to activate the configuration.</source> <translation type="unfinished"></translation> </message> @@ -499,7 +558,7 @@ <context> <name>InfoBoardWidget</name> <message> - <location filename="../../src/ui/widgets/InfoBoardWidget.cpp" line="37"/> + <location filename="../../src/ui/widgets/InfoBoardWidget.cpp" line="38"/> <source>Import missing key from Keyserver</source> <translation type="unfinished"></translation> </message> @@ -699,27 +758,27 @@ <context> <name>KeyGenPage</name> <message> - <location filename="../../src/ui/Wizard.cpp" line="349"/> + <location filename="../../src/ui/Wizard.cpp" line="356"/> <source>Create a keypair...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="350"/> + <location filename="../../src/ui/Wizard.cpp" line="357"/> <source>...for decrypting and signing messages</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="351"/> + <location filename="../../src/ui/Wizard.cpp" line="358"/> <source>You should create a new keypair.The pair consists of a public and a private key.<br>Other users can use the public key to encrypt messages for you and verify messages signed by you.You can use the private key to decrypt and sign messages.<br>For more information have a look at the offline tutorial (which then is shown in the main window):</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="358"/> + <location filename="../../src/ui/Wizard.cpp" line="365"/> <source>Offline tutorial</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="365"/> + <location filename="../../src/ui/Wizard.cpp" line="372"/> <source>Create New Key</source> <translation type="unfinished"></translation> </message> @@ -727,119 +786,119 @@ <context> <name>KeyImportDetailDialog</name> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="35"/> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="54"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="34"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="53"/> <source>Key Update Details</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="35"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="34"/> <source>No keys found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="37"/> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="56"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="36"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="55"/> <source>Key Import Details</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="37"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="36"/> <source>No keys found to import</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="65"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="64"/> <source>General key info</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="68"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="67"/> <source>Considered:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="72"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="71"/> <source>Public unchanged:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="77"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="76"/> <source>Imported:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="82"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="81"/> <source>Not imported:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="87"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="86"/> <source>Private read:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="92"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="91"/> <source>Private imported:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="97"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="96"/> <source>Private unchanged:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="112"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="111"/> <source>Name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="112"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="111"/> <source>Email</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="112"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="111"/> <source>Status</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="112"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="111"/> <source>Fingerprint</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="136"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="135"/> <source>private</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="139"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="138"/> <source>public</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="142"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="141"/> <source>unchanged</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="145"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="144"/> <source>new key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="148"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="147"/> <source>new subkey</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="152"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="151"/> <source>new signature</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="156"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="155"/> <source>new uid</source> <translation type="unfinished"></translation> </message> @@ -882,23 +941,23 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="311"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="310"/> <source>Import Keys</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="313"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="312"/> <source>You've dropped something on the table. GpgFrontend will now try to import key(s).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="316"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="315"/> <source>Always import without bothering.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="352"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="351"/> <source>Couldn't Open File: </source> <translation type="unfinished"></translation> </message> @@ -1283,72 +1342,72 @@ </message> <message> <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="134"/> - <source>Export Private Key</source> + <source>Export Private Key (Include Subkeys)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="139"/> - <source>Modify Expiration Datetime</source> + <source>Modify Expiration Datetime (Master Key)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="143"/> - <source>Key Server Operation</source> + <source>Key Server Operation (Pubkey)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="165"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="166"/> <source>Warning: The Master Key has expired.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="168"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="169"/> <source>Warning: The Master Key has been revoked</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="191"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="192"/> <source>Exporting private Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="192"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="193"/> <source><h3>You are about to export your <font color="red">PRIVATE KEY</font>!</h3> This is NOT your Public Key, so DON'T give it away.<br />Do you REALLY want to export your PRIVATE KEY?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="204"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="210"/> <source>Export Key To File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="205"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="211"/> <source>Key Files</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="208"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="214"/> <source>Export Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="208"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="214"/> <source>Couldn't open %1 for writing</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="278"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="284"/> <source>Never Expire</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="298"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="304"/> <source>Upload Key Pair</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="300"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="306"/> <source>Update Key Pair</source> <translation type="unfinished"></translation> </message> @@ -1672,105 +1731,105 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="160"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="158"/> <source>UID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="160"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="158"/> <source>Creation date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="160"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="158"/> <source>KeyID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="160"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="158"/> <source>Tag</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="181"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="179"/> <source><h4>Text is empty.</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="215"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="213"/> <source>Not Key Found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="218"/> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="388"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="216"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="386"/> <source>Timeout</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="221"/> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="391"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="219"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="389"/> <source>Key Server Not Found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="224"/> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="394"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="222"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="392"/> <source>Connection Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="232"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="230"/> <source><h4>CToo many responses from keyserver!</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="239"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="237"/> <source><h4>No keys found, input may be kexId, retrying search with 0x.</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="244"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="242"/> <source><h4>No keys found containing the search string!</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="248"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="246"/> <source><h4>Insufficiently specific search string!</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="276"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="274"/> <source>revoked</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="279"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="277"/> <source>disabled</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="319"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="317"/> <source><h4>%1 keys found. Double click a key to import it.</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="385"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="383"/> <source>Key Not Found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="412"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="410"/> <source><h4>Key Updated</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="414"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="412"/> <source><h4>Key Imported</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="475"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="473"/> <source>Upload Keys from Keyserver</source> <translation type="unfinished"></translation> </message> @@ -1834,27 +1893,27 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL <context> <name>KeyUploadDialog</name> <message> - <location filename="../../src/ui/KeyUploadDialog.cpp" line="72"/> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="45"/> <source>Uploading Public Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyUploadDialog.cpp" line="107"/> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="108"/> <source>Key Not Found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyUploadDialog.cpp" line="110"/> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="111"/> <source>Timeout</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyUploadDialog.cpp" line="113"/> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="114"/> <source>Key Server Not Found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyUploadDialog.cpp" line="116"/> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="117"/> <source>Connection Error</source> <translation type="unfinished"></translation> </message> @@ -1862,12 +1921,12 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL <context> <name>KeyserverTab</name> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="548"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="508"/> <source>Default Keyserver for import:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="564"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="525"/> <source>Add</source> <translation type="unfinished"></translation> </message> @@ -1875,38 +1934,150 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL <context> <name>MainWindow</name> <message> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="36"/> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="83"/> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="281"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="37"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="88"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="220"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="395"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="538"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="681"/> <source>No Key Selected</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="43"/> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="90"/> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="288"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="44"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="95"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="227"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="402"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="545"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="688"/> <source>Invalid Operation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="44"/> - <source>The selected key contains a key that does not actually have a encrypt function.<br/></source> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="45"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="403"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="546"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="689"/> + <source>The selected key contains a key that does not actually have a encrypt usage.<br/></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="45"/> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="92"/> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="290"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="96"/> + <source>The selected key contains a key that does not actually have a signature usage.<br/></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="369"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="373"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="377"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="431"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="444"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="448"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="452"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="495"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="511"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="515"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="519"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="574"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="602"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="607"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="611"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="642"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="655"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="659"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="663"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="723"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="734"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="738"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="742"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="786"/> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="373"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="448"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="515"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="659"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="738"/> + <source>No permission to read this file.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="377"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="452"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="519"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="663"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="742"/> + <source>No permission to create file.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="382"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="467"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="525"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="668"/> + <source>Warning</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="383"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="468"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="526"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="669"/> + <source>The target file already exists, do you need to overwrite it?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="431"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="495"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="574"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="642"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="723"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="786"/> + <source>An error occurred during operation.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="603"/> + <source>Please select the appropriate target file or signature file. Ensure that both are in this directory.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="607"/> + <source>No permission to read target file.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="611"/> + <source>No permission to read signature file.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="734"/> + <source>Select a file(.gpg/.asc) before doing it.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="46"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="97"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="229"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="404"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="547"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="690"/> <source><br/>For example the Following Key: <br/></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="91"/> - <source>The selected key contains a key that does not actually have a signature function.<br/></source> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="369"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="444"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="511"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="655"/> + <source>Select a file before doing it.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="289"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="228"/> <source>The selected key cannot be used for signing and encryption at the same time.<br/></source> <translation type="unfinished"></translation> </message> @@ -2356,62 +2527,62 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="349"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="348"/> <source>Crypt</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="359"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="358"/> <source>Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="364"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="363"/> <source>Edit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="371"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="370"/> <source>Special Edit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="383"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="382"/> <source>Import key from...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="384"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="383"/> <source>Import key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="393"/> - <source>Opera File</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="392"/> + <source>Browser to view and operate file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="394"/> - <source>File Crypto</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="393"/> + <source>Browser</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="412"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="411"/> <source>Ready</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="419"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="418"/> <source>Key ToolBox</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="427"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="426"/> <source>Information Board</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="447"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="446"/> <source>Attached files:</source> <translation type="unfinished"></translation> </message> @@ -2419,37 +2590,37 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL <context> <name>MimeTab</name> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="340"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="289"/> <source>Decode quoted printable</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="342"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="292"/> <source>Try to recognize quoted printable.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="346"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="296"/> <source>Parse PGP/MIME (Experimental)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="348"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="299"/> <source>Try to split attachments from PGP-MIME ecrypted messages.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="352"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="304"/> <source>Open with external application (Experimental)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="354"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="306"/> <source>Open attachments with default application for the filetype.<br> There are at least two possible problems with this behaviour:<ol><li>File needs to be saved unencrypted to attachments folder.<br> Its your job to clean this folder.</li><li>The external application may have its own temp files.</li></ol></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="361"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="315"/> <source>Enable opening with external applications.</source> <translation type="unfinished"></translation> </message> @@ -2618,7 +2789,7 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="97"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="101"/> <source>System Default</source> <translation type="unfinished"></translation> </message> @@ -2722,51 +2893,57 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="76"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="99"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="131"/> + <source>Warning</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="106"/> <source>Open file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="101"/> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="379"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="203"/> + <source>Save file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="415"/> <source>Application</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="102"/> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="380"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="100"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="132"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="416"/> <source>Cannot read file %1: %2.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="151"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="181"/> <source>File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="152"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="182"/> <source>Cannot write file %1: %2.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="173"/> - <source>Save file </source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="237"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="267"/> <source>Unsaved document</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="238"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="268"/> <source><h3>The document "%1" has been modified.<br/>Do you want to save your changes?</h3></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="240"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="270"/> <source><b>Note:</b> If you don't save these files, all changes are lost.<br/></source> <translation type="unfinished"></translation> </message> @@ -2795,150 +2972,150 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL </message> <message> <location filename="../../src/ui/VerifyDetailsDialog.cpp" line="70"/> - <source>File was signed on %1 <br/> It Contains:<br/></source> + <source>File was signed on %1 <br/> It Contains:<br/><br/></source> <translation type="unfinished"></translation> </message> <message> <location filename="../../src/ui/VerifyDetailsDialog.cpp" line="72"/> - <source>Signed on %1 <br/> It Contains:<br/></source> + <source>Signed on %1 <br/> It Contains:<br /><br/></source> <translation type="unfinished"></translation> </message> </context> <context> <name>VerifyKeyDetailBox</name> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="39"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="36"/> <source>Import from keyserver</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="42"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="39"/> <source>Key not present with id 0x</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="46"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="43"/> <source>Status:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="48"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="45"/> <source>Key not present in keylist</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="61"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="75"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="89"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="104"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="118"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="132"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="58"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="72"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="86"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="101"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="115"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="129"/> <source>Key Information is NOT Available</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="63"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="77"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="91"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="106"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="120"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="134"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="60"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="74"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="88"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="103"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="117"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="131"/> <source>Fingerprint: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="70"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="67"/> <source>Status: Cert Revoked</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="84"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="98"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="81"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="95"/> <source>Status: Signature Expired</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="99"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="96"/> <source>Status: Key Expired</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="113"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="110"/> <source>Status: General Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="127"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="124"/> <source>Status: Unknown Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="162"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="159"/> <source>Signer Name:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="163"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="160"/> <source>Signer Email:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="164"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="161"/> <source>Key's Fingerprint:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="165"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="162"/> <source>Valid:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="166"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="163"/> <source>Flags:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="174"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="171"/> <source>Fully Valid</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="176"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="173"/> <source>NOT Fully Valid</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="183"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="180"/> <source>Good </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="186"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="183"/> <source>Bad </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="189"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="186"/> <source>Expired </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="192"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="189"/> <source>Missing Key </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="195"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="192"/> <source>Revoked Key </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="198"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="195"/> <source>Expired Key </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="201"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="198"/> <source>Missing CRL </source> <translation type="unfinished"></translation> </message> diff --git a/resource/ts/gpgfrontend_zh_chs.ts b/resource/ts/gpgfrontend_zh_chs.ts index 2bdef057..282cb9a4 100644 --- a/resource/ts/gpgfrontend_zh_chs.ts +++ b/resource/ts/gpgfrontend_zh_chs.ts @@ -22,12 +22,12 @@ <context> <name>AdvancedTab</name> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="618"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="580"/> <source>Show Steganography Options [Advanced]</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="620"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="582"/> <source>Show Steganographic Options.</source> <translation type="unfinished"></translation> </message> @@ -35,52 +35,52 @@ <context> <name>AppearanceTab</name> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="411"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="368"/> <source>Iconsize</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="413"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="370"/> <source>small</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="414"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="371"/> <source>medium</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="415"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="372"/> <source>large</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="431"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="388"/> <source>Iconstyle</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="433"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="390"/> <source>just text</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="434"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="391"/> <source>just icons</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="435"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="392"/> <source>text and icons</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="451"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="408"/> <source>Windowstate</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="453"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="411"/> <source>Save window size and position on exit.</source> <translation type="unfinished"></translation> </message> @@ -149,59 +149,65 @@ </message> <message> <location filename="../../src/ui/Wizard.cpp" line="164"/> - <source>If you have never used GPGFrontend before and also don't own a gpg key yet you may possibly want to </source> + <source>If you have never used GPGFrontend before and also don't own a gpg key yet you may possibly want to read how to</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="166"/> - <source>create a new keypair</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/ui/Wizard.cpp" line="170"/> - <source>If you upgrade from an older version of GPGFrontend you may want to </source> + <location filename="../../src/ui/Wizard.cpp" line="172"/> + <source>If you want to learn how to encrypt and decrypt text, you can read </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="172"/> - <source>import settings and/or keys from GPGFrontend</source> + <location filename="../../src/ui/Wizard.cpp" line="174"/> + <location filename="../../src/ui/Wizard.cpp" line="183"/> + <source>this document</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="176"/> - <source>If you are already using GnuPG you may want to </source> + <location filename="../../src/ui/Wizard.cpp" line="181"/> + <source>If you want to sign and verify text, you can read </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="178"/> - <source>import keys from GnuPG</source> + <location filename="../../src/ui/Wizard.cpp" line="166"/> + <source>create a new keypair</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ConclusionPage</name> <message> - <location filename="../../src/ui/Wizard.cpp" line="389"/> + <location filename="../../src/ui/Wizard.cpp" line="397"/> <source>Ready.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="390"/> + <location filename="../../src/ui/Wizard.cpp" line="398"/> <source>Have fun with GPGFrontend!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="392"/> - <source>You are ready to use GPGFrontend now.<br><br>The offline help will get you started with GPGFrontend. It will open in the main window.<br></source> + <location filename="../../src/ui/Wizard.cpp" line="400"/> + <source>You are ready to use GPGFrontend now.<br><br></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/Wizard.cpp" line="402"/> + <source>The Online Document</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="397"/> + <location filename="../../src/ui/Wizard.cpp" line="403"/> + <source> will get you started with GPGFrontend. It will open in the main window.<br></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/Wizard.cpp" line="410"/> <source>Open offline help.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="400"/> + <location filename="../../src/ui/Wizard.cpp" line="413"/> <source>Dont show the wizard again.</source> <translation type="unfinished"></translation> </message> @@ -284,6 +290,59 @@ </message> </context> <context> + <name>FilePage</name> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="137"/> + <source>Open</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="139"/> + <source>Delete</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="141"/> + <source>Encrypt and Sign</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="143"/> + <source>Decrypt and Verify</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="145"/> + <source>Only Sign</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="147"/> + <source>Only Verify</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="199"/> + <source>Warning</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="200"/> + <source>Are you sure you want to delete it?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="210"/> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="211"/> + <source>Unable to delete the file or folder.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>FindWidget</name> <message> <location filename="../../src/ui/FindWidget.cpp" line="38"/> @@ -294,58 +353,58 @@ <context> <name>GeneralTab</name> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="131"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="135"/> <source>Remember Password</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="133"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="138"/> <source>Remember password until closing gpg4usb</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="140"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="145"/> <source>Save Checked Keys</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="142"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="148"/> <source>Save checked private keys on exit and restore them on next start.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="150"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="157"/> <source>Confirm drag'n'drop key import</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="152"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="160"/> <source>Import files dropped on the keylist without confirmation.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="159"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="167"/> <source>Language</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="170"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="176"/> <source><b>NOTE: </b> GpgFrontend will restart automatically if you change the language!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="177"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="185"/> <source>Own key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="185"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="193"/> <source><none></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="205"/> - <source>Encrypt all messages additionally to the chosen key:</source> + <location filename="../../src/ui/SettingsDialog.cpp" line="207"/> + <source>Key pair for synchronization and identity authentication</source> <translation type="unfinished"></translation> </message> </context> @@ -377,17 +436,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/gpg/GpgContext.cpp" line="759"/> + <location filename="../../src/gpg/GpgContext.cpp" line="764"/> <source>Key Selection</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/gpg/GpgContext.cpp" line="759"/> + <location filename="../../src/gpg/GpgContext.cpp" line="764"/> <source>No Private Key Selected</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/gpg/GpgContext.cpp" line="799"/> + <location filename="../../src/gpg/GpgContext.cpp" line="804"/> <source>Error in signing:</source> <translation type="unfinished"></translation> </message> @@ -395,22 +454,22 @@ <context> <name>GpgPathsTab</name> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="650"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="612"/> <source>Relative path to keydb</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="662"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="625"/> <source>Current keydb path: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="667"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="630"/> <source><b>NOTE: </b> Gpg4usb will restart automatically if you change the keydb path!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="694"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="659"/> <source>Choose keydb directory</source> <translation type="unfinished"></translation> </message> @@ -418,32 +477,32 @@ <context> <name>ImportFromGnupgPage</name> <message> - <location filename="../../src/ui/Wizard.cpp" line="285"/> + <location filename="../../src/ui/Wizard.cpp" line="292"/> <source>Import keys...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="286"/> + <location filename="../../src/ui/Wizard.cpp" line="293"/> <source>...from existing GnuPG installation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="288"/> + <location filename="../../src/ui/Wizard.cpp" line="295"/> <source>You can import keys from a locally installed GnuPG.<br><br> The location is read from registry in Windows or assumed to be the .gnupg folder in the your home directory in Linux.<br></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="292"/> + <location filename="../../src/ui/Wizard.cpp" line="299"/> <source>Import keys from GnuPG</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="306"/> + <location filename="../../src/ui/Wizard.cpp" line="313"/> <source>Import Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="306"/> + <location filename="../../src/ui/Wizard.cpp" line="313"/> <source>Couldn't locate GnuPG home directory</source> <translation type="unfinished"></translation> </message> @@ -451,47 +510,47 @@ <context> <name>ImportFromGpg4usbPage</name> <message> - <location filename="../../src/ui/Wizard.cpp" line="208"/> + <location filename="../../src/ui/Wizard.cpp" line="215"/> <source>Import from...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="209"/> + <location filename="../../src/ui/Wizard.cpp" line="216"/> <source>...existing GPGFrontend</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="211"/> + <location filename="../../src/ui/Wizard.cpp" line="218"/> <source>You can import keys and/or settings from existing GPGFrontend. <br><br>Just check what you want to import, click the import button and choose the directory of your other GPGFrontend in the appearing file dialog.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="218"/> + <location filename="../../src/ui/Wizard.cpp" line="225"/> <source>Keys</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="222"/> + <location filename="../../src/ui/Wizard.cpp" line="229"/> <source>Configuration</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="224"/> + <location filename="../../src/ui/Wizard.cpp" line="231"/> <source>Import from GPGFrontend</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="239"/> + <location filename="../../src/ui/Wizard.cpp" line="246"/> <source>Other GPGFrontend directory</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="258"/> + <location filename="../../src/ui/Wizard.cpp" line="265"/> <source>Configuration Imported</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="259"/> + <location filename="../../src/ui/Wizard.cpp" line="266"/> <source>Imported Configuration from old GPGFrontend.<br>Will now restart to activate the configuration.</source> <translation type="unfinished"></translation> </message> @@ -499,7 +558,7 @@ <context> <name>InfoBoardWidget</name> <message> - <location filename="../../src/ui/widgets/InfoBoardWidget.cpp" line="37"/> + <location filename="../../src/ui/widgets/InfoBoardWidget.cpp" line="38"/> <source>Import missing key from Keyserver</source> <translation type="unfinished"></translation> </message> @@ -699,27 +758,27 @@ <context> <name>KeyGenPage</name> <message> - <location filename="../../src/ui/Wizard.cpp" line="349"/> + <location filename="../../src/ui/Wizard.cpp" line="356"/> <source>Create a keypair...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="350"/> + <location filename="../../src/ui/Wizard.cpp" line="357"/> <source>...for decrypting and signing messages</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="351"/> + <location filename="../../src/ui/Wizard.cpp" line="358"/> <source>You should create a new keypair.The pair consists of a public and a private key.<br>Other users can use the public key to encrypt messages for you and verify messages signed by you.You can use the private key to decrypt and sign messages.<br>For more information have a look at the offline tutorial (which then is shown in the main window):</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="358"/> + <location filename="../../src/ui/Wizard.cpp" line="365"/> <source>Offline tutorial</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="365"/> + <location filename="../../src/ui/Wizard.cpp" line="372"/> <source>Create New Key</source> <translation type="unfinished"></translation> </message> @@ -727,119 +786,119 @@ <context> <name>KeyImportDetailDialog</name> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="35"/> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="54"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="34"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="53"/> <source>Key Update Details</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="35"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="34"/> <source>No keys found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="37"/> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="56"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="36"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="55"/> <source>Key Import Details</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="37"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="36"/> <source>No keys found to import</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="65"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="64"/> <source>General key info</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="68"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="67"/> <source>Considered:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="72"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="71"/> <source>Public unchanged:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="77"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="76"/> <source>Imported:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="82"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="81"/> <source>Not imported:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="87"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="86"/> <source>Private read:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="92"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="91"/> <source>Private imported:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="97"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="96"/> <source>Private unchanged:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="112"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="111"/> <source>Name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="112"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="111"/> <source>Email</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="112"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="111"/> <source>Status</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="112"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="111"/> <source>Fingerprint</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="136"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="135"/> <source>private</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="139"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="138"/> <source>public</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="142"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="141"/> <source>unchanged</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="145"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="144"/> <source>new key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="148"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="147"/> <source>new subkey</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="152"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="151"/> <source>new signature</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="156"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="155"/> <source>new uid</source> <translation type="unfinished"></translation> </message> @@ -882,23 +941,23 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="311"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="310"/> <source>Import Keys</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="313"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="312"/> <source>You've dropped something on the table. GpgFrontend will now try to import key(s).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="316"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="315"/> <source>Always import without bothering.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="352"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="351"/> <source>Couldn't Open File: </source> <translation type="unfinished"></translation> </message> @@ -1283,72 +1342,72 @@ </message> <message> <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="134"/> - <source>Export Private Key</source> + <source>Export Private Key (Include Subkeys)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="139"/> - <source>Modify Expiration Datetime</source> + <source>Modify Expiration Datetime (Master Key)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="143"/> - <source>Key Server Operation</source> + <source>Key Server Operation (Pubkey)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="165"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="166"/> <source>Warning: The Master Key has expired.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="168"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="169"/> <source>Warning: The Master Key has been revoked</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="191"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="192"/> <source>Exporting private Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="192"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="193"/> <source><h3>You are about to export your <font color="red">PRIVATE KEY</font>!</h3> This is NOT your Public Key, so DON'T give it away.<br />Do you REALLY want to export your PRIVATE KEY?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="204"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="210"/> <source>Export Key To File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="205"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="211"/> <source>Key Files</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="208"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="214"/> <source>Export Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="208"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="214"/> <source>Couldn't open %1 for writing</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="278"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="284"/> <source>Never Expire</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="298"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="304"/> <source>Upload Key Pair</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="300"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="306"/> <source>Update Key Pair</source> <translation type="unfinished"></translation> </message> @@ -1672,105 +1731,105 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="160"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="158"/> <source>UID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="160"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="158"/> <source>Creation date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="160"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="158"/> <source>KeyID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="160"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="158"/> <source>Tag</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="181"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="179"/> <source><h4>Text is empty.</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="215"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="213"/> <source>Not Key Found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="218"/> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="388"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="216"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="386"/> <source>Timeout</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="221"/> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="391"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="219"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="389"/> <source>Key Server Not Found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="224"/> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="394"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="222"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="392"/> <source>Connection Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="232"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="230"/> <source><h4>CToo many responses from keyserver!</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="239"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="237"/> <source><h4>No keys found, input may be kexId, retrying search with 0x.</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="244"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="242"/> <source><h4>No keys found containing the search string!</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="248"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="246"/> <source><h4>Insufficiently specific search string!</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="276"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="274"/> <source>revoked</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="279"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="277"/> <source>disabled</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="319"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="317"/> <source><h4>%1 keys found. Double click a key to import it.</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="385"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="383"/> <source>Key Not Found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="412"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="410"/> <source><h4>Key Updated</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="414"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="412"/> <source><h4>Key Imported</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="475"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="473"/> <source>Upload Keys from Keyserver</source> <translation type="unfinished"></translation> </message> @@ -1834,27 +1893,27 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL <context> <name>KeyUploadDialog</name> <message> - <location filename="../../src/ui/KeyUploadDialog.cpp" line="72"/> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="45"/> <source>Uploading Public Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyUploadDialog.cpp" line="107"/> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="108"/> <source>Key Not Found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyUploadDialog.cpp" line="110"/> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="111"/> <source>Timeout</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyUploadDialog.cpp" line="113"/> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="114"/> <source>Key Server Not Found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyUploadDialog.cpp" line="116"/> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="117"/> <source>Connection Error</source> <translation type="unfinished"></translation> </message> @@ -1862,12 +1921,12 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL <context> <name>KeyserverTab</name> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="548"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="508"/> <source>Default Keyserver for import:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="564"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="525"/> <source>Add</source> <translation type="unfinished"></translation> </message> @@ -1875,38 +1934,150 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL <context> <name>MainWindow</name> <message> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="36"/> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="83"/> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="281"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="37"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="88"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="220"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="395"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="538"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="681"/> <source>No Key Selected</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="43"/> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="90"/> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="288"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="44"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="95"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="227"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="402"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="545"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="688"/> <source>Invalid Operation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="44"/> - <source>The selected key contains a key that does not actually have a encrypt function.<br/></source> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="45"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="403"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="546"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="689"/> + <source>The selected key contains a key that does not actually have a encrypt usage.<br/></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="45"/> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="92"/> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="290"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="96"/> + <source>The selected key contains a key that does not actually have a signature usage.<br/></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="369"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="373"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="377"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="431"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="444"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="448"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="452"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="495"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="511"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="515"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="519"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="574"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="602"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="607"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="611"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="642"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="655"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="659"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="663"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="723"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="734"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="738"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="742"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="786"/> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="373"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="448"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="515"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="659"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="738"/> + <source>No permission to read this file.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="377"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="452"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="519"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="663"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="742"/> + <source>No permission to create file.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="382"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="467"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="525"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="668"/> + <source>Warning</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="383"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="468"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="526"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="669"/> + <source>The target file already exists, do you need to overwrite it?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="431"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="495"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="574"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="642"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="723"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="786"/> + <source>An error occurred during operation.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="603"/> + <source>Please select the appropriate target file or signature file. Ensure that both are in this directory.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="607"/> + <source>No permission to read target file.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="611"/> + <source>No permission to read signature file.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="734"/> + <source>Select a file(.gpg/.asc) before doing it.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="46"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="97"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="229"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="404"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="547"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="690"/> <source><br/>For example the Following Key: <br/></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="91"/> - <source>The selected key contains a key that does not actually have a signature function.<br/></source> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="369"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="444"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="511"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="655"/> + <source>Select a file before doing it.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="289"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="228"/> <source>The selected key cannot be used for signing and encryption at the same time.<br/></source> <translation type="unfinished"></translation> </message> @@ -2356,62 +2527,62 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="349"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="348"/> <source>Crypt</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="359"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="358"/> <source>Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="364"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="363"/> <source>Edit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="371"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="370"/> <source>Special Edit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="383"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="382"/> <source>Import key from...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="384"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="383"/> <source>Import key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="393"/> - <source>Opera File</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="392"/> + <source>Browser to view and operate file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="394"/> - <source>File Crypto</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="393"/> + <source>Browser</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="412"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="411"/> <source>Ready</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="419"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="418"/> <source>Key ToolBox</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="427"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="426"/> <source>Information Board</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="447"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="446"/> <source>Attached files:</source> <translation type="unfinished"></translation> </message> @@ -2419,37 +2590,37 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL <context> <name>MimeTab</name> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="340"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="289"/> <source>Decode quoted printable</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="342"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="292"/> <source>Try to recognize quoted printable.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="346"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="296"/> <source>Parse PGP/MIME (Experimental)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="348"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="299"/> <source>Try to split attachments from PGP-MIME ecrypted messages.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="352"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="304"/> <source>Open with external application (Experimental)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="354"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="306"/> <source>Open attachments with default application for the filetype.<br> There are at least two possible problems with this behaviour:<ol><li>File needs to be saved unencrypted to attachments folder.<br> Its your job to clean this folder.</li><li>The external application may have its own temp files.</li></ol></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="361"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="315"/> <source>Enable opening with external applications.</source> <translation type="unfinished"></translation> </message> @@ -2618,7 +2789,7 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="97"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="101"/> <source>System Default</source> <translation type="unfinished"></translation> </message> @@ -2722,51 +2893,57 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="76"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="99"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="131"/> + <source>Warning</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="106"/> <source>Open file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="101"/> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="379"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="203"/> + <source>Save file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="415"/> <source>Application</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="102"/> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="380"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="100"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="132"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="416"/> <source>Cannot read file %1: %2.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="151"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="181"/> <source>File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="152"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="182"/> <source>Cannot write file %1: %2.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="173"/> - <source>Save file </source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="237"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="267"/> <source>Unsaved document</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="238"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="268"/> <source><h3>The document "%1" has been modified.<br/>Do you want to save your changes?</h3></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="240"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="270"/> <source><b>Note:</b> If you don't save these files, all changes are lost.<br/></source> <translation type="unfinished"></translation> </message> @@ -2795,150 +2972,150 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL </message> <message> <location filename="../../src/ui/VerifyDetailsDialog.cpp" line="70"/> - <source>File was signed on %1 <br/> It Contains:<br/></source> + <source>File was signed on %1 <br/> It Contains:<br/><br/></source> <translation type="unfinished"></translation> </message> <message> <location filename="../../src/ui/VerifyDetailsDialog.cpp" line="72"/> - <source>Signed on %1 <br/> It Contains:<br/></source> + <source>Signed on %1 <br/> It Contains:<br /><br/></source> <translation type="unfinished"></translation> </message> </context> <context> <name>VerifyKeyDetailBox</name> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="39"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="36"/> <source>Import from keyserver</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="42"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="39"/> <source>Key not present with id 0x</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="46"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="43"/> <source>Status:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="48"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="45"/> <source>Key not present in keylist</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="61"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="75"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="89"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="104"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="118"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="132"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="58"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="72"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="86"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="101"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="115"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="129"/> <source>Key Information is NOT Available</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="63"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="77"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="91"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="106"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="120"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="134"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="60"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="74"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="88"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="103"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="117"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="131"/> <source>Fingerprint: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="70"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="67"/> <source>Status: Cert Revoked</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="84"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="98"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="81"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="95"/> <source>Status: Signature Expired</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="99"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="96"/> <source>Status: Key Expired</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="113"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="110"/> <source>Status: General Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="127"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="124"/> <source>Status: Unknown Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="162"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="159"/> <source>Signer Name:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="163"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="160"/> <source>Signer Email:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="164"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="161"/> <source>Key's Fingerprint:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="165"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="162"/> <source>Valid:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="166"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="163"/> <source>Flags:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="174"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="171"/> <source>Fully Valid</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="176"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="173"/> <source>NOT Fully Valid</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="183"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="180"/> <source>Good </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="186"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="183"/> <source>Bad </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="189"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="186"/> <source>Expired </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="192"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="189"/> <source>Missing Key </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="195"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="192"/> <source>Revoked Key </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="198"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="195"/> <source>Expired Key </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="201"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="198"/> <source>Missing CRL </source> <translation type="unfinished"></translation> </message> diff --git a/resource/ts/gpgfrontend_zh_cht.ts b/resource/ts/gpgfrontend_zh_cht.ts index 2bdef057..282cb9a4 100644 --- a/resource/ts/gpgfrontend_zh_cht.ts +++ b/resource/ts/gpgfrontend_zh_cht.ts @@ -22,12 +22,12 @@ <context> <name>AdvancedTab</name> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="618"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="580"/> <source>Show Steganography Options [Advanced]</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="620"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="582"/> <source>Show Steganographic Options.</source> <translation type="unfinished"></translation> </message> @@ -35,52 +35,52 @@ <context> <name>AppearanceTab</name> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="411"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="368"/> <source>Iconsize</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="413"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="370"/> <source>small</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="414"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="371"/> <source>medium</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="415"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="372"/> <source>large</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="431"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="388"/> <source>Iconstyle</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="433"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="390"/> <source>just text</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="434"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="391"/> <source>just icons</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="435"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="392"/> <source>text and icons</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="451"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="408"/> <source>Windowstate</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="453"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="411"/> <source>Save window size and position on exit.</source> <translation type="unfinished"></translation> </message> @@ -149,59 +149,65 @@ </message> <message> <location filename="../../src/ui/Wizard.cpp" line="164"/> - <source>If you have never used GPGFrontend before and also don't own a gpg key yet you may possibly want to </source> + <source>If you have never used GPGFrontend before and also don't own a gpg key yet you may possibly want to read how to</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="166"/> - <source>create a new keypair</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/ui/Wizard.cpp" line="170"/> - <source>If you upgrade from an older version of GPGFrontend you may want to </source> + <location filename="../../src/ui/Wizard.cpp" line="172"/> + <source>If you want to learn how to encrypt and decrypt text, you can read </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="172"/> - <source>import settings and/or keys from GPGFrontend</source> + <location filename="../../src/ui/Wizard.cpp" line="174"/> + <location filename="../../src/ui/Wizard.cpp" line="183"/> + <source>this document</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="176"/> - <source>If you are already using GnuPG you may want to </source> + <location filename="../../src/ui/Wizard.cpp" line="181"/> + <source>If you want to sign and verify text, you can read </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="178"/> - <source>import keys from GnuPG</source> + <location filename="../../src/ui/Wizard.cpp" line="166"/> + <source>create a new keypair</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ConclusionPage</name> <message> - <location filename="../../src/ui/Wizard.cpp" line="389"/> + <location filename="../../src/ui/Wizard.cpp" line="397"/> <source>Ready.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="390"/> + <location filename="../../src/ui/Wizard.cpp" line="398"/> <source>Have fun with GPGFrontend!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="392"/> - <source>You are ready to use GPGFrontend now.<br><br>The offline help will get you started with GPGFrontend. It will open in the main window.<br></source> + <location filename="../../src/ui/Wizard.cpp" line="400"/> + <source>You are ready to use GPGFrontend now.<br><br></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/Wizard.cpp" line="402"/> + <source>The Online Document</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="397"/> + <location filename="../../src/ui/Wizard.cpp" line="403"/> + <source> will get you started with GPGFrontend. It will open in the main window.<br></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/Wizard.cpp" line="410"/> <source>Open offline help.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="400"/> + <location filename="../../src/ui/Wizard.cpp" line="413"/> <source>Dont show the wizard again.</source> <translation type="unfinished"></translation> </message> @@ -284,6 +290,59 @@ </message> </context> <context> + <name>FilePage</name> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="137"/> + <source>Open</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="139"/> + <source>Delete</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="141"/> + <source>Encrypt and Sign</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="143"/> + <source>Decrypt and Verify</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="145"/> + <source>Only Sign</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="147"/> + <source>Only Verify</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="199"/> + <source>Warning</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="200"/> + <source>Are you sure you want to delete it?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="210"/> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/FilePage.cpp" line="211"/> + <source>Unable to delete the file or folder.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>FindWidget</name> <message> <location filename="../../src/ui/FindWidget.cpp" line="38"/> @@ -294,58 +353,58 @@ <context> <name>GeneralTab</name> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="131"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="135"/> <source>Remember Password</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="133"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="138"/> <source>Remember password until closing gpg4usb</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="140"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="145"/> <source>Save Checked Keys</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="142"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="148"/> <source>Save checked private keys on exit and restore them on next start.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="150"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="157"/> <source>Confirm drag'n'drop key import</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="152"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="160"/> <source>Import files dropped on the keylist without confirmation.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="159"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="167"/> <source>Language</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="170"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="176"/> <source><b>NOTE: </b> GpgFrontend will restart automatically if you change the language!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="177"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="185"/> <source>Own key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="185"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="193"/> <source><none></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="205"/> - <source>Encrypt all messages additionally to the chosen key:</source> + <location filename="../../src/ui/SettingsDialog.cpp" line="207"/> + <source>Key pair for synchronization and identity authentication</source> <translation type="unfinished"></translation> </message> </context> @@ -377,17 +436,17 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/gpg/GpgContext.cpp" line="759"/> + <location filename="../../src/gpg/GpgContext.cpp" line="764"/> <source>Key Selection</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/gpg/GpgContext.cpp" line="759"/> + <location filename="../../src/gpg/GpgContext.cpp" line="764"/> <source>No Private Key Selected</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/gpg/GpgContext.cpp" line="799"/> + <location filename="../../src/gpg/GpgContext.cpp" line="804"/> <source>Error in signing:</source> <translation type="unfinished"></translation> </message> @@ -395,22 +454,22 @@ <context> <name>GpgPathsTab</name> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="650"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="612"/> <source>Relative path to keydb</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="662"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="625"/> <source>Current keydb path: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="667"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="630"/> <source><b>NOTE: </b> Gpg4usb will restart automatically if you change the keydb path!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="694"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="659"/> <source>Choose keydb directory</source> <translation type="unfinished"></translation> </message> @@ -418,32 +477,32 @@ <context> <name>ImportFromGnupgPage</name> <message> - <location filename="../../src/ui/Wizard.cpp" line="285"/> + <location filename="../../src/ui/Wizard.cpp" line="292"/> <source>Import keys...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="286"/> + <location filename="../../src/ui/Wizard.cpp" line="293"/> <source>...from existing GnuPG installation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="288"/> + <location filename="../../src/ui/Wizard.cpp" line="295"/> <source>You can import keys from a locally installed GnuPG.<br><br> The location is read from registry in Windows or assumed to be the .gnupg folder in the your home directory in Linux.<br></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="292"/> + <location filename="../../src/ui/Wizard.cpp" line="299"/> <source>Import keys from GnuPG</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="306"/> + <location filename="../../src/ui/Wizard.cpp" line="313"/> <source>Import Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="306"/> + <location filename="../../src/ui/Wizard.cpp" line="313"/> <source>Couldn't locate GnuPG home directory</source> <translation type="unfinished"></translation> </message> @@ -451,47 +510,47 @@ <context> <name>ImportFromGpg4usbPage</name> <message> - <location filename="../../src/ui/Wizard.cpp" line="208"/> + <location filename="../../src/ui/Wizard.cpp" line="215"/> <source>Import from...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="209"/> + <location filename="../../src/ui/Wizard.cpp" line="216"/> <source>...existing GPGFrontend</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="211"/> + <location filename="../../src/ui/Wizard.cpp" line="218"/> <source>You can import keys and/or settings from existing GPGFrontend. <br><br>Just check what you want to import, click the import button and choose the directory of your other GPGFrontend in the appearing file dialog.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="218"/> + <location filename="../../src/ui/Wizard.cpp" line="225"/> <source>Keys</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="222"/> + <location filename="../../src/ui/Wizard.cpp" line="229"/> <source>Configuration</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="224"/> + <location filename="../../src/ui/Wizard.cpp" line="231"/> <source>Import from GPGFrontend</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="239"/> + <location filename="../../src/ui/Wizard.cpp" line="246"/> <source>Other GPGFrontend directory</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="258"/> + <location filename="../../src/ui/Wizard.cpp" line="265"/> <source>Configuration Imported</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="259"/> + <location filename="../../src/ui/Wizard.cpp" line="266"/> <source>Imported Configuration from old GPGFrontend.<br>Will now restart to activate the configuration.</source> <translation type="unfinished"></translation> </message> @@ -499,7 +558,7 @@ <context> <name>InfoBoardWidget</name> <message> - <location filename="../../src/ui/widgets/InfoBoardWidget.cpp" line="37"/> + <location filename="../../src/ui/widgets/InfoBoardWidget.cpp" line="38"/> <source>Import missing key from Keyserver</source> <translation type="unfinished"></translation> </message> @@ -699,27 +758,27 @@ <context> <name>KeyGenPage</name> <message> - <location filename="../../src/ui/Wizard.cpp" line="349"/> + <location filename="../../src/ui/Wizard.cpp" line="356"/> <source>Create a keypair...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="350"/> + <location filename="../../src/ui/Wizard.cpp" line="357"/> <source>...for decrypting and signing messages</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="351"/> + <location filename="../../src/ui/Wizard.cpp" line="358"/> <source>You should create a new keypair.The pair consists of a public and a private key.<br>Other users can use the public key to encrypt messages for you and verify messages signed by you.You can use the private key to decrypt and sign messages.<br>For more information have a look at the offline tutorial (which then is shown in the main window):</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="358"/> + <location filename="../../src/ui/Wizard.cpp" line="365"/> <source>Offline tutorial</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Wizard.cpp" line="365"/> + <location filename="../../src/ui/Wizard.cpp" line="372"/> <source>Create New Key</source> <translation type="unfinished"></translation> </message> @@ -727,119 +786,119 @@ <context> <name>KeyImportDetailDialog</name> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="35"/> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="54"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="34"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="53"/> <source>Key Update Details</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="35"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="34"/> <source>No keys found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="37"/> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="56"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="36"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="55"/> <source>Key Import Details</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="37"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="36"/> <source>No keys found to import</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="65"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="64"/> <source>General key info</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="68"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="67"/> <source>Considered:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="72"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="71"/> <source>Public unchanged:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="77"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="76"/> <source>Imported:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="82"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="81"/> <source>Not imported:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="87"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="86"/> <source>Private read:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="92"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="91"/> <source>Private imported:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="97"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="96"/> <source>Private unchanged:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="112"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="111"/> <source>Name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="112"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="111"/> <source>Email</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="112"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="111"/> <source>Status</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="112"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="111"/> <source>Fingerprint</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="136"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="135"/> <source>private</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="139"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="138"/> <source>public</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="142"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="141"/> <source>unchanged</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="145"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="144"/> <source>new key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="148"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="147"/> <source>new subkey</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="152"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="151"/> <source>new signature</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="156"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="155"/> <source>new uid</source> <translation type="unfinished"></translation> </message> @@ -882,23 +941,23 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="311"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="310"/> <source>Import Keys</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="313"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="312"/> <source>You've dropped something on the table. GpgFrontend will now try to import key(s).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="316"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="315"/> <source>Always import without bothering.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="352"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="351"/> <source>Couldn't Open File: </source> <translation type="unfinished"></translation> </message> @@ -1283,72 +1342,72 @@ </message> <message> <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="134"/> - <source>Export Private Key</source> + <source>Export Private Key (Include Subkeys)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="139"/> - <source>Modify Expiration Datetime</source> + <source>Modify Expiration Datetime (Master Key)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="143"/> - <source>Key Server Operation</source> + <source>Key Server Operation (Pubkey)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="165"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="166"/> <source>Warning: The Master Key has expired.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="168"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="169"/> <source>Warning: The Master Key has been revoked</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="191"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="192"/> <source>Exporting private Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="192"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="193"/> <source><h3>You are about to export your <font color="red">PRIVATE KEY</font>!</h3> This is NOT your Public Key, so DON'T give it away.<br />Do you REALLY want to export your PRIVATE KEY?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="204"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="210"/> <source>Export Key To File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="205"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="211"/> <source>Key Files</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="208"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="214"/> <source>Export Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="208"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="214"/> <source>Couldn't open %1 for writing</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="278"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="284"/> <source>Never Expire</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="298"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="304"/> <source>Upload Key Pair</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="300"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="306"/> <source>Update Key Pair</source> <translation type="unfinished"></translation> </message> @@ -1672,105 +1731,105 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="160"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="158"/> <source>UID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="160"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="158"/> <source>Creation date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="160"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="158"/> <source>KeyID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="160"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="158"/> <source>Tag</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="181"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="179"/> <source><h4>Text is empty.</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="215"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="213"/> <source>Not Key Found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="218"/> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="388"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="216"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="386"/> <source>Timeout</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="221"/> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="391"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="219"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="389"/> <source>Key Server Not Found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="224"/> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="394"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="222"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="392"/> <source>Connection Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="232"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="230"/> <source><h4>CToo many responses from keyserver!</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="239"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="237"/> <source><h4>No keys found, input may be kexId, retrying search with 0x.</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="244"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="242"/> <source><h4>No keys found containing the search string!</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="248"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="246"/> <source><h4>Insufficiently specific search string!</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="276"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="274"/> <source>revoked</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="279"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="277"/> <source>disabled</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="319"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="317"/> <source><h4>%1 keys found. Double click a key to import it.</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="385"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="383"/> <source>Key Not Found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="412"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="410"/> <source><h4>Key Updated</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="414"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="412"/> <source><h4>Key Imported</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="475"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="473"/> <source>Upload Keys from Keyserver</source> <translation type="unfinished"></translation> </message> @@ -1834,27 +1893,27 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL <context> <name>KeyUploadDialog</name> <message> - <location filename="../../src/ui/KeyUploadDialog.cpp" line="72"/> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="45"/> <source>Uploading Public Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyUploadDialog.cpp" line="107"/> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="108"/> <source>Key Not Found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyUploadDialog.cpp" line="110"/> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="111"/> <source>Timeout</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyUploadDialog.cpp" line="113"/> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="114"/> <source>Key Server Not Found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyUploadDialog.cpp" line="116"/> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="117"/> <source>Connection Error</source> <translation type="unfinished"></translation> </message> @@ -1862,12 +1921,12 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL <context> <name>KeyserverTab</name> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="548"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="508"/> <source>Default Keyserver for import:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="564"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="525"/> <source>Add</source> <translation type="unfinished"></translation> </message> @@ -1875,38 +1934,150 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL <context> <name>MainWindow</name> <message> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="36"/> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="83"/> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="281"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="37"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="88"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="220"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="395"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="538"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="681"/> <source>No Key Selected</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="43"/> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="90"/> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="288"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="44"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="95"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="227"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="402"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="545"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="688"/> <source>Invalid Operation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="44"/> - <source>The selected key contains a key that does not actually have a encrypt function.<br/></source> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="45"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="403"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="546"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="689"/> + <source>The selected key contains a key that does not actually have a encrypt usage.<br/></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="45"/> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="92"/> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="290"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="96"/> + <source>The selected key contains a key that does not actually have a signature usage.<br/></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="369"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="373"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="377"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="431"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="444"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="448"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="452"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="495"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="511"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="515"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="519"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="574"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="602"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="607"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="611"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="642"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="655"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="659"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="663"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="723"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="734"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="738"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="742"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="786"/> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="373"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="448"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="515"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="659"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="738"/> + <source>No permission to read this file.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="377"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="452"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="519"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="663"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="742"/> + <source>No permission to create file.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="382"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="467"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="525"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="668"/> + <source>Warning</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="383"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="468"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="526"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="669"/> + <source>The target file already exists, do you need to overwrite it?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="431"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="495"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="574"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="642"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="723"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="786"/> + <source>An error occurred during operation.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="603"/> + <source>Please select the appropriate target file or signature file. Ensure that both are in this directory.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="607"/> + <source>No permission to read target file.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="611"/> + <source>No permission to read signature file.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="734"/> + <source>Select a file(.gpg/.asc) before doing it.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="46"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="97"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="229"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="404"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="547"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="690"/> <source><br/>For example the Following Key: <br/></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="91"/> - <source>The selected key contains a key that does not actually have a signature function.<br/></source> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="369"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="444"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="511"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="655"/> + <source>Select a file before doing it.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="289"/> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="228"/> <source>The selected key cannot be used for signing and encryption at the same time.<br/></source> <translation type="unfinished"></translation> </message> @@ -2356,62 +2527,62 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="349"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="348"/> <source>Crypt</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="359"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="358"/> <source>Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="364"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="363"/> <source>Edit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="371"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="370"/> <source>Special Edit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="383"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="382"/> <source>Import key from...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="384"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="383"/> <source>Import key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="393"/> - <source>Opera File</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="392"/> + <source>Browser to view and operate file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="394"/> - <source>File Crypto</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="393"/> + <source>Browser</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="412"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="411"/> <source>Ready</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="419"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="418"/> <source>Key ToolBox</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="427"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="426"/> <source>Information Board</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="447"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="446"/> <source>Attached files:</source> <translation type="unfinished"></translation> </message> @@ -2419,37 +2590,37 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL <context> <name>MimeTab</name> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="340"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="289"/> <source>Decode quoted printable</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="342"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="292"/> <source>Try to recognize quoted printable.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="346"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="296"/> <source>Parse PGP/MIME (Experimental)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="348"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="299"/> <source>Try to split attachments from PGP-MIME ecrypted messages.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="352"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="304"/> <source>Open with external application (Experimental)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="354"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="306"/> <source>Open attachments with default application for the filetype.<br> There are at least two possible problems with this behaviour:<ol><li>File needs to be saved unencrypted to attachments folder.<br> Its your job to clean this folder.</li><li>The external application may have its own temp files.</li></ol></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="361"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="315"/> <source>Enable opening with external applications.</source> <translation type="unfinished"></translation> </message> @@ -2618,7 +2789,7 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/SettingsDialog.cpp" line="97"/> + <location filename="../../src/ui/SettingsDialog.cpp" line="101"/> <source>System Default</source> <translation type="unfinished"></translation> </message> @@ -2722,51 +2893,57 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="76"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="99"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="131"/> + <source>Warning</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="106"/> <source>Open file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="101"/> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="379"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="203"/> + <source>Save file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="415"/> <source>Application</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="102"/> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="380"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="100"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="132"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="416"/> <source>Cannot read file %1: %2.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="151"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="181"/> <source>File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="152"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="182"/> <source>Cannot write file %1: %2.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="173"/> - <source>Save file </source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="237"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="267"/> <source>Unsaved document</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="238"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="268"/> <source><h3>The document "%1" has been modified.<br/>Do you want to save your changes?</h3></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/TextEdit.cpp" line="240"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="270"/> <source><b>Note:</b> If you don't save these files, all changes are lost.<br/></source> <translation type="unfinished"></translation> </message> @@ -2795,150 +2972,150 @@ This is NOT your Public Key, so DON'T give it away.<br />Do you REALL </message> <message> <location filename="../../src/ui/VerifyDetailsDialog.cpp" line="70"/> - <source>File was signed on %1 <br/> It Contains:<br/></source> + <source>File was signed on %1 <br/> It Contains:<br/><br/></source> <translation type="unfinished"></translation> </message> <message> <location filename="../../src/ui/VerifyDetailsDialog.cpp" line="72"/> - <source>Signed on %1 <br/> It Contains:<br/></source> + <source>Signed on %1 <br/> It Contains:<br /><br/></source> <translation type="unfinished"></translation> </message> </context> <context> <name>VerifyKeyDetailBox</name> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="39"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="36"/> <source>Import from keyserver</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="42"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="39"/> <source>Key not present with id 0x</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="46"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="43"/> <source>Status:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="48"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="45"/> <source>Key not present in keylist</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="61"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="75"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="89"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="104"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="118"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="132"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="58"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="72"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="86"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="101"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="115"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="129"/> <source>Key Information is NOT Available</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="63"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="77"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="91"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="106"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="120"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="134"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="60"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="74"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="88"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="103"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="117"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="131"/> <source>Fingerprint: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="70"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="67"/> <source>Status: Cert Revoked</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="84"/> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="98"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="81"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="95"/> <source>Status: Signature Expired</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="99"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="96"/> <source>Status: Key Expired</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="113"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="110"/> <source>Status: General Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="127"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="124"/> <source>Status: Unknown Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="162"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="159"/> <source>Signer Name:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="163"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="160"/> <source>Signer Email:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="164"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="161"/> <source>Key's Fingerprint:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="165"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="162"/> <source>Valid:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="166"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="163"/> <source>Flags:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="174"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="171"/> <source>Fully Valid</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="176"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="173"/> <source>NOT Fully Valid</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="183"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="180"/> <source>Good </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="186"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="183"/> <source>Bad </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="189"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="186"/> <source>Expired </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="192"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="189"/> <source>Missing Key </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="195"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="192"/> <source>Revoked Key </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="198"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="195"/> <source>Expired Key </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="201"/> + <location filename="../../src/ui/widgets/VerifyKeyDetailBox.cpp" line="198"/> <source>Missing CRL </source> <translation type="unfinished"></translation> </message> diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index 67274a65..a3d4f1e2 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -34,7 +34,9 @@ MainWindow::MainWindow() setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea); setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea); - edit = new TextEdit(); + qDebug() << "Main Window" << this; + + edit = new TextEdit(this); setCentralWidget(edit); /* the list of Keys available*/ @@ -144,8 +146,8 @@ void MainWindow::restoreSettings() { fileEncButton->setToolButtonStyle(buttonStyle); // Checked Keys - if (settings.value("keys/keySave").toBool()) { - QStringList keyIds = settings.value("keys/keyList").toStringList(); + if (settings.value("keys/saveKeyChecked").toBool()) { + QStringList keyIds = settings.value("keys/savedCheckedKeyList").toStringList(); mKeyList->setChecked(&keyIds); } } @@ -157,15 +159,15 @@ void MainWindow::saveSettings() { settings.setValue("window/size", size()); // keyid-list of private checked keys - if (settings.value("keys/keySave").toBool()) { - QStringList *keyIds = mKeyList->getPrivateChecked(); + if (settings.value("keys/saveKeyChecked").toBool()) { + QStringList *keyIds = mKeyList->getChecked(); if (!keyIds->isEmpty()) { - settings.setValue("keys/keyList", *keyIds); + settings.setValue("keys/savedCheckedKeyList", *keyIds); } else { - settings.setValue("keys/keyList", ""); + settings.setValue("keys/savedCheckedKeyList", ""); } } else { - settings.remove("keys/keyList"); + settings.remove("keys/savedCheckedKeyList"); } } diff --git a/src/gpg/GpgFileOpera.cpp b/src/gpg/GpgFileOpera.cpp new file mode 100644 index 00000000..f7db9d44 --- /dev/null +++ b/src/gpg/GpgFileOpera.cpp @@ -0,0 +1,237 @@ +/** + * This file is part of GPGFrontend. + * + * GPGFrontend is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Foobar is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Foobar. If not, see <https://www.gnu.org/licenses/>. + * + * The initial version of the source code is inherited from gpg4usb-team. + * Their source code version also complies with GNU General Public License. + * + * The source code version of this software was modified and released + * by Saturneric<[email protected]> starting on May 12, 2021. + * + */ +#include "gpg/GpgFileOpera.h" + +gpgme_error_t GpgFileOpera::encryptFile(GpgME::GpgContext *ctx, QVector<GpgKey> &keys, const QString &mPath, + gpgme_encrypt_result_t *result) { + + QFileInfo fileInfo(mPath); + + if (!fileInfo.isFile() || !fileInfo.isReadable()) + throw std::runtime_error("no permission"); + + QFile infile; + infile.setFileName(mPath); + if (!infile.open(QIODevice::ReadOnly)) + throw std::runtime_error("cannot open file"); + + QByteArray inBuffer = infile.readAll(); + auto outBuffer = QByteArray(); + infile.close(); + + auto error = ctx->encrypt(keys, inBuffer, &outBuffer, result); + + if (gpg_err_code(error) != GPG_ERR_NO_ERROR) return error; + + QFile outfile(mPath + ".asc"); + + if (!outfile.open(QFile::WriteOnly)) + throw std::runtime_error("cannot open file"); + + QDataStream out(&outfile); + out.writeRawData(outBuffer.data(), outBuffer.length()); + outfile.close(); + return error; +} + +gpgme_error_t GpgFileOpera::decryptFile(GpgME::GpgContext *ctx, const QString &mPath, gpgme_decrypt_result_t *result) { + + QFileInfo fileInfo(mPath); + + if (!fileInfo.isFile() || !fileInfo.isReadable()) + throw std::runtime_error("no permission"); + + QFile infile; + infile.setFileName(mPath); + if (!infile.open(QIODevice::ReadOnly)) + throw std::runtime_error("cannot open file"); + + QByteArray inBuffer = infile.readAll(); + auto outBuffer = QByteArray(); + infile.close(); + + auto error = ctx->decrypt(inBuffer, &outBuffer, result); + + if (gpgme_err_code(error) != GPG_ERR_NO_ERROR) return error; + + QString outFileName, fileExtension = fileInfo.suffix(); + + if (fileExtension == "asc" || fileExtension == "gpg") { + int pos = mPath.lastIndexOf(QChar('.')); + outFileName = mPath.left(pos); + } else { + outFileName = mPath + ".out"; + } + + QFile outfile(outFileName); + + if (!outfile.open(QFile::WriteOnly)) + throw std::runtime_error("cannot open file"); + + QDataStream out(&outfile); + out.writeRawData(outBuffer.data(), outBuffer.length()); + outfile.close(); + + return error; +} + +gpgme_error_t GpgFileOpera::signFile(GpgME::GpgContext *ctx, QVector<GpgKey> &keys, const QString &mPath, + gpgme_sign_result_t *result) { + + QFileInfo fileInfo(mPath); + + if (!fileInfo.isFile() || !fileInfo.isReadable()) + throw std::runtime_error("no permission"); + + QFile infile; + infile.setFileName(mPath); + if (!infile.open(QIODevice::ReadOnly)) + throw std::runtime_error("cannot open file"); + + + QByteArray inBuffer = infile.readAll(); + auto outBuffer = QByteArray(); + infile.close(); + + auto error = ctx->sign(keys, inBuffer, &outBuffer, true, result); + + if (gpg_err_code(error) != GPG_ERR_NO_ERROR) return error; + + QFile outfile(mPath + ".sig"); + + if (!outfile.open(QFile::WriteOnly)) + throw std::runtime_error("cannot open file"); + + QDataStream out(&outfile); + out.writeRawData(outBuffer.data(), outBuffer.length()); + outfile.close(); + + return error; +} + +gpgme_error_t GpgFileOpera::verifyFile(GpgME::GpgContext *ctx, const QString &mPath, gpgme_verify_result_t *result) { + + QFileInfo fileInfo(mPath); + + if (!fileInfo.isFile() || !fileInfo.isReadable()) + throw std::runtime_error("no permission"); + + QFile infile; + infile.setFileName(mPath); + if (!infile.open(QIODevice::ReadOnly)) + throw std::runtime_error("cannot open file"); + + + QByteArray inBuffer = infile.readAll(); + + QFile signFile; + signFile.setFileName(mPath + ".sig"); + if (!signFile.open(QIODevice::ReadOnly)) { + throw std::runtime_error("cannot open file"); + } + + + + auto signBuffer = signFile.readAll(); + infile.close(); + + + auto error = ctx->verify(&inBuffer, &signBuffer, result); + + return error; +} + +gpg_error_t GpgFileOpera::encryptSignFile(GpgME::GpgContext *ctx, QVector<GpgKey> &keys, const QString &mPath, + gpgme_encrypt_result_t *encr_res, + gpgme_sign_result_t *sign_res) { + QFileInfo fileInfo(mPath); + + if (!fileInfo.isFile() || !fileInfo.isReadable()) + throw std::runtime_error("no permission"); + + QFile infile; + infile.setFileName(mPath); + if (!infile.open(QIODevice::ReadOnly)) + throw std::runtime_error("cannot open file"); + + QByteArray inBuffer = infile.readAll(); + auto outBuffer = QByteArray(); + infile.close(); + + auto error = ctx->encryptSign(keys, inBuffer, &outBuffer, encr_res, sign_res); + + if (gpg_err_code(error) != GPG_ERR_NO_ERROR) + return error; + + QFile outfile(mPath + ".gpg"); + + if (!outfile.open(QFile::WriteOnly)) + throw std::runtime_error("cannot open file"); + + QDataStream out(&outfile); + out.writeRawData(outBuffer.data(), outBuffer.length()); + outfile.close(); + + return error; +} + +gpg_error_t GpgFileOpera::decryptVerifyFile(GpgME::GpgContext *ctx, const QString &mPath, gpgme_decrypt_result_t *decr_res, + gpgme_verify_result_t *verify_res) { + QFileInfo fileInfo(mPath); + + if (!fileInfo.isFile() || !fileInfo.isReadable()) + throw std::runtime_error("no permission"); + + QFile infile; + infile.setFileName(mPath); + if (!infile.open(QIODevice::ReadOnly)) + throw std::runtime_error("cannot open file"); + + QByteArray inBuffer = infile.readAll(); + auto outBuffer = QByteArray(); + infile.close(); + + auto error = ctx->decryptVerify(inBuffer, &outBuffer, decr_res, verify_res); + if (gpg_err_code(error) != GPG_ERR_NO_ERROR) return error; + + QString outFileName, fileExtension = fileInfo.suffix(); + + if (fileExtension == "asc" || fileExtension == "gpg") { + int pos = mPath.lastIndexOf(QChar('.')); + outFileName = mPath.left(pos); + } else { + outFileName = mPath + ".out"; + } + + QFile outfile(outFileName); + + if (!outfile.open(QFile::WriteOnly)) + throw std::runtime_error("cannot open file"); + + QDataStream out(&outfile); + out.writeRawData(outBuffer.data(), outBuffer.length()); + outfile.close(); + + return error; +} diff --git a/src/gpg/result_analyse/VerifyResultAnalyse.cpp b/src/gpg/result_analyse/VerifyResultAnalyse.cpp index 79442c9a..59c7e3ef 100644 --- a/src/gpg/result_analyse/VerifyResultAnalyse.cpp +++ b/src/gpg/result_analyse/VerifyResultAnalyse.cpp @@ -17,7 +17,7 @@ VerifyResultAnalyse::VerifyResultAnalyse(GpgME::GpgContext *ctx, gpgme_error_t e if (sign == nullptr) { stream << "> Not Signature Found" << Qt::endl; - setStatus(-1); + setStatus(0); return; } diff --git a/src/ui/SettingsDialog.cpp b/src/ui/SettingsDialog.cpp index 25413a75..74c507e4 100755 --- a/src/ui/SettingsDialog.cpp +++ b/src/ui/SettingsDialog.cpp @@ -25,199 +25,201 @@ #include "ui/SettingsDialog.h" SettingsDialog::SettingsDialog(GpgME::GpgContext *ctx, QWidget *parent) - : QDialog(parent) { - mCtx = ctx; - tabWidget = new QTabWidget; - generalTab = new GeneralTab(mCtx); - appearanceTab = new AppearanceTab; - mimeTab = new MimeTab; - keyserverTab = new KeyserverTab; - advancedTab = new AdvancedTab; - gpgPathsTab = new GpgPathsTab; - - tabWidget->addTab(generalTab, tr("General")); - tabWidget->addTab(appearanceTab, tr("Appearance")); - tabWidget->addTab(mimeTab, tr("PGP/Mime")); - tabWidget->addTab(keyserverTab, tr("Key Server")); - // tabWidget->addTab(gpgPathsTab, tr("Gpg paths")); - tabWidget->addTab(advancedTab, tr("Advanced")); - - buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok - | QDialogButtonBox::Cancel); - - connect(buttonBox, SIGNAL(accepted()), this, SLOT(slotAccept())); - connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject())); - - auto *mainLayout = new QVBoxLayout; - mainLayout->addWidget(tabWidget); - mainLayout->addWidget(buttonBox); - setLayout(mainLayout); - - setWindowTitle(tr("Settings")); - - // slots for handling the restartneeded member - this->slotSetRestartNeeded(false); - connect(generalTab, SIGNAL(signalRestartNeeded(bool)), this, SLOT(slotSetRestartNeeded(bool))); - connect(appearanceTab, SIGNAL(signalRestartNeeded(bool)), this, SLOT(slotSetRestartNeeded(bool))); - connect(mimeTab, SIGNAL(signalRestartNeeded(bool)), this, SLOT(slotSetRestartNeeded(bool))); - connect(keyserverTab, SIGNAL(signalRestartNeeded(bool)), this, SLOT(slotSetRestartNeeded(bool))); - connect(advancedTab, SIGNAL(signalRestartNeeded(bool)), this, SLOT(slotSetRestartNeeded(bool))); - - connect(this, SIGNAL(signalRestartNeeded(bool)), parent, SLOT(slotSetRestartNeeded(bool))); - - this->show(); + : QDialog(parent) { + mCtx = ctx; + tabWidget = new QTabWidget; + generalTab = new GeneralTab(mCtx); + appearanceTab = new AppearanceTab; + mimeTab = new MimeTab; + keyserverTab = new KeyserverTab; + advancedTab = new AdvancedTab; + gpgPathsTab = new GpgPathsTab; + + tabWidget->addTab(generalTab, tr("General")); + tabWidget->addTab(appearanceTab, tr("Appearance")); + tabWidget->addTab(mimeTab, tr("PGP/Mime")); + tabWidget->addTab(keyserverTab, tr("Key Server")); + // tabWidget->addTab(gpgPathsTab, tr("Gpg paths")); + tabWidget->addTab(advancedTab, tr("Advanced")); + + buttonBox = + new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); + + connect(buttonBox, SIGNAL(accepted()), this, SLOT(slotAccept())); + connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject())); + + auto *mainLayout = new QVBoxLayout; + mainLayout->addWidget(tabWidget); + mainLayout->addWidget(buttonBox); + setLayout(mainLayout); + + setWindowTitle(tr("Settings")); + + // slots for handling the restartneeded member + this->slotSetRestartNeeded(false); + connect(generalTab, SIGNAL(signalRestartNeeded(bool)), this, + SLOT(slotSetRestartNeeded(bool))); + connect(appearanceTab, SIGNAL(signalRestartNeeded(bool)), this, + SLOT(slotSetRestartNeeded(bool))); + connect(mimeTab, SIGNAL(signalRestartNeeded(bool)), this, + SLOT(slotSetRestartNeeded(bool))); + connect(keyserverTab, SIGNAL(signalRestartNeeded(bool)), this, + SLOT(slotSetRestartNeeded(bool))); + connect(advancedTab, SIGNAL(signalRestartNeeded(bool)), this, + SLOT(slotSetRestartNeeded(bool))); + + connect(this, SIGNAL(signalRestartNeeded(bool)), parent, + SLOT(slotSetRestartNeeded(bool))); + + this->show(); } -bool SettingsDialog::getRestartNeeded() const { - return this->restartNeeded; -} +bool SettingsDialog::getRestartNeeded() const { return this->restartNeeded; } void SettingsDialog::slotSetRestartNeeded(bool needed) { - this->restartNeeded = needed; + this->restartNeeded = needed; } void SettingsDialog::slotAccept() { - generalTab->applySettings(); - mimeTab->applySettings(); - appearanceTab->applySettings(); - keyserverTab->applySettings(); - advancedTab->applySettings(); - gpgPathsTab->applySettings(); - if (getRestartNeeded()) { - emit signalRestartNeeded(true); - } - close(); + generalTab->applySettings(); + mimeTab->applySettings(); + appearanceTab->applySettings(); + keyserverTab->applySettings(); + advancedTab->applySettings(); + gpgPathsTab->applySettings(); + if (getRestartNeeded()) { + emit signalRestartNeeded(true); + } + close(); } // http://www.informit.com/articles/article.aspx?p=1405555&seqNum=3 // http://developer.qt.nokia.com/wiki/How_to_create_a_multi_language_application QHash<QString, QString> SettingsDialog::listLanguages() { - QHash<QString, QString> languages; + QHash<QString, QString> languages; - languages.insert("", tr("System Default")); + languages.insert("", tr("System Default")); - QString appPath = qApp->applicationDirPath(); - QDir qmDir = QDir(RESOURCE_DIR(appPath) + "/ts/"); - QStringList fileNames = - qmDir.entryList(QStringList("gpgfrontend_*.qm")); + QString appPath = qApp->applicationDirPath(); + QDir qmDir = QDir(RESOURCE_DIR(appPath) + "/ts/"); + QStringList fileNames = qmDir.entryList(QStringList("gpgfrontend_*.qm")); - for (int i = 0; i < fileNames.size(); ++i) { - QString locale = fileNames[i]; - locale.truncate(locale.lastIndexOf('.')); - locale.remove(0, locale.indexOf('_') + 1); + for (int i = 0; i < fileNames.size(); ++i) { + QString locale = fileNames[i]; + locale.truncate(locale.lastIndexOf('.')); + locale.remove(0, locale.indexOf('_') + 1); - // this works in qt 4.8 - QLocale qloc(locale); + // this works in qt 4.8 + QLocale qloc(locale); #if QT_VERSION < 0x040800 - QString language = QLocale::languageToString(qloc.language()) +" (" + locale + ")"; //+ " (" + QLocale::languageToString(qloc.language()) + ")"; + QString language = + QLocale::languageToString(qloc.language()) + " (" + locale + + ")"; //+ " (" + QLocale::languageToString(qloc.language()) + ")"; #else - QString language = qloc.nativeLanguageName() + " (" + locale + - ")"; + QString language = qloc.nativeLanguageName() + " (" + locale + ")"; #endif - languages.insert(locale, language); - } - return languages; + languages.insert(locale, language); + } + return languages; } - GeneralTab::GeneralTab(GpgME::GpgContext *ctx, QWidget *parent) - : QWidget(parent), appPath(qApp->applicationDirPath()), - settings(RESOURCE_DIR(appPath) + "/conf/gpgfrontend.ini", QSettings::IniFormat) { - mCtx = ctx; - - /***************************************** - * remember Password-Box - *****************************************/ - auto *rememberPasswordBox = new QGroupBox(tr("Remember Password")); - auto *rememberPasswordBoxLayout = new QHBoxLayout(); - rememberPasswordCheckBox = new QCheckBox(tr("Remember password until closing gpg4usb"), this); - rememberPasswordBoxLayout->addWidget(rememberPasswordCheckBox); - rememberPasswordBox->setLayout(rememberPasswordBoxLayout); - - /***************************************** - * Save-Checked-Keys-Box - *****************************************/ - auto *saveCheckedKeysBox = new QGroupBox(tr("Save Checked Keys")); - auto *saveCheckedKeysBoxLayout = new QHBoxLayout(); - saveCheckedKeysCheckBox = new QCheckBox(tr("Save checked private keys on exit and restore them on next start."), - this); - saveCheckedKeysBoxLayout->addWidget(saveCheckedKeysCheckBox); - saveCheckedKeysBox->setLayout(saveCheckedKeysBoxLayout); - - /***************************************** - * Key-Impport-Confirmation Box - *****************************************/ - auto *importConfirmationBox = new QGroupBox(tr("Confirm drag'n'drop key import")); - auto *importConfirmationBoxLayout = new QHBoxLayout(); - importConfirmationCheckBox = new QCheckBox(tr("Import files dropped on the keylist without confirmation."), this); - importConfirmationBoxLayout->addWidget(importConfirmationCheckBox); - importConfirmationBox->setLayout(importConfirmationBoxLayout); - - /***************************************** - * Language Select Box - *****************************************/ - auto *langBox = new QGroupBox(tr("Language")); - auto *langBoxLayout = new QVBoxLayout(); - langSelectBox = new QComboBox; - lang = SettingsDialog::listLanguages(); - - foreach(QString l, lang) { - langSelectBox->addItem(l); - } - - langBoxLayout->addWidget(langSelectBox); - langBoxLayout->addWidget( - new QLabel(tr("<b>NOTE: </b> GpgFrontend will restart automatically if you change the language!"))); - langBox->setLayout(langBoxLayout); - connect(langSelectBox, SIGNAL(currentIndexChanged(int)), this, SLOT(slotLanguageChanged())); - - /***************************************** - * Own Key Select Box - *****************************************/ - auto *ownKeyBox = new QGroupBox(tr("Own key")); - auto *ownKeyBoxLayout = new QVBoxLayout(); - ownKeySelectBox = new QComboBox; - - ownKeyBox->setLayout(ownKeyBoxLayout); - mKeyList = new KeyList(mCtx); - - // Fill the keyid hashmap - keyIds.insert("", tr("<none>")); - - foreach (QString keyid, *mKeyList->getAllPrivateKeys()) { - - auto &key = mCtx->getKeyById(keyid); - - QString newKey = " (" + keyid + ")"; - if (!QString(key.email).isEmpty()) { - newKey.prepend(" <" + key.email + ">"); - } - if (!QString(key.name).isEmpty()) { - newKey.prepend(" " + key.name); - } - keyIds.insert(key.id, newKey); - } - foreach(QString k, keyIds) { - ownKeySelectBox->addItem(k); - } - connect(ownKeySelectBox, SIGNAL(currentIndexChanged(int)), this, SLOT(slotOwnKeyIdChanged())); - - ownKeyBoxLayout->addWidget(new QLabel(tr("Encrypt all messages additionally to the chosen key:"))); - ownKeyBoxLayout->addWidget(ownKeySelectBox); - - /***************************************** - * Mainlayout - *****************************************/ - auto *mainLayout = new QVBoxLayout; - mainLayout->addWidget(rememberPasswordBox); - mainLayout->addWidget(saveCheckedKeysBox); - mainLayout->addWidget(importConfirmationBox); - mainLayout->addWidget(langBox); - mainLayout->addWidget(ownKeyBox); - - setSettings(); - mainLayout->addStretch(1); - setLayout(mainLayout); + : QWidget(parent), appPath(qApp->applicationDirPath()), + settings(RESOURCE_DIR(appPath) + "/conf/gpgfrontend.ini", + QSettings::IniFormat) { + mCtx = ctx; + + /***************************************** + * remember Password-Box + *****************************************/ + auto *rememberPasswordBox = new QGroupBox(tr("Remember Password")); + auto *rememberPasswordBoxLayout = new QHBoxLayout(); + rememberPasswordCheckBox = + new QCheckBox(tr("Remember password until closing gpg4usb"), this); + rememberPasswordBoxLayout->addWidget(rememberPasswordCheckBox); + rememberPasswordBox->setLayout(rememberPasswordBoxLayout); + + /***************************************** + * Save-Checked-Keys-Box + *****************************************/ + auto *saveCheckedKeysBox = new QGroupBox(tr("Save Checked Keys")); + auto *saveCheckedKeysBoxLayout = new QHBoxLayout(); + saveCheckedKeysCheckBox = new QCheckBox( + tr("Save checked private keys on exit and restore them on next start."), + this); + saveCheckedKeysBoxLayout->addWidget(saveCheckedKeysCheckBox); + saveCheckedKeysBox->setLayout(saveCheckedKeysBoxLayout); + + /***************************************** + * Key-Impport-Confirmation Box + *****************************************/ + auto *importConfirmationBox = + new QGroupBox(tr("Confirm drag'n'drop key import")); + auto *importConfirmationBoxLayout = new QHBoxLayout(); + importConfirmationCheckBox = new QCheckBox( + tr("Import files dropped on the keylist without confirmation."), this); + importConfirmationBoxLayout->addWidget(importConfirmationCheckBox); + importConfirmationBox->setLayout(importConfirmationBoxLayout); + + /***************************************** + * Language Select Box + *****************************************/ + auto *langBox = new QGroupBox(tr("Language")); + auto *langBoxLayout = new QVBoxLayout(); + langSelectBox = new QComboBox; + lang = SettingsDialog::listLanguages(); + + foreach (QString l, lang) { langSelectBox->addItem(l); } + + langBoxLayout->addWidget(langSelectBox); + langBoxLayout->addWidget( + new QLabel(tr("<b>NOTE: </b> GpgFrontend will restart automatically if " + "you change the language!"))); + langBox->setLayout(langBoxLayout); + connect(langSelectBox, SIGNAL(currentIndexChanged(int)), this, + SLOT(slotLanguageChanged())); + + /***************************************** + * Own Key Select Box + *****************************************/ + auto *ownKeyBox = new QGroupBox(tr("Own key")); + auto *ownKeyBoxLayout = new QVBoxLayout(); + ownKeySelectBox = new QComboBox; + + ownKeyBox->setLayout(ownKeyBoxLayout); + mKeyList = new KeyList(mCtx); + + // Fill the keyid hashmap + keyIds.insert("", tr("<none>")); + + for (const auto &keyid : *mKeyList->getAllPrivateKeys()) { + auto &key = mCtx->getKeyById(keyid); + keyIds.insert(key.id, key.uids.first().uid); + } + for (const auto &k : keyIds.keys()) { + ownKeySelectBox->addItem(keyIds.find(k).value()); + keyIdsList.append(k); + } + connect(ownKeySelectBox, SIGNAL(currentIndexChanged(int)), this, + SLOT(slotOwnKeyIdChanged())); + + ownKeyBoxLayout->addWidget(new QLabel( + tr("Key pair for synchronization and identity authentication"))); + ownKeyBoxLayout->addWidget(ownKeySelectBox); + + /***************************************** + * Mainlayout + *****************************************/ + auto *mainLayout = new QVBoxLayout; + mainLayout->addWidget(rememberPasswordBox); + mainLayout->addWidget(saveCheckedKeysBox); + mainLayout->addWidget(importConfirmationBox); + mainLayout->addWidget(langBox); + mainLayout->addWidget(ownKeyBox); + + setSettings(); + mainLayout->addStretch(1); + setLayout(mainLayout); } /********************************** @@ -226,151 +228,103 @@ GeneralTab::GeneralTab(GpgME::GpgContext *ctx, QWidget *parent) * appropriately **********************************/ void GeneralTab::setSettings() { - // Keysaving - if (settings.value("keys/keySave").toBool()) { - saveCheckedKeysCheckBox->setCheckState(Qt::Checked); - } - - // Remember Password - if (settings.value("general/rememberPassword").toBool()) { - rememberPasswordCheckBox->setCheckState(Qt::Checked); - } - - // Language setting - QString langKey = settings.value("int/lang").toString(); - QString langValue = lang.value(langKey); - if (langKey != "") { - langSelectBox->setCurrentIndex(langSelectBox->findText(langValue)); - } - - // Get own key information from keydb/gpg.conf (if contained) - QFile gpgConfFile(qApp->applicationDirPath() + "/keydb/gpg.conf"); - gpgConfFile.open(QFile::ReadOnly); - while (!gpgConfFile.atEnd()) { - QString line = gpgConfFile.readLine(); - if (line.startsWith("recipient")) { - QStringList args; - - // get key id from gpg.conf - args = line.split(" "); - ownKeyId = args.at(1); - // remove linebreak at end of id - ownKeyId.remove("\n"); - ownKeyId.remove("\r"); - } - } - gpgConfFile.close(); - if (ownKeyId.isEmpty()) { - ownKeySelectBox->setCurrentIndex(0); - } else { - ownKeySelectBox->setCurrentIndex(ownKeySelectBox->findText(ownKeyId, Qt::MatchContains)); - } - - if (settings.value("general/confirmImportKeys", Qt::Checked).toBool()) { - importConfirmationCheckBox->setCheckState(Qt::Checked); - } + // Keysaving + if (settings.value("keys/saveKeyChecked").toBool()) { + saveCheckedKeysCheckBox->setCheckState(Qt::Checked); + } + + // Language setting + QString langKey = settings.value("int/lang").toString(); + QString langValue = lang.value(langKey); + if (langKey != "") { + langSelectBox->setCurrentIndex(langSelectBox->findText(langValue)); + } + + QString ownKeyId = settings.value("general/ownKeyId").toString(); + qDebug() << "OwnKeyId" << ownKeyId; + if (ownKeyId.isEmpty()) { + ownKeySelectBox->setCurrentText("<none>"); + } else { + const auto text = keyIds.find(ownKeyId).value(); + qDebug() << "OwnKey" << ownKeyId << text; + ownKeySelectBox->setCurrentText(text); + } + + // Get own key information from keydb/gpg.conf (if contained) + if (settings.value("general/confirmImportKeys", Qt::Checked).toBool()) { + importConfirmationCheckBox->setCheckState(Qt::Checked); + } } /*********************************** - * get the values of the buttons and - * write them to settings-file - *************************************/ + * get the values of the buttons and + * write them to settings-file + *************************************/ void GeneralTab::applySettings() { - settings.setValue("keys/keySave", saveCheckedKeysCheckBox->isChecked()); - // TODO: clear passwordCache instantly on unset rememberPassword - settings.setValue("general/rememberPassword", rememberPasswordCheckBox->isChecked()); - settings.setValue("int/lang", lang.key(langSelectBox->currentText())); - settings.setValue("general/confirmImportKeys", importConfirmationCheckBox->isChecked()); + settings.setValue("keys/saveKeyChecked", + saveCheckedKeysCheckBox->isChecked()); + // TODO: clear passwordCache instantly on unset rememberPassword + settings.setValue("general/rememberPassword", + rememberPasswordCheckBox->isChecked()); + settings.setValue("int/lang", lang.key(langSelectBox->currentText())); + settings.setValue("general/ownKeyId", + keyIdsList[ownKeySelectBox->currentIndex()]); + settings.setValue("general/confirmImportKeys", + importConfirmationCheckBox->isChecked()); } -void GeneralTab::slotLanguageChanged() { - emit signalRestartNeeded(true); -} +void GeneralTab::slotLanguageChanged() { emit signalRestartNeeded(true); } void GeneralTab::slotOwnKeyIdChanged() { - // Set ownKeyId to currently selected - - QHashIterator<QString, QString> i(keyIds); - while (i.hasNext()) { - i.next(); - if (ownKeySelectBox->currentText() == i.value()) { - ownKeyId = i.key(); - } - } - - /***************************************** - * Write keyid of own key to gpg.conf - *****************************************/ - QFile gpgConfFile(qApp->applicationDirPath() + "/keydb/gpg.conf"); - gpgConfFile.open(QFile::ReadWrite); - QFile gpgConfTempFile(qApp->applicationDirPath() + "/keydb/gpg.conf.swp"); - gpgConfTempFile.open(QFile::WriteOnly); - - // remove line with the hidden-encrypt-to - while (!gpgConfFile.atEnd()) { - QByteArray line = gpgConfFile.readLine(); - if (!line.startsWith("recipient")) { - gpgConfTempFile.write(line); - } - } - - // add line with hidden-encrypt-to, if a key is chosen - if (!ownKeyId.isEmpty()) { - QByteArray string("recipient "); - string.append(ownKeyId.toUtf8()); - string.append("\n"); - gpgConfTempFile.write(string); - } - - gpgConfFile.close(); - gpgConfTempFile.close(); - - // move the temporary gpg.conffile to the actual one - gpgConfFile.remove(); - QFile::copy(gpgConfTempFile.fileName(), gpgConfFile.fileName()); - gpgConfTempFile.remove(); + // Set ownKeyId to currently selected } MimeTab::MimeTab(QWidget *parent) - : QWidget(parent), appPath(qApp->applicationDirPath()), - settings(RESOURCE_DIR(appPath) + "/conf/gpgfrontend.ini", QSettings::IniFormat) { - /***************************************** - * MIME-Parsing-Box - *****************************************/ - auto *mimeQPBox = new QGroupBox(tr("Decode quoted printable")); - auto *mimeQPBoxLayout = new QVBoxLayout(); - mimeQPCheckBox = new QCheckBox(tr("Try to recognize quoted printable."), this); - mimeQPBoxLayout->addWidget(mimeQPCheckBox); - mimeQPBox->setLayout(mimeQPBoxLayout); - - auto *mimeParseBox = new QGroupBox(tr("Parse PGP/MIME (Experimental)")); - auto *mimeParseBoxLayout = new QVBoxLayout(); - mimeParseCheckBox = new QCheckBox(tr("Try to split attachments from PGP-MIME ecrypted messages."), this); - mimeParseBoxLayout->addWidget(mimeParseCheckBox); - mimeParseBox->setLayout(mimeParseBoxLayout); - - auto *mimeOpenAttachmentBox = new QGroupBox(tr("Open with external application (Experimental)")); - auto *mimeOpenAttachmentBoxLayout = new QVBoxLayout(); - auto *mimeOpenAttachmentText = new QLabel(tr("Open attachments with default application for the filetype.<br> " - "There are at least two possible problems with this behaviour:" - "<ol><li>File needs to be saved unencrypted to attachments folder.<br> " - "Its your job to clean this folder.</li>" - "<li>The external application may have its own temp files.</li></ol>")); - - //mimeOpenAttachmentBox->setDisabled(true); - mimeOpenAttachmentCheckBox = new QCheckBox(tr("Enable opening with external applications."), this); - - mimeOpenAttachmentBoxLayout->addWidget(mimeOpenAttachmentText); - mimeOpenAttachmentBoxLayout->addWidget(mimeOpenAttachmentCheckBox); - mimeOpenAttachmentBox->setLayout(mimeOpenAttachmentBoxLayout); - - auto *mainLayout = new QVBoxLayout; - mainLayout->addWidget(mimeParseBox); - mainLayout->addWidget(mimeOpenAttachmentBox); - mainLayout->addWidget(mimeQPBox); - mainLayout->addStretch(1); - setLayout(mainLayout); - setSettings(); + : QWidget(parent), appPath(qApp->applicationDirPath()), + settings(RESOURCE_DIR(appPath) + "/conf/gpgfrontend.ini", + QSettings::IniFormat) { + /***************************************** + * MIME-Parsing-Box + *****************************************/ + auto *mimeQPBox = new QGroupBox(tr("Decode quoted printable")); + auto *mimeQPBoxLayout = new QVBoxLayout(); + mimeQPCheckBox = + new QCheckBox(tr("Try to recognize quoted printable."), this); + mimeQPBoxLayout->addWidget(mimeQPCheckBox); + mimeQPBox->setLayout(mimeQPBoxLayout); + + auto *mimeParseBox = new QGroupBox(tr("Parse PGP/MIME (Experimental)")); + auto *mimeParseBoxLayout = new QVBoxLayout(); + mimeParseCheckBox = new QCheckBox( + tr("Try to split attachments from PGP-MIME ecrypted messages."), this); + mimeParseBoxLayout->addWidget(mimeParseCheckBox); + mimeParseBox->setLayout(mimeParseBoxLayout); + + auto *mimeOpenAttachmentBox = + new QGroupBox(tr("Open with external application (Experimental)")); + auto *mimeOpenAttachmentBoxLayout = new QVBoxLayout(); + auto *mimeOpenAttachmentText = new QLabel(tr( + "Open attachments with default application for the filetype.<br> " + "There are at least two possible problems with this behaviour:" + "<ol><li>File needs to be saved unencrypted to attachments folder.<br> " + "Its your job to clean this folder.</li>" + "<li>The external application may have its own temp files.</li></ol>")); + + // mimeOpenAttachmentBox->setDisabled(true); + mimeOpenAttachmentCheckBox = + new QCheckBox(tr("Enable opening with external applications."), this); + + mimeOpenAttachmentBoxLayout->addWidget(mimeOpenAttachmentText); + mimeOpenAttachmentBoxLayout->addWidget(mimeOpenAttachmentCheckBox); + mimeOpenAttachmentBox->setLayout(mimeOpenAttachmentBoxLayout); + + auto *mainLayout = new QVBoxLayout; + mainLayout->addWidget(mimeParseBox); + mainLayout->addWidget(mimeOpenAttachmentBox); + mainLayout->addWidget(mimeQPBox); + mainLayout->addStretch(1); + setLayout(mainLayout); + setSettings(); } /********************************** @@ -380,87 +334,91 @@ MimeTab::MimeTab(QWidget *parent) **********************************/ void MimeTab::setSettings() { - // MIME-Parsing - if (settings.value("mime/parsemime").toBool()) mimeParseCheckBox->setCheckState(Qt::Checked); + // MIME-Parsing + if (settings.value("mime/parsemime").toBool()) + mimeParseCheckBox->setCheckState(Qt::Checked); - // Qouted Printable - if (settings.value("mime/parseQP", true).toBool()) mimeQPCheckBox->setCheckState(Qt::Checked); + // Qouted Printable + if (settings.value("mime/parseQP", true).toBool()) + mimeQPCheckBox->setCheckState(Qt::Checked); - // Open Attachments with external app - if (settings.value("mime/openAttachment").toBool()) mimeOpenAttachmentCheckBox->setCheckState(Qt::Checked); + // Open Attachments with external app + if (settings.value("mime/openAttachment").toBool()) + mimeOpenAttachmentCheckBox->setCheckState(Qt::Checked); } - /*********************************** - * get the values of the buttons and - * write them to settings-file - *************************************/ + * get the values of the buttons and + * write them to settings-file + *************************************/ void MimeTab::applySettings() { - settings.setValue("mime/parsemime", mimeParseCheckBox->isChecked()); - settings.setValue("mime/parseQP", mimeQPCheckBox->isChecked()); - settings.setValue("mime/openAttachment", mimeOpenAttachmentCheckBox->isChecked()); - + settings.setValue("mime/parsemime", mimeParseCheckBox->isChecked()); + settings.setValue("mime/parseQP", mimeQPCheckBox->isChecked()); + settings.setValue("mime/openAttachment", + mimeOpenAttachmentCheckBox->isChecked()); } AppearanceTab::AppearanceTab(QWidget *parent) - : QWidget(parent), appPath(qApp->applicationDirPath()), - settings(RESOURCE_DIR(appPath) + "/conf/gpgfrontend.ini", QSettings::IniFormat) { - /***************************************** - * Icon-Size-Box - *****************************************/ - auto *iconSizeBox = new QGroupBox(tr("Iconsize")); - iconSizeGroup = new QButtonGroup(); - iconSizeSmall = new QRadioButton(tr("small")); - iconSizeMedium = new QRadioButton(tr("medium")); - iconSizeLarge = new QRadioButton(tr("large")); - - iconSizeGroup->addButton(iconSizeSmall, 1); - iconSizeGroup->addButton(iconSizeMedium, 2); - iconSizeGroup->addButton(iconSizeLarge, 3); - - auto *iconSizeBoxLayout = new QHBoxLayout(); - iconSizeBoxLayout->addWidget(iconSizeSmall); - iconSizeBoxLayout->addWidget(iconSizeMedium); - iconSizeBoxLayout->addWidget(iconSizeLarge); - - iconSizeBox->setLayout(iconSizeBoxLayout); - - /***************************************** - * Icon-Style-Box - *****************************************/ - auto *iconStyleBox = new QGroupBox(tr("Iconstyle")); - iconStyleGroup = new QButtonGroup(); - iconTextButton = new QRadioButton(tr("just text")); - iconIconsButton = new QRadioButton(tr("just icons")); - iconAllButton = new QRadioButton(tr("text and icons")); - - iconStyleGroup->addButton(iconTextButton, 1); - iconStyleGroup->addButton(iconIconsButton, 2); - iconStyleGroup->addButton(iconAllButton, 3); - - auto *iconStyleBoxLayout = new QHBoxLayout(); - iconStyleBoxLayout->addWidget(iconTextButton); - iconStyleBoxLayout->addWidget(iconIconsButton); - iconStyleBoxLayout->addWidget(iconAllButton); - - iconStyleBox->setLayout(iconStyleBoxLayout); - - /***************************************** - * Window-Size-Box - *****************************************/ - auto *windowSizeBox = new QGroupBox(tr("Windowstate")); - auto *windowSizeBoxLayout = new QHBoxLayout(); - windowSizeCheckBox = new QCheckBox(tr("Save window size and position on exit."), this); - windowSizeBoxLayout->addWidget(windowSizeCheckBox); - windowSizeBox->setLayout(windowSizeBoxLayout); - - auto *mainLayout = new QVBoxLayout; - mainLayout->addWidget(iconSizeBox); - mainLayout->addWidget(iconStyleBox); - mainLayout->addWidget(windowSizeBox); - mainLayout->addStretch(1); - setSettings(); - setLayout(mainLayout); + : QWidget(parent), appPath(qApp->applicationDirPath()), + settings(RESOURCE_DIR(appPath) + "/conf/gpgfrontend.ini", + QSettings::IniFormat) { + /***************************************** + * Icon-Size-Box + *****************************************/ + auto *iconSizeBox = new QGroupBox(tr("Iconsize")); + iconSizeGroup = new QButtonGroup(); + iconSizeSmall = new QRadioButton(tr("small")); + iconSizeMedium = new QRadioButton(tr("medium")); + iconSizeLarge = new QRadioButton(tr("large")); + + iconSizeGroup->addButton(iconSizeSmall, 1); + iconSizeGroup->addButton(iconSizeMedium, 2); + iconSizeGroup->addButton(iconSizeLarge, 3); + + auto *iconSizeBoxLayout = new QHBoxLayout(); + iconSizeBoxLayout->addWidget(iconSizeSmall); + iconSizeBoxLayout->addWidget(iconSizeMedium); + iconSizeBoxLayout->addWidget(iconSizeLarge); + + iconSizeBox->setLayout(iconSizeBoxLayout); + + /***************************************** + * Icon-Style-Box + *****************************************/ + auto *iconStyleBox = new QGroupBox(tr("Iconstyle")); + iconStyleGroup = new QButtonGroup(); + iconTextButton = new QRadioButton(tr("just text")); + iconIconsButton = new QRadioButton(tr("just icons")); + iconAllButton = new QRadioButton(tr("text and icons")); + + iconStyleGroup->addButton(iconTextButton, 1); + iconStyleGroup->addButton(iconIconsButton, 2); + iconStyleGroup->addButton(iconAllButton, 3); + + auto *iconStyleBoxLayout = new QHBoxLayout(); + iconStyleBoxLayout->addWidget(iconTextButton); + iconStyleBoxLayout->addWidget(iconIconsButton); + iconStyleBoxLayout->addWidget(iconAllButton); + + iconStyleBox->setLayout(iconStyleBoxLayout); + + /***************************************** + * Window-Size-Box + *****************************************/ + auto *windowSizeBox = new QGroupBox(tr("Windowstate")); + auto *windowSizeBoxLayout = new QHBoxLayout(); + windowSizeCheckBox = + new QCheckBox(tr("Save window size and position on exit."), this); + windowSizeBoxLayout->addWidget(windowSizeCheckBox); + windowSizeBox->setLayout(windowSizeBoxLayout); + + auto *mainLayout = new QVBoxLayout; + mainLayout->addWidget(iconSizeBox); + mainLayout->addWidget(iconStyleBox); + mainLayout->addWidget(windowSizeBox); + mainLayout->addStretch(1); + setSettings(); + setLayout(mainLayout); } /********************************** @@ -470,244 +428,251 @@ AppearanceTab::AppearanceTab(QWidget *parent) **********************************/ void AppearanceTab::setSettings() { - //Iconsize - QSize iconSize = settings.value("toolbar/iconsize", QSize(24, 24)).toSize(); - switch (iconSize.height()) { - case 12: - iconSizeSmall->setChecked(true); - break; - case 24: - iconSizeMedium->setChecked(true); - break; - case 32: - iconSizeLarge->setChecked(true); - break; - } - // Iconstyle - Qt::ToolButtonStyle iconStyle = static_cast<Qt::ToolButtonStyle>(settings.value("toolbar/iconstyle", - Qt::ToolButtonTextUnderIcon).toUInt()); - switch (iconStyle) { - case Qt::ToolButtonTextOnly: - iconTextButton->setChecked(true); - break; - case Qt::ToolButtonIconOnly: - iconIconsButton->setChecked(true); - break; - case Qt::ToolButtonTextUnderIcon: - iconAllButton->setChecked(true); - break; - default: - break; - } - - // Window Save and Position - if (settings.value("window/windowSave").toBool()) windowSizeCheckBox->setCheckState(Qt::Checked); - + // Iconsize + QSize iconSize = settings.value("toolbar/iconsize", QSize(24, 24)).toSize(); + switch (iconSize.height()) { + case 12: + iconSizeSmall->setChecked(true); + break; + case 24: + iconSizeMedium->setChecked(true); + break; + case 32: + iconSizeLarge->setChecked(true); + break; + } + // Iconstyle + Qt::ToolButtonStyle iconStyle = static_cast<Qt::ToolButtonStyle>( + settings.value("toolbar/iconstyle", Qt::ToolButtonTextUnderIcon) + .toUInt()); + switch (iconStyle) { + case Qt::ToolButtonTextOnly: + iconTextButton->setChecked(true); + break; + case Qt::ToolButtonIconOnly: + iconIconsButton->setChecked(true); + break; + case Qt::ToolButtonTextUnderIcon: + iconAllButton->setChecked(true); + break; + default: + break; + } + + // Window Save and Position + if (settings.value("window/windowSave").toBool()) + windowSizeCheckBox->setCheckState(Qt::Checked); } /*********************************** - * get the values of the buttons and - * write them to settings-file - *************************************/ + * get the values of the buttons and + * write them to settings-file + *************************************/ void AppearanceTab::applySettings() { - switch (iconSizeGroup->checkedId()) { - case 1: - settings.setValue("toolbar/iconsize", QSize(12, 12)); - break; - case 2: - settings.setValue("toolbar/iconsize", QSize(24, 24)); - break; - case 3: - settings.setValue("toolbar/iconsize", QSize(32, 32)); - break; - } - - switch (iconStyleGroup->checkedId()) { - case 1: - settings.setValue("toolbar/iconstyle", Qt::ToolButtonTextOnly); - break; - case 2: - settings.setValue("toolbar/iconstyle", Qt::ToolButtonIconOnly); - break; - case 3: - settings.setValue("toolbar/iconstyle", Qt::ToolButtonTextUnderIcon); - break; - } - - settings.setValue("window/windowSave", windowSizeCheckBox->isChecked()); + switch (iconSizeGroup->checkedId()) { + case 1: + settings.setValue("toolbar/iconsize", QSize(12, 12)); + break; + case 2: + settings.setValue("toolbar/iconsize", QSize(24, 24)); + break; + case 3: + settings.setValue("toolbar/iconsize", QSize(32, 32)); + break; + } + + switch (iconStyleGroup->checkedId()) { + case 1: + settings.setValue("toolbar/iconstyle", Qt::ToolButtonTextOnly); + break; + case 2: + settings.setValue("toolbar/iconstyle", Qt::ToolButtonIconOnly); + break; + case 3: + settings.setValue("toolbar/iconstyle", Qt::ToolButtonTextUnderIcon); + break; + } + + settings.setValue("window/windowSave", windowSizeCheckBox->isChecked()); } KeyserverTab::KeyserverTab(QWidget *parent) - : QWidget(parent), appPath(qApp->applicationDirPath()), - settings(RESOURCE_DIR(appPath) + "/conf/gpgfrontend.ini", QSettings::IniFormat) { - - auto keyServerList = settings.value("keyserver/keyServerList").toStringList(); - - auto *mainLayout = new QVBoxLayout(this); - - auto *label = new QLabel(tr("Default Keyserver for import:")); - comboBox = new QComboBox; - comboBox->setEditable(false); - comboBox->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); - - for (const auto &keyServer : keyServerList) { - comboBox->addItem(keyServer); - qDebug() << "KeyserverTab Get ListItemText" << keyServer; - } - - comboBox->setCurrentText(settings.value("keyserver/defaultKeyServer").toString()); - - auto *addKeyServerBox = new QWidget(this); - auto *addKeyServerLayout = new QHBoxLayout(addKeyServerBox); - auto *http = new QLabel("URL: "); - newKeyServerEdit = new QLineEdit(this); - auto *newKeyServerButton = new QPushButton(tr("Add"), this); - connect(newKeyServerButton, SIGNAL(clicked()), this, SLOT(addKeyServer())); - addKeyServerLayout->addWidget(http); - addKeyServerLayout->addWidget(newKeyServerEdit); - addKeyServerLayout->addWidget(newKeyServerButton); - - mainLayout->addWidget(label); - mainLayout->addWidget(comboBox); - mainLayout->addWidget(addKeyServerBox); - mainLayout->addStretch(1); - - // Read keylist from ini-file and fill it into combobox - setSettings(); + : QWidget(parent), appPath(qApp->applicationDirPath()), + settings(RESOURCE_DIR(appPath) + "/conf/gpgfrontend.ini", + QSettings::IniFormat) { + + auto keyServerList = settings.value("keyserver/keyServerList").toStringList(); + + auto *mainLayout = new QVBoxLayout(this); + + auto *label = new QLabel(tr("Default Keyserver for import:")); + comboBox = new QComboBox; + comboBox->setEditable(false); + comboBox->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); + + for (const auto &keyServer : keyServerList) { + comboBox->addItem(keyServer); + qDebug() << "KeyserverTab Get ListItemText" << keyServer; + } + + comboBox->setCurrentText( + settings.value("keyserver/defaultKeyServer").toString()); + + auto *addKeyServerBox = new QWidget(this); + auto *addKeyServerLayout = new QHBoxLayout(addKeyServerBox); + auto *http = new QLabel("URL: "); + newKeyServerEdit = new QLineEdit(this); + auto *newKeyServerButton = new QPushButton(tr("Add"), this); + connect(newKeyServerButton, SIGNAL(clicked()), this, SLOT(addKeyServer())); + addKeyServerLayout->addWidget(http); + addKeyServerLayout->addWidget(newKeyServerEdit); + addKeyServerLayout->addWidget(newKeyServerButton); + + mainLayout->addWidget(label); + mainLayout->addWidget(comboBox); + mainLayout->addWidget(addKeyServerBox); + mainLayout->addStretch(1); + + // Read keylist from ini-file and fill it into combobox + setSettings(); } - /********************************** * Read the settings from config * and set the buttons and checkboxes * appropriately **********************************/ void KeyserverTab::setSettings() { - auto *keyServerList = new QStringList(); - for (int i = 0; i < comboBox->count(); i++) { - keyServerList->append(comboBox->itemText(i)); - qDebug() << "KeyserverTab ListItemText" << comboBox->itemText(i); - } - settings.setValue("keyserver/keyServerList", *keyServerList); - settings.setValue("keyserver/defaultKeyServer", comboBox->currentText()); + auto *keyServerList = new QStringList(); + for (int i = 0; i < comboBox->count(); i++) { + keyServerList->append(comboBox->itemText(i)); + qDebug() << "KeyserverTab ListItemText" << comboBox->itemText(i); + } + settings.setValue("keyserver/keyServerList", *keyServerList); + settings.setValue("keyserver/defaultKeyServer", comboBox->currentText()); } void KeyserverTab::addKeyServer() { - if (newKeyServerEdit->text().startsWith("http://") || newKeyServerEdit->text().startsWith("https://")) { - comboBox->addItem(newKeyServerEdit->text()); - } else { - comboBox->addItem("http://" + newKeyServerEdit->text()); - } - comboBox->setCurrentIndex(comboBox->count() - 1); + if (newKeyServerEdit->text().startsWith("http://") || + newKeyServerEdit->text().startsWith("https://")) { + comboBox->addItem(newKeyServerEdit->text()); + } else { + comboBox->addItem("http://" + newKeyServerEdit->text()); + } + comboBox->setCurrentIndex(comboBox->count() - 1); } /*********************************** - * get the values of the buttons and - * write them to settings-file - *************************************/ + * get the values of the buttons and + * write them to settings-file + *************************************/ void KeyserverTab::applySettings() { - settings.setValue("keyserver/defaultKeyServer", comboBox->currentText()); + settings.setValue("keyserver/defaultKeyServer", comboBox->currentText()); } AdvancedTab::AdvancedTab(QWidget *parent) - : QWidget(parent), appPath(qApp->applicationDirPath()), - settings(RESOURCE_DIR(appPath) + "/conf/gpgfrontend.ini", QSettings::IniFormat) { - /***************************************** - * Steganography Box - *****************************************/ - auto *steganoBox = new QGroupBox(tr("Show Steganography Options [Advanced]")); - auto *steganoBoxLayout = new QHBoxLayout(); - steganoCheckBox = new QCheckBox(tr("Show Steganographic Options."), this); - steganoBoxLayout->addWidget(steganoCheckBox); - steganoBox->setLayout(steganoBoxLayout); - - auto *mainLayout = new QVBoxLayout; - mainLayout->addWidget(steganoBox); - setSettings(); - mainLayout->addStretch(1); - setLayout(mainLayout); - + : QWidget(parent), appPath(qApp->applicationDirPath()), + settings(RESOURCE_DIR(appPath) + "/conf/gpgfrontend.ini", + QSettings::IniFormat) { + /***************************************** + * Steganography Box + *****************************************/ + auto *steganoBox = new QGroupBox(tr("Show Steganography Options [Advanced]")); + auto *steganoBoxLayout = new QHBoxLayout(); + steganoCheckBox = new QCheckBox(tr("Show Steganographic Options."), this); + steganoBoxLayout->addWidget(steganoCheckBox); + steganoBox->setLayout(steganoBoxLayout); + + auto *mainLayout = new QVBoxLayout; + mainLayout->addWidget(steganoBox); + setSettings(); + mainLayout->addStretch(1); + setLayout(mainLayout); } void AdvancedTab::setSettings() { - if (settings.value("advanced/steganography").toBool()) { - steganoCheckBox->setCheckState(Qt::Checked); - } + if (settings.value("advanced/steganography").toBool()) { + steganoCheckBox->setCheckState(Qt::Checked); + } } void AdvancedTab::applySettings() { - settings.setValue("advanced/steganography", steganoCheckBox->isChecked()); + settings.setValue("advanced/steganography", steganoCheckBox->isChecked()); } GpgPathsTab::GpgPathsTab(QWidget *parent) - : QWidget(parent), appPath(qApp->applicationDirPath()), - settings(RESOURCE_DIR(appPath) + "/conf/gpgfrontend.ini", QSettings::IniFormat) { - setSettings(); - - /***************************************** - * Keydb Box - *****************************************/ - auto *keydbBox = new QGroupBox(tr("Relative path to keydb")); - auto *keydbBoxLayout = new QGridLayout(); - - // Label containing the current keydbpath relative to default keydb path - keydbLabel = new QLabel(accKeydbPath, this); - - auto *keydbButton = new QPushButton("Change keydb path", this); - connect(keydbButton, SIGNAL(clicked()), this, SLOT(chooseKeydbDir())); - auto *keydbDefaultButton = new QPushButton("Set keydb to default path", this); - connect(keydbDefaultButton, SIGNAL(clicked()), this, SLOT(setKeydbPathToDefault())); - - keydbBox->setLayout(keydbBoxLayout); - keydbBoxLayout->addWidget(new QLabel(tr("Current keydb path: ")), 1, 1); - keydbBoxLayout->addWidget(keydbLabel, 1, 2); - keydbBoxLayout->addWidget(keydbButton, 1, 3); - keydbBoxLayout->addWidget(keydbDefaultButton, 2, 3); - keydbBoxLayout->addWidget( - new QLabel(tr("<b>NOTE: </b> Gpg4usb will restart automatically if you change the keydb path!")), 3, 1, 1, - 3); - - auto *mainLayout = new QVBoxLayout; - mainLayout->addWidget(keydbBox); - mainLayout->addStretch(1); - setLayout(mainLayout); + : QWidget(parent), appPath(qApp->applicationDirPath()), + settings(RESOURCE_DIR(appPath) + "/conf/gpgfrontend.ini", + QSettings::IniFormat) { + setSettings(); + + /***************************************** + * Keydb Box + *****************************************/ + auto *keydbBox = new QGroupBox(tr("Relative path to keydb")); + auto *keydbBoxLayout = new QGridLayout(); + + // Label containing the current keydbpath relative to default keydb path + keydbLabel = new QLabel(accKeydbPath, this); + + auto *keydbButton = new QPushButton("Change keydb path", this); + connect(keydbButton, SIGNAL(clicked()), this, SLOT(chooseKeydbDir())); + auto *keydbDefaultButton = new QPushButton("Set keydb to default path", this); + connect(keydbDefaultButton, SIGNAL(clicked()), this, + SLOT(setKeydbPathToDefault())); + + keydbBox->setLayout(keydbBoxLayout); + keydbBoxLayout->addWidget(new QLabel(tr("Current keydb path: ")), 1, 1); + keydbBoxLayout->addWidget(keydbLabel, 1, 2); + keydbBoxLayout->addWidget(keydbButton, 1, 3); + keydbBoxLayout->addWidget(keydbDefaultButton, 2, 3); + keydbBoxLayout->addWidget( + new QLabel(tr("<b>NOTE: </b> Gpg4usb will restart automatically if you " + "change the keydb path!")), + 3, 1, 1, 3); + + auto *mainLayout = new QVBoxLayout; + mainLayout->addWidget(keydbBox); + mainLayout->addStretch(1); + setLayout(mainLayout); } QString GpgPathsTab::getRelativePath(const QString &dir1, const QString &dir2) { - QDir dir(dir1); - QString s; - - s = dir.relativeFilePath(dir2); - qDebug() << "relative path: " << s; - if (s.isEmpty()) { - s = "."; - } - return s; + QDir dir(dir1); + QString s; + + s = dir.relativeFilePath(dir2); + qDebug() << "relative path: " << s; + if (s.isEmpty()) { + s = "."; + } + return s; } void GpgPathsTab::setKeydbPathToDefault() { - accKeydbPath = "."; - keydbLabel->setText("."); + accKeydbPath = "."; + keydbLabel->setText("."); } QString GpgPathsTab::chooseKeydbDir() { - QString dir = QFileDialog::getExistingDirectory(this, tr("Choose keydb directory"), accKeydbPath, - QFileDialog::ShowDirsOnly); + QString dir = QFileDialog::getExistingDirectory( + this, tr("Choose keydb directory"), accKeydbPath, + QFileDialog::ShowDirsOnly); - accKeydbPath = getRelativePath(defKeydbPath, dir); - keydbLabel->setText(accKeydbPath); - return ""; + accKeydbPath = getRelativePath(defKeydbPath, dir); + keydbLabel->setText(accKeydbPath); + return ""; } void GpgPathsTab::setSettings() { - defKeydbPath = qApp->applicationDirPath() + "/keydb"; + defKeydbPath = qApp->applicationDirPath() + "/keydb"; - accKeydbPath = settings.value("gpgpaths/keydbpath").toString(); - if (accKeydbPath.isEmpty()) { - accKeydbPath = "."; - } + accKeydbPath = settings.value("gpgpaths/keydbpath").toString(); + if (accKeydbPath.isEmpty()) { + accKeydbPath = "."; + } } void GpgPathsTab::applySettings() { - settings.setValue("gpgpaths/keydbpath", accKeydbPath); + settings.setValue("gpgpaths/keydbpath", accKeydbPath); } diff --git a/src/ui/VerifyDetailsDialog.cpp b/src/ui/VerifyDetailsDialog.cpp index e1403e14..641c09e9 100644 --- a/src/ui/VerifyDetailsDialog.cpp +++ b/src/ui/VerifyDetailsDialog.cpp @@ -67,9 +67,9 @@ void VerifyDetailsDialog::slotRefresh() { mVboxLayout->addWidget(new QLabel(tr("Error Validating signature"))); } else if (mInputSignature != nullptr) { mVboxLayout->addWidget(new QLabel( - tr("File was signed on %1 <br/> It Contains:<br/>").arg(QLocale::system().toString(timestamp)))); + tr("File was signed on %1 <br/> It Contains:<br/><br/>").arg(QLocale::system().toString(timestamp)))); } else { - mVboxLayout->addWidget(new QLabel(tr("Signed on %1 <br/> It Contains:<br/>").arg( + mVboxLayout->addWidget(new QLabel(tr("Signed on %1 <br/> It Contains:<br /><br/>").arg( QLocale::system().toString(timestamp)))); } // Add informationbox for every single key diff --git a/src/ui/main_window/MainWindowSlotFunction.cpp b/src/ui/main_window/MainWindowSlotFunction.cpp index 9c5d500a..f820a4e6 100644 --- a/src/ui/main_window/MainWindowSlotFunction.cpp +++ b/src/ui/main_window/MainWindowSlotFunction.cpp @@ -26,124 +26,134 @@ void MainWindow::slotEncrypt() { - if (edit->tabCount() == 0 || edit->slotCurPage() == nullptr) { - return; - } + if (edit->tabCount() == 0) return; - QVector<GpgKey> keys; - mKeyList->getCheckedKeys(keys); + if (edit->slotCurPageTextEdit() != nullptr) { - if (keys.count() == 0) { - QMessageBox::critical(nullptr, tr("No Key Selected"), tr("No Key Selected")); - return; - } + QVector<GpgKey> keys; + mKeyList->getCheckedKeys(keys); - for (const auto &key : keys) { - if (!GpgME::GpgContext::checkIfKeyCanEncr(key)) { - QMessageBox::information(nullptr, - tr("Invalid Operation"), - tr("The selected key contains a key that does not actually have a encrypt function.<br/>") - + tr("<br/>For example the Following Key: <br/>") + key.uids.first().uid); + if (keys.count() == 0) { + QMessageBox::critical(nullptr, tr("No Key Selected"), tr("No Key Selected")); return; + } + + for (const auto &key : keys) { + if (!GpgME::GpgContext::checkIfKeyCanEncr(key)) { + QMessageBox::information(nullptr, + tr("Invalid Operation"), + tr("The selected key contains a key that does not actually have a encrypt usage.<br/>") + + tr("<br/>For example the Following Key: <br/>") + key.uids.first().uid); + return; + } } - } - auto *tmp = new QByteArray(); + auto *tmp = new QByteArray(); - gpgme_encrypt_result_t result = nullptr; - auto error = mCtx->encrypt(keys, edit->curTextPage()->toPlainText().toUtf8(), tmp, &result); + gpgme_encrypt_result_t result = nullptr; + auto error = mCtx->encrypt(keys, edit->curTextPage()->toPlainText().toUtf8(), tmp, &result); - auto resultAnalyse = new EncryptResultAnalyse(error, result); - auto &reportText = resultAnalyse->getResultReport(); + auto resultAnalyse = new EncryptResultAnalyse(error, result); + auto &reportText = resultAnalyse->getResultReport(); - auto *tmp2 = new QString(*tmp); - edit->slotFillTextEditWithText(*tmp2); - infoBoard->associateTextEdit(edit->curTextPage()); + auto *tmp2 = new QString(*tmp); + edit->slotFillTextEditWithText(*tmp2); + infoBoard->associateTextEdit(edit->curTextPage()); - if (resultAnalyse->getStatus() < 0) - infoBoard->slotRefresh(reportText, INFO_ERROR_CRITICAL); - else if (resultAnalyse->getStatus() > 0) - infoBoard->slotRefresh(reportText, INFO_ERROR_OK); - else - infoBoard->slotRefresh(reportText, INFO_ERROR_WARN); + if (resultAnalyse->getStatus() < 0) + infoBoard->slotRefresh(reportText, INFO_ERROR_CRITICAL); + else if (resultAnalyse->getStatus() > 0) + infoBoard->slotRefresh(reportText, INFO_ERROR_OK); + else + infoBoard->slotRefresh(reportText, INFO_ERROR_WARN); - delete resultAnalyse; + delete resultAnalyse; + } else if (edit->slotCurPageFileTreeView() != nullptr) { + this->slotFileEncrypt(); + } } void MainWindow::slotSign() { - if (edit->tabCount() == 0 || edit->slotCurPage() == nullptr) { - return; - } - QVector<GpgKey> keys; + if (edit->tabCount() == 0) return; - mKeyList->getPrivateCheckedKeys(keys); + if (edit->slotCurPageTextEdit() != nullptr) { - if (keys.isEmpty()) { - QMessageBox::critical(nullptr, tr("No Key Selected"), tr("No Key Selected")); - return; - } + QVector<GpgKey> keys; - for (const auto &key : keys) { - if (!GpgME::GpgContext::checkIfKeyCanSign(key)) { - QMessageBox::information(nullptr, - tr("Invalid Operation"), - tr("The selected key contains a key that does not actually have a signature function.<br/>") - + tr("<br/>For example the Following Key: <br/>") + key.uids.first().uid); + mKeyList->getPrivateCheckedKeys(keys); + + if (keys.isEmpty()) { + QMessageBox::critical(this, tr("No Key Selected"), tr("No Key Selected")); return; } - } - auto *tmp = new QByteArray(); + for (const auto &key : keys) { + if (!GpgME::GpgContext::checkIfKeyCanSign(key)) { + QMessageBox::information(this, + tr("Invalid Operation"), + tr("The selected key contains a key that does not actually have a signature usage.<br/>") + + tr("<br/>For example the Following Key: <br/>") + key.uids.first().uid); + return; + } + } + + auto *tmp = new QByteArray(); - gpgme_sign_result_t result = nullptr; + gpgme_sign_result_t result = nullptr; - auto error = mCtx->sign(keys, edit->curTextPage()->toPlainText().toUtf8(), tmp, false, &result); - infoBoard->associateTextEdit(edit->curTextPage()); - edit->slotFillTextEditWithText(QString::fromUtf8(*tmp)); + auto error = mCtx->sign(keys, edit->curTextPage()->toPlainText().toUtf8(), tmp, false, &result); + infoBoard->associateTextEdit(edit->curTextPage()); + edit->slotFillTextEditWithText(QString::fromUtf8(*tmp)); - auto resultAnalyse = new SignResultAnalyse(error, result); + auto resultAnalyse = new SignResultAnalyse(error, result); - auto &reportText = resultAnalyse->getResultReport(); - if (resultAnalyse->getStatus() < 0) - infoBoard->slotRefresh(reportText, INFO_ERROR_CRITICAL); - else if (resultAnalyse->getStatus() > 0) - infoBoard->slotRefresh(reportText, INFO_ERROR_OK); - else - infoBoard->slotRefresh(reportText, INFO_ERROR_WARN); + auto &reportText = resultAnalyse->getResultReport(); + if (resultAnalyse->getStatus() < 0) + infoBoard->slotRefresh(reportText, INFO_ERROR_CRITICAL); + else if (resultAnalyse->getStatus() > 0) + infoBoard->slotRefresh(reportText, INFO_ERROR_OK); + else + infoBoard->slotRefresh(reportText, INFO_ERROR_WARN); - delete resultAnalyse; + delete resultAnalyse; + } else if (edit->slotCurPageFileTreeView() != nullptr) { + this->slotFileSign(); + } } void MainWindow::slotDecrypt() { - if (edit->tabCount() == 0 || edit->slotCurPage() == nullptr) { - return; - } + if (edit->tabCount() == 0) return; + + if (edit->slotCurPageTextEdit() != nullptr) { - auto *decrypted = new QByteArray(); - QByteArray text = edit->curTextPage()->toPlainText().toUtf8(); - GpgME::GpgContext::preventNoDataErr(&text); + auto *decrypted = new QByteArray(); + QByteArray text = edit->curTextPage()->toPlainText().toUtf8(); + GpgME::GpgContext::preventNoDataErr(&text); - gpgme_decrypt_result_t result = nullptr; - // try decrypt, if fail do nothing, especially don't replace text - auto error = mCtx->decrypt(text, decrypted, &result); - infoBoard->associateTextEdit(edit->curTextPage()); + gpgme_decrypt_result_t result = nullptr; + // try decrypt, if fail do nothing, especially don't replace text + auto error = mCtx->decrypt(text, decrypted, &result); + infoBoard->associateTextEdit(edit->curTextPage()); - if(gpgme_err_code(error) == GPG_ERR_NO_ERROR) - edit->slotFillTextEditWithText(QString::fromUtf8(*decrypted)); + if (gpgme_err_code(error) == GPG_ERR_NO_ERROR) + edit->slotFillTextEditWithText(QString::fromUtf8(*decrypted)); - auto resultAnalyse = new DecryptResultAnalyse(mCtx, error, result); + auto resultAnalyse = new DecryptResultAnalyse(mCtx, error, result); - auto &reportText = resultAnalyse->getResultReport(); - if (resultAnalyse->getStatus() < 0) - infoBoard->slotRefresh(reportText, INFO_ERROR_CRITICAL); - else if (resultAnalyse->getStatus() > 0) - infoBoard->slotRefresh(reportText, INFO_ERROR_OK); - else - infoBoard->slotRefresh(reportText, INFO_ERROR_WARN); + auto &reportText = resultAnalyse->getResultReport(); + if (resultAnalyse->getStatus() < 0) + infoBoard->slotRefresh(reportText, INFO_ERROR_CRITICAL); + else if (resultAnalyse->getStatus() > 0) + infoBoard->slotRefresh(reportText, INFO_ERROR_OK); + else + infoBoard->slotRefresh(reportText, INFO_ERROR_WARN); - delete resultAnalyse; + delete resultAnalyse; + } else if (edit->slotCurPageFileTreeView() != nullptr) { + this->slotFileDecrypt(); + } } void MainWindow::slotFind() { @@ -152,54 +162,154 @@ void MainWindow::slotFind() { } // At first close verifynotification, if existing - edit->slotCurPage()->closeNoteByClass("findwidget"); + edit->slotCurPageTextEdit()->closeNoteByClass("findwidget"); auto *fw = new FindWidget(this, edit->curTextPage()); - edit->slotCurPage()->showNotificationWidget(fw, "findWidget"); + edit->slotCurPageTextEdit()->showNotificationWidget(fw, "findWidget"); } void MainWindow::slotVerify() { - if (edit->tabCount() == 0 || edit->slotCurPage() == nullptr) { - return; + + if (edit->tabCount() == 0) return; + + if (edit->slotCurPageTextEdit() != nullptr) { + + QByteArray text = edit->curTextPage()->toPlainText().toUtf8(); + GpgME::GpgContext::preventNoDataErr(&text); + + + gpgme_verify_result_t result; + + auto error = mCtx->verify(&text, nullptr, &result); + + auto resultAnalyse = new VerifyResultAnalyse(mCtx, error, result); + infoBoard->associateTextEdit(edit->curTextPage()); + + auto &reportText = resultAnalyse->getResultReport(); + if (resultAnalyse->getStatus() < 0) + infoBoard->slotRefresh(reportText, INFO_ERROR_CRITICAL); + else if (resultAnalyse->getStatus() > 0) + infoBoard->slotRefresh(reportText, INFO_ERROR_OK); + else + infoBoard->slotRefresh(reportText, INFO_ERROR_WARN); + + if (resultAnalyse->getStatus() >= 0) { + infoBoard->resetOptionActionsMenu(); + infoBoard->addOptionalAction("Show Verify Details", [this, error, result]() { + VerifyDetailsDialog(this, mCtx, mKeyList, error, result); + }); + } + delete resultAnalyse; + } else if (edit->slotCurPageFileTreeView() != nullptr) { + this->slotFileVerify(); } +} - // If an unknown key is found, enable the importfromkeyserveraction +void MainWindow::slotEncryptSign() { - QByteArray text = edit->curTextPage()->toPlainText().toUtf8(); - GpgME::GpgContext::preventNoDataErr(&text); + if (edit->tabCount() == 0) return; - gpgme_verify_result_t result; + if (edit->slotCurPageTextEdit() != nullptr) { - auto error = mCtx->verify(&text, nullptr, &result); + QVector<GpgKey> keys; + mKeyList->getCheckedKeys(keys); - auto resultAnalyse = new VerifyResultAnalyse(mCtx, error, result); - infoBoard->associateTextEdit(edit->curTextPage()); + if (keys.empty()) { + QMessageBox::critical(nullptr, tr("No Key Selected"), tr("No Key Selected")); + return; + } - auto &reportText = resultAnalyse->getResultReport(); - if (resultAnalyse->getStatus() < 0) - infoBoard->slotRefresh(reportText, INFO_ERROR_CRITICAL); - else if (resultAnalyse->getStatus() > 0) - infoBoard->slotRefresh(reportText, INFO_ERROR_OK); - else - infoBoard->slotRefresh(reportText, INFO_ERROR_WARN); + for (const auto &key : keys) { + if (!GpgME::GpgContext::checkIfKeyCanSign(key) || !GpgME::GpgContext::checkIfKeyCanEncr(key)) { + QMessageBox::information(nullptr, + tr("Invalid Operation"), + tr("The selected key cannot be used for signing and encryption at the same time.<br/>") + + tr("<br/>For example the Following Key: <br/>") + key.uids.first().uid); + return; + } + } - if (resultAnalyse->getStatus() >= 0) { - infoBoard->resetOptionActionsMenu(); - infoBoard->addOptionalAction("Show Verify Details", [this, error, result]() { - VerifyDetailsDialog(this, mCtx, mKeyList, error, result); - }); + auto *tmp = new QByteArray(); + gpgme_encrypt_result_t encr_result = nullptr; + gpgme_sign_result_t sign_result = nullptr; + + auto error = mCtx->encryptSign(keys, edit->curTextPage()->toPlainText().toUtf8(), tmp, &encr_result, + &sign_result); + auto *tmp2 = new QString(*tmp); + edit->slotFillTextEditWithText(*tmp2); + + auto resultAnalyseEncr = new EncryptResultAnalyse(error, encr_result); + auto resultAnalyseSign = new SignResultAnalyse(error, sign_result); + int status = std::min(resultAnalyseEncr->getStatus(), resultAnalyseSign->getStatus()); + auto reportText = resultAnalyseEncr->getResultReport() + resultAnalyseSign->getResultReport(); + + infoBoard->associateTextEdit(edit->curTextPage()); + + if (status < 0) + infoBoard->slotRefresh(reportText, INFO_ERROR_CRITICAL); + else if (status > 0) + infoBoard->slotRefresh(reportText, INFO_ERROR_OK); + else + infoBoard->slotRefresh(reportText, INFO_ERROR_WARN); + + delete resultAnalyseEncr; + delete resultAnalyseSign; + } else if (edit->slotCurPageFileTreeView() != nullptr) { + this->slotFileEncryptSign(); } +} + +void MainWindow::slotDecryptVerify() { + + if (edit->tabCount() == 0) return; + + if (edit->slotCurPageTextEdit() != nullptr) { - delete resultAnalyse; + auto *decrypted = new QByteArray(); + QByteArray text = edit->curTextPage()->toPlainText().toUtf8(); + GpgME::GpgContext::preventNoDataErr(&text); + + gpgme_decrypt_result_t d_result = nullptr; + gpgme_verify_result_t v_result = nullptr; + // try decrypt, if fail do nothing, especially don't replace text + auto error = mCtx->decryptVerify(text, decrypted, &d_result, &v_result); + infoBoard->associateTextEdit(edit->curTextPage()); + + if (gpgme_err_code(error) == GPG_ERR_NO_ERROR) + edit->slotFillTextEditWithText(QString::fromUtf8(*decrypted)); + + auto resultAnalyseDecrypt = new DecryptResultAnalyse(mCtx, error, d_result); + auto resultAnalyseVerify = new VerifyResultAnalyse(mCtx, error, v_result); + + int status = std::min(resultAnalyseDecrypt->getStatus(), resultAnalyseVerify->getStatus()); + auto &reportText = resultAnalyseDecrypt->getResultReport() + resultAnalyseVerify->getResultReport(); + if (status < 0) + infoBoard->slotRefresh(reportText, INFO_ERROR_CRITICAL); + else if (status > 0) + infoBoard->slotRefresh(reportText, INFO_ERROR_OK); + else + infoBoard->slotRefresh(reportText, INFO_ERROR_WARN); + + if (resultAnalyseVerify->getStatus() >= 0) { + infoBoard->resetOptionActionsMenu(); + infoBoard->addOptionalAction("Show Verify Details", [this, error, v_result]() { + VerifyDetailsDialog(this, mCtx, mKeyList, error, v_result); + }); + } + delete resultAnalyseDecrypt; + delete resultAnalyseVerify; + } else if (edit->slotCurPageFileTreeView() != nullptr) { + this->slotFileDecryptVerify(); + } } /* * Append the selected (not checked!) Key(s) To Textedit */ void MainWindow::slotAppendSelectedKeys() { - if (edit->tabCount() == 0 || edit->slotCurPage() == nullptr) { + if (edit->tabCount() == 0 || edit->slotCurPageTextEdit() == nullptr) { return; } @@ -248,116 +358,460 @@ void MainWindow::uploadKeyToServer() { } void MainWindow::slotFileEncrypt() { - QStringList *keyList; - keyList = mKeyList->getChecked(); - new FileEncryptionDialog(mCtx, *keyList, FileEncryptionDialog::Encrypt, this); + + auto fileTreeView = edit->slotCurPageFileTreeView(); + auto path = fileTreeView->getSelected(); + + QFileInfo fileInfo(path); + QFileInfo pathInfo(fileInfo.absolutePath()); + + if (!fileInfo.isFile()) { + QMessageBox::critical(this, tr("Error"), tr("Select a file before doing it.")); + return; + } + if (!fileInfo.isReadable()) { + QMessageBox::critical(this, tr("Error"), tr("No permission to read this file.")); + return; + } + if (!pathInfo.isWritable()) { + QMessageBox::critical(this, tr("Error"), tr("No permission to create file.")); + return; + } + if (QFile::exists(path + ".asc")) { + auto ret = QMessageBox::warning(this, + tr("Warning"), + tr("The target file already exists, do you need to overwrite it?"), + QMessageBox::Ok | QMessageBox::Cancel); + + if (ret == QMessageBox::Cancel) + return; + } + + QVector<GpgKey> keys; + + mKeyList->getCheckedKeys(keys); + + if (keys.empty()) { + QMessageBox::critical(this, tr("No Key Selected"), tr("No Key Selected")); + return; + } + + for (const auto &key : keys) { + if (!GpgME::GpgContext::checkIfKeyCanEncr(key)) { + QMessageBox::information(this, + tr("Invalid Operation"), + tr("The selected key contains a key that does not actually have a encrypt usage.<br/>") + + tr("<br/>For example the Following Key: <br/>") + key.uids.first().uid); + return; + + } + } + + try { + gpgme_encrypt_result_t result; + auto error = GpgFileOpera::encryptFile(mCtx, keys, path, &result); + + auto resultAnalyse = new EncryptResultAnalyse(error, result); + auto &reportText = resultAnalyse->getResultReport(); + infoBoard->associateTabWidget(edit->tabWidget); + infoBoard->associateFileTreeView(edit->curFilePage()); + + if (resultAnalyse->getStatus() < 0) + infoBoard->slotRefresh(reportText, INFO_ERROR_CRITICAL); + else if (resultAnalyse->getStatus() > 0) + infoBoard->slotRefresh(reportText, INFO_ERROR_OK); + else + infoBoard->slotRefresh(reportText, INFO_ERROR_WARN); + + delete resultAnalyse; + + fileTreeView->update(); + + } catch (std::runtime_error &e) { + QMessageBox::critical(this, tr("Error"), tr("An error occurred during operation.")); + } + } void MainWindow::slotFileDecrypt() { - QStringList *keyList; - keyList = mKeyList->getChecked(); - new FileEncryptionDialog(mCtx, *keyList, FileEncryptionDialog::Decrypt, this); + + auto fileTreeView = edit->slotCurPageFileTreeView(); + auto path = fileTreeView->getSelected(); + + QFileInfo fileInfo(path); + QFileInfo pathInfo(fileInfo.absolutePath()); + if (!fileInfo.isFile()) { + QMessageBox::critical(this, tr("Error"), tr("Select a file before doing it.")); + return; + } + if (!fileInfo.isReadable()) { + QMessageBox::critical(this, tr("Error"), tr("No permission to read this file.")); + return; + } + if (!pathInfo.isWritable()) { + QMessageBox::critical(this, tr("Error"), tr("No permission to create file.")); + return; + } + + QString outFileName, fileExtension = fileInfo.suffix(); + + if (fileExtension == "asc" || fileExtension == "gpg") { + int pos = path.lastIndexOf(QChar('.')); + outFileName = path.left(pos); + } else { + outFileName = path + ".out"; + } + + if (QFile::exists(outFileName)) { + auto ret = QMessageBox::warning(this, + tr("Warning"), + tr("The target file already exists, do you need to overwrite it?"), + QMessageBox::Ok | QMessageBox::Cancel); + + if (ret == QMessageBox::Cancel) + return; + } + + try { + gpgme_decrypt_result_t result; + auto error = GpgFileOpera::decryptFile(mCtx, path, &result); + + auto resultAnalyse = new DecryptResultAnalyse(mCtx, error, result); + auto &reportText = resultAnalyse->getResultReport(); + infoBoard->associateTabWidget(edit->tabWidget); + infoBoard->associateFileTreeView(edit->curFilePage()); + + if (resultAnalyse->getStatus() < 0) + infoBoard->slotRefresh(reportText, INFO_ERROR_CRITICAL); + else if (resultAnalyse->getStatus() > 0) + infoBoard->slotRefresh(reportText, INFO_ERROR_OK); + else + infoBoard->slotRefresh(reportText, INFO_ERROR_WARN); + + delete resultAnalyse; + + fileTreeView->update(); + } catch (std::runtime_error &e) { + QMessageBox::critical(this, tr("Error"), tr("An error occurred during operation.")); + return; + } + + } void MainWindow::slotFileSign() { - QStringList *keyList; - keyList = mKeyList->getChecked(); - new FileEncryptionDialog(mCtx, *keyList, FileEncryptionDialog::Sign, this); + + auto fileTreeView = edit->slotCurPageFileTreeView(); + auto path = fileTreeView->getSelected(); + + QFileInfo fileInfo(path); + QFileInfo pathInfo(fileInfo.absolutePath()); + + if (!fileInfo.isFile()) { + QMessageBox::critical(this, tr("Error"), tr("Select a file before doing it.")); + return; + } + if (!fileInfo.isReadable()) { + QMessageBox::critical(this, tr("Error"), tr("No permission to read this file.")); + return; + } + if (!pathInfo.isWritable()) { + QMessageBox::critical(this, tr("Error"), tr("No permission to create file.")); + return; + } + + if (QFile::exists(path + ".sig")) { + auto ret = QMessageBox::warning(this, + tr("Warning"), + tr("The target file already exists, do you need to overwrite it?"), + QMessageBox::Ok | QMessageBox::Cancel); + + if (ret == QMessageBox::Cancel) + return; + } + + QVector<GpgKey> keys; + + mKeyList->getCheckedKeys(keys); + + if (keys.empty()) { + QMessageBox::critical(this, tr("No Key Selected"), tr("No Key Selected")); + return; + } + + for (const auto &key : keys) { + if (!GpgME::GpgContext::checkIfKeyCanEncr(key)) { + QMessageBox::information(this, + tr("Invalid Operation"), + tr("The selected key contains a key that does not actually have a encrypt usage.<br/>") + + tr("<br/>For example the Following Key: <br/>") + key.uids.first().uid); + return; + + } + } + + try { + gpgme_sign_result_t result; + auto error = GpgFileOpera::signFile(mCtx, keys, path, &result); + + auto resultAnalyse = new SignResultAnalyse(error, result); + auto &reportText = resultAnalyse->getResultReport(); + infoBoard->associateTabWidget(edit->tabWidget); + infoBoard->associateFileTreeView(edit->curFilePage()); + + if (resultAnalyse->getStatus() < 0) + infoBoard->slotRefresh(reportText, INFO_ERROR_CRITICAL); + else if (resultAnalyse->getStatus() > 0) + infoBoard->slotRefresh(reportText, INFO_ERROR_OK); + else + infoBoard->slotRefresh(reportText, INFO_ERROR_WARN); + + delete resultAnalyse; + + fileTreeView->update(); + + } catch (std::runtime_error &e) { + QMessageBox::critical(this, tr("Error"), tr("An error occurred during operation.")); + } + + fileTreeView->update(); + } void MainWindow::slotFileVerify() { - QStringList *keyList; - keyList = mKeyList->getChecked(); - new FileEncryptionDialog(mCtx, *keyList, FileEncryptionDialog::Verify, this); + + auto fileTreeView = edit->slotCurPageFileTreeView(); + auto path = fileTreeView->getSelected(); + + QFileInfo fileInfo(path); + + QString signFilePath, dataFilePath; + + if (fileInfo.suffix() == "sig" || fileInfo.suffix() == "gpg") { + int pos = path.lastIndexOf(QChar('.')); + dataFilePath = path.left(pos); + signFilePath = path; + } else { + dataFilePath = path; + signFilePath = path + ".sig"; + } + + QFileInfo dataFileInfo(dataFilePath), signFileInfo(signFilePath); + + if (!dataFileInfo.isFile() || !signFileInfo.isFile()) { + QMessageBox::critical(this, tr("Error"), + tr("Please select the appropriate target file or signature file. Ensure that both are in this directory.")); + return; + } + if (!dataFileInfo.isReadable()) { + QMessageBox::critical(this, tr("Error"), tr("No permission to read target file.")); + return; + } + if (!fileInfo.isReadable()) { + QMessageBox::critical(this, tr("Error"), tr("No permission to read signature file.")); + return; + } + + try { + gpgme_verify_result_t result; + auto error = GpgFileOpera::verifyFile(mCtx, dataFilePath, &result); + + auto resultAnalyse = new VerifyResultAnalyse(mCtx, error, result); + auto &reportText = resultAnalyse->getResultReport(); + infoBoard->associateTabWidget(edit->tabWidget); + infoBoard->associateFileTreeView(edit->curFilePage()); + + if (resultAnalyse->getStatus() < 0) + infoBoard->slotRefresh(reportText, INFO_ERROR_CRITICAL); + else if (resultAnalyse->getStatus() > 0) + infoBoard->slotRefresh(reportText, INFO_ERROR_OK); + else + infoBoard->slotRefresh(reportText, INFO_ERROR_WARN); + + if (resultAnalyse->getStatus() >= 0) { + infoBoard->resetOptionActionsMenu(); + infoBoard->addOptionalAction("Show Verify Details", [this, error, result]() { + VerifyDetailsDialog(this, mCtx, mKeyList, error, result); + }); + } + + delete resultAnalyse; + + fileTreeView->update(); + } catch (std::runtime_error &e) { + QMessageBox::critical(this, tr("Error"), tr("An error occurred during operation.")); + return; + } } -void MainWindow::slotEncryptSign() { +void MainWindow::slotFileEncryptSign() { + auto fileTreeView = edit->slotCurPageFileTreeView(); + auto path = fileTreeView->getSelected(); + + QFileInfo fileInfo(path); + QFileInfo pathInfo(fileInfo.absolutePath()); - if (edit->tabCount() == 0 || edit->slotCurPage() == nullptr) { + if (!fileInfo.isFile()) { + QMessageBox::critical(this, tr("Error"), tr("Select a file before doing it.")); return; } + if (!fileInfo.isReadable()) { + QMessageBox::critical(this, tr("Error"), tr("No permission to read this file.")); + return; + } + if (!pathInfo.isWritable()) { + QMessageBox::critical(this, tr("Error"), tr("No permission to create file.")); + return; + } + if (QFile::exists(path + ".asc")) { + auto ret = QMessageBox::warning(this, + tr("Warning"), + tr("The target file already exists, do you need to overwrite it?"), + QMessageBox::Ok | QMessageBox::Cancel); + + if (ret == QMessageBox::Cancel) + return; + } QVector<GpgKey> keys; + mKeyList->getCheckedKeys(keys); if (keys.empty()) { - QMessageBox::critical(nullptr, tr("No Key Selected"), tr("No Key Selected")); + QMessageBox::critical(this, tr("No Key Selected"), tr("No Key Selected")); return; } for (const auto &key : keys) { - if (!GpgME::GpgContext::checkIfKeyCanSign(key) || !GpgME::GpgContext::checkIfKeyCanEncr(key)) { - QMessageBox::information(nullptr, + if (!GpgME::GpgContext::checkIfKeyCanEncr(key)) { + QMessageBox::information(this, tr("Invalid Operation"), - tr("The selected key cannot be used for signing and encryption at the same time.<br/>") + tr("The selected key contains a key that does not actually have a encrypt usage.<br/>") + tr("<br/>For example the Following Key: <br/>") + key.uids.first().uid); return; + } } - auto *tmp = new QByteArray(); - gpgme_encrypt_result_t encr_result = nullptr; - gpgme_sign_result_t sign_result = nullptr; + try { + + gpgme_encrypt_result_t encr_result = nullptr; + gpgme_sign_result_t sign_result = nullptr; + + auto error = GpgFileOpera::encryptSignFile(mCtx, keys, path, &encr_result, &sign_result); - auto error = mCtx->encryptSign(keys, edit->curTextPage()->toPlainText().toUtf8(), tmp, &encr_result, &sign_result); - auto *tmp2 = new QString(*tmp); - edit->slotFillTextEditWithText(*tmp2); + auto resultAnalyseEncr = new EncryptResultAnalyse(error, encr_result); + auto resultAnalyseSign = new SignResultAnalyse(error, sign_result); + int status = std::min(resultAnalyseEncr->getStatus(), resultAnalyseSign->getStatus()); + auto reportText = resultAnalyseEncr->getResultReport() + resultAnalyseSign->getResultReport(); - auto resultAnalyseEncr = new EncryptResultAnalyse(error, encr_result); - auto resultAnalyseSign = new SignResultAnalyse(error, sign_result); - int status = std::min(resultAnalyseEncr->getStatus(), resultAnalyseSign->getStatus()); - auto reportText = resultAnalyseEncr->getResultReport() + resultAnalyseSign->getResultReport(); + infoBoard->associateFileTreeView(edit->curFilePage()); - infoBoard->associateTextEdit(edit->curTextPage()); + if (status < 0) + infoBoard->slotRefresh(reportText, INFO_ERROR_CRITICAL); + else if (status > 0) + infoBoard->slotRefresh(reportText, INFO_ERROR_OK); + else + infoBoard->slotRefresh(reportText, INFO_ERROR_WARN); - if (status < 0) - infoBoard->slotRefresh(reportText, INFO_ERROR_CRITICAL); - else if (status > 0) - infoBoard->slotRefresh(reportText, INFO_ERROR_OK); - else - infoBoard->slotRefresh(reportText, INFO_ERROR_WARN); + delete resultAnalyseEncr; + delete resultAnalyseSign; - delete resultAnalyseEncr; - delete resultAnalyseSign; + fileTreeView->update(); + + } catch (std::runtime_error &e) { + QMessageBox::critical(this, tr("Error"), tr("An error occurred during operation.")); + } } -void MainWindow::slotDecryptVerify() { +void MainWindow::slotFileDecryptVerify() { + auto fileTreeView = edit->slotCurPageFileTreeView(); + auto path = fileTreeView->getSelected(); - if (edit->tabCount() == 0 || edit->slotCurPage() == nullptr) { + QFileInfo fileInfo(path); + QFileInfo pathInfo(fileInfo.absolutePath()); + if (!fileInfo.isFile()) { + QMessageBox::critical(this, tr("Error"), tr("Select a file(.gpg/.asc) before doing it.")); + return; + } + if (!fileInfo.isReadable()) { + QMessageBox::critical(this, tr("Error"), tr("No permission to read this file.")); + return; + } + if (!pathInfo.isWritable()) { + QMessageBox::critical(this, tr("Error"), tr("No permission to create file.")); return; } - auto *decrypted = new QByteArray(); - QByteArray text = edit->curTextPage()->toPlainText().toUtf8(); - GpgME::GpgContext::preventNoDataErr(&text); + QString outFileName, fileExtension = fileInfo.suffix(); - gpgme_decrypt_result_t d_result = nullptr; - gpgme_verify_result_t v_result = nullptr; - // try decrypt, if fail do nothing, especially don't replace text - auto error = mCtx->decryptVerify(text, decrypted, &d_result, &v_result); - infoBoard->associateTextEdit(edit->curTextPage()); + if (fileExtension == "asc" || fileExtension == "gpg") { + int pos = path.lastIndexOf(QChar('.')); + outFileName = path.left(pos); + } else { + outFileName = path + ".out"; + } - if(gpgme_err_code(error) == GPG_ERR_NO_ERROR) - edit->slotFillTextEditWithText(QString::fromUtf8(*decrypted)); + try { + + gpgme_decrypt_result_t d_result = nullptr; + gpgme_verify_result_t v_result = nullptr; + // try decrypt, if fail do nothing, especially don't replace text + auto error = GpgFileOpera::decryptVerifyFile(mCtx, path, &d_result, &v_result); + infoBoard->associateFileTreeView(edit->curFilePage()); + + auto resultAnalyseDecrypt = new DecryptResultAnalyse(mCtx, error, d_result); + auto resultAnalyseVerify = new VerifyResultAnalyse(mCtx, error, v_result); + + int status = std::min(resultAnalyseDecrypt->getStatus(), resultAnalyseVerify->getStatus()); + auto &reportText = resultAnalyseDecrypt->getResultReport() + resultAnalyseVerify->getResultReport(); + if (status < 0) + infoBoard->slotRefresh(reportText, INFO_ERROR_CRITICAL); + else if (status > 0) + infoBoard->slotRefresh(reportText, INFO_ERROR_OK); + else + infoBoard->slotRefresh(reportText, INFO_ERROR_WARN); + + if (resultAnalyseVerify->getStatus() >= 0) { + infoBoard->resetOptionActionsMenu(); + infoBoard->addOptionalAction("Show Verify Details", [this, error, v_result]() { + VerifyDetailsDialog(this, mCtx, mKeyList, error, v_result); + }); + } + delete resultAnalyseDecrypt; + delete resultAnalyseVerify; - auto resultAnalyseDecrypt = new DecryptResultAnalyse(mCtx, error, d_result); - auto resultAnalyseVerify = new VerifyResultAnalyse(mCtx, error, v_result); + fileTreeView->update(); + } catch (std::runtime_error &e) { + QMessageBox::critical(this, tr("Error"), tr("An error occurred during operation.")); + return; + } +} - int status = std::min(resultAnalyseDecrypt->getStatus(), resultAnalyseVerify->getStatus()); - auto &reportText = resultAnalyseDecrypt->getResultReport() + resultAnalyseVerify->getResultReport(); - if (status < 0) - infoBoard->slotRefresh(reportText, INFO_ERROR_CRITICAL); - else if (status > 0) - infoBoard->slotRefresh(reportText, INFO_ERROR_OK); - else - infoBoard->slotRefresh(reportText, INFO_ERROR_WARN); +void MainWindow::slotFileEncryptCustom() { + QStringList *keyList; + keyList = mKeyList->getChecked(); + new FileEncryptionDialog(mCtx, *keyList, FileEncryptionDialog::Encrypt, this); +} - if (resultAnalyseVerify->getStatus() >= 0) { - infoBoard->resetOptionActionsMenu(); - infoBoard->addOptionalAction("Show Verify Details", [this, error, v_result]() { - VerifyDetailsDialog(this, mCtx, mKeyList, error, v_result); - }); - } - delete resultAnalyseDecrypt; - delete resultAnalyseVerify; +void MainWindow::slotFileDecryptCustom() { + QStringList *keyList; + keyList = mKeyList->getChecked(); + new FileEncryptionDialog(mCtx, *keyList, FileEncryptionDialog::Decrypt, this); +} + +void MainWindow::slotFileSignCustom() { + QStringList *keyList; + keyList = mKeyList->getChecked(); + new FileEncryptionDialog(mCtx, *keyList, FileEncryptionDialog::Sign, this); +} + +void MainWindow::slotFileVerifyCustom() { + QStringList *keyList; + keyList = mKeyList->getChecked(); + new FileEncryptionDialog(mCtx, *keyList, FileEncryptionDialog::Verify, this); +} + +void MainWindow::slotOpenFile(QString &path) { + edit->slotOpenFile(path); } diff --git a/src/ui/main_window/MainWindowSlotUI.cpp b/src/ui/main_window/MainWindowSlotUI.cpp index 8ee09f64..189ead53 100644 --- a/src/ui/main_window/MainWindowSlotUI.cpp +++ b/src/ui/main_window/MainWindowSlotUI.cpp @@ -63,10 +63,8 @@ void MainWindow::slotCheckAttachmentFolder() { } void MainWindow::slotImportKeyFromEdit() { - if (edit->tabCount() == 0 || edit->slotCurPage() == 0) { + if (edit->tabCount() == 0 || edit->slotCurPageTextEdit() == nullptr) return; - } - keyMgmt->slotImportKeys(edit->curTextPage()->toPlainText().toUtf8()); } @@ -88,6 +86,10 @@ void MainWindow::slotDisableTabActions(int number) { else disable = false; + if(edit->curFilePage() != nullptr) { + disable = true; + } + printAct->setDisabled(disable); saveAct->setDisabled(disable); saveAsAct->setDisabled(disable); @@ -101,7 +103,9 @@ void MainWindow::slotDisableTabActions(int number) { verifyAct->setDisabled(disable); signAct->setDisabled(disable); encryptAct->setDisabled(disable); + encryptSignAct->setDisabled(disable); decryptAct->setDisabled(disable); + decryptVerifyAct->setDisabled(disable); redoAct->setDisabled(disable); undoAct->setDisabled(disable); @@ -163,7 +167,7 @@ void MainWindow::slotOpenSettingsDialog() { } void MainWindow::slotCleanDoubleLinebreaks() { - if (edit->tabCount() == 0 || edit->slotCurPage() == nullptr) { + if (edit->tabCount() == 0 || edit->slotCurPageTextEdit() == nullptr) { return; } @@ -173,7 +177,7 @@ void MainWindow::slotCleanDoubleLinebreaks() { } void MainWindow::slotAddPgpHeader() { - if (edit->tabCount() == 0 || edit->slotCurPage() == nullptr) { + if (edit->tabCount() == 0 || edit->slotCurPageTextEdit() == nullptr) { return; } @@ -187,7 +191,7 @@ void MainWindow::slotAddPgpHeader() { void MainWindow::slotCutPgpHeader() { - if (edit->tabCount() == 0 || edit->slotCurPage() == nullptr) { + if (edit->tabCount() == 0 || edit->slotCurPageTextEdit() == nullptr) { return; } diff --git a/src/ui/main_window/MainWindowUI.cpp b/src/ui/main_window/MainWindowUI.cpp index 5afdc263..233a0927 100644 --- a/src/ui/main_window/MainWindowUI.cpp +++ b/src/ui/main_window/MainWindowUI.cpp @@ -42,6 +42,11 @@ void MainWindow::createActions() { openAct->setToolTip(tr("Open an existing file")); connect(openAct, SIGNAL(triggered()), edit, SLOT(slotOpen())); + browserAct = new QAction(tr("&Browser"), this); + browserAct->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_B)); + browserAct->setToolTip(tr("Open a file browser")); + connect(browserAct, SIGNAL(triggered()), this, SLOT(slotOpenFileTab())); + saveAct = new QAction(tr("&Save"), this); saveAct->setIcon(QIcon(":filesave.png")); saveAct->setShortcut(QKeySequence::Save); @@ -169,19 +174,19 @@ void MainWindow::createActions() { */ fileEncryptAct = new QAction(tr("&Encrypt File"), this); fileEncryptAct->setToolTip(tr("Encrypt File")); - connect(fileEncryptAct, SIGNAL(triggered()), this, SLOT(slotFileEncrypt())); + connect(fileEncryptAct, SIGNAL(triggered()), this, SLOT(slotFileEncryptCustom())); fileDecryptAct = new QAction(tr("&Decrypt File"), this); fileDecryptAct->setToolTip(tr("Decrypt File")); - connect(fileDecryptAct, SIGNAL(triggered()), this, SLOT(slotFileDecrypt())); + connect(fileDecryptAct, SIGNAL(triggered()), this, SLOT(slotFileDecryptCustom())); fileSignAct = new QAction(tr("&Sign File"), this); fileSignAct->setToolTip(tr("Sign File")); - connect(fileSignAct, SIGNAL(triggered()), this, SLOT(slotFileSign())); + connect(fileSignAct, SIGNAL(triggered()), this, SLOT(slotFileSignCustom())); fileVerifyAct = new QAction(tr("&Verify File"), this); fileVerifyAct->setToolTip(tr("Verify File")); - connect(fileVerifyAct, SIGNAL(triggered()), this, SLOT(slotFileVerify())); + connect(fileVerifyAct, SIGNAL(triggered()), this, SLOT(slotFileVerifyCustom())); signAct = new QAction(tr("&Sign"), this); @@ -264,6 +269,7 @@ void MainWindow::createActions() { void MainWindow::createMenus() { fileMenu = menuBar()->addMenu(tr("&File")); fileMenu->addAction(newTabAct); + fileMenu->addAction(browserAct); fileMenu->addAction(openAct); fileMenu->addSeparator(); fileMenu->addAction(saveAct); @@ -386,13 +392,12 @@ void MainWindow::createToolBars() { // Add dropdown menu for file encryption/decryption to crypttoolbar fileEncButton = new QToolButton(); - fileEncButton->setMenu(fileEncMenu); - // connect(fileEncButton, SIGNAL(clicked(bool)), this, SLOT(slotOpenFileTab())); + connect(fileEncButton, SIGNAL(clicked(bool)), this, SLOT(slotOpenFileTab())); fileEncButton->setPopupMode(QToolButton::InstantPopup); fileEncButton->setIcon(QIcon(":fileencryption.png")); - fileEncButton->setToolTip(tr("Opera File")); - fileEncButton->setText(tr("File Crypto")); - cryptToolBar->addWidget(fileEncButton); + fileEncButton->setToolTip(tr("Browser to view and operate file")); + fileEncButton->setText(tr("Browser")); + fileToolBar->addWidget(fileEncButton); } diff --git a/src/ui/widgets/EditorPage.cpp b/src/ui/widgets/EditorPage.cpp index cb4ca5ef..8a51b721 100644 --- a/src/ui/widgets/EditorPage.cpp +++ b/src/ui/widgets/EditorPage.cpp @@ -27,7 +27,7 @@ #include <utility> EditorPage::EditorPage(QString filePath, QWidget *parent) : QWidget(parent), - fullFilePath(std::move(filePath)) { + fullFilePath(std::move(filePath)) { // Set the Textedit properties textPage = new QTextEdit(); textPage->setAcceptRichText(false); @@ -42,7 +42,7 @@ EditorPage::EditorPage(QString filePath, QWidget *parent) : QWidget(parent), setAttribute(Qt::WA_DeleteOnClose); textPage->setFocus(); - //connect(textPage, SIGNAL(textChanged()), this, SLOT(formatGpgHeader())); + connect(textPage, SIGNAL(textChanged()), this, SLOT(formatGpgHeader())); } const QString &EditorPage::getFilePath() const { @@ -64,11 +64,11 @@ void EditorPage::showNotificationWidget(QWidget *widget, const char *className) void EditorPage::closeNoteByClass(const char *className) { QList<QWidget *> widgets = findChildren<QWidget *>(); - foreach(QWidget *widget, widgets) { - if (widget->property(className) == true) { - widget->close(); - } + for (QWidget *widget: widgets) { + if (widget->property(className) == true) { + widget->close(); } + } } void EditorPage::slotFormatGpgHeader() { diff --git a/src/ui/widgets/FilePage.cpp b/src/ui/widgets/FilePage.cpp index e3d73670..bab6cf68 100644 --- a/src/ui/widgets/FilePage.cpp +++ b/src/ui/widgets/FilePage.cpp @@ -24,35 +24,65 @@ #include "ui/widgets/FilePage.h" +#include "MainWindow.h" + FilePage::FilePage(QWidget *parent) : QWidget(parent) { + + qDebug() << "First Parent" << parent; + firstParent = parent; + qDebug() << "New File Page"; dirModel = new QFileSystemModel(); - dirModel->setRootPath(QDir::currentPath()); dirTreeView = new QTreeView(); dirTreeView->setModel(dirModel); dirTreeView->setAnimated(true); dirTreeView->setIndentation(20); - dirTreeView->setSortingEnabled(true); dirTreeView->setRootIndex(dirModel->index(QDir::currentPath())); + dirTreeView->setContextMenuPolicy(Qt::CustomContextMenu); + mPath = dirModel->rootPath(); + + createPopupMenu(); - upLevelButton = new QPushButton("UP Level"); + upLevelButton = new QPushButton("Up"); connect(upLevelButton, SIGNAL(clicked(bool)), this, SLOT(slotUpLevel())); + refreshButton = new QPushButton("Refresh"); + connect(refreshButton, SIGNAL(clicked(bool)), this, SLOT(slotGoPath())); + + goPathButton = new QPushButton("Go"); + connect(goPathButton, SIGNAL(clicked(bool)), this, SLOT(slotGoPath())); + + pathEdit = new QLineEdit(); + pathEdit->setText(dirModel->rootPath()); + auto *menuLayout = new QHBoxLayout(); menuLayout->addWidget(upLevelButton); - menuLayout->addStretch(0); + menuLayout->setStretchFactor(upLevelButton, 1); + menuLayout->addWidget(pathEdit); + menuLayout->setStretchFactor(pathEdit, 8); + menuLayout->addWidget(goPathButton); + menuLayout->setStretchFactor(goPathButton, 1); + // menuLayout->addWidget(refreshButton); + // menuLayout->setStretchFactor(refreshButton, 1); auto *layout = new QVBoxLayout(); + layout->setContentsMargins(0, 0, 0, 0); + layout->setSpacing(0); layout->addLayout(menuLayout); + layout->setStretchFactor(menuLayout, 1); layout->addWidget(dirTreeView); + layout->setStretchFactor(dirTreeView, 8); this->setLayout(layout); connect(dirTreeView, SIGNAL(clicked(const QModelIndex &)), this, SLOT(fileTreeViewItemClicked(const QModelIndex &))); connect(dirTreeView, SIGNAL(doubleClicked(const QModelIndex &)), this, SLOT(fileTreeViewItemDoubleClicked(const QModelIndex &))); + connect(dirTreeView, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onCustomContextMenu(const QPoint &))); + + emit pathChanged(mPath); } @@ -63,12 +93,14 @@ void FilePage::fileTreeViewItemClicked(const QModelIndex &index) { void FilePage::slotUpLevel() { QModelIndex currentRoot = dirTreeView->rootIndex(); - mPath = dirModel->fileInfo(currentRoot).absoluteFilePath(); + mPath = dirModel->fileInfo(currentRoot.parent()).absoluteFilePath(); auto fileInfo = QFileInfo(mPath); if(fileInfo.isDir() && fileInfo.isReadable() && fileInfo.isExecutable()) { dirTreeView->setRootIndex(currentRoot.parent()); + pathEdit->setText(mPath); } qDebug() << "Current Root mPath" << mPath; + emit pathChanged(mPath); } void FilePage::fileTreeViewItemDoubleClicked(const QModelIndex &index) { @@ -76,13 +108,129 @@ void FilePage::fileTreeViewItemDoubleClicked(const QModelIndex &index) { auto fileInfo = QFileInfo(mPath); if(fileInfo.isDir() && fileInfo.isReadable() && fileInfo.isExecutable()) { dirTreeView->setRootIndex(index); + pathEdit->setText(mPath); } qDebug() << "Index mPath" << mPath; + emit pathChanged(mPath); +} + +QString FilePage::getSelected() const { + return mPath; } -void FilePage::getSelected(QString &path) { +void FilePage::slotGoPath() { + qDebug() << "getSelected" << pathEdit->text(); + auto fileInfo = QFileInfo(pathEdit->text()); + if(fileInfo.isDir() && fileInfo.isReadable() && fileInfo.isExecutable()) { + mPath = fileInfo.filePath(); + qDebug() << "Set Path" << mPath; + dirTreeView->setRootIndex(dirModel->index(fileInfo.filePath())); + } else { + QMessageBox::critical(this, "Error", "The path is unprivileged or unreachable."); + } + emit pathChanged(mPath); +} + +void FilePage::createPopupMenu() { + popUpMenu = new QMenu(); + + auto openItemAct = new QAction(tr("Open"), this); + connect(openItemAct, SIGNAL(triggered()), this, SLOT(slotOpenItem())); + auto deleteItemAct = new QAction(tr("Delete"), this); + connect(deleteItemAct, SIGNAL(triggered()), this, SLOT(slotDeleteItem())); + encryptItemAct = new QAction(tr("Encrypt and Sign"), this); + connect(encryptItemAct, SIGNAL(triggered()), this, SLOT(slotEncryptItem())); + decryptItemAct = new QAction(tr("Decrypt and Verify"), this); + connect(decryptItemAct, SIGNAL(triggered()), this, SLOT(slotDecryptItem())); + signItemAct = new QAction(tr("Only Sign"), this); + connect(signItemAct, SIGNAL(triggered()), this, SLOT(slotSignItem())); + verifyItemAct = new QAction(tr("Only Verify"), this); + connect(verifyItemAct, SIGNAL(triggered()), this, SLOT(slotVerifyItem())); + + popUpMenu->addAction(openItemAct); + popUpMenu->addAction(deleteItemAct); + popUpMenu->addSeparator(); + popUpMenu->addAction(encryptItemAct); + popUpMenu->addAction(decryptItemAct); + popUpMenu->addAction(signItemAct); + popUpMenu->addAction(verifyItemAct); + +} + +void FilePage::onCustomContextMenu(const QPoint &point) { + QModelIndex index = dirTreeView->indexAt(point); + mPath = dirModel->fileInfo(index).absoluteFilePath(); + qDebug() << "Right Click" << mPath; + if (index.isValid()) { + QFileInfo info(mPath); + encryptItemAct->setEnabled(info.isFile() && (info.suffix() != "gpg" && info.suffix() != "sig")); + decryptItemAct->setEnabled(info.isFile() && info.suffix() == "gpg"); + signItemAct->setEnabled(info.isFile() && (info.suffix() != "gpg" && info.suffix() != "sig")); + verifyItemAct->setEnabled(info.isFile() && (info.suffix() == "sig" || info.suffix() == "gpg")); + + popUpMenu->exec(dirTreeView->viewport()->mapToGlobal(point)); + } +} + +void FilePage::slotOpenItem() { + QFileInfo info(mPath); + if(info.isDir()) { + qDebug() << "getSelected" << pathEdit->text(); + if(info.isReadable() && info.isExecutable()) { + qDebug() << "Set Path" << info.filePath(); + dirTreeView->setRootIndex(dirModel->index(info.filePath())); + } else { + QMessageBox::critical(this, "Error", "The path is unprivileged or unreachable."); + } + } else { + auto mainWindow = qobject_cast<MainWindow *>(firstParent); + qDebug() << "Open Item" << mPath; + if (mainWindow != nullptr) + mainWindow->slotOpenFile(mPath); + } +} + +void FilePage::slotDeleteItem() { QModelIndex index = dirTreeView->currentIndex(); QVariant data = dirTreeView->model()->data(index); - path = data.toString(); - qDebug() << "Target Path" << mPath; + + auto ret = QMessageBox::warning(this, + tr("Warning"), + tr("Are you sure you want to delete it?"), + QMessageBox::Ok | QMessageBox::Cancel); + + if(ret == QMessageBox::Cancel) + return; + + qDebug() << "Delete Item" << data.toString(); + + if(!dirModel->remove(index)){ + QMessageBox::critical(this, + tr("Error"), + tr("Unable to delete the file or folder.")); + } +} + +void FilePage::slotEncryptItem() { + auto mainWindow = qobject_cast<MainWindow *>(firstParent); + if(mainWindow != nullptr) + mainWindow->slotFileEncryptSign(); +} + +void FilePage::slotDecryptItem() { + auto mainWindow = qobject_cast<MainWindow *>(firstParent); + if(mainWindow != nullptr) + mainWindow->slotFileDecryptVerify(); +} + +void FilePage::slotSignItem() { + auto mainWindow = qobject_cast<MainWindow *>(firstParent); + if(mainWindow != nullptr) + mainWindow->slotFileSign(); +} + +void FilePage::slotVerifyItem() { + auto mainWindow = qobject_cast<MainWindow *>(firstParent); + if(mainWindow != nullptr) + mainWindow->slotFileVerify(); } diff --git a/src/ui/widgets/InfoBoardWidget.cpp b/src/ui/widgets/InfoBoardWidget.cpp index 76f82505..33517a8e 100644 --- a/src/ui/widgets/InfoBoardWidget.cpp +++ b/src/ui/widgets/InfoBoardWidget.cpp @@ -25,12 +25,13 @@ #include "ui/widgets/InfoBoardWidget.h" InfoBoardWidget::InfoBoardWidget(QWidget *parent, GpgME::GpgContext *ctx, KeyList *keyList) : - QWidget(parent), mCtx(ctx), mKeyList(keyList){ + QWidget(parent), mCtx(ctx), mKeyList(keyList) { infoBoard = new QTextEdit(this); infoBoard->setReadOnly(true); - infoBoard->setMinimumHeight(140); + infoBoard->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); infoBoard->setMinimumWidth(480); + infoBoard->setContentsMargins(0, 0, 0, 0); connect(mCtx, SIGNAL(signalKeyInfoChanged()), this, SLOT(slotReset())); @@ -41,21 +42,41 @@ InfoBoardWidget::InfoBoardWidget(QWidget *parent, GpgME::GpgContext *ctx, KeyLis detailMenu->addAction(importFromKeyserverAct); importFromKeyserverAct->setVisible(false); + QWidget *actionButtonMenu = new QWidget(); + actionButtonMenu->setContentsMargins(0, 0, 0, 0); + actionButtonMenu->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum); + actionButtonMenu->setFixedHeight(36); + actionButtonLayout = new QHBoxLayout(); + actionButtonLayout->setContentsMargins(0, 0, 0, 0); + actionButtonLayout->setSpacing(0); + actionButtonMenu->setLayout(actionButtonLayout); + auto label = new QLabel("Optional Actions Menu"); - label->setMinimumHeight(16); + label->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); + label->setContentsMargins(0, 0, 0, 0); + actionButtonLayout->addWidget(label); actionButtonLayout->addStretch(); + QFrame *line; line = new QFrame(this); line->setFrameShape(QFrame::HLine); line->setFrameShadow(QFrame::Sunken); + line->setContentsMargins(0, 0, 0, 0); auto *notificationWidgetLayout = new QVBoxLayout(this); + notificationWidgetLayout->setContentsMargins(0, 0, 0, 0); + notificationWidgetLayout->setSpacing(0); + notificationWidgetLayout->addWidget(infoBoard); - notificationWidgetLayout->addLayout(actionButtonLayout); + notificationWidgetLayout->setStretchFactor(infoBoard, 10); + notificationWidgetLayout->addWidget(actionButtonMenu); + notificationWidgetLayout->setStretchFactor(actionButtonMenu, 1); notificationWidgetLayout->addWidget(line); + notificationWidgetLayout->setStretchFactor(line, 1); + notificationWidgetLayout->addStretch(0); this->setLayout(notificationWidgetLayout); } @@ -96,15 +117,36 @@ void InfoBoardWidget::slotRefresh(const QString &text, InfoBoardStatus status) { } void InfoBoardWidget::associateTextEdit(QTextEdit *edit) { - this->mTextPage = edit; - if(mTextPage != nullptr) { + if (mTextPage != nullptr) disconnect(mTextPage, SIGNAL(textChanged()), this, SLOT(slotReset())); - } + this->mTextPage = edit; connect(edit, SIGNAL(textChanged()), this, SLOT(slotReset())); } -void InfoBoardWidget::addOptionalAction(const QString& name, const std::function<void()>& action) { +void InfoBoardWidget::associateFileTreeView(FilePage *treeView) { +// if (mFileTreeView != nullptr) +// disconnect(mFileTreeView, &FilePage::pathChanged, this, &InfoBoardWidget::slotReset); +// this->mFileTreeView = treeView; +// connect(treeView, &FilePage::pathChanged, this, &InfoBoardWidget::slotReset); +} + +void InfoBoardWidget::associateTabWidget(QTabWidget *tab) { + if (mTextPage != nullptr) + disconnect(mTextPage, SIGNAL(textChanged()), this, SLOT(slotReset())); +// if (mFileTreeView != nullptr) +// disconnect(mFileTreeView, &FilePage::pathChanged, this, &InfoBoardWidget::slotReset); + if (mTabWidget != nullptr) + disconnect(mTabWidget, SIGNAL(tabBarClicked(int)), this, SLOT(slotReset())); + + mTextPage = nullptr; + mFileTreeView = nullptr; + mTabWidget = tab; + connect(tab, SIGNAL(tabBarClicked(int)), this, SLOT(slotReset())); +} + +void InfoBoardWidget::addOptionalAction(const QString &name, const std::function<void()> &action) { auto actionButton = new QPushButton(name); + infoBoard->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); actionButtonLayout->addWidget(actionButton); connect(actionButton, &QPushButton::clicked, this, [=]() { action(); @@ -113,7 +155,7 @@ void InfoBoardWidget::addOptionalAction(const QString& name, const std::function void InfoBoardWidget::resetOptionActionsMenu() { QLayoutItem *item; - while ((item = actionButtonLayout->layout()->takeAt( 2)) != nullptr ) { + while ((item = actionButtonLayout->layout()->takeAt(2)) != nullptr) { actionButtonLayout->removeItem(item); delete item->widget(); delete item; diff --git a/src/ui/widgets/KeyList.cpp b/src/ui/widgets/KeyList.cpp index 581cc91c..b044020a 100644 --- a/src/ui/widgets/KeyList.cpp +++ b/src/ui/widgets/KeyList.cpp @@ -215,7 +215,6 @@ void KeyList::slotRefresh() ++row_index; } - setChecked(keyList); } diff --git a/src/ui/widgets/TextEdit.cpp b/src/ui/widgets/TextEdit.cpp index 49049baa..643747ed 100644 --- a/src/ui/widgets/TextEdit.cpp +++ b/src/ui/widgets/TextEdit.cpp @@ -24,7 +24,7 @@ #include "ui/widgets/TextEdit.h" -TextEdit::TextEdit() { +TextEdit::TextEdit(QWidget *parent) : QWidget(parent) { countPage = 0; tabWidget = new QTabWidget(this); tabWidget->setMovable(true); @@ -66,53 +66,83 @@ void TextEdit::slotNewHelpTab(const QString &title, const QString &path) const { void TextEdit::slotNewFileTab() const { - auto *page = new FilePage(); - tabWidget->addTab(page, "File"); + auto *page = new FilePage(qobject_cast<QWidget *>(parent())); + tabWidget->addTab(page, "[File Browser]"); tabWidget->setCurrentIndex(tabWidget->count() - 1); + connect(page, SIGNAL(pathChanged(const QString &)), this, SLOT(slotFilePagePathChanged(const QString &))); } +void TextEdit::slotOpenFile(QString &path) { + + QFile file(path); + + if (file.open(QIODevice::ReadOnly | QIODevice::Text)) { + auto *page = new EditorPage(path); + + QTextStream in(&file); + QApplication::setOverrideCursor(Qt::WaitCursor); + page->getTextPage()->setPlainText(in.readAll()); + page->setFilePath(path); + QTextDocument *document = page->getTextPage()->document(); + document->setModified(false); + + tabWidget->addTab(page, strippedName(path)); + tabWidget->setCurrentIndex(tabWidget->count() - 1); + QApplication::restoreOverrideCursor(); + page->getTextPage()->setFocus(); + connect(page->getTextPage()->document(), SIGNAL(modificationChanged(bool)), this, + SLOT(slotShowModified())); + //enableAction(true) + file.close(); + } else { + QMessageBox::warning(this, tr("Warning"), + tr("Cannot read file %1:\n%2.") + .arg(path).arg(file.errorString())); + } +} + void TextEdit::slotOpen() { QStringList fileNames = QFileDialog::getOpenFileNames(this, tr("Open file"), QDir::currentPath()); - foreach (QString fileName, fileNames) { - if (!fileName.isEmpty()) { - QFile file(fileName); - - if (file.open(QIODevice::ReadOnly | QIODevice::Text)) { - auto *page = new EditorPage(fileName); - - QTextStream in(&file); - QApplication::setOverrideCursor(Qt::WaitCursor); - page->getTextPage()->setPlainText(in.readAll()); - page->setFilePath(fileName); - QTextDocument *document = page->getTextPage()->document(); - document->setModified(false); - - tabWidget->addTab(page, strippedName(fileName)); - tabWidget->setCurrentIndex(tabWidget->count() - 1); - QApplication::restoreOverrideCursor(); - page->getTextPage()->setFocus(); - connect(page->getTextPage()->document(), SIGNAL(modificationChanged(bool)), this, - SLOT(slotShowModified())); - //enableAction(true) - file.close(); - } else { - QMessageBox::warning(this, tr("Application"), - tr("Cannot read file %1:\n%2.") - .arg(fileName) - .arg(file.errorString())); - } + for (const auto &fileName : fileNames) { + if (!fileName.isEmpty()) { + QFile file(fileName); + + if (file.open(QIODevice::ReadOnly | QIODevice::Text)) { + auto *page = new EditorPage(fileName); + + QTextStream in(&file); + QApplication::setOverrideCursor(Qt::WaitCursor); + page->getTextPage()->setPlainText(in.readAll()); + page->setFilePath(fileName); + QTextDocument *document = page->getTextPage()->document(); + document->setModified(false); + + tabWidget->addTab(page, strippedName(fileName)); + tabWidget->setCurrentIndex(tabWidget->count() - 1); + QApplication::restoreOverrideCursor(); + page->getTextPage()->setFocus(); + connect(page->getTextPage()->document(), SIGNAL(modificationChanged(bool)), this, + SLOT(slotShowModified())); + //enableAction(true) + file.close(); + } else { + QMessageBox::warning(this, tr("Warning"), + tr("Cannot read file %1:\n%2.") + .arg(fileName) + .arg(file.errorString())); } } + } } void TextEdit::slotSave() { - if (tabWidget->count() == 0 || slotCurPage() == 0) { + if (tabWidget->count() == 0 || slotCurPageTextEdit() == 0) { return; } - QString fileName = slotCurPage()->getFilePath(); + QString fileName = slotCurPageTextEdit()->getFilePath(); if (fileName.isEmpty()) { //QString docname = tabWidget->tabText(tabWidget->currentIndex()); @@ -131,7 +161,7 @@ bool TextEdit::saveFile(const QString &fileName) { QFile file(fileName); if (file.open(QIODevice::WriteOnly | QIODevice::Text)) { - EditorPage *page = slotCurPage(); + EditorPage *page = slotCurPageTextEdit(); QTextStream outputStream(&file); QApplication::setOverrideCursor(Qt::WaitCursor); @@ -158,11 +188,11 @@ bool TextEdit::saveFile(const QString &fileName) { bool TextEdit::slotSaveAs() { - if (tabWidget->count() == 0 || slotCurPage() == 0) { + if (tabWidget->count() == 0 || slotCurPageTextEdit() == 0) { return true; } - EditorPage *page = slotCurPage(); + EditorPage *page = slotCurPageTextEdit(); QString path; if (page->getFilePath() != "") { path = page->getFilePath(); @@ -170,7 +200,7 @@ bool TextEdit::slotSaveAs() { path = tabWidget->tabText(tabWidget->currentIndex()).remove(0, 2); } - QString fileName = QFileDialog::getSaveFileName(this, tr("Save file "), + QString fileName = QFileDialog::getSaveFileName(this, tr("Save file"), path); return saveFile(fileName); } @@ -178,7 +208,7 @@ bool TextEdit::slotSaveAs() { void TextEdit::slotCloseTab() { removeTab(tabWidget->currentIndex()); if (tabWidget->count() != 0) { - slotCurPage()->getTextPage()->setFocus(); + slotCurPageTextEdit()->getTextPage()->setFocus(); } } @@ -218,7 +248,7 @@ void TextEdit::removeTab(int index) { */ bool TextEdit::maybeSaveCurrentTab(bool askToSave) { - EditorPage *page = slotCurPage(); + EditorPage *page = slotCurPageTextEdit(); // if this page is no textedit, there should be nothing to save if (page == nullptr) { return true; @@ -299,7 +329,8 @@ bool TextEdit::maybeSaveAnyTab() { bool allsaved = true; QList<int> tabIdsToSave = dialog->getTabIdsToSave(); - foreach (int tabId, tabIdsToSave) { + foreach(int + tabId, tabIdsToSave) { tabWidget->setCurrentIndex(tabId); if (!maybeSaveCurrentTab(false)) { allsaved = false; @@ -326,10 +357,10 @@ QTextEdit *TextEdit::curTextPage() const { } } -QTextBrowser *TextEdit::curHelpPage() const { - auto *curHelpPage = qobject_cast<HelpPage *>(tabWidget->currentWidget()); - if (curHelpPage != nullptr) { - return curHelpPage->getBrowser(); +FilePage * TextEdit::curFilePage() const { + auto *curFilePage = qobject_cast<FilePage *>(tabWidget->currentWidget()); + if (curFilePage != nullptr) { + return curFilePage; } else { return nullptr; } @@ -339,11 +370,16 @@ int TextEdit::tabCount() const { return tabWidget->count(); } -EditorPage *TextEdit::slotCurPage() const { +EditorPage *TextEdit::slotCurPageTextEdit() const { auto *curPage = qobject_cast<EditorPage *>(tabWidget->currentWidget()); return curPage; } +FilePage *TextEdit::slotCurPageFileTreeView() const { + auto *curPage = qobject_cast<FilePage *>(tabWidget->currentWidget()); + return curPage; +} + void TextEdit::slotQuote() const { if (tabWidget->count() == 0 || curTextPage() == nullptr) { return; @@ -386,7 +422,7 @@ void TextEdit::loadFile(const QString &fileName) { QApplication::setOverrideCursor(Qt::WaitCursor); curTextPage()->setPlainText(in.readAll()); QApplication::restoreOverrideCursor(); - slotCurPage()->setFilePath(fileName); + slotCurPageTextEdit()->setFilePath(fileName); tabWidget->setTabText(tabWidget->currentIndex(), strippedName(fileName)); file.close(); // statusBar()->showMessage(tr("File loaded"), 2000); @@ -403,9 +439,7 @@ void TextEdit::slotPrint() { #ifndef QT_NO_PRINTER QTextDocument *document; - if (curTextPage() == nullptr) { - document = curHelpPage()->document(); - } else { + if (curTextPage() != nullptr) { document = curTextPage()->document(); } QPrinter printer; @@ -479,8 +513,6 @@ void TextEdit::slotCopy() const { if (curTextPage() != nullptr) { curTextPage()->copy(); - } else { - curHelpPage()->copy(); } @@ -517,8 +549,6 @@ void TextEdit::slotZoomIn() const { if (curTextPage() != nullptr) { curTextPage()->zoomIn(); - } else { - curHelpPage()->zoomIn(); } } @@ -530,8 +560,6 @@ void TextEdit::slotZoomOut() const { if (curTextPage() != nullptr) { curTextPage()->zoomOut(); - } else { - curHelpPage()->zoomOut(); } } @@ -539,26 +567,20 @@ void TextEdit::slotSelectAll() const { if (tabWidget->count() == 0 || curTextPage() == nullptr) { return; } - curTextPage()->selectAll(); } -/*void TextEdit::dragEnterEvent(QDragEnterEvent *event) -{ - if (event->mimeData()->hasFormat("text/plain")) - qDebug() << "enter textedit drag action"; - event->acceptProposedAction(); -} - -void TextEdit::dropEvent(QDropEvent* event) -{ - curTextPage()->setPlainText(event->mimeData()->text()); - - foreach (QUrl tmp, event->mimeData()->urls()) - { - qDebug() << tmp; +void TextEdit::slotFilePagePathChanged(const QString &path) { + int index = tabWidget->currentIndex(); + QString mPath; + QFileInfo fileInfo(path); + QString tPath = fileInfo.path(); + if (path.size() > 18) { + mPath = tPath.mid(tPath.size() - 18, 18).prepend("..."); + } else { + mPath = tPath; } - - //event->acceptProposedAction(); + mPath.prepend("[File Browser] "); + mPath.append("/"); + tabWidget->setTabText(index, mPath); } -*/ diff --git a/src/ui/widgets/VerifyKeyDetailBox.cpp b/src/ui/widgets/VerifyKeyDetailBox.cpp index 3a0695b8..e0f79c3e 100644 --- a/src/ui/widgets/VerifyKeyDetailBox.cpp +++ b/src/ui/widgets/VerifyKeyDetailBox.cpp @@ -26,10 +26,7 @@ VerifyKeyDetailBox::VerifyKeyDetailBox(QWidget *parent, GpgME::GpgContext *ctx, KeyList *keyList, gpgme_signature_t signature) : - QGroupBox(parent) { - this->mCtx = ctx; - this->mKeyList = keyList; - this->fpr = signature->fpr; + QGroupBox(parent), mCtx(ctx), mKeyList(keyList), fpr(signature->fpr) { auto *vbox = new QVBoxLayout(); |