diff options
127 files changed, 4226 insertions, 4897 deletions
diff --git a/.github/workflows/debug.yml b/.github/workflows/debug.yml new file mode 100644 index 00000000..ae49e86c --- /dev/null +++ b/.github/workflows/debug.yml @@ -0,0 +1,140 @@ +name: Debug Build & Package + +on: + push: + branches: [ develop ] + paths-ignore: + - '**/README.md' + - 'resource/ts/**' + - 'docs/**' + pull_request: + branches: [ develop ] + paths-ignore: + - '**/README.md' + - 'resource/ts/**' + - 'docs/**' + +env: + # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) + BUILD_TYPE: Debug + EXECUTABLE_OUTPUT_PATH: ./ + +jobs: + build: + strategy: + matrix: + os: [ 'ubuntu-latest', 'macos-latest', 'windows-latest' ] + runs-on: ${{ matrix.os }} + steps: + + - uses: actions/checkout@v2 + + - name: Install Dependence (Linux) + run: | + sudo apt-get update + sudo apt-get -y install build-essential binutils git autoconf automake + sudo apt-get -y install gcc g++ + sudo apt-get -y install libgpgme-dev gpg + if: matrix.os == 'ubuntu-latest' + + - name: Install Dependence (macOS) + run: | + brew install cmake git autoconf automake qt@5 + if: matrix.os == 'macos-latest' + + + - name: Cache Qt + id: cache-qt + uses: actions/cache@v1 + with: + path: ../Qt + key: ${{ runner.os }}-QtCache + if: matrix.os == 'ubuntu-latest' + + - name: Install Qt + uses: jurplel/install-qt-action@v2 + with: + cached: ${{ steps.cache-qt.outputs.cache-hit }} + if: matrix.os == 'ubuntu-latest' + + - name: Set up MinGW (Windows) + uses: msys2/setup-msys2@v2 + with: + install: git msys2-devel base-devel binutils mingw-w64-x86_64-toolchain + release: false + if: matrix.os == 'windows-latest' + + - name: Set up Dependence (Windows) + shell: msys2 {0} + run: | + pacman --noconfirm -S --needed mingw-w64-x86_64-gcc mingw-w64-x86_64-make mingw-w64-x86_64-cmake autoconf automake mingw-w64-x86_64-qt-creator mingw-w64-x86_64-gpgme + pacman --noconfirm -S --needed make texinfo + + if: matrix.os == 'windows-latest' + + - name: Build GpgME + run: | + cd .. + git clone https://github.com/saturneric/gpgme + cd gpgme + ./autogen.sh + ./configure && make -j2 + sudo make install + cd ${{github.workspace}} + if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest' + + - name: Build GpgME (Windows) + shell: msys2 {0} + run: | + git clone https://github.com/saturneric/gpgme + cd gpgme + ./autogen.sh + ./configure --enable-static=true --enable-languages=cpp LDFLAGS="-static" && make -j2 + make install + if: matrix.os == 'windows-latest' + + - name: Configure CMake + # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. + # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type + run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DEXECUTABLE_OUTPUT_PATH=${{env.EXECUTABLE_OUTPUT_PATH}} + if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest' + + - name: Build GpgFrontend + # Build your program with the given configuration + run: cmake --build ${{github.workspace}}/build --config $env.BUILD_TYPE}} -- -j 2 + if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest' + + - name: Configure CMake & Build Binary(Windows) + shell: msys2 {0} + run: | + cd $(echo "/${{github.workspace}}" | sed 's/\\/\//g' | sed 's/://') + mkdir build && cd build + cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DEXECUTABLE_OUTPUT_PATH=${{env.EXECUTABLE_OUTPUT_PATH}} .. + # Build your program with the given configuration + cmake --build . --config ${{env.BUILD_TYPE}} -- -j 2 + if: matrix.os == 'windows-latest' + + - name: Get Short SHA of Commit + id: vars + run: echo "::set-output name=sha_short::$(git rev-parse --short HEAD)" + + - name: Upload Artifact(Linux) + uses: actions/upload-artifact@master + with: + name: gpgfrontend-${{matrix.os}}-${{env.BUILD_TYPE}}-${{steps.vars.outputs.sha_short}} + path: ${{github.workspace}}/build/release/* + if: matrix.os == 'ubuntu-latest' + + - name: Upload Artifact(macOS) + uses: actions/upload-artifact@master + with: + name: gpgfrontend-${{matrix.os}}-${{env.BUILD_TYPE}}-${{steps.vars.outputs.sha_short}} + path: ${{github.workspace}}/build/release/* + if: matrix.os == 'macos-latest' + + - name: Upload Artifact(Windows) + uses: actions/upload-artifact@master + with: + name: gpgfrontend-${{matrix.os}}-${{env.BUILD_TYPE}}-${{steps.vars.outputs.sha_short}} + path: ${{github.workspace}}/build/release/* + if: matrix.os == 'windows-latest' diff --git a/.github/workflows/cmake.yml b/.github/workflows/release.yml index 77c0d643..c6fa10ee 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/release.yml @@ -25,7 +25,6 @@ jobs: matrix: os: [ 'ubuntu-latest', 'macos-latest', 'windows-latest' ] runs-on: ${{ matrix.os }} - timeout-minutes: 18 steps: - uses: actions/checkout@v2 @@ -61,7 +60,7 @@ jobs: - name: Set up MinGW (Windows) uses: msys2/setup-msys2@v2 with: - install: git msys2-devel base-devel binutils pactoys-git mercurial cvs wget p7zip perl ruby mingw-w64-x86_64-toolchain + install: git msys2-devel base-devel binutils mingw-w64-x86_64-toolchain release: false if: matrix.os == 'windows-latest' @@ -69,6 +68,7 @@ jobs: shell: msys2 {0} run: | pacman --noconfirm -S --needed mingw-w64-x86_64-gcc mingw-w64-x86_64-make mingw-w64-x86_64-cmake autoconf automake mingw-w64-x86_64-qt-creator mingw-w64-x86_64-gpgme + pacman --noconfirm -S --needed make texinfo if: matrix.os == 'windows-latest' - name: Build GpgME @@ -82,6 +82,16 @@ jobs: cd ${{github.workspace}} if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest' + - name: Build GpgME (Windows) + shell: msys2 {0} + run: | + git clone https://github.com/saturneric/gpgme + cd gpgme + ./autogen.sh + ./configure --enable-static=true --enable-languages=cpp LDFLAGS="-static" && make -j2 + make install + if: matrix.os == 'windows-latest' + - name: Configure CMake # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type @@ -103,23 +113,27 @@ jobs: cmake --build . --config ${{env.BUILD_TYPE}} -- -j 2 if: matrix.os == 'windows-latest' + - name: Get Short SHA of Commit + id: vars + run: echo "::set-output name=sha_short::$(git rev-parse --short HEAD)" + - name: Upload Artifact(Linux) uses: actions/upload-artifact@master with: - name: gpgfrontend-linux-release-${{github.sha}} + name: gpgfrontend-${{matrix.os}}-${{env.BUILD_TYPE}}-${{steps.vars.outputs.sha_short}} path: ${{github.workspace}}/build/release/* if: matrix.os == 'ubuntu-latest' - name: Upload Artifact(macOS) uses: actions/upload-artifact@master with: - name: gpgfrontend-macos-release-${{github.sha}} + name: gpgfrontend-${{matrix.os}}-${{env.BUILD_TYPE}}-${{steps.vars.outputs.sha_short}} path: ${{github.workspace}}/build/release/* if: matrix.os == 'macos-latest' - name: Upload Artifact(Windows) uses: actions/upload-artifact@master with: - name: gpgfrontend-windows-release-${{github.sha}} + name: gpgfrontend-${{matrix.os}}-${{env.BUILD_TYPE}}-${{steps.vars.outputs.sha_short}} path: ${{github.workspace}}/build/release/* if: matrix.os == 'windows-latest' diff --git a/CMakeLists.txt b/CMakeLists.txt index 431ddcf3..63155ed2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.16) -project(GpgFrontend VERSION 1.0.2 LANGUAGES CXX) +project(GpgFrontend VERSION 1.1.0 LANGUAGES CXX) message(STATUS "GPGFrontend Build Configuration Started CMAKE Version ${CMAKE_VERSION}") @@ -19,12 +19,18 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON) # Check Env Variables Before Configuring -if(NOT DEFINED ENV{CMAKE_BUILD_TYPE}) +if(CMAKE_BUILD_TYPE) + message(STATUS "PreCheck CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE}") +else() set(CMAKE_BUILD_TYPE "Release") + message(STATUS "Set CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE}") endif() -if(NOT DEFINED ENV{EXECUTABLE_OUTPUT_PATH}) +if(EXECUTABLE_OUTPUT_PATH) + message(STATUS "PreCheck EXECUTABLE_OUTPUT_PATH ${EXECUTABLE_OUTPUT_PATH}") +else() set(EXECUTABLE_OUTPUT_PATH "./") + message(STATUS "Set EXECUTABLE_OUTPUT_PATH ${EXECUTABLE_OUTPUT_PATH}") endif() # Output Env Variables @@ -258,7 +258,7 @@ in one of these ways: (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a + dirModel, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no @@ -1,4 +1,4 @@ -<img style='float:right; width:100px;height:100px' src="https://github.com/saturneric/Blob/blob/master/logos/icon.png?raw=true" alt="ICON"/> +<img width="100" height="100" align="right" src="https://github.com/saturneric/Blob/blob/master/logos/icon.png?raw=true" alt="ICON"/> # GpgFrontend @@ -9,21 +9,33 @@  [](https://app.fossa.com/projects/git%2Bgithub.com%2Fsaturneric%2FGpgFrontend?ref=badge_small) -GpgFrontend is a Modern, Easy-to-Use, Compact, Cross-Platform, and Installation-Free [OpenPGP](https://www.openpgp.org/) +GpgFrontend is an Easy-to-Use, Compact, Cross-Platform, and Installation-Free [OpenPGP](https://www.openpgp.org/) Frontend Tool. By using GpgFrontend, you can quickly **encrypt and decrypt text or files**. Or at the same time as the above operations, you can add **your own signature** to let others know that this document or this paragraph of text was -issued by you. +issued by you. It aims to allow ordinary users to quickly use gpg and make professional users more convenient. +GpgFrontend supports new features of OpenPGP. -Furthermore, it visualizes most of the common operations of gpg commands. It aims to allow ordinary users to quickly use -gpg and make professional users more convenient. GpgFrontend supports new features of OpenPGP. +**Notice:** GpgFrontend does not provide an embedded [gnupg](https://gnupg.org/) binary library and needs to be +installed by the user. **This is to ensure safety and avoid code or binary files being implanted in the backdoor during +the delivery process.** - +[>> Quick Start](#quick-start) + +[>> Code & Binary Security](https://saturneric.github.io/GpgFrontend/index.html#/about/code-binary-verify) + +<div align="center"> +<img width="640" src="https://github.com/saturneric/Blob/blob/master/screenshots/main_mac.jpg?raw=true" alt="macOS Screenshot"/> +</div> +<div align="center"> +<img width="320" src="https://github.com/saturneric/Blob/blob/master/screenshots/key_info.PNG?raw=true" alt="Windows Screenshot"/> +<img width="320" src="https://github.com/saturneric/Blob/blob/master/screenshots/keygen_ubuntu.png?raw=true" alt="Ubuntu Screenshot"/> +</div> #### Workflows Status: -[](https://github.com/saturneric/GpgFrontend/actions/workflows/cmake.yml) +[](https://github.com/saturneric/GpgFrontend/actions/workflows/cmake.yml) --- @@ -31,9 +43,11 @@ gpg and make professional users more convenient. GpgFrontend supports new featur - [Features](#features) - [Usage](#usage) - - [Windows](#windows) - - [macOS](#macos) - - [Debian/Ubuntu/CentOS](#debianubuntucentos) + - [Quick Start](#quick-start) + - [How to Run it](#how-to-run-it) + - [Windows](#windows) + - [macOS](#macos) + - [Debian/Ubuntu/CentOS](#debianubuntucentos) - [Document](#document) - [Purpose](#purpose) - [Build](#build) @@ -45,33 +59,59 @@ gpg and make professional users more convenient. GpgFrontend supports new featur ## Features - Can run on **Windows, Linux and macOS**. + - Open source, free, no need to install. -- Just double-click, and then you can use it freely. -- Before use, you only need to install [gnupg](https://gnupg.org/). A tiny GNU tool. + +- For Windows user, just double-click, and then you can use it freely. + +- For macOS and Linux user, just type few command before running it. + - Supports multiple languages. Don’t forget to help me translate this software. ## Usage -### Windows +### Quick Start + +### Fast encryption + +Encryption can be done in just a few clicks. + + + +### Fast Decryption + +I want to see what you wrote right away. + + + +### More Helpful Operation + +Read the animated pictures in the [Document](https://saturneric.github.io/GpgFrontend/index.html#/) to learn more +awesome operations. + +### How to Run it + +#### Windows 1. [Download](https://gnupg.org/ftp/gcrypt/binary/gnupg-w32-2.3.1_20210420.exe) gnupg-w32-******.exe 2. Double Click it to install it 3. [Download](https://github.com/saturneric/GpgFrontend/releases) GpgFrontend Windows Edition -4. Unzip GpgFrontend -5. Double Click gpgfrontend.exe +4. Unzip gpgfrontend-windows-latest-*******.zip +5. Go into the directory and double click gpgfrontend.exe + +#### macOS -### macOS 1. Install Homebrew [Here](https://brew.sh/) if you don't know it. 2. Install gnupg ```shell % brew update - % brew install gnupg + % brew install gnupg qt@5 gpgme ``` 3. [Download](https://github.com/saturneric/GpgFrontend/releases) GpgFrontend macOS Edition 4. Unzip GpgFrontend 5. Get into folder and Give gpgfrontend permission to execute ```shell - % cd gpgfrontend-*.*.*-macos-amd64-release/ + % cd gpgfrontend-macos-latest-*******/ % chmod u+x gpgfrontend ``` 6. Just run it @@ -79,22 +119,23 @@ gpg and make professional users more convenient. GpgFrontend supports new featur % ./gpgfrontend ``` -### Debian/Ubuntu/CentOS +#### Debian/Ubuntu/CentOS + 1. Install gnupg - For Debian/Ubuntu ```shell $ sudo apt update - $ sudo apt install gpg + $ sudo apt install gpg libgpgme11 qt-default ``` - For CentOS ```shell - $ sudo yum install gnupg + $ sudo yum install gnupg gpgme qt5-qtbase ``` 2. [Download](https://github.com/saturneric/GpgFrontend/releases) GpgFrontend Linux Edition 3. Unzip GpgFrontend 4. Get into folder and Give gpgfrontend permission to execute ```shell - $ cd gpgfrontend-*.*.*-linux-amd64-release/ + $ cd gpgfrontend-ubuntu-latest-*******/ $ chmod u+x gpgfrontend ``` 5. Just run it @@ -125,7 +166,7 @@ The tutorial for building the software will be released shortly. ## Contract -If you want to contact me individually, you can email [[email protected]](mailto:[email protected]). +If you want to contact me individually, you can email [[email protected]](mailto:[email protected]). ### Contributing @@ -143,8 +184,8 @@ Feel free to dive in! [Open an issue](https://github.com/saturneric/GpgFrontend/ GpgFrontend itself is licensed under the [GPLv3](COPYING). -There are some libraries and binary included in the zip-file which (may) have different -licenses, for more information check their homepages. You can also obtain the sources from there. +There are some libraries and binary included in the zip-file which (may) have different licenses, for more information +check their homepages. You can also obtain the sources from there. gpg4usb: https://www.gpg4usb.org/ diff --git a/gpgfrontend.qrc b/gpgfrontend.qrc index 55f37390..fce9f6bc 100644 --- a/gpgfrontend.qrc +++ b/gpgfrontend.qrc @@ -10,6 +10,8 @@ <file alias="keys2.jpg">resource/icons/keys12.jpg</file> <file alias="keys3.jpg">resource/icons/keys13.jpg</file> <file alias="error.png">resource/icons/error.png</file> + <file alias="info.png">resource/icons/info.png</file> + <file alias="warning.png">resource/icons/warning.png</file> <file alias="button_cancel.png">resource/icons/button_cancel.png</file> <file alias="button_cut.png">resource/icons/button_cut.png</file> <file alias="button_ok.png">resource/icons/button_ok.png</file> diff --git a/include/MainWindow.h b/include/MainWindow.h index 48d77d25..c5937e0d 100644 --- a/include/MainWindow.h +++ b/include/MainWindow.h @@ -26,15 +26,16 @@ #define __GPGWIN_H__ #include "gpg/GpgConstants.h" -#include "ui/Attachments.h" +#include "ui/widgets/Attachments.h" #include "ui/KeyMgmt.h" -#include "ui/TextEdit.h" +#include "ui/widgets/TextEdit.h" #include "ui/FileEncryptionDialog.h" #include "ui/SettingsDialog.h" #include "ui/AboutDialog.h" #include "ui/widgets/InfoBoardWidget.h" #include "ui/FindWidget.h" #include "ui/Wizard.h" +#include "ui/KeyUploadDialog.h" #include "gpg/result_analyse/SignResultAnalyse.h" #include "gpg/result_analyse/EncryptResultAnalyse.h" @@ -175,6 +176,11 @@ private slots: void slotFileVerify(); /** + * @details Open File Opera Tab + */ + void slotOpenFileTab(); + + /** * @details Open settings-dialog. */ void slotOpenSettingsDialog(); @@ -279,7 +285,7 @@ private: QToolBar *keyToolBar; /** Toolbar holding key operations */ QToolButton *importButton; /** Toolbutton for import dropdown menu in toolbar */ QToolButton *fileEncButton; /** Toolbutton for file cryption dropdown menu in toolbar */ - QDockWidget *keylistDock; /** Encrypt Dock*/ + QDockWidget *keyListDock; /** Encrypt Dock*/ QDockWidget *attachmentDock; /** Attachment Dock */ QDockWidget *infoBoardDock; @@ -308,7 +314,7 @@ private: QAction *quoteAct; /** Action to quote text */ QAction *cutAct; /** Action to cut text */ QAction *pasteAct; /** Action to paste text */ - QAction *selectallAct; /** Action to select whole text */ + QAction *selectAllAct; /** Action to select whole text */ QAction *findAct; /** Action to find text */ QAction *undoAct; /** Action to undo last action */ QAction *redoAct; /** Action to redo last action */ @@ -338,6 +344,7 @@ private: GpgME::GpgContext *mCtx; /**< TODO */ KeyMgmt *keyMgmt; /**< TODO */ KeyServerImportDialog *importDialog; /**< TODO */ + bool attachmentDockCreated; bool restartNeeded; }; diff --git a/include/gpg/GpgContext.h b/include/gpg/GpgContext.h index eed7afe2..1e5334d1 100644 --- a/include/gpg/GpgContext.h +++ b/include/gpg/GpgContext.h @@ -77,6 +77,8 @@ namespace GpgME { bool exportKeys(QStringList *uidList, QByteArray *outBuffer); + bool exportKeys(const QVector<GpgKey> &keys, QByteArray &outBuffer); + bool generateKey(GenKeyInfo *params); bool generateSubkey(const GpgKey &key, GenKeyInfo *params); diff --git a/include/ui/FindWidget.h b/include/ui/FindWidget.h index 2e9c67b0..1142b649 100644 --- a/include/ui/FindWidget.h +++ b/include/ui/FindWidget.h @@ -25,7 +25,7 @@ #ifndef FINDWIDGET_H #define FINDWIDGET_H -#include "EditorPage.h" +#include "ui/widgets/EditorPage.h" /** * @brief Class for handling the find widget shown at buttom of a textedit-page diff --git a/include/ui/KeyImportDetailDialog.h b/include/ui/KeyImportDetailDialog.h index 49b52028..0c6f5813 100644 --- a/include/ui/KeyImportDetailDialog.h +++ b/include/ui/KeyImportDetailDialog.h @@ -33,7 +33,7 @@ class KeyImportDetailDialog : public QDialog Q_OBJECT public: - KeyImportDetailDialog(GpgME::GpgContext* ctx, GpgImportInformation result, QWidget *parent = 0); + KeyImportDetailDialog(GpgME::GpgContext *ctx, GpgImportInformation result, bool automatic, QWidget *parent = 0); private: void createGeneralInfoBox(); diff --git a/include/ui/KeyServerImportDialog.h b/include/ui/KeyServerImportDialog.h index 74ae864e..6fd45fc5 100644 --- a/include/ui/KeyServerImportDialog.h +++ b/include/ui/KeyServerImportDialog.h @@ -34,11 +34,16 @@ class KeyServerImportDialog : public QDialog { Q_OBJECT public: - KeyServerImportDialog(GpgME::GpgContext *ctx, KeyList *keyList, QWidget *parent = nullptr); + KeyServerImportDialog(GpgME::GpgContext *ctx, KeyList *keyList, bool automatic, + QWidget *parent); - void slotImport(QStringList keyIds); + KeyServerImportDialog(GpgME::GpgContext *ctx, QWidget *parent); - void slotImport(QStringList keyIds, const QUrl& keyserverUrl); + void slotImport(const QStringList& keyIds); + + void slotImport(const QStringList& keyIds, const QUrl& keyserverUrl); + + void slotImportKey(const QVector<GpgKey>& keys); private slots: @@ -57,23 +62,29 @@ private: void importKeys(QByteArray inBuffer); + void setLoading(bool status); + QPushButton *createButton(const QString &text, const char *member); QComboBox *createComboBox(); + bool mAutomatic; + QString appPath; QSettings settings; + GpgME::GpgContext *mCtx; - KeyList *mKeyList; - QLineEdit *searchLineEdit; - QComboBox *keyServerComboBox; - QLabel *searchLabel; - QLabel *keyServerLabel; - QLabel *message; - QLabel *icon; - QPushButton *closeButton; - QPushButton *importButton; - QPushButton *searchButton; + KeyList *mKeyList{}; + QLineEdit *searchLineEdit{}; + QComboBox *keyServerComboBox{}; + QProgressBar *waitingBar; + QLabel *searchLabel{}; + QLabel *keyServerLabel{}; + QLabel *message{}; + QLabel *icon{}; + QPushButton *closeButton{}; + QPushButton *importButton{}; + QPushButton *searchButton{}; QTableWidget *keysTable{}; QNetworkAccessManager *qnam{}; diff --git a/include/ui/KeyUploadDialog.h b/include/ui/KeyUploadDialog.h new file mode 100644 index 00000000..013c0b72 --- /dev/null +++ b/include/ui/KeyUploadDialog.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_KEYUPLOADWIDGET_H +#define GPGFRONTEND_KEYUPLOADWIDGET_H + +#include "GpgFrontend.h" +#include "gpg/GpgContext.h" + +class KeyUploadDialog : public QDialog { +Q_OBJECT +public: + KeyUploadDialog(GpgME::GpgContext *ctx, const QVector<GpgKey> &keys, QWidget *parent = nullptr); + +private slots: + + void uploadKeyToServer(QByteArray &keys); + + void slotUploadFinished(); + +private: + + QString appPath; + QSettings settings; + QByteArray mKeyData; + +}; + + +#endif //GPGFRONTEND_KEYUPLOADWIDGET_H diff --git a/include/ui/VerifyDetailsDialog.h b/include/ui/VerifyDetailsDialog.h index a1f28e5d..ece2f1e7 100644 --- a/include/ui/VerifyDetailsDialog.h +++ b/include/ui/VerifyDetailsDialog.h @@ -25,7 +25,7 @@ #ifndef __VERIFYDETAILSDIALOG_H__ #define __VERIFYDETAILSDIALOG_H__ -#include "ui/EditorPage.h" +#include "ui/widgets/EditorPage.h" #include "ui/widgets/VerifyKeyDetailBox.h" class VerifyDetailsDialog : public QDialog { diff --git a/include/ui/keypair_details/KeyPairDetailTab.h b/include/ui/keypair_details/KeyPairDetailTab.h index ad0b13f6..6d041f97 100644 --- a/include/ui/keypair_details/KeyPairDetailTab.h +++ b/include/ui/keypair_details/KeyPairDetailTab.h @@ -27,10 +27,13 @@ #include "GpgFrontend.h" #include "gpg/GpgContext.h" + +#include "ui/KeyUploadDialog.h" +#include "ui/KeyServerImportDialog.h" #include "KeySetExpireDateDialog.h" class KeyPairDetailTab : public QWidget { - Q_OBJECT +Q_OBJECT /** * @details Return QString with a space inserted at every fourth character @@ -39,6 +42,8 @@ class KeyPairDetailTab : public QWidget { */ static QString beautifyFingerprint(QString fingerprint); + void createKeyServerOperaMenu(); + private slots: /** @@ -55,6 +60,10 @@ private slots: void slotRefreshKeyInfo(); + void slotUploadKeyToServer(); + + void slotUpdateKeyToServer(); + private: QString *keyid; /** The id of the key the details should be shown for */ @@ -80,8 +89,10 @@ private: QLabel *actualUsageVarLabel; QLabel *masterKeyExistVarLabel; + QMenu *keyServerOperaMenu; + public: - explicit KeyPairDetailTab(GpgME::GpgContext *ctx, const GpgKey& mKey, QWidget *parent = nullptr); + explicit KeyPairDetailTab(GpgME::GpgContext *ctx, const GpgKey &mKey, QWidget *parent = nullptr); }; diff --git a/include/ui/Attachments.h b/include/ui/widgets/Attachments.h index 19b6ef37..00433028 100644 --- a/include/ui/Attachments.h +++ b/include/ui/widgets/Attachments.h @@ -25,7 +25,7 @@ #ifndef __ATTACHMENTS_H__ #define __ATTACHMENTS_H__ -#include "AttachmentTableModel.h" +#include "ui/AttachmentTableModel.h" class Attachments : public QWidget { Q_OBJECT diff --git a/include/ui/EditorPage.h b/include/ui/widgets/EditorPage.h index a06d6cd6..a06d6cd6 100644 --- a/include/ui/EditorPage.h +++ b/include/ui/widgets/EditorPage.h diff --git a/include/ui/widgets/FilePage.h b/include/ui/widgets/FilePage.h new file mode 100644 index 00000000..6585bed9 --- /dev/null +++ b/include/ui/widgets/FilePage.h @@ -0,0 +1,56 @@ +/** + * 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_FILEPAGE_H +#define GPGFRONTEND_FILEPAGE_H + +#include <GpgFrontend.h> + +class FilePage : public QWidget { +Q_OBJECT +public: + + explicit FilePage(QWidget* parent = nullptr); + + void getSelected(QString &path); + + +private slots: + + void fileTreeViewItemClicked(const QModelIndex &index); + void fileTreeViewItemDoubleClicked(const QModelIndex &index); + + void slotUpLevel(); + +private: + QFileSystemModel *dirModel; + QTreeView *dirTreeView; + QString mPath; + + QPushButton *upLevelButton; + +}; + + +#endif //GPGFRONTEND_FILEPAGE_H diff --git a/include/ui/HelpPage.h b/include/ui/widgets/HelpPage.h index 0b5e4ca3..0b5e4ca3 100644 --- a/include/ui/HelpPage.h +++ b/include/ui/widgets/HelpPage.h diff --git a/include/ui/widgets/InfoBoardWidget.h b/include/ui/widgets/InfoBoardWidget.h index 88c7cb04..9d3dbd16 100644 --- a/include/ui/widgets/InfoBoardWidget.h +++ b/include/ui/widgets/InfoBoardWidget.h @@ -25,7 +25,7 @@ #ifndef __VERIFYNOTIFICATION_H__ #define __VERIFYNOTIFICATION_H__ -#include "ui/EditorPage.h" +#include "EditorPage.h" #include "ui/VerifyDetailsDialog.h" #include "gpg/result_analyse/VerifyResultAnalyse.h" diff --git a/include/ui/widgets/KeyList.h b/include/ui/widgets/KeyList.h index 295ba224..413d0969 100644 --- a/include/ui/widgets/KeyList.h +++ b/include/ui/widgets/KeyList.h @@ -85,9 +85,10 @@ public: void setChecked(QStringList *keyIds); - //QStringList *getPrivateChecked(); QStringList *getSelected(); + GpgKey getSelectedKey(); + [[maybe_unused]] static void markKeys(QStringList *keyIds); [[maybe_unused]] bool containsPrivateKeys(); @@ -96,12 +97,13 @@ public slots: void slotRefresh(); - void uploadKeyToServer(QByteArray *keys); - private: void importKeys(QByteArray inBuffer); + QString appPath; + QSettings settings; + GpgME::GpgContext *mCtx; QTableWidget *mKeyList; QMenu *popupMenu; @@ -117,11 +119,8 @@ private: private slots: - void uploadFinished(); - void slotDoubleClicked(const QModelIndex &index); - protected: void contextMenuEvent(QContextMenuEvent *event) override; diff --git a/include/ui/TextEdit.h b/include/ui/widgets/TextEdit.h index 8219814b..f98da145 100644 --- a/include/ui/TextEdit.h +++ b/include/ui/widgets/TextEdit.h @@ -25,9 +25,10 @@ #ifndef __TEXTEDIT_H__ #define __TEXTEDIT_H__ -#include "ui/EditorPage.h" -#include "ui/HelpPage.h" -#include "QuitDialog.h" +#include "ui/widgets/EditorPage.h" +#include "ui/widgets/HelpPage.h" +#include "ui/widgets/FilePage.h" +#include "ui/QuitDialog.h" /** @@ -59,22 +60,22 @@ public: */ bool maybeSaveAnyTab(); - int tabCount() const; + [[nodiscard]] int tabCount() const; /** * @details textpage of the currently activated tab * @return \li reference to QTextEdit if tab has one * \li 0 otherwise (e.g. if helppage) */ - QTextEdit *curTextPage() const; + [[nodiscard]] QTextEdit *curTextPage() const; - QTextBrowser *curHelpPage() const; + [[nodiscard]] QTextBrowser *curHelpPage() const; /** * @details List of currently unsaved tabs. * @returns QHash<int, QString> Hash of tabindexes and title of unsaved tabs. */ - QHash<int, QString> unsavedDocuments() const; + [[nodiscard]] QHash<int, QString> unsavedDocuments() const; QTabWidget *tabWidget; /** Widget containing the tabs of the editor */ @@ -84,7 +85,7 @@ public slots: * @details Return pointer to the currently activated tabpage. * */ - EditorPage *slotCurPage() const; + [[nodiscard]] EditorPage *slotCurPage() const; /** * @details Insert a ">" at the begining of every line of current textedit. @@ -137,6 +138,11 @@ public slots: void slotNewHelpTab(const QString& title, const QString& path) const; /** + * New File Tab to do file operation + */ + void slotNewFileTab() const; + + /** * @details put a * in front of current tabs title, if current textedit is modified */ void slotShowModified() const; @@ -240,8 +246,7 @@ private slots: void slotSelectAll() const; protected: - // void dragEnterEvent(QDragEnterEvent *event); - // void dropEvent(QDropEvent* event); + /**************************************************************************************** * Name: saveFile * Description: Saves the content of currentTab to the file filename diff --git a/resource/COPYING b/resource/COPYING index b4e13b15..78af1af5 100644 --- a/resource/COPYING +++ b/resource/COPYING @@ -258,7 +258,7 @@ in one of these ways: (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a + dirModel, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no diff --git a/resource/conf/gpgfrontend.ini b/resource/conf/gpgfrontend.ini index 111729db..41285185 100644 --- a/resource/conf/gpgfrontend.ini +++ b/resource/conf/gpgfrontend.ini @@ -1,6 +1,6 @@ [keyserver] keyServerList=http://keys.gnupg.net, https://keyserver.ubuntu.com, http://pool.sks-keyservers.net -defaultKeyServer=http://keys.gnupg.net +defaultKeyServer=https://keyserver.ubuntu.com [int] lang=zh diff --git a/resource/help/css/style.css b/resource/help/css/style.css deleted file mode 100644 index 2f120f03..00000000 --- a/resource/help/css/style.css +++ /dev/null @@ -1,127 +0,0 @@ -#menu { - list-style-type: none; - float: left; - border-right: 1px dotted #aaa; - background-color: #fff; - padding: 1.2em 0.5em; - width: 10em; - margin-left: 0.2em; - text-align:center; - height: 30em; -} - -#menu li { - margin: 0.3em 0.2em; - padding: 0.2em; - /*border-top: 1px dotted; - border-bottom: 1px dotted;*/ - background-color: #d9dfe8; - cursor: pointer; -} - -#menu li:hover { - background-color: #b9c4d5; -} - -#menu a { - font-family: arial, helvetica, sans-serif; - text-decoration: none; - color: #000; - width: 9em; -} - -#menu li.active { - background-color: #7b90af; -} - -#menu li.submenu { - margin: 0.2em 0.2em 0.2em 1.5em; - padding: 0.1em 0.4em; - text-align:right; - font-size: 0.9em; -} - -#content { - font-family: arial, helvetica, sans-serif; - font-size: 1em; - margin-left: 0em; -} - -#content li { - text-align:left; -} - -#logo { - margin-left: 0.7em; -} - -p { - text-align:justify; -} - -h1 { - font-size:1.2em; -} - -h2 { - font-size:1.0em; -} - -h3 { - font-size:0.8em; - font-weight:normal; -} - -h4 { - font-size:0.95em; -} - -a {color:#214478; text-decoration:none;} -a:hover {text-decoration:underline;} - -#lightbox{ - background-color:#eee; - padding: 10px; - border-bottom: 2px solid #666; - border-right: 2px solid #666; - } -#lightboxDetails{ - font-size: 0.8em; - padding-top: 0.4em; - } -#lightboxCaption{ float: left; } -#keyboardMsg{ float: right; } - -#lightbox img{ border: none; } -#overlay img{ border: none; } - -#overlay{ background-image: url(overlay.png); } - -.downloadTable { font-size: 0.95em; } -.downloadTable th { - border-bottom: 1px solid #000; - border-left: 2em solid #fff; - border-right: 2em solid #fff;} -.downloadTable td { padding: 0.1em 0.5em; text-align: left;} -.downloadTable tr:hover td { background-color: #eef; } - -.code { - font-family: monospace; -} - -p.code { - border: 1px dashed; - margin: 0.5em; - padding: 0.5em; - background-color: #d9dfe8; - } - -.newsentry { - /* background: #f2f4f7; */ - /*padding: 0.2em;*/ - margin: 0.5em 0em; - padding: 0 0.5em; - border: 1px dotted #aaa; - background-color: #d9dfe8; -} - diff --git a/resource/help/docu.es.html b/resource/help/docu.es.html deleted file mode 100644 index 7772f38f..00000000 --- a/resource/help/docu.es.html +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> - -<head> -<title>gpgusb-team - documentación</title> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<meta name="author" content="gpgusb-team"> -<meta name="keywords" content="gpgusb, gnupg, gpg, encryption, decryption, portable, usb, documentation"> -<meta name="description" content="gpg4usb is a very easy to use and small portable editor to encrypt and decrypt any text-message or -file you want."> -<meta name="robots" content="follow"> -<link rel="stylesheet" type="text/css" href="css/style.css" media="screen" /> -<link rel="stylesheet" type="text/css" href="css/print.css" media="print" /> -</head> - -<body> - -<div style="width:800px;text-align:center;float:center"> - -<div id="content"> -<h1>Documentación</h1> - -<p>Aqui usten encontrará algunas guías de principiantes para el gpg4usb.</p> -<h4>Usando gpg4usb</h4> -<ul> - <li><a href="docu_concepts.html">Conceptos de GPG</a></li> - <li><a href="docu_keygen.html">Generando una Llave</a></li> - <li><a href="docu_encrypt.html">Cifrando Texto</a></li> - <li><a href="docu_decrypt.html">Descifrando Texto</a></li> - <li><a href="docu_sign.html">Firmando Texto</a></li> - <li><a href="docu_verify.html">Verificando Texto</a></li> - <li><a href="docu_encrypt_file.html">Cifrando un Archivo</a></li> - <li><a href="docu_decrypt_file.html">Descifrando un Archivo</a></li> - <li><a href="docu_import_key.html">Importando LLaves</a></li> - <li><a href="docu_export_key.html">Exportando LLaves Públicas</a></li> - <li><a href="docu_export_key_private.html">Exportando Llaves Privadas</a></li> -</ul> - -</div> -</div> -</body> -</html> diff --git a/resource/help/docu.html b/resource/help/docu.html deleted file mode 100644 index ceef1de4..00000000 --- a/resource/help/docu.html +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> - -<head> -<title>gpgusb-team - documentation</title> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<meta name="author" content="gpgusb-team"> -<meta name="keywords" content="gpgusb, gnupg, gpg, encryption, decryption, portable, usb, documentation"> -<meta name="description" content="gpg4usb is a very easy to use and small portable editor to encrypt and decrypt any text-message or -file you want."> -<meta name="robots" content="follow"> -<link rel="stylesheet" type="text/css" href="css/style.css" media="screen" /> -<link rel="stylesheet" type="text/css" href="css/print.css" media="print" /> -</head> - -<body> - -<div style="width:800px;text-align:center;float:center"> - -<div id="content"> -<h1>Documentation</h1> - -<p>Here you find some beginner guides to gpg4usb.</p> -<h4>Using gpg4usb</h4> -<ul> - <li><a href="docu_concepts.html">Concepts of GPG</a></li> - <li><a href="docu_keygen.html">Generating A Key</a></li> - <li><a href="docu_encrypt.html">Encrypting Text</a></li> - <li><a href="docu_decrypt.html">Decrypting Text</a></li> - <li><a href="docu_sign.html">Sign Text</a></li> - <li><a href="docu_verify.html">Verify Text</a></li> - <li><a href="docu_encrypt_file.html">Encrypting A File</a></li> - <li><a href="docu_decrypt_file.html">Decrypting A File</a></li> - <li><a href="docu_import_key.html">Importing Keys</a></li> - <li><a href="docu_export_key.html">Exporting Public Keys</a></li> - <li><a href="docu_export_key_private.html">Exporting Private Keys</a></li> -</ul> - -</div> -</div> -</body> -</html> diff --git a/resource/help/docu_concepts.es.html b/resource/help/docu_concepts.es.html deleted file mode 100644 index 5657e90c..00000000 --- a/resource/help/docu_concepts.es.html +++ /dev/null @@ -1,122 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> - -<head> -<title>gpg4usb - Documentacion</title> -<link rel="stylesheet" type="text/css" href="css/style.css" media="screen" /> -<link rel="stylesheet" type="text/css" href="css/print.css" media="print" /> -</head> - -<body> - -<div style="width:800px;text-align:center;float:center"> -<a href="docu.html">Principal</a> | Siguiente: <a href="docu_keygen.html">Generando una Llave</a> -<hr/> - -<div id="content"> - -<H2><A NAME="GPG-Minihowto-Concept"></A> <A NAME="s1">1.</A>Conceptos</H2> -<H2><A NAME="ss1.1">1.1</A> Cifrado con LLave Publica -</H2> -<P>Los metodos clasicos de cifrado solo usan una llave para el cifrado. El -remitente cifra el mensaje con esa llave. Para poder descifrarlo, el destinatario -necesita tener esa misma llave. Esta llave se le debe dar al destinatario de forma -que otras personas no puedan conseguirla. Si alguien consigue la llave, este metodo -de cifrado es inutil.</P> -<P>El uso de las llamadas LLaves Publicas puede resolver este problema. La LLave Publica -es un concepto que utiliza dos llaves. Una llave es una LLave Publica que se puede -difundir a traves de cualquier medio y que puede ser conseguida por cualquiera. La -otra llave es la LLave Privada. Esta llave es secreta y no puede ser difundida. Esta -llave solo esta disponible para el propietario que la ha creado. Cuando el sistema esta -bien implementado, la llave secreta no puede averiguar desde la llave publica. Ahora, -el remitente cifrara el mensaje con la llave publica del destinatario. -El descifrado se hara con la llave secreta del destinatario.</P> -<P>En este concepto, es crucial que la llave secreta permanezca secreta y no deberia -darse o estar disponible para nadie, salvo el propietario de esta llave. NO ENVIE ESTA -LLAVA POR INTERNET. También es muy aconsejable usar GnuPG con <CODE>telnet</CODE> -(usted deberia considerar no usar nunca telnet debido a los altos riesgos de seguridadad).</P> -<H2><A NAME="ss1.2">1.2</A> Firmas Digitales -</H2> -<P>Con el fin de probar que un mensaje ha sido realmente enviado por su remitente, se -invento el concepto de Firmas Digitales. Como el nombre dice, un mensaje es firmado -digitalmente por el remitente. Con esta firma, usted puede comprobar la autenticidad de -un mensaje. Usando esto se reducira el riesgo de "Caballos de Troya" (un mensaje que dice ser -un parche para un cierto problema pero que realmente contiene un virus o hace algo perjudicial -para los datos en su computador). Tambien se pueden verificar informaciones o datos como -procedentes de una fuente legitima y, de esta forma, pueden ser considerados como verdaderos. -</P> -<P>Una firma digital se hace a traves de una combinacion de la llave secreta y el texto. Usando -la llave publica del remitente, se puede verificar el mensaje. No solo se podra comprobar si -procede del remitente correcto sino tambien el texto enviado. Asi, usted sabe que el mensaje -viene de su remitente y que no ha sido modificado durante el proceso de envio. -</P> -<H2><A NAME="ss1.3">1.3</A> Red de Confianza -</H2> -<P>Un punto debil de los algoritmos tipo Llave Publica es la difusion de las llaves publicas. -Un usuario podria poner en circulacion una llave publica con una falsa ID de usuario. Si se -escriben mensajes con esta llave particular, el intruso puede descifrar y leer esos mensajes. -Si el intruso pasa despues ese mensaje codificado con una llave publica genuina al destinatario -real, este ataque pasaria desapercibido.</P> -<P>La solucion PGP (y por tanto la solucion GnuPG) estriba en firmar las llaves. Una llave -publica puede ser firmada por otra persona. Esta firma asegura que la llave usada por el UID -(Identificacion de Usuario) realmente pertenece a la persona que dice ser. Le corresponde -entonces al usuario del GnuPG establecer en que medida confia en esa firma. Usted puede -considerar una llave totalmente fiable cuando usted confia en el remitente de la llave y sabe con -seguridad que la llave realmente pertenece a esa persona. Solo cuando usted confia en la llave -del firmante, usted puede confiar en la firma. Para estar absolutamente seguros de que la llave -es correcta, usted tiene que comparar la huella digital por medio de canales seguros antes de -otorgar una certeza absoluta..</P> -<H2><A NAME="ss1.4">1.4</A> Limites de la Seguridad -</H2> -<P>Si usted tiene datos que le gustaria que permanecieran confidenciales, esto es algo mas que -simplemente determinar que algoritmo de cifrado hay que usar. Usted deberia pensar en su sistema -de seguridad en general. Basicamente, consideramos que el PGP es seguro y, cuando escribo este -documento, no se conocen casos de ruptura del PGP. Pero eso no significa que todo su cifrado -sea seguro (por ejemplo, la NSA no me notificaria si ellos han crakeado alguna vez el PGP, ni -tampoco otras personas que lo hayan hecho por motivos maliciosos). Pero, aun en el caso de que -el PGP sea totalmente "inhackeable", se pueden usar otros medios para atacar la seguridad. A -primeros de Febrero de 1999, se habia encontrado un "Caballo de Troya" que buscaba llaves secretas -PGP en el disco duro y las enviaba fuera por FTP. Si la password se ha escogido mal, la llave -secreta se puede descifrar facilmente.</P> -<P>Otra posibilidad tecnica (aunque mas dificil) de ruptura PGP es un "Caballo de Troya" que copie -las pulsaciones del teclado. Tambien es posible (pero muy dificil) copiar el contenido de una -pantalla. En estos casos, no es necesario romper el codigo de mensajes cifrados. Por todos estos -riesgos, se necesita tener un buen y bien pensado plan de seguridad que se ponga en practica..</P> -<P>No se trata de crear una paranoia entre la gente, sino mostrar que hay que hacer mucho para -ser mas seguro. Lo mas importante es darse cuenta de que el cifrado es solo un paso de seguridad y -no la solucion total. Los "Caballos de Troya" que aparecieron en 1999 en los virus "Melissa" -demostraron que la mayoria de las empresas no estaban preparadas para esto.</P> - -<hr> - -<p> -Renuncia de responsabilidad: el original de este capitulo esta en <a href="http://www.gnupg.org/documentation/howtos.html">GnuPG MiniHOWTO</a> -</p> -<p> -Copyright © 1999 Brenno J.S.A.A.F. de Winter (version inglesa) Copyright © 1999 -Michael Fischer v. Mollard (version original alemana) Copyright © 2002 Arjen Baart -(version holandesa) Copyright © 2004 Baris Cicek (version turca) -</p><p> -Este documento es una documentacion libre y usted puede distribuirla y/o modificarla bajo -los terminos de la GNU Library General Public License, tal como la publica la Free Software -Foundation; tanto en su version 2 de Licencia o (en su opinion) cualquier version -posterior. -</p><p> -Esta libreria se distribuye con la esperanza de que sera util, pero SIN NINGUNA GARANTIA; -incluso sin la garantia implicita de COMERCIALIZACION o IDONEIDAD PARA UN PROPOSITO PARTICULAR. -Vea la GNU Library General Public License para mas detalles. -</p><p> -Usted deberia haber recibido una copia de la GNU Library General Public License junto con esta -libreria; si no la tiene, escriba a la Free Software Foundation, Inc., 59 Temple Place -- Suite 330, Boston, MA 02111-1307, USA. -</p> -</hr> - -</div> -<hr/> -<a href="docu.html">Principal</a> | Siguiente: <a href="docu_keygen.html">Generando una Llave</a> -</div> -</body> -</html> - diff --git a/resource/help/docu_concepts.html b/resource/help/docu_concepts.html deleted file mode 100644 index fbfe8cad..00000000 --- a/resource/help/docu_concepts.html +++ /dev/null @@ -1,129 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> - -<head> -<title>gpg4usb - Documentation</title> -<link rel="stylesheet" type="text/css" href="css/style.css" media="screen" /> -<link rel="stylesheet" type="text/css" href="css/print.css" media="print" /> -</head> - -<body> - -<div style="width:800px;text-align:center;float:center"> -<a href="docu.html">Main</a> | Next: <a href="docu_keygen.html">Generating A Key</a> -<hr/> - -<div id="content"> - -<H2><A NAME="GPG-Minihowto-Concept"></A> <A NAME="s1">1.</A>Concepts</H2> -<H2><A NAME="ss1.1">1.1</A> Public Key Encryption -</H2> -<P>Classic methods for encryption only use one key for encryption. The sender -encrypts the message with this key. To be able to decrypt this the receiver -needs to have this very same key. This key must have been given to the -receiver in a way, that others won't have had the opportunity to obtain this -key. If somebody else does have the key, this method of encryption is useless.</P> -<P>The use of so-called Public Keys can solve this problem. Public Keys is a -concept where two keys are involved. One key is a Public Key that can be -spread through all sorts of media and may be obtained by anyone. The other -key is the Private Key. This key is secret and cannot be spread. This key is -only available to the owner. When the system is well implemented the secret -key cannot be derived from the public key. Now the sender will crypt the -message with the public key belonging to the receiver. -Then decryption will be done with the secret key of the -receiver.</P> -<P>Crucial in this concept is that the secret key remains a secret and should -not be given away or become available to anyone else but the owner of this -key. YOU CANNOT SEND THIS KEY OVER THE INTERNET. Also it is very unwise to -use GnuPG over <CODE>telnet</CODE> (you might consider never to use telnet based -on the high security risks).</P> -<H2><A NAME="ss1.2">1.2</A> Digital Signatures -</H2> -<P>In order to prove that a message was really sent by the alleged sender the -concept of Digital Signatures was invented. As the name says a message is -digitally signed by the sender. By using this signature you can check the -authenticity of a message. Using this will reduce the risk for Trojan horses -(a message that claims to be a patch to a certain problem but actually contains -a virus or does something bad with data on your computer). Also information or -data can be verified as coming from a legitimate source and thus be regarded -as real.</P> -<P>A digital signature is made through a combination of the secret key and the -text. Using the senders public key the message can be verified. Not only will -be checked if the correct sender is involved, also the content will be checked. -So you know that the message comes from the sender and has not been changed -during the transportation process.</P> -<H2><A NAME="ss1.3">1.3</A> Web of trust -</H2> -<P>A weak point of the Public key algorithms is the spreading of the public keys. -A user could bring a public key with false user ID in circulation. If with -this particular key messages are made, the intruder can decode and read the -messages. If the intruder passes it on then still with a genuine public key coded to the -actual recipient, this attack is not noticeable.</P> -<P>The PGP solution (and because of that automatically the GnuPG solution) -exists in signing codes. A public key can be signed by other people. This -signature acknowledges that the key used by the UID (User Identification) -actually belongs to the person it claims to be. It is then up to the user of -GnuPG how far the trust in the signature goes. You can consider a key as -trustworthy when you trust the sender of the key and you know for sure that -the key really belongs to that person. Only when you can trust the key of the -signer, you can trust the signature. To be absolutely positive that the key is -correct you have to compare the finger print over reliable channels before -giving absolute trust.</P> -<H2><A NAME="ss1.4">1.4</A> Boundaries to security -</H2> -<P>If you have data that you would like to remain confidential, there is more to -it than just determining which encoding algorithm to use. You should be thinking -about your system security in general. Basically we consider PGP to be secure -and as I write this documents no incidents of PGP being cracked are known to me. -But that doesn't mean that all encoding must be safe then (for instance the NSA -wouldn't notify me if they cracked PGP somehow, neither would other people who -crack for real malicious grounds). But even if the PGP is fully 'unhackable', -other means can be used to attack the security. Early February 1999 a Trojan Horse had -been found that searched for secret PGP keys on the hard disk and FTP-ed them -away. If the password has been chosen badly the secret key can easily be -cracked.</P> -<P>Another technical possibility (although more difficult) is a Trojan Horse that -broadcasts keyboard entries. Also possible (but very difficult) is to pass -the content of a screen along. Then no cracking of scrambled messages needs to -be done. For all these risks there need to be a good, well-thought security plan -that is actually deployed.</P> -<P>It is not a goal to create paranoia among people, but to point out that a lot -needs to be done to be more secure. The most important thing is to realize that -encryption is just one step to security and is not a total solution. Trojan -horses as they appeared in the Melissa virus in March 1999 proved that many -companies are not prepared for that.</P> - - -<hr> - -<p> -Disclaimer: this chapter originates from the <a href="http://www.gnupg.org/documentation/howtos.html">GnuPG MiniHOWTO</a> -</p> -<p> -Copyright © 1999 Brenno J.S.A.A.F. de Winter (English version) Copyright © 1999 -Michael Fischer v. Mollard (original German version) Copyright © 2002 Arjen Baart -(Dutch version) Copyright © 2004 Baris Cicek (Turkish version) -</p><p> -This document is free documentation you can redistribute it and/or modify it under -the terms of the GNU Library General Public License as published by the Free -Software Foundation; either version 2 of the License, or (at your option) any -later version. -</p><p> -This library 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 Library General Public License for more details. -</p><p> -You should have received a copy of the GNU Library General Public License along -with this library; if not, write to the Free Software Foundation, Inc., 59 Temple -Place - Suite 330, Boston, MA 02111-1307, USA. -</p> -</hr> - -</div> -<hr/> -<a href="docu.html">Main</a> | Next: <a href="docu_keygen.html">Generating A Key</a> -</div> -</body> -</html> - diff --git a/resource/help/docu_decrypt.es.html b/resource/help/docu_decrypt.es.html deleted file mode 100644 index f66337ec..00000000 --- a/resource/help/docu_decrypt.es.html +++ /dev/null @@ -1,96 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> - -<head> -<!--Translated using CatsCradle 3.91 [SourceID:docu_decry~waWhO.html] //--> -<title>gpg4usb - - Documentación</title> -<link rel="stylesheet" type="text/css" href="css/style.css" media="screen" /> -<link rel="stylesheet" type="text/css" href="css/print.css" media="print" /> -</head> - -<body> - -<div style="width:800px;text-align:center;float:center"> -Previo: <a href="docu_encrypt.html">Cifrar - un mensaje</a> | <a href="docu.html">Principal</a> | - Siguiente: <a href="docu_sign.html">Firmar - un mensaje</a> -<hr/> - -<div id="content"> - -<h1>Cómo - descifrar un texto</h1> -<p><b>NOTA:</b> Usted - sólo puede descifrar textos si tiene una llave privada y el texto está cifrado con - ella. Usted puede identificar las llaves privadas por la imagen 'manojo de llaves' - que está delante del nombre en el listado de llaves (en este ejemplo es Bobby):</p> -<p> -<IMG SRC="img/docu/private_key_note.jpg" alt="Llave privada: consejo" width="152" height="92"/></p> - -<p> -Hay - cinco pasos para descifrar un texto. Suponemos que Bobby quiere descifrar un texto - que está cifrado con su llave pública. </p> -<h4>PASO - 1: Copie el texto en la caja de edición de texto</h4> -<p> -Primero - Boby copia el texto en la caja de edición de texto. </p> - -<p> -<IMG SRC="img/docu/decrypt_step1.jpg" alt="copiar a la caja de edición de texto" width="455" height="266"/></p> -<p>Hay veces que, al copiar el mensaje cifrado de un correo electrónico, las líneas de texto aparecen separadas por líneas en blanco. Si se intenta descifrar el texto tal como está nos saldrá un error. Para evitar esto, primero pulsar el botón 'Retirar espaciamiento' de la barra de herramientas y después seguir el Paso 2.</p> -<p><img src="img/Retirar_doble_espacios.jpg" width="500" height="267" border="1" /></p> -<h4>PASO - 2: Escoger la llave(s)</h4> -<p> -Segundo, - escoge su propia llave. </p> -<p> -<IMG SRC="img/docu/decrypt_step2.jpg" alt="escoger llave" width="405" height="239"/></p> - - -<h4>PASO - 3: Descifrar el mensaje</h4> -<p> -Ahora, - Bobby pulsa el botón 'Descifrar' para descifrar el texto. Alternativamente, el podría - usar el atajo 'Ctrl+D' o usar el menú 'Cifrar - Descifrar'.<br/> -<b>NOTA:</b> Usted - sólo puede descifrar textos para los cuales tiene la llave privada. Las llaves privadas - son aquellas que tienen un icono 'llave' delante de su nombre en el listado de llaves. </p> -<p> -<IMG SRC="img/docu/decrypt_step3.jpg" alt="descifrar mensaje" width="413" height="241"/></p> - -<h4>PASO - 4: Entre la contraseña</h4> -<p> -Ahora - Bobby introduce la contraseña de su llave. </p> -<p> -<IMG SRC="img/docu/decrypt_step4.jpg" alt="introducir contraseña"/> -</p> - - -<h4>PASO - 5: Leer el texto</h4> -<p> -Ahora - Bobby puede leer el texto cifrado. </p> -<p> -<IMG SRC="img/docu/decrypt_step5.jpg" alt="leer texto cifrado"/> -</p> - - -</div> -<hr/> -Previo: <a href="docu_encrypt.html">Cifrar - un mensaje</a> | <a href="docu.html">Principal</a> | - Siguiente: <a href="docu_sign.html">Firmar - un mensaje</a> -</div> -</body> -</html> diff --git a/resource/help/docu_decrypt.html b/resource/help/docu_decrypt.html deleted file mode 100644 index d8b91589..00000000 --- a/resource/help/docu_decrypt.html +++ /dev/null @@ -1,78 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> - -<head> -<title>gpg4usb - Documentation</title> -<link rel="stylesheet" type="text/css" href="css/style.css" media="screen" /> -<link rel="stylesheet" type="text/css" href="css/print.css" media="print" /> -</head> - -<body> - -<div style="width:800px;text-align:center;float:center"> -Previous: <a href="docu_encrypt.html">Encrypt a message</a> | <a href="docu.html">Main</a> | Next: <a href="docu_sign.html">Sign a message</a> -<hr/> - -<div id="content"> - -<h1>Howto decrypt a text</h1> -<p><b>NOTE:</b> You can only decrypt files, if you have one private key, the file is encrypted for. You can identify the private keys by the "bunch of keys"-image in front of the name in the keylist (in this case Bobby):</p> -<p> -<IMG SRC="img/docu/private_key_note.jpg" alt="private key hint"/> -</p> - -<p> -There are five steps for encrypting a text. We assume, that Bobby wants to decrypt a text, which is encrypted with his public key. -</p> -<h4>STEP 1: Copy the text to the textedit-field</h4> -<p> -First Bobby copies the text to the textedit-field. -</p> - -<p> -<IMG SRC="img/docu/decrypt_step1.jpg" alt="copy to textedit-field"/> -</p> - -<h4>STEP 2: Choose key(s)</h4> -<p> -Secondly he chooses his own key. -</p> -<p> -<IMG SRC="img/docu/decrypt_step2.jpg" alt="choose key"/> -</p> - - -<h4>STEP 3: Decrypt message</h4> -<p> -Now Bobby hits the decrypt button to decrypt the text. Alternatively he could use the shortcut Ctrl+D or use the menu crypto->decrypt.<br/> -<b>NOTE:</b> You can only decrypt texts, for which you have the private key. The private keys are those, with the key-icon in front of the Name in the keylist. -</p> -<p> -<IMG SRC="img/docu/decrypt_step3.jpg" alt="decrypt message"/> -</p> - -<h4>STEP 4: Enter passphrase</h4> -<p> -Now Bobby enters the passphrase of his key. -</p> -<p> -<IMG SRC="img/docu/decrypt_step4.jpg" alt="enter passphrase"/> -</p> - - -<h4>STEP 5: Read the text</h4> -<p> -Now Bobby can read the encrypted text. -</p> -<p> -<IMG SRC="img/docu/decrypt_step5.jpg" alt="read encrypted text"/> -</p> - - -</div> -<hr/> -Previous: <a href="docu_encrypt.html">Encrypt a message</a> | <a href="docu.html">Main</a> | Next: <a href="docu_sign.html">Sign a message</a> -</div> -</body> -</html> diff --git a/resource/help/docu_decrypt_file.es.html b/resource/help/docu_decrypt_file.es.html deleted file mode 100644 index 61b21458..00000000 --- a/resource/help/docu_decrypt_file.es.html +++ /dev/null @@ -1,99 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> -<head> -<!--Translated using CatsCradle 3.91 [SourceID:docu_decry~ufigg.html] //--> -<title>gpg4usb - - Documentación</title> -<link rel="stylesheet" type="text/css" href="css/style.css" media="screen" /> -<link rel="stylesheet" type="text/css" href="css/print.css" media="print" /> -</head> - -<body> - -<div style="width:800px;text-align:center;float:center"> -Previo: <a href="docu_encrypt_file.html">Cifrar - un archivo</a> | <a href="docu.html">Principal</a> | - Siguiente: <a href="docu_import_key.html">Importar - una llave</a> -<hr/> - - - - -<div id="content"> - -<h1>Cómo - descifrar un archivo</h1> -<p><b>NOTA:</b> Usted - sólo puede descifrar archivos si tiene una llave privada y el archivo está cifrado - con ella. Usted puede identificar las llaves privadas por la imagen 'manojo de llaves' - que está enfrente del nombre en el listado de llaves (en este ejemplo es Bobby):</p> -<p> -<IMG SRC="img/docu/private_key_note.jpg" alt="llave privada consejo"/> -</p> -<p> -Hay - cinco pasos para descifrar un archivo. Supongamos que Alice quiere descifrar un archivo - que ha sido cifrado para ella (es decir, se escogió su llave cuando se cifró). </p> -<h4>PASO - 1: Abrir el menú 'Cifrar' </h4> -<p> - </p> -<p> -<IMG SRC="img/docu/cryptfile_menu.jpg" alt="abrir menu cifrar"/> -</p> - -<h4>PASO - 2: Escoger descifrar archivo</h4> -<p> -Segundo, - ella escoge 'Descifrar archivo'. </p> -<p> -<IMG SRC="img/docu/decryptfile_choose_decrypt.jpg" alt="escoger descifrar"/> -</p> - - -<h4>PASO - 3: Escoger el archivo de entrada/salida </h4> -<p> -Ahora, - ella escoge el archivo de entrada/salida. El archivo de entrada ha de ser el archivo - cifrado. </p> -<p> -<IMG SRC="img/docu/decryptfile_input_outputfile.jpg" alt="escoger archivo entrada/salida"/> -</p> - -<h4>PASO - 4: Pulsar OK</h4> -<p> -Ahora - ella pulsa en botón 'OK'. </p> -<p> -<IMG SRC="img/docu/decryptfile_hit_ok.jpg" alt="pulsar ok"/> -</p> - -<h4>PASO - 5: Introducir la contraseña</h4> -<p> -Ella - introduce la contraseña de su llave y pulsa el botón 'OK'. </p> -<p> -<IMG SRC="img/docu/decryptfile_password.jpg" alt="introducir contraseña"/> -</p> -<p> -Después - aparece un mensaje 'ok' </p> -<p> -<IMG SRC="img/docu/decryptfile_okmessage.jpg" alt="mensaje ok"/> -</p> - -</div> -<hr/> -Previo: <a href="docu_encrypt_file.html">Cifrar - un archivo</a> | <a href="docu.html">Principal</a> | - Siguiente: <a href="docu_import_key.html">Importar - una llave</a> -</div> -</body> -</html> diff --git a/resource/help/docu_decrypt_file.html b/resource/help/docu_decrypt_file.html deleted file mode 100644 index 4516f12c..00000000 --- a/resource/help/docu_decrypt_file.html +++ /dev/null @@ -1,81 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> -<head> -<title>gpg4usb - Documentation</title> -<link rel="stylesheet" type="text/css" href="css/style.css" media="screen" /> -<link rel="stylesheet" type="text/css" href="css/print.css" media="print" /> -</head> - -<body> - -<div style="width:800px;text-align:center;float:center"> -Previous: <a href="docu_encrypt_file.html">Encrypt a file</a> | <a href="docu.html">Main</a> | Next: <a href="docu_import_key.html">Import a key</a> -<hr/> - - - - -<div id="content"> - -<h1>Howto decrypt a file</h1> -<p><b>NOTE:</b> You can only decrypt files, if you have one private key, the file is encrypted for. You can identify the private keys by the "bunch of keys"-image in front of the name in the keylist (in this case Bobby):</p> -<p> -<IMG SRC="img/docu/private_key_note.jpg" alt="private key hint"/> -</p> -<p> -There are five steps to decrypt a file. We assume, that Alice wants to decrypt a file, which is encrypted for her (that is, while encrytion her key was chosen). -</p> -<h4>STEP 1: Open file en-/decryption dialog </h4> -<p> -First Alice chooses the file cryption dialog in the menu. Alternatively, she could just hit the "File-Cryption"-button in the toolbar. -</p> -<p> -<IMG SRC="img/docu/cryptfile_menu.jpg" alt="open file cryption dialog"/> -</p> - -<h4>STEP 2: Choose decrypt</h4> -<p> -Secondly she chooses decrypt. -</p> -<p> -<IMG SRC="img/docu/decryptfile_choose_decrypt.jpg" alt="choose decrypt"/> -</p> - - -<h4>STEP 3: Choose input-/outputfile</h4> -<p> -Now she chooses the input- and outputfile. The inputfile has to be the encrypted file -</p> -<p> -<IMG SRC="img/docu/decryptfile_input_outputfile.jpg" alt="choose the input- and outputfile"/> -</p> - -<h4>STEP 4: Hit ok</h4> -<p> -Now she hits the ok-button -</p> -<p> -<IMG SRC="img/docu/decryptfile_hit_ok.jpg" alt="hit ok"/> -</p> - -<h4>STEP 5: Enter passphrase</h4> -<p> -Now she enters the passphrase of her key and hits the ok-button. -</p> -<p> -<IMG SRC="img/docu/decryptfile_password.jpg" alt="enter passphrase"/> -</p> -<p> -Afterwards the ok-message is displayed. -</p> -<p> -<IMG SRC="img/docu/decryptfile_okmessage.jpg" alt="ok message"/> -</p> - -</div> -<hr/> -Previous: <a href="docu_encrypt_file.html">Encrypt a file</a> | <a href="docu.html">Main</a> | Next: <a href="docu_import_key.html">Import a key</a> -</div> -</body> -</html> diff --git a/resource/help/docu_encrypt.es.html b/resource/help/docu_encrypt.es.html deleted file mode 100644 index 0511c6c3..00000000 --- a/resource/help/docu_encrypt.es.html +++ /dev/null @@ -1,69 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> - -<head> -<!--Translated using CatsCradle 3.91 [SourceID:docu_encry~KjmTI.html] //--> -<title>gpg4usb - - Documentación</title> -<link rel="stylesheet" type="text/css" href="css/style.css" media="screen" /> -<link rel="stylesheet" type="text/css" href="css/print.css" media="print" /> -</head> - -<body> -<div style="width:800px;text-align:center;float:center"> -Previo: <a href="docu_keygen.html">Generar - una llave</a> | <a href="docu.html">Principal</a> | - Siguiente: <a href="docu_decrypt.html">Descifrar - un mensaje</a> -<hr/> - -<div id="content"> -<h1>Cómo - cifrar un texto</h1> -<p> -Hay - tres pasos para cifrar un texto. Vamos a suponer que Alice quiere cifrar un texto - para Bobby. </p> -<h4>PASO - 1: Escribir el texto</h4> -<p> -Primero, - Alice escribe su texto (se recomienda no usar tildes). </p> -<p> -<IMG SRC="img/docu/encrypt_step1.jpg" alt="escribir el texto"/> -</p> - -<h4>PASO - 2: Escoger la llave(s)</h4> -<p> -Segundo, - ella escoje la llave de Bobby. <b>NOTA:</b> Usted - también puede escoger múltiples llaves, de manera que el texto se cifrará para más - de una persona. Así, por ejemplo, usted podría seleccionar siempre su propia llave, - de este modo puede cifrar/descifrar sus propios textos más tarde. </p> -<p> -<IMG SRC="img/docu/encrypt_step2.jpg" alt="escoger las llaves"/> -</p> - - -<h4>PASO - 3: Cifrar el mensaje</h4> -<p> -Finalmente, - Alice pulsa el botón 'Cifrar' para cifrar el texto. Alternativamente, ella podría - haber usado el atajo 'Ctrl+E' o usar el menú 'Cifrar -> Cifrar'. </p> -<p> -<IMG SRC="img/docu/encrypt_step3.jpg" alt="cifrar el mensaje"/> -</p> - - -</div> -<hr/> -Previo: <a href="docu_keygen.html">Generar - una llave</a> | <a href="docu.html">Principal</a> | - Siguiente: <a href="docu_decrypt.html">Descifrar - un mensaje</a> -</div> -</body> -</html> diff --git a/resource/help/docu_encrypt.html b/resource/help/docu_encrypt.html deleted file mode 100644 index 99788fe4..00000000 --- a/resource/help/docu_encrypt.html +++ /dev/null @@ -1,53 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> - -<head> -<title>gpg4usb - Documentation</title> -<link rel="stylesheet" type="text/css" href="css/style.css" media="screen" /> -<link rel="stylesheet" type="text/css" href="css/print.css" media="print" /> -</head> - -<body> -<div style="width:800px;text-align:center;float:center"> -Previous: <a href="docu_keygen.html">Generate a key</a> | <a href="docu.html">Main</a> | Next: <a href="docu_decrypt.html">Decrypt a message</a> -<hr/> - -<div id="content"> -<h1>Howto encrypt a text</h1> -<p> -There are three steps for encrypting a text. We assume, that Alice wants to encrypt a text for Bobby. -</p> -<h4>STEP 1: Write the text</h4> -<p> -First Alice writes her text. -</p> -<p> -<IMG SRC="img/docu/encrypt_step1.jpg" alt="write the text"/> -</p> - -<h4>STEP 2: Choose key(s)</h4> -<p> -Secondly she chooses Bobbies key. -<b>NOTE:</b> You can also choose mutiple keys, so that the text is encrypted for more than one person. So e.g. you should always select your own key, so that you can encrypt your own texts later. -</p> -<p> -<IMG SRC="img/docu/encrypt_step2.jpg" alt="choose the keys"/> -</p> - - -<h4>STEP 3: Encrypt message</h4> -<p> -Finally Alice hits the encrypt button to encrypt the text. Alternatively she could use the shortcut Ctrl+E or use the menu crypto->encrypt -</p> -<p> -<IMG SRC="img/docu/encrypt_step3.jpg" alt="encrypt the message"/> -</p> - - -</div> -<hr/> -Previous: <a href="docu_keygen.html">Generate a key</a> | <a href="docu.html">Main</a> | Next: <a href="docu_decrypt.html">Decrypt a message</a> -</div> -</body> -</html> diff --git a/resource/help/docu_encrypt_file.es.html b/resource/help/docu_encrypt_file.es.html deleted file mode 100644 index 6ba34901..00000000 --- a/resource/help/docu_encrypt_file.es.html +++ /dev/null @@ -1,100 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> - -<head> -<!--Translated using CatsCradle 3.91 [SourceID:docu_encry~UzYAh.html] //--> -<title>gpg4usb - - Documentación</title> -<link rel="stylesheet" type="text/css" href="css/style.css" media="screen" /> -<link rel="stylesheet" type="text/css" href="css/print.css" media="print" /> -</head> - -<body> -<div style="width:800px;text-align:center;float:center"> -Previo: <a href="docu_verify.html">Verificar - un mensaje</a> | <a href="docu.html">Principal</a> | - Siguiente: <a href="docu_decrypt_file.html">Descifrar - un archivo</a> -<hr/> - - - -<div id="content"> - -<h1>Cómo - cifrar un archivo</h1> -<p> -Hay - cinco pasos para cifrar un archivo. Supongamos que Bobby quiere cifrar un archivo - para Alice y para él mismo (esto significa que tanto él como Alice pueden descifrar - el archivo, cada uno con su propia llave privada). Él tiene que tener la llave pública - de Alice y la suya propia. </p> -<h4>PASO - 1: Abrir menú 'Cifrar' </h4> -<p> -Primero, - Bobby abre el menú 'Cifrar'. Alternativamente, él puede presionar el botón 'Archivo' - en la barra de herramientas. </p> -<p> -<IMG SRC="img/docu/cryptfile_menu2.jpg" alt="abrir menú cifrar archivo"/> -</p> - -<h4>PASO - 2: Escoger cifrar</h4> -<p> -Segundo, - él escoge 'Cifrar archivo'. </p> -<p> -<IMG SRC="img/docu/encryptfile_choose_encrypt.jpg" alt="escoher cifrar"/> -</p> - - -<h4>PASO - 3: Escoger archivo entrada/salida</h4> -<p> -Ahora - escoge el archivo de entrada/salida. Cuando escoge el archivo de entrada (el que - se va a cifrar), se recomienda que se dé el mismo nombre con el apéndice .asc para - el archivo de salida (el archivo ya cifrado). </p> -<p> -<IMG SRC="img/docu/encryptfile_choose_input_outputfile.jpg" alt="escoger archivo de entrada y salida"/> -</p> - -<h4>PASO - 4: Escoger las llaves</h4> -<p> -Ahora, - Bobby escoge las llaves de las personas para las que el archivo se va a cifrar. Dése - cuenta de que él también tiene que seleccionar su propia llave si quiere ser capaz - de poder descifrar este archivo más tarde. </p> -<p> -<IMG SRC="img/docu/encryptfile_choose_keys.jpg" alt="escoger llaves"/> -</p> - -<h4>PASO - 5: Pulsar 'OK'</h4> -<p> -Ahora - él pulsa el botón 'OK'. </p> -<p> -<IMG SRC="img/docu/encryptfile_hit_ok.jpg" alt="pulsar botón ok"/> -</p> - - -<p>Después - de esto, aparece el mensaje 'OK'. </p> -<p> -<IMG SRC="img/docu/decryptfile_okmessage.jpg" alt="mensaje ok"/> -</p> - - -</div> -<hr/> -Previo: <a href="docu_verify.html">Verificar - un mensaje</a> | <a href="docu.html">Principal</a> | - Siguiente: <a href="docu_decrypt_file.html">Descifrar - un archivo</a> -</div> -</body> -</html> diff --git a/resource/help/docu_encrypt_file.html b/resource/help/docu_encrypt_file.html deleted file mode 100644 index ab699d0b..00000000 --- a/resource/help/docu_encrypt_file.html +++ /dev/null @@ -1,78 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> - -<head> -<title>gpg4usb - Documentation</title> -<link rel="stylesheet" type="text/css" href="css/style.css" media="screen" /> -<link rel="stylesheet" type="text/css" href="css/print.css" media="print" /> -</head> - -<body> -<div style="width:800px;text-align:center;float:center"> -Previous: <a href="docu_verify.html">Verify a message</a> | <a href="docu.html">Main</a> | Next: <a href="docu_decrypt_file.html">Decrypt a file</a> -<hr/> - - - -<div id="content"> - -<h1>Howto encrypt a file</h1> -<p> -There are five steps to encrypt a file. We assume, that Bobby wants to encrypt a file for Alice and for himself (means, that he and Alice can decrypt the file, both of them with their own private key). So he has to have Alice's and his own public key. -</p> -<h4>STEP 1: Open file en-/decryption dialog </h4> -<p> -First Bobby opens the file cryption dialog through the menu. Alternatively, she could just hit the "File-Cryption"-button in the toolbar. -</p> -<p> -<IMG SRC="img/docu/cryptfile_menu2.jpg" alt="open file-cryption dialog"/> -</p> - -<h4>STEP 2: Choose encrypt</h4> -<p> -Secondly he chooses encrypt. -</p> -<p> -<IMG SRC="img/docu/encryptfile_choose_encrypt.jpg" alt="choose encrypt"/> -</p> - - -<h4>STEP 3: Choose input-/outputfile</h4> -<p> -Now he chooses the input- and outputfile. When he chooses the inputfile, the same name with an appended .asc is made as suggestion for the output-file. -</p> -<p> -<IMG SRC="img/docu/encryptfile_choose_input_outputfile.jpg" alt="choose input- and outputfile"/> -</p> - -<h4>STEP 4: Choose the keys</h4> -<p> -Now he chooses the users' keys, the file should be encrypted for. Be aware, that he also has to choose his own key, if he wants to be able to decrypt the file afterwards. -</p> -<p> -<IMG SRC="img/docu/encryptfile_choose_keys.jpg" alt="choose keys"/> -</p> - -<h4>STEP 5: Hit ok</h4> -<p> -Now he hits the ok-button -</p> -<p> -<IMG SRC="img/docu/encryptfile_hit_ok.jpg" alt="hit ok button"/> -</p> - - -<p>After this the ok-message is displayed. -</p> -<p> -<IMG SRC="img/docu/decryptfile_okmessage.jpg" alt="ok-message"/> -</p> - - -</div> -<hr/> -Previous: <a href="docu_verify.html">Verify a message</a> | <a href="docu.html">Main</a> | Next: <a href="docu_decrypt_file.html">Decrypt a file</a> -</div> -</body> -</html> diff --git a/resource/help/docu_export_key.es.html b/resource/help/docu_export_key.es.html deleted file mode 100644 index 0631df1f..00000000 --- a/resource/help/docu_export_key.es.html +++ /dev/null @@ -1,81 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> - -<head> -<!--Translated using CatsCradle 3.91 [SourceID:docu_expor~jCnxV.html] //--> -<title>gpg4usb - - Documentación</title> -<link rel="stylesheet" type="text/css" href="css/style.css" media="screen" /> -<link rel="stylesheet" type="text/css" href="css/print.css" media="print" /> -</head> - -<body> -<div style="width:800px;text-align:center;float:center"> -Previo: <a href="docu_import_key.html">Importar - una llave</a> | <a href="docu.html">Principal</a> | - Siguiente: <a href="docu_export_key_private.html">Exportar - una llave privada</a> -<hr/> - -<div id="content"> - -<h1>Cómo - exportar llaves públicas</h1> -<p> -Hay - cuatro pasos para exportar llaves públicas. Supongamos que Bobby quiere exportar - la llave de Alice y la suya propia para darselas a Charly, de manera que él pueda - cifrar mensajes y archivos para ellos. </p> -<h4>PASO - 1: Abrir el administrador de llaves</h4> -<p> -Primero, - Bobby abre el administrador de llaves a través del botón de la barra de herramientas. </p> -<p> -<IMG SRC="img/docu/exportkey_open_keymgmt.jpg" alt="abrir el administrador de llaves"/> -</p> - -<h4>PASO - 2: Escoger llaves</h4> -<p> -Segundo, - escoge la llave de Alice y la suya propia. </p> -<p> -<IMG SRC="img/docu/exportkey_choose_keys.jpg" alt="escoger llaves"/> -</p> - - -<h4>PASO - 3: Escoger exportar llave</h4> -<p> -Ahora - navega por el menú 'Llave' -> 'Exportar a archivo' (otra opción es 'Llave' -> 'Exportar - a portapapeles'). Si escoge exportar archivo a portapapeles, se termina ahora. - De lo contrario, vamos al siguiente paso. Alternativamente, se puede escoger 'Exportar - a archivo' desde la barra de herramientas. </p> -<p> -<IMG SRC="img/docu/exportkey_menu_selection.jpg" alt="escoger exportar archivo"/> -</p> - -<h4>PASO - 4: Seleccionar el archivo</h4> -<p> -Ahora - se escoge el archivo para guardar la llave en él. </p> -<p> -<IMG SRC="img/docu/exportkey_file_selection.jpg" alt="escoger archivo"/> -</p> -<p> -<b>NOTA:</b> Para - dar su llave pública a alguien, también puede usted añadirla al texto en la caja - del editor de texto mediante el menú contextual del listado de llaves (clic derecho en la llave selecionada).. </p> -</div> -<hr/> -Previo: <a href="docu_import_key.html">Importar - una llave</a> | <a href="docu.html">Principal</a> | - Siguiente: <a href="docu_export_key_private.html">Exportar - una llave privada</a> -</div> -</body> -</html> diff --git a/resource/help/docu_export_key.html b/resource/help/docu_export_key.html deleted file mode 100644 index 0dfb422b..00000000 --- a/resource/help/docu_export_key.html +++ /dev/null @@ -1,62 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> - -<head> -<title>gpg4usb - Documentation</title> -<link rel="stylesheet" type="text/css" href="css/style.css" media="screen" /> -<link rel="stylesheet" type="text/css" href="css/print.css" media="print" /> -</head> - -<body> -<div style="width:800px;text-align:center;float:center"> -Previous: <a href="docu_import_key.html">Import a key</a> | <a href="docu.html">Main</a> | Next: <a href="docu_export_key_private.html">Export a private key</a> -<hr/> - -<div id="content"> - -<h1>Howto export public keys</h1> -<p> -There are three respectively four steps for exporting public keys. We assume, that Bobby wants to export Alice's and his key to give it to Charly, so that he can encrypt messages and files to them. -</p> -<h4>STEP 1: Open the key management</h4> -<p> -First Bobby opens the key management through the toolbar. -</p> -<p> -<IMG SRC="img/docu/exportkey_open_keymgmt.jpg" alt="open key management"/> -</p> - -<h4>STEP 2: Choose keys</h4> -<p> -Secondly he checks Alice's and his own key. -</p> -<p> -<IMG SRC="img/docu/exportkey_choose_keys.jpg" alt="choose the keys"/> -</p> - - -<h4>STEP 3: Choose export key</h4> -<p> -Now he browses through the menu key -> export to file (respectively key -> export to clipboard). If he chooses to export the files to clipboard, he's finished now. Otherwise the next step follows. Alternatively he can choose the export through the toolbar. -</p> -<p> -<IMG SRC="img/docu/exportkey_menu_selection.jpg" alt="choose export to file"/> -</p> - -<h4>STEP 4: Select the file</h4> -<p> -Now he chooses the file to store the keys to. -</p> -<p> -<IMG SRC="img/docu/exportkey_file_selection.jpg" alt="choose file"/> -</p> -<p> -<b>NOTE:</b> To give your public key to someone else, you also can append the key to the text in the editor-field through the context menu in the keylist. -</p> -</div> -<hr/> -Previous: <a href="docu_import_key.html">Import a key</a> | <a href="docu.html">Main</a> | Next: <a href="docu_export_key_private.html">Export a private key</a> -</div> -</body> -</html> diff --git a/resource/help/docu_export_key_private.es.html b/resource/help/docu_export_key_private.es.html deleted file mode 100644 index 2dfa8d9f..00000000 --- a/resource/help/docu_export_key_private.es.html +++ /dev/null @@ -1,78 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> - -<head> -<!--Translated using CatsCradle 3.91 [SourceID:docu_expor~VBJBW.html] //--> -<title>gpg4usb - - Documentación</title> -<link rel="stylesheet" type="text/css" href="css/style.css" media="screen" /> -<link rel="stylesheet" type="text/css" href="css/print.css" media="print" /> -</head> - -<body> -<div style="width:800px;text-align:center;float:center"> -Previo: <a href="docu_export_key.html">Exportar - una llave pública</a> | <a href="docu.html">Principal</a> -<hr/> - -<div id="content"> - -<h1>Cómo - exportar una llave privada</h1> -<p> -Hay - cinco pasos simples para exportar llaves privadas Vamos a suponer que Bobby quiere - exportar su llave privada para guardarla en un disco y ponerla en un lugar bien seguro.<br/> -<b>NOTA:</b> Usted - deberia ser realmente muy cuidadoso con su llave privada porque cualquiera que la - tenga puede cifrar todos los mensajes y textos con esta llave, si sabe la contraseña. </p> -<h4>PASO - 1: Abrir el administrador de llaves</h4> -<p> -Primero, - Bobby abre el administrador de llaves a través de la barra de herramientas. </p> -<p> -<IMG SRC="img/docu/exportkey_open_keymgmt.jpg" alt="abrir administrador de llaves"/> -</p> - -<h4>PASO - 2: Abrir el menú de propiedades de la llave</h4> -<p> -Segundo, - selecciona su llave y abre el menú de propiedades de la llave a través del menú contextual (clic derecho -> 'Mostrar detalles de la llave'). </p> -<p> -<IMG SRC="img/docu/exportkey_show_keydetails.jpg" alt="seleccionar detalles de la llave"/> -</p> - - -<h4>PASO - 3: Pulsar el botón 'exportar llave privada' </h4> -<p> -Ahora - él pulsa el botón 'Exportar llave privada.'</p> -<p> -<IMG SRC="img/docu/exportkey_hit_export_private_key.jpg" alt="pulsar botón exportar llave privada"/> -</p> - -<h4>PASO - 4: Confirmar mensaje de alerta</h4> -<p> -Ahora - Bobby confirma el mensaje de alerta que sale. </p> -<p> -<IMG SRC="img/docu/exportkey_warn_message.jpg" alt="confirmar mensaje de alerta"/> -</p> -<h4>PASO - 5: Escoger archivo</h4> -<p> -Finalmente, - se escoge un archivo donde quiere guardar la llave privada. </p> - -</div> -<hr/> -Previo: <a href="docu_export_key.html">Exportar - una llave pública</a> | <a href="docu.html">Principal</a> -</div> -</body> -</html> diff --git a/resource/help/docu_export_key_private.html b/resource/help/docu_export_key_private.html deleted file mode 100644 index 9d5c18f6..00000000 --- a/resource/help/docu_export_key_private.html +++ /dev/null @@ -1,65 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> - -<head> -<title>gpg4usb - Documentation</title> -<link rel="stylesheet" type="text/css" href="css/style.css" media="screen" /> -<link rel="stylesheet" type="text/css" href="css/print.css" media="print" /> -</head> - -<body> -<div style="width:800px;text-align:center;float:center"> -Previous: <a href="docu_export_key.html">Export a public key</a> | <a href="docu.html">Main</a> -<hr/> - -<div id="content"> - -<h1>Howto export a private key</h1> -<p> -There are five simple steps for exporting a private keys. We assume, that Bobby wants to export his private key to save it to disk and put it in an fireproofed tresor.<br/> -<b>NOTE:</b> You should really be careful with your private key, because everyone, who has this key, can encrypt all messages and texts encrypted for this key, if he also has your keys passphrase. - -</p> -<h4>STEP 1: Open the key management</h4> -<p> -First Bobby opens the key management through the toolbar. -</p> -<p> -<IMG SRC="img/docu/exportkey_open_keymgmt.jpg" alt="open key management"/> -</p> - -<h4>STEP 2: Open key property dialog</h4> -<p> -Secondly he opens the key property dialog of his key through the context menu. -</p> -<p> -<IMG SRC="img/docu/exportkey_show_keydetails.jpg" alt="select show key details"/> -</p> - - -<h4>STEP 3: Hit the "export private key"-button</h4> -<p> -Now he hits the "export private key"-button</p> -<p> -<IMG SRC="img/docu/exportkey_hit_export_private_key.jpg" alt="hit the export private key button"/> -</p> - -<h4>STEP 4: Confirm warn message</h4> -<p> -Now he confirms the warn message. -</p> -<p> -<IMG SRC="img/docu/exportkey_warn_message.jpg" alt="confirm warn message"/> -</p> -<h4>STEP 5: Choose file</h4> -<p> -Finally he chooses a file, where he wants to save the key. -</p> - -</div> -<hr/> -Previous: <a href="docu_export_key.html">Export a public key</a> | <a href="docu.html">Main</a> -</div> -</body> -</html> diff --git a/resource/help/docu_import_key.es.html b/resource/help/docu_import_key.es.html deleted file mode 100644 index cb4a62da..00000000 --- a/resource/help/docu_import_key.es.html +++ /dev/null @@ -1,71 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> - -<head> -<!--Translated using CatsCradle 3.91 [SourceID:docu_impor~sUFMy.html] //--> -<title>gpg4usb - - Documentación</title> -<link rel="stylesheet" type="text/css" href="css/style.css" media="screen" /> -<link rel="stylesheet" type="text/css" href="css/print.css" media="print" /> -</head> - -<body> - -<div style="width:800px;text-align:center;float:center"> -Previo: <a href="docu_decrypt_file.html">Descifrar - un archivo</a> | <a href="docu.html">Principal</a> | - Siguiente: <a href="docu_export_key.html">Exportar - una llave pública</a> -<hr/> - -<div id="content"> - -<h1>Cómo - importar llaves públicas</h1> -<p> -Hay - tres pasos para importar llaves públicas Se supone que Bobby quiere importar la llave - de Alice, de manera que pueda cifrar mensajes para ella. <br/> -Cuando - Bobby quiere importar una llave desde la caja del editor de texto o desde el portapapeles, - primero tiene que copiar la llave en él. </p> -<h4>PASO - 1: Abrir el menú importar llave</h4> -<p> -Primero, - Bobby abre el menú 'Importar llave' a través del botón de la barra de herramientas. </p> -<p> -<IMG SRC="img/docu/importkey_menu.jpg" alt="abrir menú importar llave"/> -</p> - -<h4>PASO - 2: Escoger llaves</h4> -<p> -Segundo, - hacer la selección adecuada Si él quiere importar una llave desde la caja del editor - de texto, tiene antes que poner la llave en esa caja. Sólo si quiere importar llaves - desde un archivo tiene que ir al próximo paso, de lo contario ya está todo hecho. </p> -<p> -<IMG SRC="img/docu/importkey_dialog.jpg" alt="escoger archivo"/> -</p> - - -<h4>PASO - 3: Escoger archivo</h4> -<p> -Ahora - tiene que escoger la llave a importar. Después de hacerlo, la llave importada aparece en el - listado de llaves. </p> -<p> -<IMG SRC="img/docu/importkey_keylist.jpg" alt="listado de llaves"/> -</p> -</div> -<hr/> -Previo: <a href="docu_decrypt_file.html">Descifrar - un archivo</a> | <a href="docu.html">Principal</a> | - Siguiente: <a href="docu_export_key.html">Exportar - una llave pública</a> -</div> -</body> -</html> diff --git a/resource/help/docu_import_key.html b/resource/help/docu_import_key.html deleted file mode 100644 index c7a7f054..00000000 --- a/resource/help/docu_import_key.html +++ /dev/null @@ -1,54 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> - -<head> -<title>gpg4usb - Documentation</title> -<link rel="stylesheet" type="text/css" href="css/style.css" media="screen" /> -<link rel="stylesheet" type="text/css" href="css/print.css" media="print" /> -</head> - -<body> - -<div style="width:800px;text-align:center;float:center"> -Previous: <a href="docu_decrypt_file.html">Decrypt a file</a> | <a href="docu.html">Main</a> | Next: <a href="docu_export_key.html">Export a public key</a> -<hr/> - -<div id="content"> - -<h1>Howto import keys</h1> -<p> -There are second respectively three steps for importing public keys. We assume, that Bobby wants to import Alice's key, so that he is able to encrypt messages to her. -<br/> -When Bobby wants to import a key from text-edit field or from clipboard, he first has to copy the key to it. -</p> -<h4>STEP 1: Open key import dialog</h4> -<p> -First Bobby opens the import key dialog through the toolbar. -</p> -<p> -<IMG SRC="img/docu/importkey_menu.jpg" alt="open import key dialog"/> -</p> - -<h4>STEP 2: Choose keys</h4> -<p> -Secondly makes the appropriate selection. If he wants to import a key from editor, he has to paste the key to the text-edit field before. Only if he wants to import keys from file, he has to do the next step, otherwise he's done. -</p> -<p> -<IMG SRC="img/docu/importkey_dialog.jpg" alt="choose file"/> -</p> - - -<h4>STEP 3: Choose file</h4> -<p> -Now he chooses the key-file. Afterwards the key appears in the keylist. -</p> -<p> -<IMG SRC="img/docu/importkey_keylist.jpg" alt="key list"/> -</p> -</div> -<hr/> -Previous: <a href="docu_decrypt_file.html">Decrypt a file</a> | <a href="docu.html">Main</a> | Next: <a href="docu_export_key.html">Export a public key</a> -</div> -</body> -</html> diff --git a/resource/help/docu_keygen.es.html b/resource/help/docu_keygen.es.html deleted file mode 100644 index fc4d76d9..00000000 --- a/resource/help/docu_keygen.es.html +++ /dev/null @@ -1,92 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> - -<head> -<!--Translated using CatsCradle 3.91 [SourceID:docu_keyge~oxZbV.html] //--> -<title>gpg4usb - - Documentación</title> -<link rel="stylesheet" type="text/css" href="css/style.css" media="screen" /> -<link rel="stylesheet" type="text/css" href="css/print.css" media="print" /> -</head> - -<body> - -<div style="width:800px;text-align:center;float:center"> -Previo: <a href="docu_concepts.html">Conceptos - del GPG</a> | <a href="docu.html">Principal</a> | - Siguiente: <a href="docu_encrypt.html">Cifrar - un mensaje</a> -<hr/> - -<div id="content"> - -<h1>Cómo - generar un par de llaves GPG</h1> -<p> -Hay - cuatro pasos para generar un par de llaves (pública y privada). Supondremos que Alice quiere crear un - par de llaves, de manera que pueda descifrar los textos que han sido cifrados para - ella. </p> - -<h4>PASO - 1: Abrir el administrador de llaves</h4> - -<p> -Primero, - Alice abre el administrador de llaves a través de la barra de herramientas. </p> - -<p> -<IMG SRC="img/docu/genkey_step1.jpg" alt="abrir administrador de llaves"/> -</p> -<br/> -<h4>PASO - 2: Abrir el menú de crear llaves</h4> -<p> -Segundo, - ella selecciona 'Llave' en el menú superior y escoge la opción 'Crear llave'. </p> -<p> -<IMG SRC="img/docu/genkey_step2.jpg" alt="abrir menú crear llave"/> -</p> -<br/> - -<h4>PASO - 3: Rellenar el cuestionario</h4> -<p> -Ahora - ella rellena el custionario que sale. Se recomienda escoger un bitrate de 4096 bits - como mínimo.</p> - -<p><b>NOTA:</b> Una - llave con un bitrate muy alto es más segura pero necesitará más tiempo para cifrar - y descifrar textos. Para crear una llave sólo tiene que proporcionar un nombre. Incluso - la contraseña podría estar vacía (lo que desde luego crearía un agujero de seguridad). </p> -<p> -<IMG SRC="img/docu/genkey_step3.jpg" alt="rellenar cuestionario"/> -</p> -<br/> -<h4>PASO - 4: Esperar mientras se crea la llave</h4> -<p> -Ahora - Alice tiene que esperar. El proceso de crear una llave se hace más rápido si Alice - usa su PC para algo, por ejemplo, navegar por Internet, escuchar música, etc. Se creará una llave GPG que se compone de dos partes: una pública (para todo el mundo) y otra privada (sólo para nosotros). </p> -<p> -<IMG SRC="img/docu/genkey_step4.jpg" alt="esperar a terminar creacion llave"/> -</p> - -<div align="justify"> - <p>Cuando - la caja de crear llave desaparece, ya se ha creado. Saldrá un aviso diciendo que - se ha tenido éxito en la operación. Pulsar 'Aceptar'. </p> - <p><img src="img/Nueva_llave_creada.jpg" width="179" height="115" /></p> -</div> -</div> -<hr/> -Previo: <a href="docu_concepts.html">Conceptos - de GPG</a> | <a href="docu.html">Principal</a> | - Siguiente: <a href="docu_encrypt.html">Cifrar - un mensaje</a> -</div> -</body> -</html> diff --git a/resource/help/docu_keygen.html b/resource/help/docu_keygen.html deleted file mode 100644 index b285b12a..00000000 --- a/resource/help/docu_keygen.html +++ /dev/null @@ -1,67 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> - -<head> -<title>gpg4usb - Documentation</title> -<link rel="stylesheet" type="text/css" href="css/style.css" media="screen" /> -<link rel="stylesheet" type="text/css" href="css/print.css" media="print" /> -</head> - -<body> - -<div style="width:800px;text-align:center;float:center"> -Previous: <a href="docu_concepts.html">Concepts of GPG</a> | <a href="docu.html">Main</a> | Next: <a href="docu_encrypt.html">Encrypt a message</a> -<hr/> - -<div id="content"> - -<h1>Howto generate a GPG-keypair</h1> -<p> -There are four steps for generating a keypair. We assume, that Alice wants to generate a keypair, so she can decrypt texts, which are encrypted for her. -</p> - -<h4>STEP 1: Open keymanagement</h4> - -<p> -First Alice opens the keymanagement through the toolbar. -</p> - -<p> -<IMG SRC="img/docu/genkey_step1.jpg" alt="open keymanagement"/> -</p> -<br/> -<h4>STEP 2: Open generate key dialog</h4> -<p> -Secondly she opens the generate key dialog through the "key"-menu -</p> -<p> -<IMG SRC="img/docu/genkey_step2.jpg" alt="open generate key dialog"/> -</p> -<br/> - -<h4>STEP 3: Fill in the form</h4> -<p> -Now she fills in the forms.</p> - -<p><b>NOTE:</b> A key with a higher bitrate is more secure, but also needs a more time to encrypt and decrypt texts. To generate a key, you only have to provide a name. Even the passphrase could be empty (which of course lags of security). -</p> -<p> -<IMG SRC="img/docu/genkey_step3.jpg" alt="fill in the forms"/> -</p> -<br/> -<h4>STEP 4: Wait while key is generated</h4> -<p> -Now Alice has just to wait. The process of the key generation is faster, when Alice does something on her PC, so that the randomdevice gets more input and so more entropy. -</p> -<p> -<IMG SRC="img/docu/genkey_step4.jpg" alt="wait for end of key generation"/> -</p> - -When the generation dialog box disappears, the key generation is finished. -</div> -<hr/> -Previous: <a href="docu_concepts.html">Concepts of GPG</a> | <a href="docu.html">Main</a> | Next: <a href="docu_encrypt.html">Encrypt a message</a> -</div> -</body> -</html> diff --git a/resource/help/docu_sign.es.html b/resource/help/docu_sign.es.html deleted file mode 100644 index 9b2c0d1b..00000000 --- a/resource/help/docu_sign.es.html +++ /dev/null @@ -1,83 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> - -<head> -<!--Translated using CatsCradle 3.91 [SourceID:docu_sign~Qkpxkx.html] //--> -<title>gpg4usb - - Documentación</title> -<link rel="stylesheet" type="text/css" href="css/style.css" media="screen" /> -<link rel="stylesheet" type="text/css" href="css/print.css" media="print" /> -</head> - -<body> - -<div style="width:800px;text-align:center;float:center"> - -Previo: <a href="docu_decrypt.html">Descifrar - un mensaje</a> | <a href="docu.html">Principal</a> | - Siguiente <a href="docu_verify.html">Verificar - un mensaje</a> -<hr/> - -<div id="content"> - -<h1>Cómo - firmar un mensaje</h1> -<p><b>NOTA:</b> Usted - sólo puede firmar mensajes si tiene una llave privada. Usted puede identificar las - llaves privadas por el icono 'manojo de llaves' que está delante del nombre en la - lista de llaves (en este caso Bobby).</p> -<p> -<IMG SRC="img/docu/private_key_note.jpg" alt="pulsar llave privada"/> -</p> - -<p> -Hay - cuatro pasos para firmar un texto. Supongamos que Bobby quiere firmar un mensaje. - Después de esto, cualquiera que tenga su llave pública puede verificar el mensaje - y asegurarse que el mensaje no ha sido modificado. </p> -<h4>PASO - 1/2: Escribir el mensaje y comprobar la llave</h4> -<p> -Primero, - Bobby escribe el mensaje en la caja del editor de texto. Después selecciona su llave - privada en el listado de llaves de la derecha. </p> - -<p> -<IMG SRC="img/docu/sign_choose_key.jpg" alt="Escoger llave"/> -</p> - -<h4>PASO - 3: Clic en el botón 'Firmar'</h4> -<p> -A - continuación, Bobby pulsa el botón 'Firmar'. </p> -<p> -<IMG SRC="img/docu/sign_click_verify.jpg" alt="clic verificar"/> -</p> - - -<h4>PASO - 4: Introducir contraseña</h4> -<p> -Ahora - Bobby introduce la contraseña de su llave privada.<br/> -<b>NOTA:</b> Usted - sólo puede firmar mensajes si tiene una llave privada. Las llaves privadas son aquellas - con un icono 'manojo de llaves' delante de su nombre en el listado de llaves. </p> -<p> -<IMG SRC="img/docu/sign_enter_passphrase.jpg" alt="entrar contraseña"/> -</p> -<p> -Después - de esto, se muestra el mensaje firmado. </p> -<hr/> -Previo: <a href="docu_decrypt.html">Descifrar - un mensaje</a> | <a href="docu.html">Principal</a> | - Siguiente: <a href="docu_verify.html">Verificar - un mensaje</a> -</div> -</div> -</body> -</html> diff --git a/resource/help/docu_sign.html b/resource/help/docu_sign.html deleted file mode 100644 index 46a20953..00000000 --- a/resource/help/docu_sign.html +++ /dev/null @@ -1,64 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> - -<head> -<title>gpg4usb - Documentation</title> -<link rel="stylesheet" type="text/css" href="css/style.css" media="screen" /> -<link rel="stylesheet" type="text/css" href="css/print.css" media="print" /> -</head> - -<body> - -<div style="width:800px;text-align:center;float:center"> - -Previous: <a href="docu_decrypt.html">Decrypt a message</a> | <a href="docu.html">Main</a> | Next: <a href="docu_verify.html">Verify a message</a> -<hr/> - -<div id="content"> - -<h1>Howto sign a message</h1> -<p><b>NOTE:</b> You can only sign messages, if you have one private key, the file is encrypted for. You can identify the private keys by the "bunch of keys"-image in front of the name in the keylist (in this case Bobby):</p> -<p> -<IMG SRC="img/docu/private_key_note.jpg" alt="private key hint"/> -</p> - -<p> -There are three four for encrypting a text. We assume, that Bobby wants to sign a message. -After this everyone who has his public key can verify the message and ensure, that the message wasn't modified. -</p> -<h4>STEP 1/2: Write the message and check key</h4> -<p> -First Bobby writes the message to the textedit-field. Then he checks his private key in the keylist. -</p> - -<p> -<IMG SRC="img/docu/sign_choose_key.jpg" alt="choose the key"/> -</p> - -<h4>STEP 3: Click sign button</h4> -<p> -Then Bobby clicks the sign button. -</p> -<p> -<IMG SRC="img/docu/sign_click_verify.jpg" alt="click verify"/> -</p> - - -<h4>STEP 4: Enter passphrase</h4> -<p> -Now Bobby enters the passphrase of his private key.<br/> -<b>NOTE:</b> You can only sign messages, if you have a private key. The private keys are those, with the key-icon in front of the Name in the keylist. -</p> -<p> -<IMG SRC="img/docu/sign_enter_passphrase.jpg" alt="enter passphrase"/> -</p> -<p> -Afterwards the signed message is shown. -</p> -<hr/> -Previous: <a href="docu_decrypt.html">Decrypt a message</a> | <a href="docu.html">Main</a> | Next: <a href="docu_verify.html">Verify a message</a> -</div> -</div> -</body> -</html> diff --git a/resource/help/docu_verify.es.html b/resource/help/docu_verify.es.html deleted file mode 100644 index b975c9c4..00000000 --- a/resource/help/docu_verify.es.html +++ /dev/null @@ -1,85 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> - -<head> -<!--Translated using CatsCradle 3.91 [SourceID:docu_verif~cdxic.html] //--> -<title>gpg4usb - - Documentación</title> -<link rel="stylesheet" type="text/css" href="css/style.css" media="screen" /> -<link rel="stylesheet" type="text/css" href="css/print.css" media="print" /> -</head> - -<body> - -<div style="width:800px;text-align:center;float:center"> -Previo: <a href="docu_sign.html">Firmar - un mensaje</a> | <a href="docu.html">Principal</a> | - Siguiente: <a href="docu_encrypt_file.html">Cifrar - un archivo</a> -<hr/> - -<div id="content"> - -<h1>Cómo - verificar un mensaje</h1> - -<p> -Hay - tres pasos para verificar un mensaje Vamos a suponer que Alice quiere verificar un - mensaje firmado que le ha llegado. </p> -<h4>PASO - 1: Copiar el texto a la caja del editor de textos.</h4> -<p> -Primero, - Alice copia el texto en la caja del editor de texto. </p> - -<p> -<IMG SRC="img/docu/verify_paste_message.jpg" alt="copiar a la caja del editor de textos"/> -</p> - -<h4>PASO 2: - Clic en 'Verificar'</h4> -<p> -Segundo, - ella hace clic en el botón 'Verificar' de la barra de herramientas. </p> -<p> -<IMG SRC="img/docu/verify_click_verify.jpg" alt="clic verificar"/> -</p> - -<h4>PASO - 3: Leer el mensaje verificado</h4> -<p> -Ahora - Alice lee la información de verificación que aparece en la parte de abajo. Para obtener - una información más detallada, hacer clic en el botón 'Detalles' en la parte inferior - y escoger la opción deseada. </p> -<p> -<IMG SRC="img/docu/verify_message_shown.jpg" alt="mostrar mensaje"/> -</p> -<p> -<b>NOTA:</b> Si - la llave no está presente en su listado de llaves, entonces aparece el ID (identificador - digital) de la llave. </p> -<p> -<IMG SRC="img/docu/verify_key_not_present.jpg" alt="llave no presente"/> -</p> - -<p> -Si - la llave no está presente, puede intentar importarla desde el servidor de llaves - por defecto (el que usted puso en el menú 'Configuración'). </p> -<p> -<IMG SRC="img/docu/verify_import_from_keyserver.jpg" alt="importar desde servidor de llaves"/> -</p> - - -<hr/> -Previo: <a href="docu_sign.html">Firmar - un mensaje</a> | <a href="docu.html">Principal</a> | - Siguiente: <a href="docu_encrypt_file.html">Cifrar - un archivo</a> -</div> -</div> -</body> -</html> diff --git a/resource/help/docu_verify.html b/resource/help/docu_verify.html deleted file mode 100644 index 718dc5dc..00000000 --- a/resource/help/docu_verify.html +++ /dev/null @@ -1,69 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> - -<head> -<title>gpg4usb - Documentation</title> -<link rel="stylesheet" type="text/css" href="css/style.css" media="screen" /> -<link rel="stylesheet" type="text/css" href="css/print.css" media="print" /> -</head> - -<body> - -<div style="width:800px;text-align:center;float:center"> -Previous: <a href="docu_sign.html">Sign a message</a> | <a href="docu.html">Main</a> | Next: <a href="docu_encrypt_file.html">Encrypt a file</a> -<hr/> - -<div id="content"> - -<h1>Howto verify a message</h1> - -<p> -There are three steps to verify a message. We assume, that Alice wants to verify a signed message. -</p> -<h4>STEP 1: Copy the text to the textedit-field</h4> -<p> -First Alice copies the text to the textedit-field. -</p> - -<p> -<IMG SRC="img/docu/verify_paste_message.jpg" alt="copy to textedit-field"/> -</p> - -<h4>STEP 2: Click verify</h4> -<p> -Secondly she clicks on the verify button. -</p> -<p> -<IMG SRC="img/docu/verify_click_verify.jpg" alt="click verify"/> -</p> - -<h4>STEP 3: Read verify message</h4> -<p> -Now Alice reads the verify information shown at the bottom a the tab. To get more detailed information, -she can click the details button in the verify messagebox and then choose . -</p> -<p> -<IMG SRC="img/docu/verify_message_shown.jpg" alt="message shown"/> -</p> -<p> -<b>NOTE:</b> If the key is not present in your keylist, then the signers keyid is shown. -</p> -<p> -<IMG SRC="img/docu/verify_key_not_present.jpg" alt="key not present"/> -</p> - -<p> -If the key is not present, you can try to import the key from the default keyserver (which you can set in the settings dialog). -</p> -<p> -<IMG SRC="img/docu/verify_import_from_keyserver.jpg" alt="import from keyserver"/> -</p> - - -<hr/> -Previous: <a href="docu_sign.html">Sign a message</a> | <a href="docu.html">Main</a> | Next: <a href="docu_encrypt_file.html">Encrypt a file</a> -</div> -</div> -</body> -</html> diff --git a/resource/help/img/docu/cryptfile_menu.jpg b/resource/help/img/docu/cryptfile_menu.jpg Binary files differdeleted file mode 100644 index 92b58ef5..00000000 --- a/resource/help/img/docu/cryptfile_menu.jpg +++ /dev/null diff --git a/resource/help/img/docu/cryptfile_menu2.jpg b/resource/help/img/docu/cryptfile_menu2.jpg Binary files differdeleted file mode 100644 index 020968c9..00000000 --- a/resource/help/img/docu/cryptfile_menu2.jpg +++ /dev/null diff --git a/resource/help/img/docu/decrypt_step1.jpg b/resource/help/img/docu/decrypt_step1.jpg Binary files differdeleted file mode 100644 index eef2bfbe..00000000 --- a/resource/help/img/docu/decrypt_step1.jpg +++ /dev/null diff --git a/resource/help/img/docu/decrypt_step2.jpg b/resource/help/img/docu/decrypt_step2.jpg Binary files differdeleted file mode 100644 index 45b35fc6..00000000 --- a/resource/help/img/docu/decrypt_step2.jpg +++ /dev/null diff --git a/resource/help/img/docu/decrypt_step3.jpg b/resource/help/img/docu/decrypt_step3.jpg Binary files differdeleted file mode 100644 index 71b61c92..00000000 --- a/resource/help/img/docu/decrypt_step3.jpg +++ /dev/null diff --git a/resource/help/img/docu/decrypt_step4.jpg b/resource/help/img/docu/decrypt_step4.jpg Binary files differdeleted file mode 100644 index 56a9d8f3..00000000 --- a/resource/help/img/docu/decrypt_step4.jpg +++ /dev/null diff --git a/resource/help/img/docu/decrypt_step5.jpg b/resource/help/img/docu/decrypt_step5.jpg Binary files differdeleted file mode 100644 index fe60bab1..00000000 --- a/resource/help/img/docu/decrypt_step5.jpg +++ /dev/null diff --git a/resource/help/img/docu/decryptfile_choose_decrypt.jpg b/resource/help/img/docu/decryptfile_choose_decrypt.jpg Binary files differdeleted file mode 100644 index c2960948..00000000 --- a/resource/help/img/docu/decryptfile_choose_decrypt.jpg +++ /dev/null diff --git a/resource/help/img/docu/decryptfile_hit_ok.jpg b/resource/help/img/docu/decryptfile_hit_ok.jpg Binary files differdeleted file mode 100644 index 1be2fb25..00000000 --- a/resource/help/img/docu/decryptfile_hit_ok.jpg +++ /dev/null diff --git a/resource/help/img/docu/decryptfile_input_outputfile.jpg b/resource/help/img/docu/decryptfile_input_outputfile.jpg Binary files differdeleted file mode 100644 index 4f659f25..00000000 --- a/resource/help/img/docu/decryptfile_input_outputfile.jpg +++ /dev/null diff --git a/resource/help/img/docu/decryptfile_okmessage.jpg b/resource/help/img/docu/decryptfile_okmessage.jpg Binary files differdeleted file mode 100644 index c7503fd3..00000000 --- a/resource/help/img/docu/decryptfile_okmessage.jpg +++ /dev/null diff --git a/resource/help/img/docu/decryptfile_password.jpg b/resource/help/img/docu/decryptfile_password.jpg Binary files differdeleted file mode 100644 index 4fef0dd3..00000000 --- a/resource/help/img/docu/decryptfile_password.jpg +++ /dev/null diff --git a/resource/help/img/docu/encrypt_step1.jpg b/resource/help/img/docu/encrypt_step1.jpg Binary files differdeleted file mode 100644 index 4c22264f..00000000 --- a/resource/help/img/docu/encrypt_step1.jpg +++ /dev/null diff --git a/resource/help/img/docu/encrypt_step2.jpg b/resource/help/img/docu/encrypt_step2.jpg Binary files differdeleted file mode 100644 index 0fbd3909..00000000 --- a/resource/help/img/docu/encrypt_step2.jpg +++ /dev/null diff --git a/resource/help/img/docu/encrypt_step3.jpg b/resource/help/img/docu/encrypt_step3.jpg Binary files differdeleted file mode 100644 index aff09ed6..00000000 --- a/resource/help/img/docu/encrypt_step3.jpg +++ /dev/null diff --git a/resource/help/img/docu/encryptfile_choose_encrypt.jpg b/resource/help/img/docu/encryptfile_choose_encrypt.jpg Binary files differdeleted file mode 100644 index ed6e1d99..00000000 --- a/resource/help/img/docu/encryptfile_choose_encrypt.jpg +++ /dev/null diff --git a/resource/help/img/docu/encryptfile_choose_input_outputfile.jpg b/resource/help/img/docu/encryptfile_choose_input_outputfile.jpg Binary files differdeleted file mode 100644 index 65ccad1a..00000000 --- a/resource/help/img/docu/encryptfile_choose_input_outputfile.jpg +++ /dev/null diff --git a/resource/help/img/docu/encryptfile_choose_keys.jpg b/resource/help/img/docu/encryptfile_choose_keys.jpg Binary files differdeleted file mode 100644 index 7b60f34a..00000000 --- a/resource/help/img/docu/encryptfile_choose_keys.jpg +++ /dev/null diff --git a/resource/help/img/docu/encryptfile_hit_ok.jpg b/resource/help/img/docu/encryptfile_hit_ok.jpg Binary files differdeleted file mode 100644 index 04122bd1..00000000 --- a/resource/help/img/docu/encryptfile_hit_ok.jpg +++ /dev/null diff --git a/resource/help/img/docu/encryptfile_okmessage.jpg b/resource/help/img/docu/encryptfile_okmessage.jpg Binary files differdeleted file mode 100644 index 4231e4d0..00000000 --- a/resource/help/img/docu/encryptfile_okmessage.jpg +++ /dev/null diff --git a/resource/help/img/docu/exportkey_choose_keys.jpg b/resource/help/img/docu/exportkey_choose_keys.jpg Binary files differdeleted file mode 100644 index 4f82ae0d..00000000 --- a/resource/help/img/docu/exportkey_choose_keys.jpg +++ /dev/null diff --git a/resource/help/img/docu/exportkey_file_selection.jpg b/resource/help/img/docu/exportkey_file_selection.jpg Binary files differdeleted file mode 100644 index 1b60fece..00000000 --- a/resource/help/img/docu/exportkey_file_selection.jpg +++ /dev/null diff --git a/resource/help/img/docu/exportkey_hit_export_private_key.jpg b/resource/help/img/docu/exportkey_hit_export_private_key.jpg Binary files differdeleted file mode 100644 index a7b3b6c2..00000000 --- a/resource/help/img/docu/exportkey_hit_export_private_key.jpg +++ /dev/null diff --git a/resource/help/img/docu/exportkey_menu_selection.jpg b/resource/help/img/docu/exportkey_menu_selection.jpg Binary files differdeleted file mode 100644 index 65e50026..00000000 --- a/resource/help/img/docu/exportkey_menu_selection.jpg +++ /dev/null diff --git a/resource/help/img/docu/exportkey_open_keymgmt.jpg b/resource/help/img/docu/exportkey_open_keymgmt.jpg Binary files differdeleted file mode 100644 index 3e79accd..00000000 --- a/resource/help/img/docu/exportkey_open_keymgmt.jpg +++ /dev/null diff --git a/resource/help/img/docu/exportkey_show_keydetails.jpg b/resource/help/img/docu/exportkey_show_keydetails.jpg Binary files differdeleted file mode 100644 index e9eb50d8..00000000 --- a/resource/help/img/docu/exportkey_show_keydetails.jpg +++ /dev/null diff --git a/resource/help/img/docu/exportkey_warn_message.jpg b/resource/help/img/docu/exportkey_warn_message.jpg Binary files differdeleted file mode 100644 index e8198884..00000000 --- a/resource/help/img/docu/exportkey_warn_message.jpg +++ /dev/null diff --git a/resource/help/img/docu/genkey_step1.jpg b/resource/help/img/docu/genkey_step1.jpg Binary files differdeleted file mode 100644 index 5ce02b16..00000000 --- a/resource/help/img/docu/genkey_step1.jpg +++ /dev/null diff --git a/resource/help/img/docu/genkey_step2.jpg b/resource/help/img/docu/genkey_step2.jpg Binary files differdeleted file mode 100644 index 11080248..00000000 --- a/resource/help/img/docu/genkey_step2.jpg +++ /dev/null diff --git a/resource/help/img/docu/genkey_step3.jpg b/resource/help/img/docu/genkey_step3.jpg Binary files differdeleted file mode 100644 index cc922d6d..00000000 --- a/resource/help/img/docu/genkey_step3.jpg +++ /dev/null diff --git a/resource/help/img/docu/genkey_step4.jpg b/resource/help/img/docu/genkey_step4.jpg Binary files differdeleted file mode 100644 index dfd32f7f..00000000 --- a/resource/help/img/docu/genkey_step4.jpg +++ /dev/null diff --git a/resource/help/img/docu/importkey_dialog.jpg b/resource/help/img/docu/importkey_dialog.jpg Binary files differdeleted file mode 100644 index 426f4b8e..00000000 --- a/resource/help/img/docu/importkey_dialog.jpg +++ /dev/null diff --git a/resource/help/img/docu/importkey_keylist.jpg b/resource/help/img/docu/importkey_keylist.jpg Binary files differdeleted file mode 100644 index 77b93226..00000000 --- a/resource/help/img/docu/importkey_keylist.jpg +++ /dev/null diff --git a/resource/help/img/docu/importkey_menu.jpg b/resource/help/img/docu/importkey_menu.jpg Binary files differdeleted file mode 100644 index 2ef2d24a..00000000 --- a/resource/help/img/docu/importkey_menu.jpg +++ /dev/null diff --git a/resource/help/img/docu/private_key_note.jpg b/resource/help/img/docu/private_key_note.jpg Binary files differdeleted file mode 100644 index a352bf5f..00000000 --- a/resource/help/img/docu/private_key_note.jpg +++ /dev/null diff --git a/resource/help/img/docu/sign_choose_key.jpg b/resource/help/img/docu/sign_choose_key.jpg Binary files differdeleted file mode 100644 index be3950c8..00000000 --- a/resource/help/img/docu/sign_choose_key.jpg +++ /dev/null diff --git a/resource/help/img/docu/sign_click_verify.jpg b/resource/help/img/docu/sign_click_verify.jpg Binary files differdeleted file mode 100644 index 012d7108..00000000 --- a/resource/help/img/docu/sign_click_verify.jpg +++ /dev/null diff --git a/resource/help/img/docu/sign_enter_passphrase.jpg b/resource/help/img/docu/sign_enter_passphrase.jpg Binary files differdeleted file mode 100644 index 67c3fd8d..00000000 --- a/resource/help/img/docu/sign_enter_passphrase.jpg +++ /dev/null diff --git a/resource/help/img/docu/sign_show_message.jpg b/resource/help/img/docu/sign_show_message.jpg Binary files differdeleted file mode 100644 index ee725e36..00000000 --- a/resource/help/img/docu/sign_show_message.jpg +++ /dev/null diff --git a/resource/help/img/docu/translate_context.jpg b/resource/help/img/docu/translate_context.jpg Binary files differdeleted file mode 100644 index af59cd21..00000000 --- a/resource/help/img/docu/translate_context.jpg +++ /dev/null diff --git a/resource/help/img/docu/translate_src_transl.jpg b/resource/help/img/docu/translate_src_transl.jpg Binary files differdeleted file mode 100644 index 432607b1..00000000 --- a/resource/help/img/docu/translate_src_transl.jpg +++ /dev/null diff --git a/resource/help/img/docu/verify_click_verify.jpg b/resource/help/img/docu/verify_click_verify.jpg Binary files differdeleted file mode 100644 index 79d22e71..00000000 --- a/resource/help/img/docu/verify_click_verify.jpg +++ /dev/null diff --git a/resource/help/img/docu/verify_import_from_keyserver.jpg b/resource/help/img/docu/verify_import_from_keyserver.jpg Binary files differdeleted file mode 100644 index 8139bfc8..00000000 --- a/resource/help/img/docu/verify_import_from_keyserver.jpg +++ /dev/null diff --git a/resource/help/img/docu/verify_key_not_present.jpg b/resource/help/img/docu/verify_key_not_present.jpg Binary files differdeleted file mode 100644 index 7d3fcdfd..00000000 --- a/resource/help/img/docu/verify_key_not_present.jpg +++ /dev/null diff --git a/resource/help/img/docu/verify_message_shown.jpg b/resource/help/img/docu/verify_message_shown.jpg Binary files differdeleted file mode 100644 index efbccb68..00000000 --- a/resource/help/img/docu/verify_message_shown.jpg +++ /dev/null diff --git a/resource/help/img/docu/verify_paste_message.jpg b/resource/help/img/docu/verify_paste_message.jpg Binary files differdeleted file mode 100644 index a9a89dad..00000000 --- a/resource/help/img/docu/verify_paste_message.jpg +++ /dev/null diff --git a/resource/help/img/weblogo.png b/resource/help/img/weblogo.png Binary files differdeleted file mode 100644 index 5618624d..00000000 --- a/resource/help/img/weblogo.png +++ /dev/null diff --git a/resource/icons/info.png b/resource/icons/info.png Binary files differnew file mode 100644 index 00000000..82bfa824 --- /dev/null +++ b/resource/icons/info.png diff --git a/resource/icons/warning.png b/resource/icons/warning.png Binary files differnew file mode 100644 index 00000000..cc802e8d --- /dev/null +++ b/resource/icons/warning.png diff --git a/resource/ts/gpg_frontend_fr.ts b/resource/ts/gpg_frontend_fr.ts index dcdd0708..78ca3d4f 100644 --- a/resource/ts/gpg_frontend_fr.ts +++ b/resource/ts/gpg_frontend_fr.ts @@ -101,35 +101,35 @@ <context> <name>Attachments</name> <message> - <location filename="../../src/ui/Attachments.cpp" line="78"/> - <location filename="../../src/ui/Attachments.cpp" line="113"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="78"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="113"/> <source>Save File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Attachments.cpp" line="79"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="79"/> <source>Save this file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Attachments.cpp" line="83"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="83"/> <source>Open File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Attachments.cpp" line="84"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="84"/> <source>Open this file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Attachments.cpp" line="119"/> - <location filename="../../src/ui/Attachments.cpp" line="164"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="119"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="164"/> <source>File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Attachments.cpp" line="120"/> - <location filename="../../src/ui/Attachments.cpp" line="165"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="120"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="165"/> <source>Cannot write file %1: %2.</source> <translation type="unfinished"></translation> @@ -508,21 +508,21 @@ <name>InfoTab</name> <message> <location filename="../../src/ui/AboutDialog.cpp" line="55"/> - <source><br><center>GPGFrontend is a modern, easy-to-use, compact, <br>cross-platform, and installation-free gpg front-end tool.<br>It visualizes most of the common operations of gpg commands.<br>It's licensed under the GPL v3<br><br><b>Developer:</b><br>Saturneric<br><br>If you have any questions or suggestions have a look<br/>at my <a href="https://bktus.com/%e8%81%94%e7%b3%bb%e4%b8%8e%e9%aa%8c%e8%af%81">contact page</a> or send a mail to my<br/> mailing list at <a href="mailto:[email protected]">[email protected]</a>.</source> + <source><br><center>GPGFrontend is an easy-to-use, compact, <br>cross-platform, and installation-free gpg front-end tool.<br>It visualizes most of the common operations of gpg commands.<br>It's licensed under the GPL v3<br><br><b>Developer:</b><br>Saturneric<br><br>If you have any questions or suggestions, raise an issue<br/>at <a href="https://github.com/saturneric/GpgFrontend">GitHub</a> or send a mail to my mailing list at <a href="mailto:[email protected]">[email protected]</a>.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/AboutDialog.cpp" line="65"/> + <location filename="../../src/ui/AboutDialog.cpp" line="63"/> <source><br><br> Built with Qt </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/AboutDialog.cpp" line="66"/> + <location filename="../../src/ui/AboutDialog.cpp" line="64"/> <source> and GPGME </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/AboutDialog.cpp" line="67"/> + <location filename="../../src/ui/AboutDialog.cpp" line="65"/> <source><br>Built at </source> <translation type="unfinished"></translation> </message> @@ -727,108 +727,119 @@ <context> <name>KeyImportDetailDialog</name> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="33"/> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="49"/> - <source>Key import details</source> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="35"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="54"/> + <source>Key Update Details</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="35"/> + <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"/> + <source>Key Import Details</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="33"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="37"/> <source>No keys found to import</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="57"/> - <source>Genral key import info</source> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="65"/> + <source>General key info</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="60"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="68"/> <source>Considered:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="64"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="72"/> <source>Public unchanged:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="69"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="77"/> <source>Imported:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="74"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="82"/> <source>Not imported:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="79"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="87"/> <source>Private read:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="84"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="92"/> <source>Private imported:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="89"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="97"/> <source>Private unchanged:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="104"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="112"/> <source>Name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="104"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="112"/> <source>Email</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="104"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="112"/> <source>Status</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="104"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="112"/> <source>Fingerprint</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="128"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="136"/> <source>private</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="131"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="139"/> <source>public</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="134"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="142"/> <source>unchanged</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="137"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="145"/> <source>new key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="140"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="148"/> <source>new subkey</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="144"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="152"/> <source>new signature</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="148"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="156"/> <source>new uid</source> <translation type="unfinished"></translation> </message> @@ -836,58 +847,58 @@ <context> <name>KeyList</name> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="76"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="77"/> <source>Select</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="76"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="77"/> <source>Type</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="76"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="77"/> <source>Name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="76"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="77"/> <source>Email Address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="77"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="78"/> <source>Usage</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="77"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="78"/> <source>Validity</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="77"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="78"/> <source>Finger Print</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="312"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="311"/> <source>Import Keys</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="314"/> - <source>You've dropped something on the keylist. - gpg4usb will now try to import key(s).</source> + <location filename="../../src/ui/widgets/KeyList.cpp" line="313"/> + <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="317"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="316"/> <source>Always import without bothering.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="353"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="352"/> <source>Couldn't Open File: </source> <translation type="unfinished"></translation> </message> @@ -900,16 +911,6 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyMgmt.cpp" line="94"/> - <source>Ctrl+Q</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/ui/KeyMgmt.cpp" line="102"/> - <source>Generate KeyPair</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../../src/ui/KeyMgmt.cpp" line="88"/> <source>&Open</source> <translation type="unfinished"></translation> @@ -930,6 +931,11 @@ <translation type="unfinished"></translation> </message> <message> + <location filename="../../src/ui/KeyMgmt.cpp" line="94"/> + <source>Ctrl+Q</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../../src/ui/KeyMgmt.cpp" line="96"/> <source>Close</source> <translation type="unfinished"></translation> @@ -945,6 +951,11 @@ <translation type="unfinished"></translation> </message> <message> + <location filename="../../src/ui/KeyMgmt.cpp" line="102"/> + <source>Generate KeyPair</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../../src/ui/KeyMgmt.cpp" line="105"/> <source>New Subkey</source> <translation type="unfinished"></translation> @@ -1032,7 +1043,7 @@ </message> <message> <location filename="../../src/ui/KeyMgmt.cpp" line="145"/> - <source>Show Keydetails</source> + <source>Show Key Details</source> <translation type="unfinished"></translation> </message> <message> @@ -1056,6 +1067,11 @@ <translation type="unfinished"></translation> </message> <message> + <location filename="../../src/ui/KeyMgmt.cpp" line="173"/> + <source>Key</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../../src/ui/KeyMgmt.cpp" line="181"/> <source>Generate</source> <translation type="unfinished"></translation> @@ -1066,18 +1082,13 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyMgmt.cpp" line="192"/> - <source>Import Key</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/ui/KeyMgmt.cpp" line="173"/> - <source>Key</source> + <location filename="../../src/ui/KeyMgmt.cpp" line="191"/> + <source>Import key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyMgmt.cpp" line="191"/> - <source>Import key</source> + <location filename="../../src/ui/KeyMgmt.cpp" line="192"/> + <source>Import Key</source> <translation type="unfinished"></translation> </message> <message> @@ -1127,18 +1138,18 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyMgmt.cpp" line="344"/> - <location filename="../../src/ui/KeyMgmt.cpp" line="351"/> + <location filename="../../src/ui/KeyMgmt.cpp" line="338"/> + <location filename="../../src/ui/KeyMgmt.cpp" line="345"/> <source>Invalid Operation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyMgmt.cpp" line="345"/> + <location filename="../../src/ui/KeyMgmt.cpp" line="339"/> <source>Please select one KeyPair before doing this operation.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyMgmt.cpp" line="352"/> + <location filename="../../src/ui/KeyMgmt.cpp" line="346"/> <source>If a key pair does not have a private key then it will not be able to generate sub-keys.</source> <translation type="unfinished"></translation> </message> @@ -1276,57 +1287,71 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="138"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="139"/> <source>Modify Expiration Datetime</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="156"/> - <source>Warning: The master key of the key pair has expired.</source> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="143"/> + <source>Key Server Operation</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="165"/> + <source>Warning: The Master Key has expired.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="159"/> - <source>Warning: The master key of the key pair has been revoked</source> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="168"/> + <source>Warning: The Master Key has been revoked</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="182"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="191"/> <source>Exporting private Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="183"/> - <source>You are about to export your private key. -This is NOT your public key, so don't give it away. -Make sure you keep it save.Do you really want to export your private key?</source> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="192"/> + <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="196"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="204"/> <source>Export Key To File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="197"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="205"/> <source>Key Files</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="200"/> - <source>Export error</source> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="208"/> + <source>Export Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="200"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="208"/> <source>Couldn't open %1 for writing</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="270"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="278"/> <source>Never Expire</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="298"/> + <source>Upload Key Pair</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="300"/> + <source>Update Key Pair</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>KeyPairSubkeyTab</name> @@ -1429,182 +1454,182 @@ Make sure you keep it save.Do you really want to export your private key?</sourc <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="96"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="100"/> <source>Select</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="96"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="119"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="100"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="123"/> <source>Name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="96"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="119"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="100"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="123"/> <source>Email</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="96"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="100"/> <source>Comment</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="119"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="123"/> <source>Key ID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="119"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="123"/> <source>Create Date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="119"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="123"/> <source>Expired Date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="212"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="216"/> <source>Never Expires</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="230"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="291"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="414"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="429"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="469"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="476"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="234"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="297"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="422"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="437"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="477"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="484"/> <source>Invalid Operation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="231"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="292"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="235"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="298"/> <source>Please select one or more UIDs before doing this operation.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="256"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="260"/> <source>Sign Selected UID(s)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="258"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="262"/> <source>Delete Selected UID(s)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="275"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="281"/> <source>Successful Operation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="276"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="282"/> <source>Successfully added a new UID.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="279"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="321"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="354"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="449"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="496"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="285"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="327"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="360"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="457"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="504"/> <source>Operation Failed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="280"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="322"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="355"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="450"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="497"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="286"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="328"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="361"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="458"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="505"/> <source>An error occurred during the operation.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="304"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="310"/> <source>Deleting UIDs</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="305"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="311"/> <source>Are you sure that you want to delete the following uids?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="306"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="348"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="443"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="490"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="312"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="354"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="451"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="498"/> <source>The action can not be undone.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="346"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="352"/> <source>Set Primary UID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="347"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="353"/> <source>Are you sure that you want to set the Primary UID to?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="386"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="392"/> <source>Set As Primary</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="388"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="394"/> <source>Sign UID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="390"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="396"/> <source>Delete UID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="415"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="430"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="423"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="438"/> <source>Please select one UID before doing this operation.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="441"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="449"/> <source>Deleting UID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="442"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="450"/> <source>Are you sure that you want to delete the following uid?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="458"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="466"/> <source>Delete(Revoke) Key Signature</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="470"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="478"/> <source>Please select one Key Signature before doing this operation.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="477"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="485"/> <source>To delete the signature, you need to have its corresponding public key in the local database.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="488"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="496"/> <source>Deleting Key Signature</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="489"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="497"/> <source>Are you sure that you want to delete the following signature?</source> <translation type="unfinished"></translation> </message> @@ -1612,103 +1637,141 @@ Make sure you keep it save.Do you really want to export your private key?</sourc <context> <name>KeyServerImportDialog</name> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="33"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="40"/> <source>&Close</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="34"/> - <source>&Import</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="41"/> + <source>&Import ALL</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="35"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="42"/> <source>&Search</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="38"/> - <source>Search string:</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="45"/> + <source>Search String:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="42"/> - <source>Keyserver:</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="49"/> + <source>Key Server:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="98"/> + <source>Update Keys from Keyserver</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="73"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="100"/> <source>Import Keys from Keyserver</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="110"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="161"/> <source>UID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="110"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="161"/> <source>Creation date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="110"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="161"/> <source>KeyID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="110"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="161"/> <source>Tag</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="150"/> - <source>Couldn't contact keyserver!</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="182"/> + <source><h4>Text is empty.</h4></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="216"/> + <source>Not Key Found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="219"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="389"/> + <source>Timeout</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="222"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="392"/> + <source>Key Server Not Found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="225"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="395"/> + <source>Connection Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="157"/> - <source>Too many responses from keyserver!</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="233"/> + <source><h4>CToo many responses from keyserver!</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="163"/> - <source>No keys found, input may be kexId, retrying search with 0x.</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="240"/> + <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="167"/> - <source>No keys found containing the search string!</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="245"/> + <source><h4>No keys found containing the search string!</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="170"/> - <source>Insufficiently specific search string!</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="249"/> + <source><h4>Insufficiently specific search string!</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="196"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="277"/> <source>revoked</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="199"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="280"/> <source>disabled</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="239"/> - <source>%1 keys found. Doubleclick a key to import it.</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="320"/> + <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="386"/> + <source>Key Not Found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="413"/> + <source><h4>Key Updated</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="279"/> - <source>Error while contacting keyserver!</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="415"/> + <source><h4>Key Imported</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="283"/> - <source>Key imported</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="476"/> + <source>Upload Keys from Keyserver</source> <translation type="unfinished"></translation> </message> </context> @@ -1769,6 +1832,34 @@ Make sure you keep it save.Do you really want to export your private key?</sourc </message> </context> <context> + <name>KeyUploadDialog</name> + <message> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="72"/> + <source>Uploading Public Key</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="107"/> + <source>Key Not Found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="110"/> + <source>Timeout</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="113"/> + <source>Key Server Not Found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="116"/> + <source>Connection Error</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>KeyserverTab</name> <message> <location filename="../../src/ui/SettingsDialog.cpp" line="548"/> @@ -1784,546 +1875,546 @@ Make sure you keep it save.Do you really want to export your private key?</sourc <context> <name>MainWindow</name> <message> - <location filename="../../src/MainWindow.cpp" line="175"/> + <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"/> + <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"/> + <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> + <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"/> + <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> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="289"/> + <source>The selected key cannot be used for signing and encryption at the same time.<br/></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotUI.cpp" line="54"/> + <source>There is one unencrypted file in attachment folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotUI.cpp" line="56"/> + <source>There are </source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotUI.cpp" line="56"/> + <source> unencrypted files in attachment folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="30"/> <source>&New</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="181"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="36"/> <source>Open a new file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="184"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="39"/> <source>&Open...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="187"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="42"/> <source>Open an existing file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="190"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="45"/> <source>&Save</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="193"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="48"/> <source>Save the current File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="196"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="51"/> <source>Save &As</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="199"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="54"/> <source>Save the current File as...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="202"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="57"/> <source>&Print</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="205"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="60"/> <source>Print Document</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="208"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="63"/> <source>&Close</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="210"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="65"/> <source>Close file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="213"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="68"/> <source>&Quit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="216"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="71"/> <source>Quit Program</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="221"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="76"/> <source>&Undo</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="223"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="78"/> <source>Undo Last Edit Action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="226"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="81"/> <source>&Redo</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="228"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="83"/> <source>Redo Last Edit Action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="231"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="86"/> <source>Zoom In</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="235"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="90"/> <source>Zoom Out</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="239"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="94"/> <source>&Paste</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="242"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="97"/> <source>Paste Text From Clipboard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="245"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="100"/> <source>Cu&t</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="248"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="103"/> <source>Cut the current selection's contents to the clipboard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="252"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="107"/> <source>&Copy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="255"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="110"/> <source>Copy the current selection's contents to the clipboard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="259"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="114"/> <source>&Quote</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="261"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="116"/> <source>Quote whole text</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="264"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="119"/> <source>Select &All</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="267"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="122"/> <source>Select the whole text</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="270"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="125"/> <source>&Find</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="272"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="127"/> <source>Find a word</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="275"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="130"/> <source>Remove &spacing</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="278"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="133"/> <source>Remove double linebreaks, e.g. in pasted text from webmailer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="281"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="136"/> <source>Se&ttings</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="282"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="137"/> <source>Open settings dialog</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="288"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="143"/> <source>&Encrypt</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="291"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="146"/> <source>Encrypt Message</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="294"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="149"/> <source>&Encrypt &Sign</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="297"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="152"/> <source>Encrypt and Sign Message</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="300"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="155"/> <source>&Decrypt</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="303"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="158"/> <source>Decrypt Message</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="306"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="161"/> <source>&Decrypt &Verify</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="309"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="164"/> <source>Decrypt and Verify Message</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="315"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="170"/> <source>&Encrypt File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="316"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="171"/> <source>Encrypt File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="319"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="174"/> <source>&Decrypt File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="320"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="175"/> <source>Decrypt File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="323"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="178"/> <source>&Sign File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="324"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="179"/> <source>Sign File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="327"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="182"/> <source>&Verify File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="328"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="183"/> <source>Verify File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="332"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="187"/> <source>&Sign</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="335"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="190"/> <source>Sign Message</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="338"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="193"/> <source>&Verify</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="341"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="196"/> <source>Verify Message</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="347"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="202"/> <source>&Editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="349"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="204"/> <source>Import New Key From Editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="352"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="207"/> <source>Manage &keys</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="354"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="209"/> <source>Open Keymanagement</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="359"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="214"/> <source>&About</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="361"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="216"/> <source>Show the application's About box</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="364"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="219"/> <source>Open &Wizard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="365"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="220"/> <source>Open the wizard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="370"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="225"/> <source>Append Selected Key(s) To Text</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="371"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="226"/> <source>Append The Selected Keys To Text in Editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="374"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="229"/> <source>Copy EMail-address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="375"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="230"/> <source>Copy selected EMailaddress to clipboard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="379"/> - <source>Show Keydetails</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="234"/> + <source>Show Key Details</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="380"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="235"/> <source>Show Details for this Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="383"/> - <source>Refresh key from keyserver</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="238"/> + <source>Refresh Key From Key Server</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="384"/> - <source>Refresh key from default keyserver</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="239"/> + <source>Refresh key from default key server</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="387"/> - <source>Upload Key(s) To Server</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="242"/> + <source>Upload Public Key(s) To Server</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="388"/> - <source>Upload The Selected Keys To Server</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="243"/> + <source>Upload The Selected Public Keys To Server</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="402"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="257"/> <source>Remove PGP Header</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="405"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="260"/> <source>Add PGP Header</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="446"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="265"/> <source>&File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="458"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="277"/> <source>&Edit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="476"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="295"/> <source>&File...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="482"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="301"/> <source>&Crypt</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="493"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="312"/> <source>&Keys</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="494"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="313"/> <source>&Import Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="503"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="322"/> <source>&Steganography</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="512"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="331"/> <source>&View</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="514"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="333"/> <source>&Help</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="522"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="341"/> <source>File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="530"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="349"/> <source>Crypt</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="540"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="359"/> <source>Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="545"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="364"/> <source>Edit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="552"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="371"/> <source>Special Edit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="564"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="383"/> <source>Import key from...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="565"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="384"/> <source>Import key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="573"/> - <source>Encrypt or decrypt File</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="393"/> + <source>Opera File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="574"/> - <source>File..</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="394"/> + <source>File Crypto</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="594"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="412"/> <source>Ready</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="601"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="419"/> <source>Key ToolBox</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="609"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="427"/> <source>Information Board</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="629"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="447"/> <source>Attached files:</source> <translation type="unfinished"></translation> </message> - <message> - <location filename="../../src/MainWindow.cpp" line="692"/> - <source>There is one unencrypted file in attachment folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/MainWindow.cpp" line="694"/> - <source>There are </source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/MainWindow.cpp" line="694"/> - <source> unencrypted files in attachment folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/MainWindow.cpp" line="726"/> - <location filename="../../src/MainWindow.cpp" line="773"/> - <location filename="../../src/MainWindow.cpp" line="1076"/> - <source>No Key Selected</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/MainWindow.cpp" line="733"/> - <location filename="../../src/MainWindow.cpp" line="780"/> - <location filename="../../src/MainWindow.cpp" line="1083"/> - <source>Invalid Operation</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/MainWindow.cpp" line="734"/> - <source>The selected key contains a key that does not actually have a encrypt function.<br/></source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/MainWindow.cpp" line="735"/> - <location filename="../../src/MainWindow.cpp" line="782"/> - <location filename="../../src/MainWindow.cpp" line="1085"/> - <source><br/>For example the Following Key: <br/></source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/MainWindow.cpp" line="781"/> - <source>The selected key contains a key that does not actually have a signature function.<br/></source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/MainWindow.cpp" line="1084"/> - <source>The selected key cannot be used for signing and encryption at the same time.<br/></source> - <translation type="unfinished"></translation> - </message> </context> <context> <name>MimeTab</name> @@ -2626,56 +2717,56 @@ Make sure you keep it save.Do you really want to export your private key?</sourc <context> <name>TextEdit</name> <message> - <location filename="../../src/ui/TextEdit.cpp" line="49"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="49"/> <source>untitled</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/TextEdit.cpp" line="68"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="76"/> <source>Open file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/TextEdit.cpp" line="93"/> - <location filename="../../src/ui/TextEdit.cpp" line="371"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="101"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="379"/> <source>Application</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/TextEdit.cpp" line="94"/> - <location filename="../../src/ui/TextEdit.cpp" line="372"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="102"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="380"/> <source>Cannot read file %1: %2.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/TextEdit.cpp" line="143"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="151"/> <source>File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/TextEdit.cpp" line="144"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="152"/> <source>Cannot write file %1: %2.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/TextEdit.cpp" line="165"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="173"/> <source>Save file </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/TextEdit.cpp" line="229"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="237"/> <source>Unsaved document</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/TextEdit.cpp" line="230"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="238"/> <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/TextEdit.cpp" line="232"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="240"/> <source><b>Note:</b> If you don't save these files, all changes are lost.<br/></source> <translation type="unfinished"></translation> </message> diff --git a/resource/ts/gpg_frontend_ru.ts b/resource/ts/gpg_frontend_ru.ts index 847bc328..370d406c 100644 --- a/resource/ts/gpg_frontend_ru.ts +++ b/resource/ts/gpg_frontend_ru.ts @@ -101,35 +101,35 @@ <context> <name>Attachments</name> <message> - <location filename="../../src/ui/Attachments.cpp" line="78"/> - <location filename="../../src/ui/Attachments.cpp" line="113"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="78"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="113"/> <source>Save File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Attachments.cpp" line="79"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="79"/> <source>Save this file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Attachments.cpp" line="83"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="83"/> <source>Open File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Attachments.cpp" line="84"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="84"/> <source>Open this file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Attachments.cpp" line="119"/> - <location filename="../../src/ui/Attachments.cpp" line="164"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="119"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="164"/> <source>File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Attachments.cpp" line="120"/> - <location filename="../../src/ui/Attachments.cpp" line="165"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="120"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="165"/> <source>Cannot write file %1: %2.</source> <translation type="unfinished"></translation> @@ -508,21 +508,21 @@ <name>InfoTab</name> <message> <location filename="../../src/ui/AboutDialog.cpp" line="55"/> - <source><br><center>GPGFrontend is a modern, easy-to-use, compact, <br>cross-platform, and installation-free gpg front-end tool.<br>It visualizes most of the common operations of gpg commands.<br>It's licensed under the GPL v3<br><br><b>Developer:</b><br>Saturneric<br><br>If you have any questions or suggestions have a look<br/>at my <a href="https://bktus.com/%e8%81%94%e7%b3%bb%e4%b8%8e%e9%aa%8c%e8%af%81">contact page</a> or send a mail to my<br/> mailing list at <a href="mailto:[email protected]">[email protected]</a>.</source> + <source><br><center>GPGFrontend is an easy-to-use, compact, <br>cross-platform, and installation-free gpg front-end tool.<br>It visualizes most of the common operations of gpg commands.<br>It's licensed under the GPL v3<br><br><b>Developer:</b><br>Saturneric<br><br>If you have any questions or suggestions, raise an issue<br/>at <a href="https://github.com/saturneric/GpgFrontend">GitHub</a> or send a mail to my mailing list at <a href="mailto:[email protected]">[email protected]</a>.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/AboutDialog.cpp" line="65"/> + <location filename="../../src/ui/AboutDialog.cpp" line="63"/> <source><br><br> Built with Qt </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/AboutDialog.cpp" line="66"/> + <location filename="../../src/ui/AboutDialog.cpp" line="64"/> <source> and GPGME </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/AboutDialog.cpp" line="67"/> + <location filename="../../src/ui/AboutDialog.cpp" line="65"/> <source><br>Built at </source> <translation type="unfinished"></translation> </message> @@ -727,108 +727,119 @@ <context> <name>KeyImportDetailDialog</name> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="33"/> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="49"/> - <source>Key import details</source> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="35"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="54"/> + <source>Key Update Details</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="35"/> + <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"/> + <source>Key Import Details</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="33"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="37"/> <source>No keys found to import</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="57"/> - <source>Genral key import info</source> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="65"/> + <source>General key info</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="60"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="68"/> <source>Considered:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="64"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="72"/> <source>Public unchanged:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="69"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="77"/> <source>Imported:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="74"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="82"/> <source>Not imported:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="79"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="87"/> <source>Private read:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="84"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="92"/> <source>Private imported:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="89"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="97"/> <source>Private unchanged:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="104"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="112"/> <source>Name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="104"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="112"/> <source>Email</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="104"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="112"/> <source>Status</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="104"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="112"/> <source>Fingerprint</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="128"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="136"/> <source>private</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="131"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="139"/> <source>public</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="134"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="142"/> <source>unchanged</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="137"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="145"/> <source>new key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="140"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="148"/> <source>new subkey</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="144"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="152"/> <source>new signature</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="148"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="156"/> <source>new uid</source> <translation type="unfinished"></translation> </message> @@ -836,58 +847,58 @@ <context> <name>KeyList</name> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="76"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="77"/> <source>Select</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="76"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="77"/> <source>Type</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="76"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="77"/> <source>Name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="76"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="77"/> <source>Email Address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="77"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="78"/> <source>Usage</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="77"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="78"/> <source>Validity</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="77"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="78"/> <source>Finger Print</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="312"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="311"/> <source>Import Keys</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="314"/> - <source>You've dropped something on the keylist. - gpg4usb will now try to import key(s).</source> + <location filename="../../src/ui/widgets/KeyList.cpp" line="313"/> + <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="317"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="316"/> <source>Always import without bothering.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="353"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="352"/> <source>Couldn't Open File: </source> <translation type="unfinished"></translation> </message> @@ -900,16 +911,6 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyMgmt.cpp" line="94"/> - <source>Ctrl+Q</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/ui/KeyMgmt.cpp" line="102"/> - <source>Generate KeyPair</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../../src/ui/KeyMgmt.cpp" line="88"/> <source>&Open</source> <translation type="unfinished"></translation> @@ -930,6 +931,11 @@ <translation type="unfinished"></translation> </message> <message> + <location filename="../../src/ui/KeyMgmt.cpp" line="94"/> + <source>Ctrl+Q</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../../src/ui/KeyMgmt.cpp" line="96"/> <source>Close</source> <translation type="unfinished"></translation> @@ -945,6 +951,11 @@ <translation type="unfinished"></translation> </message> <message> + <location filename="../../src/ui/KeyMgmt.cpp" line="102"/> + <source>Generate KeyPair</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../../src/ui/KeyMgmt.cpp" line="105"/> <source>New Subkey</source> <translation type="unfinished"></translation> @@ -1032,7 +1043,7 @@ </message> <message> <location filename="../../src/ui/KeyMgmt.cpp" line="145"/> - <source>Show Keydetails</source> + <source>Show Key Details</source> <translation type="unfinished"></translation> </message> <message> @@ -1056,6 +1067,11 @@ <translation type="unfinished"></translation> </message> <message> + <location filename="../../src/ui/KeyMgmt.cpp" line="173"/> + <source>Key</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../../src/ui/KeyMgmt.cpp" line="181"/> <source>Generate</source> <translation type="unfinished"></translation> @@ -1066,18 +1082,13 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyMgmt.cpp" line="192"/> - <source>Import Key</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/ui/KeyMgmt.cpp" line="173"/> - <source>Key</source> + <location filename="../../src/ui/KeyMgmt.cpp" line="191"/> + <source>Import key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyMgmt.cpp" line="191"/> - <source>Import key</source> + <location filename="../../src/ui/KeyMgmt.cpp" line="192"/> + <source>Import Key</source> <translation type="unfinished"></translation> </message> <message> @@ -1127,18 +1138,18 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyMgmt.cpp" line="344"/> - <location filename="../../src/ui/KeyMgmt.cpp" line="351"/> + <location filename="../../src/ui/KeyMgmt.cpp" line="338"/> + <location filename="../../src/ui/KeyMgmt.cpp" line="345"/> <source>Invalid Operation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyMgmt.cpp" line="345"/> + <location filename="../../src/ui/KeyMgmt.cpp" line="339"/> <source>Please select one KeyPair before doing this operation.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyMgmt.cpp" line="352"/> + <location filename="../../src/ui/KeyMgmt.cpp" line="346"/> <source>If a key pair does not have a private key then it will not be able to generate sub-keys.</source> <translation type="unfinished"></translation> </message> @@ -1276,57 +1287,71 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="138"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="139"/> <source>Modify Expiration Datetime</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="156"/> - <source>Warning: The master key of the key pair has expired.</source> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="143"/> + <source>Key Server Operation</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="165"/> + <source>Warning: The Master Key has expired.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="159"/> - <source>Warning: The master key of the key pair has been revoked</source> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="168"/> + <source>Warning: The Master Key has been revoked</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="182"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="191"/> <source>Exporting private Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="183"/> - <source>You are about to export your private key. -This is NOT your public key, so don't give it away. -Make sure you keep it save.Do you really want to export your private key?</source> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="192"/> + <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="196"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="204"/> <source>Export Key To File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="197"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="205"/> <source>Key Files</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="200"/> - <source>Export error</source> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="208"/> + <source>Export Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="200"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="208"/> <source>Couldn't open %1 for writing</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="270"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="278"/> <source>Never Expire</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="298"/> + <source>Upload Key Pair</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="300"/> + <source>Update Key Pair</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>KeyPairSubkeyTab</name> @@ -1429,182 +1454,182 @@ Make sure you keep it save.Do you really want to export your private key?</sourc <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="96"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="100"/> <source>Select</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="96"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="119"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="100"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="123"/> <source>Name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="96"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="119"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="100"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="123"/> <source>Email</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="96"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="100"/> <source>Comment</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="119"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="123"/> <source>Key ID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="119"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="123"/> <source>Create Date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="119"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="123"/> <source>Expired Date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="212"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="216"/> <source>Never Expires</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="230"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="291"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="414"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="429"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="469"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="476"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="234"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="297"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="422"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="437"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="477"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="484"/> <source>Invalid Operation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="231"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="292"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="235"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="298"/> <source>Please select one or more UIDs before doing this operation.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="256"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="260"/> <source>Sign Selected UID(s)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="258"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="262"/> <source>Delete Selected UID(s)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="275"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="281"/> <source>Successful Operation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="276"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="282"/> <source>Successfully added a new UID.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="279"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="321"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="354"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="449"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="496"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="285"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="327"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="360"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="457"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="504"/> <source>Operation Failed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="280"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="322"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="355"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="450"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="497"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="286"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="328"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="361"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="458"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="505"/> <source>An error occurred during the operation.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="304"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="310"/> <source>Deleting UIDs</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="305"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="311"/> <source>Are you sure that you want to delete the following uids?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="306"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="348"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="443"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="490"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="312"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="354"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="451"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="498"/> <source>The action can not be undone.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="346"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="352"/> <source>Set Primary UID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="347"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="353"/> <source>Are you sure that you want to set the Primary UID to?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="386"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="392"/> <source>Set As Primary</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="388"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="394"/> <source>Sign UID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="390"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="396"/> <source>Delete UID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="415"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="430"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="423"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="438"/> <source>Please select one UID before doing this operation.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="441"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="449"/> <source>Deleting UID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="442"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="450"/> <source>Are you sure that you want to delete the following uid?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="458"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="466"/> <source>Delete(Revoke) Key Signature</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="470"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="478"/> <source>Please select one Key Signature before doing this operation.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="477"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="485"/> <source>To delete the signature, you need to have its corresponding public key in the local database.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="488"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="496"/> <source>Deleting Key Signature</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="489"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="497"/> <source>Are you sure that you want to delete the following signature?</source> <translation type="unfinished"></translation> </message> @@ -1612,103 +1637,141 @@ Make sure you keep it save.Do you really want to export your private key?</sourc <context> <name>KeyServerImportDialog</name> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="33"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="40"/> <source>&Close</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="34"/> - <source>&Import</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="41"/> + <source>&Import ALL</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="35"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="42"/> <source>&Search</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="38"/> - <source>Search string:</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="45"/> + <source>Search String:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="42"/> - <source>Keyserver:</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="49"/> + <source>Key Server:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="98"/> + <source>Update Keys from Keyserver</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="73"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="100"/> <source>Import Keys from Keyserver</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="110"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="161"/> <source>UID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="110"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="161"/> <source>Creation date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="110"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="161"/> <source>KeyID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="110"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="161"/> <source>Tag</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="150"/> - <source>Couldn't contact keyserver!</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="182"/> + <source><h4>Text is empty.</h4></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="216"/> + <source>Not Key Found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="219"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="389"/> + <source>Timeout</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="222"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="392"/> + <source>Key Server Not Found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="225"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="395"/> + <source>Connection Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="157"/> - <source>Too many responses from keyserver!</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="233"/> + <source><h4>CToo many responses from keyserver!</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="163"/> - <source>No keys found, input may be kexId, retrying search with 0x.</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="240"/> + <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="167"/> - <source>No keys found containing the search string!</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="245"/> + <source><h4>No keys found containing the search string!</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="170"/> - <source>Insufficiently specific search string!</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="249"/> + <source><h4>Insufficiently specific search string!</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="196"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="277"/> <source>revoked</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="199"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="280"/> <source>disabled</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="239"/> - <source>%1 keys found. Doubleclick a key to import it.</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="320"/> + <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="386"/> + <source>Key Not Found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="413"/> + <source><h4>Key Updated</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="279"/> - <source>Error while contacting keyserver!</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="415"/> + <source><h4>Key Imported</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="283"/> - <source>Key imported</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="476"/> + <source>Upload Keys from Keyserver</source> <translation type="unfinished"></translation> </message> </context> @@ -1769,6 +1832,34 @@ Make sure you keep it save.Do you really want to export your private key?</sourc </message> </context> <context> + <name>KeyUploadDialog</name> + <message> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="72"/> + <source>Uploading Public Key</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="107"/> + <source>Key Not Found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="110"/> + <source>Timeout</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="113"/> + <source>Key Server Not Found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="116"/> + <source>Connection Error</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>KeyserverTab</name> <message> <location filename="../../src/ui/SettingsDialog.cpp" line="548"/> @@ -1784,546 +1875,546 @@ Make sure you keep it save.Do you really want to export your private key?</sourc <context> <name>MainWindow</name> <message> - <location filename="../../src/MainWindow.cpp" line="175"/> + <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"/> + <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"/> + <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> + <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"/> + <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> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="289"/> + <source>The selected key cannot be used for signing and encryption at the same time.<br/></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotUI.cpp" line="54"/> + <source>There is one unencrypted file in attachment folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotUI.cpp" line="56"/> + <source>There are </source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotUI.cpp" line="56"/> + <source> unencrypted files in attachment folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="30"/> <source>&New</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="181"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="36"/> <source>Open a new file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="184"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="39"/> <source>&Open...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="187"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="42"/> <source>Open an existing file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="190"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="45"/> <source>&Save</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="193"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="48"/> <source>Save the current File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="196"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="51"/> <source>Save &As</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="199"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="54"/> <source>Save the current File as...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="202"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="57"/> <source>&Print</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="205"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="60"/> <source>Print Document</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="208"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="63"/> <source>&Close</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="210"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="65"/> <source>Close file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="213"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="68"/> <source>&Quit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="216"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="71"/> <source>Quit Program</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="221"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="76"/> <source>&Undo</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="223"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="78"/> <source>Undo Last Edit Action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="226"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="81"/> <source>&Redo</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="228"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="83"/> <source>Redo Last Edit Action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="231"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="86"/> <source>Zoom In</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="235"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="90"/> <source>Zoom Out</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="239"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="94"/> <source>&Paste</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="242"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="97"/> <source>Paste Text From Clipboard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="245"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="100"/> <source>Cu&t</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="248"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="103"/> <source>Cut the current selection's contents to the clipboard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="252"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="107"/> <source>&Copy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="255"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="110"/> <source>Copy the current selection's contents to the clipboard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="259"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="114"/> <source>&Quote</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="261"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="116"/> <source>Quote whole text</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="264"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="119"/> <source>Select &All</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="267"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="122"/> <source>Select the whole text</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="270"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="125"/> <source>&Find</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="272"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="127"/> <source>Find a word</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="275"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="130"/> <source>Remove &spacing</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="278"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="133"/> <source>Remove double linebreaks, e.g. in pasted text from webmailer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="281"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="136"/> <source>Se&ttings</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="282"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="137"/> <source>Open settings dialog</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="288"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="143"/> <source>&Encrypt</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="291"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="146"/> <source>Encrypt Message</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="294"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="149"/> <source>&Encrypt &Sign</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="297"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="152"/> <source>Encrypt and Sign Message</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="300"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="155"/> <source>&Decrypt</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="303"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="158"/> <source>Decrypt Message</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="306"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="161"/> <source>&Decrypt &Verify</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="309"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="164"/> <source>Decrypt and Verify Message</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="315"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="170"/> <source>&Encrypt File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="316"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="171"/> <source>Encrypt File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="319"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="174"/> <source>&Decrypt File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="320"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="175"/> <source>Decrypt File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="323"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="178"/> <source>&Sign File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="324"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="179"/> <source>Sign File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="327"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="182"/> <source>&Verify File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="328"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="183"/> <source>Verify File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="332"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="187"/> <source>&Sign</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="335"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="190"/> <source>Sign Message</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="338"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="193"/> <source>&Verify</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="341"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="196"/> <source>Verify Message</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="347"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="202"/> <source>&Editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="349"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="204"/> <source>Import New Key From Editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="352"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="207"/> <source>Manage &keys</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="354"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="209"/> <source>Open Keymanagement</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="359"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="214"/> <source>&About</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="361"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="216"/> <source>Show the application's About box</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="364"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="219"/> <source>Open &Wizard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="365"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="220"/> <source>Open the wizard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="370"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="225"/> <source>Append Selected Key(s) To Text</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="371"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="226"/> <source>Append The Selected Keys To Text in Editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="374"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="229"/> <source>Copy EMail-address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="375"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="230"/> <source>Copy selected EMailaddress to clipboard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="379"/> - <source>Show Keydetails</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="234"/> + <source>Show Key Details</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="380"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="235"/> <source>Show Details for this Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="383"/> - <source>Refresh key from keyserver</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="238"/> + <source>Refresh Key From Key Server</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="384"/> - <source>Refresh key from default keyserver</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="239"/> + <source>Refresh key from default key server</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="387"/> - <source>Upload Key(s) To Server</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="242"/> + <source>Upload Public Key(s) To Server</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="388"/> - <source>Upload The Selected Keys To Server</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="243"/> + <source>Upload The Selected Public Keys To Server</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="402"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="257"/> <source>Remove PGP Header</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="405"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="260"/> <source>Add PGP Header</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="446"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="265"/> <source>&File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="458"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="277"/> <source>&Edit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="476"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="295"/> <source>&File...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="482"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="301"/> <source>&Crypt</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="493"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="312"/> <source>&Keys</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="494"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="313"/> <source>&Import Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="503"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="322"/> <source>&Steganography</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="512"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="331"/> <source>&View</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="514"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="333"/> <source>&Help</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="522"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="341"/> <source>File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="530"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="349"/> <source>Crypt</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="540"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="359"/> <source>Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="545"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="364"/> <source>Edit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="552"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="371"/> <source>Special Edit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="564"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="383"/> <source>Import key from...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="565"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="384"/> <source>Import key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="573"/> - <source>Encrypt or decrypt File</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="393"/> + <source>Opera File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="574"/> - <source>File..</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="394"/> + <source>File Crypto</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="594"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="412"/> <source>Ready</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="601"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="419"/> <source>Key ToolBox</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="609"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="427"/> <source>Information Board</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="629"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="447"/> <source>Attached files:</source> <translation type="unfinished"></translation> </message> - <message> - <location filename="../../src/MainWindow.cpp" line="692"/> - <source>There is one unencrypted file in attachment folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/MainWindow.cpp" line="694"/> - <source>There are </source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/MainWindow.cpp" line="694"/> - <source> unencrypted files in attachment folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/MainWindow.cpp" line="726"/> - <location filename="../../src/MainWindow.cpp" line="773"/> - <location filename="../../src/MainWindow.cpp" line="1076"/> - <source>No Key Selected</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/MainWindow.cpp" line="733"/> - <location filename="../../src/MainWindow.cpp" line="780"/> - <location filename="../../src/MainWindow.cpp" line="1083"/> - <source>Invalid Operation</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/MainWindow.cpp" line="734"/> - <source>The selected key contains a key that does not actually have a encrypt function.<br/></source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/MainWindow.cpp" line="735"/> - <location filename="../../src/MainWindow.cpp" line="782"/> - <location filename="../../src/MainWindow.cpp" line="1085"/> - <source><br/>For example the Following Key: <br/></source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/MainWindow.cpp" line="781"/> - <source>The selected key contains a key that does not actually have a signature function.<br/></source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/MainWindow.cpp" line="1084"/> - <source>The selected key cannot be used for signing and encryption at the same time.<br/></source> - <translation type="unfinished"></translation> - </message> </context> <context> <name>MimeTab</name> @@ -2626,56 +2717,56 @@ Make sure you keep it save.Do you really want to export your private key?</sourc <context> <name>TextEdit</name> <message> - <location filename="../../src/ui/TextEdit.cpp" line="49"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="49"/> <source>untitled</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/TextEdit.cpp" line="68"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="76"/> <source>Open file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/TextEdit.cpp" line="93"/> - <location filename="../../src/ui/TextEdit.cpp" line="371"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="101"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="379"/> <source>Application</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/TextEdit.cpp" line="94"/> - <location filename="../../src/ui/TextEdit.cpp" line="372"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="102"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="380"/> <source>Cannot read file %1: %2.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/TextEdit.cpp" line="143"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="151"/> <source>File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/TextEdit.cpp" line="144"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="152"/> <source>Cannot write file %1: %2.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/TextEdit.cpp" line="165"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="173"/> <source>Save file </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/TextEdit.cpp" line="229"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="237"/> <source>Unsaved document</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/TextEdit.cpp" line="230"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="238"/> <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/TextEdit.cpp" line="232"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="240"/> <source><b>Note:</b> If you don't save these files, all changes are lost.<br/></source> <translation type="unfinished"></translation> </message> diff --git a/resource/ts/gpgfrontend_en_us.ts b/resource/ts/gpgfrontend_en_us.ts index 28cf60d7..09ec9879 100644 --- a/resource/ts/gpgfrontend_en_us.ts +++ b/resource/ts/gpgfrontend_en_us.ts @@ -101,35 +101,35 @@ <context> <name>Attachments</name> <message> - <location filename="../../src/ui/Attachments.cpp" line="78"/> - <location filename="../../src/ui/Attachments.cpp" line="113"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="78"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="113"/> <source>Save File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Attachments.cpp" line="79"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="79"/> <source>Save this file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Attachments.cpp" line="83"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="83"/> <source>Open File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Attachments.cpp" line="84"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="84"/> <source>Open this file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Attachments.cpp" line="119"/> - <location filename="../../src/ui/Attachments.cpp" line="164"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="119"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="164"/> <source>File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Attachments.cpp" line="120"/> - <location filename="../../src/ui/Attachments.cpp" line="165"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="120"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="165"/> <source>Cannot write file %1: %2.</source> <translation type="unfinished"></translation> @@ -508,21 +508,21 @@ <name>InfoTab</name> <message> <location filename="../../src/ui/AboutDialog.cpp" line="55"/> - <source><br><center>GPGFrontend is a modern, easy-to-use, compact, <br>cross-platform, and installation-free gpg front-end tool.<br>It visualizes most of the common operations of gpg commands.<br>It's licensed under the GPL v3<br><br><b>Developer:</b><br>Saturneric<br><br>If you have any questions or suggestions have a look<br/>at my <a href="https://bktus.com/%e8%81%94%e7%b3%bb%e4%b8%8e%e9%aa%8c%e8%af%81">contact page</a> or send a mail to my<br/> mailing list at <a href="mailto:[email protected]">[email protected]</a>.</source> + <source><br><center>GPGFrontend is an easy-to-use, compact, <br>cross-platform, and installation-free gpg front-end tool.<br>It visualizes most of the common operations of gpg commands.<br>It's licensed under the GPL v3<br><br><b>Developer:</b><br>Saturneric<br><br>If you have any questions or suggestions, raise an issue<br/>at <a href="https://github.com/saturneric/GpgFrontend">GitHub</a> or send a mail to my mailing list at <a href="mailto:[email protected]">[email protected]</a>.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/AboutDialog.cpp" line="65"/> + <location filename="../../src/ui/AboutDialog.cpp" line="63"/> <source><br><br> Built with Qt </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/AboutDialog.cpp" line="66"/> + <location filename="../../src/ui/AboutDialog.cpp" line="64"/> <source> and GPGME </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/AboutDialog.cpp" line="67"/> + <location filename="../../src/ui/AboutDialog.cpp" line="65"/> <source><br>Built at </source> <translation type="unfinished"></translation> </message> @@ -727,108 +727,119 @@ <context> <name>KeyImportDetailDialog</name> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="33"/> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="49"/> - <source>Key import details</source> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="35"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="54"/> + <source>Key Update Details</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="35"/> + <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"/> + <source>Key Import Details</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="33"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="37"/> <source>No keys found to import</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="57"/> - <source>Genral key import info</source> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="65"/> + <source>General key info</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="60"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="68"/> <source>Considered:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="64"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="72"/> <source>Public unchanged:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="69"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="77"/> <source>Imported:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="74"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="82"/> <source>Not imported:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="79"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="87"/> <source>Private read:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="84"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="92"/> <source>Private imported:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="89"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="97"/> <source>Private unchanged:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="104"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="112"/> <source>Name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="104"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="112"/> <source>Email</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="104"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="112"/> <source>Status</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="104"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="112"/> <source>Fingerprint</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="128"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="136"/> <source>private</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="131"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="139"/> <source>public</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="134"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="142"/> <source>unchanged</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="137"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="145"/> <source>new key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="140"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="148"/> <source>new subkey</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="144"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="152"/> <source>new signature</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="148"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="156"/> <source>new uid</source> <translation type="unfinished"></translation> </message> @@ -836,58 +847,58 @@ <context> <name>KeyList</name> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="76"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="77"/> <source>Select</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="76"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="77"/> <source>Type</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="76"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="77"/> <source>Name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="76"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="77"/> <source>Email Address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="77"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="78"/> <source>Usage</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="77"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="78"/> <source>Validity</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="77"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="78"/> <source>Finger Print</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="312"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="311"/> <source>Import Keys</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="314"/> - <source>You've dropped something on the keylist. - gpg4usb will now try to import key(s).</source> + <location filename="../../src/ui/widgets/KeyList.cpp" line="313"/> + <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="317"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="316"/> <source>Always import without bothering.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="353"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="352"/> <source>Couldn't Open File: </source> <translation type="unfinished"></translation> </message> @@ -900,16 +911,6 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyMgmt.cpp" line="94"/> - <source>Ctrl+Q</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/ui/KeyMgmt.cpp" line="102"/> - <source>Generate KeyPair</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../../src/ui/KeyMgmt.cpp" line="88"/> <source>&Open</source> <translation type="unfinished"></translation> @@ -930,6 +931,11 @@ <translation type="unfinished"></translation> </message> <message> + <location filename="../../src/ui/KeyMgmt.cpp" line="94"/> + <source>Ctrl+Q</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../../src/ui/KeyMgmt.cpp" line="96"/> <source>Close</source> <translation type="unfinished"></translation> @@ -945,6 +951,11 @@ <translation type="unfinished"></translation> </message> <message> + <location filename="../../src/ui/KeyMgmt.cpp" line="102"/> + <source>Generate KeyPair</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../../src/ui/KeyMgmt.cpp" line="105"/> <source>New Subkey</source> <translation type="unfinished"></translation> @@ -1032,7 +1043,7 @@ </message> <message> <location filename="../../src/ui/KeyMgmt.cpp" line="145"/> - <source>Show Keydetails</source> + <source>Show Key Details</source> <translation type="unfinished"></translation> </message> <message> @@ -1056,6 +1067,11 @@ <translation type="unfinished"></translation> </message> <message> + <location filename="../../src/ui/KeyMgmt.cpp" line="173"/> + <source>Key</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../../src/ui/KeyMgmt.cpp" line="181"/> <source>Generate</source> <translation type="unfinished"></translation> @@ -1066,18 +1082,13 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyMgmt.cpp" line="192"/> - <source>Import Key</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/ui/KeyMgmt.cpp" line="173"/> - <source>Key</source> + <location filename="../../src/ui/KeyMgmt.cpp" line="191"/> + <source>Import key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyMgmt.cpp" line="191"/> - <source>Import key</source> + <location filename="../../src/ui/KeyMgmt.cpp" line="192"/> + <source>Import Key</source> <translation type="unfinished"></translation> </message> <message> @@ -1127,18 +1138,18 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyMgmt.cpp" line="344"/> - <location filename="../../src/ui/KeyMgmt.cpp" line="351"/> + <location filename="../../src/ui/KeyMgmt.cpp" line="338"/> + <location filename="../../src/ui/KeyMgmt.cpp" line="345"/> <source>Invalid Operation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyMgmt.cpp" line="345"/> + <location filename="../../src/ui/KeyMgmt.cpp" line="339"/> <source>Please select one KeyPair before doing this operation.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyMgmt.cpp" line="352"/> + <location filename="../../src/ui/KeyMgmt.cpp" line="346"/> <source>If a key pair does not have a private key then it will not be able to generate sub-keys.</source> <translation type="unfinished"></translation> </message> @@ -1276,57 +1287,71 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="138"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="139"/> <source>Modify Expiration Datetime</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="156"/> - <source>Warning: The master key of the key pair has expired.</source> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="143"/> + <source>Key Server Operation</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="165"/> + <source>Warning: The Master Key has expired.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="159"/> - <source>Warning: The master key of the key pair has been revoked</source> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="168"/> + <source>Warning: The Master Key has been revoked</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="182"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="191"/> <source>Exporting private Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="183"/> - <source>You are about to export your private key. -This is NOT your public key, so don't give it away. -Make sure you keep it save.Do you really want to export your private key?</source> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="192"/> + <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="196"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="204"/> <source>Export Key To File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="197"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="205"/> <source>Key Files</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="200"/> - <source>Export error</source> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="208"/> + <source>Export Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="200"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="208"/> <source>Couldn't open %1 for writing</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="270"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="278"/> <source>Never Expire</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="298"/> + <source>Upload Key Pair</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="300"/> + <source>Update Key Pair</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>KeyPairSubkeyTab</name> @@ -1429,182 +1454,182 @@ Make sure you keep it save.Do you really want to export your private key?</sourc <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="96"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="100"/> <source>Select</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="96"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="119"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="100"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="123"/> <source>Name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="96"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="119"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="100"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="123"/> <source>Email</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="96"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="100"/> <source>Comment</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="119"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="123"/> <source>Key ID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="119"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="123"/> <source>Create Date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="119"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="123"/> <source>Expired Date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="212"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="216"/> <source>Never Expires</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="230"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="291"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="414"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="429"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="469"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="476"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="234"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="297"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="422"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="437"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="477"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="484"/> <source>Invalid Operation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="231"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="292"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="235"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="298"/> <source>Please select one or more UIDs before doing this operation.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="256"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="260"/> <source>Sign Selected UID(s)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="258"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="262"/> <source>Delete Selected UID(s)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="275"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="281"/> <source>Successful Operation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="276"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="282"/> <source>Successfully added a new UID.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="279"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="321"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="354"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="449"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="496"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="285"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="327"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="360"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="457"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="504"/> <source>Operation Failed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="280"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="322"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="355"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="450"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="497"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="286"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="328"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="361"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="458"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="505"/> <source>An error occurred during the operation.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="304"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="310"/> <source>Deleting UIDs</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="305"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="311"/> <source>Are you sure that you want to delete the following uids?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="306"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="348"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="443"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="490"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="312"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="354"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="451"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="498"/> <source>The action can not be undone.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="346"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="352"/> <source>Set Primary UID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="347"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="353"/> <source>Are you sure that you want to set the Primary UID to?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="386"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="392"/> <source>Set As Primary</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="388"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="394"/> <source>Sign UID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="390"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="396"/> <source>Delete UID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="415"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="430"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="423"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="438"/> <source>Please select one UID before doing this operation.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="441"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="449"/> <source>Deleting UID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="442"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="450"/> <source>Are you sure that you want to delete the following uid?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="458"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="466"/> <source>Delete(Revoke) Key Signature</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="470"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="478"/> <source>Please select one Key Signature before doing this operation.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="477"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="485"/> <source>To delete the signature, you need to have its corresponding public key in the local database.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="488"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="496"/> <source>Deleting Key Signature</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="489"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="497"/> <source>Are you sure that you want to delete the following signature?</source> <translation type="unfinished"></translation> </message> @@ -1612,103 +1637,141 @@ Make sure you keep it save.Do you really want to export your private key?</sourc <context> <name>KeyServerImportDialog</name> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="33"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="40"/> <source>&Close</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="34"/> - <source>&Import</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="41"/> + <source>&Import ALL</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="35"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="42"/> <source>&Search</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="38"/> - <source>Search string:</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="45"/> + <source>Search String:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="42"/> - <source>Keyserver:</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="49"/> + <source>Key Server:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="98"/> + <source>Update Keys from Keyserver</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="73"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="100"/> <source>Import Keys from Keyserver</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="110"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="161"/> <source>UID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="110"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="161"/> <source>Creation date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="110"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="161"/> <source>KeyID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="110"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="161"/> <source>Tag</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="150"/> - <source>Couldn't contact keyserver!</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="182"/> + <source><h4>Text is empty.</h4></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="216"/> + <source>Not Key Found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="219"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="389"/> + <source>Timeout</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="222"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="392"/> + <source>Key Server Not Found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="225"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="395"/> + <source>Connection Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="157"/> - <source>Too many responses from keyserver!</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="233"/> + <source><h4>CToo many responses from keyserver!</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="163"/> - <source>No keys found, input may be kexId, retrying search with 0x.</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="240"/> + <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="167"/> - <source>No keys found containing the search string!</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="245"/> + <source><h4>No keys found containing the search string!</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="170"/> - <source>Insufficiently specific search string!</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="249"/> + <source><h4>Insufficiently specific search string!</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="196"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="277"/> <source>revoked</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="199"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="280"/> <source>disabled</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="239"/> - <source>%1 keys found. Doubleclick a key to import it.</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="320"/> + <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="386"/> + <source>Key Not Found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="413"/> + <source><h4>Key Updated</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="279"/> - <source>Error while contacting keyserver!</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="415"/> + <source><h4>Key Imported</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="283"/> - <source>Key imported</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="476"/> + <source>Upload Keys from Keyserver</source> <translation type="unfinished"></translation> </message> </context> @@ -1769,6 +1832,34 @@ Make sure you keep it save.Do you really want to export your private key?</sourc </message> </context> <context> + <name>KeyUploadDialog</name> + <message> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="72"/> + <source>Uploading Public Key</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="107"/> + <source>Key Not Found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="110"/> + <source>Timeout</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="113"/> + <source>Key Server Not Found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="116"/> + <source>Connection Error</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>KeyserverTab</name> <message> <location filename="../../src/ui/SettingsDialog.cpp" line="548"/> @@ -1784,546 +1875,546 @@ Make sure you keep it save.Do you really want to export your private key?</sourc <context> <name>MainWindow</name> <message> - <location filename="../../src/MainWindow.cpp" line="175"/> + <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"/> + <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"/> + <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> + <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"/> + <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> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="289"/> + <source>The selected key cannot be used for signing and encryption at the same time.<br/></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotUI.cpp" line="54"/> + <source>There is one unencrypted file in attachment folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotUI.cpp" line="56"/> + <source>There are </source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotUI.cpp" line="56"/> + <source> unencrypted files in attachment folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="30"/> <source>&New</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="181"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="36"/> <source>Open a new file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="184"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="39"/> <source>&Open...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="187"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="42"/> <source>Open an existing file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="190"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="45"/> <source>&Save</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="193"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="48"/> <source>Save the current File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="196"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="51"/> <source>Save &As</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="199"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="54"/> <source>Save the current File as...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="202"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="57"/> <source>&Print</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="205"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="60"/> <source>Print Document</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="208"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="63"/> <source>&Close</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="210"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="65"/> <source>Close file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="213"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="68"/> <source>&Quit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="216"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="71"/> <source>Quit Program</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="221"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="76"/> <source>&Undo</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="223"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="78"/> <source>Undo Last Edit Action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="226"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="81"/> <source>&Redo</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="228"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="83"/> <source>Redo Last Edit Action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="231"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="86"/> <source>Zoom In</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="235"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="90"/> <source>Zoom Out</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="239"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="94"/> <source>&Paste</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="242"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="97"/> <source>Paste Text From Clipboard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="245"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="100"/> <source>Cu&t</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="248"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="103"/> <source>Cut the current selection's contents to the clipboard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="252"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="107"/> <source>&Copy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="255"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="110"/> <source>Copy the current selection's contents to the clipboard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="259"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="114"/> <source>&Quote</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="261"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="116"/> <source>Quote whole text</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="264"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="119"/> <source>Select &All</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="267"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="122"/> <source>Select the whole text</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="270"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="125"/> <source>&Find</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="272"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="127"/> <source>Find a word</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="275"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="130"/> <source>Remove &spacing</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="278"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="133"/> <source>Remove double linebreaks, e.g. in pasted text from webmailer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="281"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="136"/> <source>Se&ttings</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="282"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="137"/> <source>Open settings dialog</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="288"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="143"/> <source>&Encrypt</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="291"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="146"/> <source>Encrypt Message</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="294"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="149"/> <source>&Encrypt &Sign</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="297"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="152"/> <source>Encrypt and Sign Message</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="300"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="155"/> <source>&Decrypt</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="303"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="158"/> <source>Decrypt Message</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="306"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="161"/> <source>&Decrypt &Verify</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="309"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="164"/> <source>Decrypt and Verify Message</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="315"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="170"/> <source>&Encrypt File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="316"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="171"/> <source>Encrypt File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="319"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="174"/> <source>&Decrypt File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="320"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="175"/> <source>Decrypt File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="323"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="178"/> <source>&Sign File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="324"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="179"/> <source>Sign File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="327"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="182"/> <source>&Verify File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="328"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="183"/> <source>Verify File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="332"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="187"/> <source>&Sign</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="335"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="190"/> <source>Sign Message</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="338"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="193"/> <source>&Verify</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="341"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="196"/> <source>Verify Message</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="347"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="202"/> <source>&Editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="349"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="204"/> <source>Import New Key From Editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="352"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="207"/> <source>Manage &keys</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="354"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="209"/> <source>Open Keymanagement</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="359"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="214"/> <source>&About</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="361"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="216"/> <source>Show the application's About box</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="364"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="219"/> <source>Open &Wizard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="365"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="220"/> <source>Open the wizard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="370"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="225"/> <source>Append Selected Key(s) To Text</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="371"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="226"/> <source>Append The Selected Keys To Text in Editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="374"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="229"/> <source>Copy EMail-address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="375"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="230"/> <source>Copy selected EMailaddress to clipboard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="379"/> - <source>Show Keydetails</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="234"/> + <source>Show Key Details</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="380"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="235"/> <source>Show Details for this Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="383"/> - <source>Refresh key from keyserver</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="238"/> + <source>Refresh Key From Key Server</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="384"/> - <source>Refresh key from default keyserver</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="239"/> + <source>Refresh key from default key server</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="387"/> - <source>Upload Key(s) To Server</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="242"/> + <source>Upload Public Key(s) To Server</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="388"/> - <source>Upload The Selected Keys To Server</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="243"/> + <source>Upload The Selected Public Keys To Server</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="402"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="257"/> <source>Remove PGP Header</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="405"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="260"/> <source>Add PGP Header</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="446"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="265"/> <source>&File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="458"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="277"/> <source>&Edit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="476"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="295"/> <source>&File...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="482"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="301"/> <source>&Crypt</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="493"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="312"/> <source>&Keys</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="494"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="313"/> <source>&Import Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="503"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="322"/> <source>&Steganography</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="512"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="331"/> <source>&View</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="514"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="333"/> <source>&Help</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="522"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="341"/> <source>File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="530"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="349"/> <source>Crypt</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="540"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="359"/> <source>Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="545"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="364"/> <source>Edit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="552"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="371"/> <source>Special Edit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="564"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="383"/> <source>Import key from...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="565"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="384"/> <source>Import key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="573"/> - <source>Encrypt or decrypt File</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="393"/> + <source>Opera File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="574"/> - <source>File..</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="394"/> + <source>File Crypto</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="594"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="412"/> <source>Ready</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="601"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="419"/> <source>Key ToolBox</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="609"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="427"/> <source>Information Board</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="629"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="447"/> <source>Attached files:</source> <translation type="unfinished"></translation> </message> - <message> - <location filename="../../src/MainWindow.cpp" line="692"/> - <source>There is one unencrypted file in attachment folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/MainWindow.cpp" line="694"/> - <source>There are </source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/MainWindow.cpp" line="694"/> - <source> unencrypted files in attachment folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/MainWindow.cpp" line="726"/> - <location filename="../../src/MainWindow.cpp" line="773"/> - <location filename="../../src/MainWindow.cpp" line="1076"/> - <source>No Key Selected</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/MainWindow.cpp" line="733"/> - <location filename="../../src/MainWindow.cpp" line="780"/> - <location filename="../../src/MainWindow.cpp" line="1083"/> - <source>Invalid Operation</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/MainWindow.cpp" line="734"/> - <source>The selected key contains a key that does not actually have a encrypt function.<br/></source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/MainWindow.cpp" line="735"/> - <location filename="../../src/MainWindow.cpp" line="782"/> - <location filename="../../src/MainWindow.cpp" line="1085"/> - <source><br/>For example the Following Key: <br/></source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/MainWindow.cpp" line="781"/> - <source>The selected key contains a key that does not actually have a signature function.<br/></source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/MainWindow.cpp" line="1084"/> - <source>The selected key cannot be used for signing and encryption at the same time.<br/></source> - <translation type="unfinished"></translation> - </message> </context> <context> <name>MimeTab</name> @@ -2626,56 +2717,56 @@ Make sure you keep it save.Do you really want to export your private key?</sourc <context> <name>TextEdit</name> <message> - <location filename="../../src/ui/TextEdit.cpp" line="49"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="49"/> <source>untitled</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/TextEdit.cpp" line="68"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="76"/> <source>Open file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/TextEdit.cpp" line="93"/> - <location filename="../../src/ui/TextEdit.cpp" line="371"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="101"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="379"/> <source>Application</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/TextEdit.cpp" line="94"/> - <location filename="../../src/ui/TextEdit.cpp" line="372"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="102"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="380"/> <source>Cannot read file %1: %2.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/TextEdit.cpp" line="143"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="151"/> <source>File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/TextEdit.cpp" line="144"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="152"/> <source>Cannot write file %1: %2.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/TextEdit.cpp" line="165"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="173"/> <source>Save file </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/TextEdit.cpp" line="229"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="237"/> <source>Unsaved document</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/TextEdit.cpp" line="230"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="238"/> <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/TextEdit.cpp" line="232"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="240"/> <source><b>Note:</b> If you don't save these files, all changes are lost.<br/></source> <translation type="unfinished"></translation> </message> diff --git a/resource/ts/gpgfrontend_zh_chs.ts b/resource/ts/gpgfrontend_zh_chs.ts index 408af114..c6722829 100644 --- a/resource/ts/gpgfrontend_zh_chs.ts +++ b/resource/ts/gpgfrontend_zh_chs.ts @@ -101,35 +101,35 @@ <context> <name>Attachments</name> <message> - <location filename="../../src/ui/Attachments.cpp" line="78"/> - <location filename="../../src/ui/Attachments.cpp" line="113"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="78"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="113"/> <source>Save File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Attachments.cpp" line="79"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="79"/> <source>Save this file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Attachments.cpp" line="83"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="83"/> <source>Open File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Attachments.cpp" line="84"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="84"/> <source>Open this file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Attachments.cpp" line="119"/> - <location filename="../../src/ui/Attachments.cpp" line="164"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="119"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="164"/> <source>File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Attachments.cpp" line="120"/> - <location filename="../../src/ui/Attachments.cpp" line="165"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="120"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="165"/> <source>Cannot write file %1: %2.</source> <translation type="unfinished"></translation> @@ -508,21 +508,21 @@ <name>InfoTab</name> <message> <location filename="../../src/ui/AboutDialog.cpp" line="55"/> - <source><br><center>GPGFrontend is a modern, easy-to-use, compact, <br>cross-platform, and installation-free gpg front-end tool.<br>It visualizes most of the common operations of gpg commands.<br>It's licensed under the GPL v3<br><br><b>Developer:</b><br>Saturneric<br><br>If you have any questions or suggestions have a look<br/>at my <a href="https://bktus.com/%e8%81%94%e7%b3%bb%e4%b8%8e%e9%aa%8c%e8%af%81">contact page</a> or send a mail to my<br/> mailing list at <a href="mailto:[email protected]">[email protected]</a>.</source> + <source><br><center>GPGFrontend is an easy-to-use, compact, <br>cross-platform, and installation-free gpg front-end tool.<br>It visualizes most of the common operations of gpg commands.<br>It's licensed under the GPL v3<br><br><b>Developer:</b><br>Saturneric<br><br>If you have any questions or suggestions, raise an issue<br/>at <a href="https://github.com/saturneric/GpgFrontend">GitHub</a> or send a mail to my mailing list at <a href="mailto:[email protected]">[email protected]</a>.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/AboutDialog.cpp" line="65"/> + <location filename="../../src/ui/AboutDialog.cpp" line="63"/> <source><br><br> Built with Qt </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/AboutDialog.cpp" line="66"/> + <location filename="../../src/ui/AboutDialog.cpp" line="64"/> <source> and GPGME </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/AboutDialog.cpp" line="67"/> + <location filename="../../src/ui/AboutDialog.cpp" line="65"/> <source><br>Built at </source> <translation type="unfinished"></translation> </message> @@ -727,108 +727,119 @@ <context> <name>KeyImportDetailDialog</name> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="33"/> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="49"/> - <source>Key import details</source> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="35"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="54"/> + <source>Key Update Details</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="35"/> + <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"/> + <source>Key Import Details</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="33"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="37"/> <source>No keys found to import</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="57"/> - <source>Genral key import info</source> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="65"/> + <source>General key info</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="60"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="68"/> <source>Considered:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="64"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="72"/> <source>Public unchanged:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="69"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="77"/> <source>Imported:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="74"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="82"/> <source>Not imported:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="79"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="87"/> <source>Private read:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="84"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="92"/> <source>Private imported:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="89"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="97"/> <source>Private unchanged:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="104"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="112"/> <source>Name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="104"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="112"/> <source>Email</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="104"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="112"/> <source>Status</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="104"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="112"/> <source>Fingerprint</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="128"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="136"/> <source>private</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="131"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="139"/> <source>public</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="134"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="142"/> <source>unchanged</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="137"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="145"/> <source>new key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="140"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="148"/> <source>new subkey</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="144"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="152"/> <source>new signature</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="148"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="156"/> <source>new uid</source> <translation type="unfinished"></translation> </message> @@ -836,58 +847,58 @@ <context> <name>KeyList</name> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="76"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="77"/> <source>Select</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="76"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="77"/> <source>Type</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="76"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="77"/> <source>Name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="76"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="77"/> <source>Email Address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="77"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="78"/> <source>Usage</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="77"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="78"/> <source>Validity</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="77"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="78"/> <source>Finger Print</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="312"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="311"/> <source>Import Keys</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="314"/> - <source>You've dropped something on the keylist. - gpg4usb will now try to import key(s).</source> + <location filename="../../src/ui/widgets/KeyList.cpp" line="313"/> + <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="317"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="316"/> <source>Always import without bothering.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="353"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="352"/> <source>Couldn't Open File: </source> <translation type="unfinished"></translation> </message> @@ -900,16 +911,6 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyMgmt.cpp" line="94"/> - <source>Ctrl+Q</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/ui/KeyMgmt.cpp" line="102"/> - <source>Generate KeyPair</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../../src/ui/KeyMgmt.cpp" line="88"/> <source>&Open</source> <translation type="unfinished"></translation> @@ -930,6 +931,11 @@ <translation type="unfinished"></translation> </message> <message> + <location filename="../../src/ui/KeyMgmt.cpp" line="94"/> + <source>Ctrl+Q</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../../src/ui/KeyMgmt.cpp" line="96"/> <source>Close</source> <translation type="unfinished"></translation> @@ -945,6 +951,11 @@ <translation type="unfinished"></translation> </message> <message> + <location filename="../../src/ui/KeyMgmt.cpp" line="102"/> + <source>Generate KeyPair</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../../src/ui/KeyMgmt.cpp" line="105"/> <source>New Subkey</source> <translation type="unfinished"></translation> @@ -1032,7 +1043,7 @@ </message> <message> <location filename="../../src/ui/KeyMgmt.cpp" line="145"/> - <source>Show Keydetails</source> + <source>Show Key Details</source> <translation type="unfinished"></translation> </message> <message> @@ -1056,6 +1067,11 @@ <translation type="unfinished"></translation> </message> <message> + <location filename="../../src/ui/KeyMgmt.cpp" line="173"/> + <source>Key</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../../src/ui/KeyMgmt.cpp" line="181"/> <source>Generate</source> <translation type="unfinished"></translation> @@ -1066,18 +1082,13 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyMgmt.cpp" line="192"/> - <source>Import Key</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/ui/KeyMgmt.cpp" line="173"/> - <source>Key</source> + <location filename="../../src/ui/KeyMgmt.cpp" line="191"/> + <source>Import key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyMgmt.cpp" line="191"/> - <source>Import key</source> + <location filename="../../src/ui/KeyMgmt.cpp" line="192"/> + <source>Import Key</source> <translation type="unfinished"></translation> </message> <message> @@ -1127,18 +1138,18 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyMgmt.cpp" line="344"/> - <location filename="../../src/ui/KeyMgmt.cpp" line="351"/> + <location filename="../../src/ui/KeyMgmt.cpp" line="338"/> + <location filename="../../src/ui/KeyMgmt.cpp" line="345"/> <source>Invalid Operation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyMgmt.cpp" line="345"/> + <location filename="../../src/ui/KeyMgmt.cpp" line="339"/> <source>Please select one KeyPair before doing this operation.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyMgmt.cpp" line="352"/> + <location filename="../../src/ui/KeyMgmt.cpp" line="346"/> <source>If a key pair does not have a private key then it will not be able to generate sub-keys.</source> <translation type="unfinished"></translation> </message> @@ -1276,57 +1287,71 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="138"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="139"/> <source>Modify Expiration Datetime</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="156"/> - <source>Warning: The master key of the key pair has expired.</source> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="143"/> + <source>Key Server Operation</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="165"/> + <source>Warning: The Master Key has expired.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="159"/> - <source>Warning: The master key of the key pair has been revoked</source> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="168"/> + <source>Warning: The Master Key has been revoked</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="182"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="191"/> <source>Exporting private Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="183"/> - <source>You are about to export your private key. -This is NOT your public key, so don't give it away. -Make sure you keep it save.Do you really want to export your private key?</source> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="192"/> + <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="196"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="204"/> <source>Export Key To File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="197"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="205"/> <source>Key Files</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="200"/> - <source>Export error</source> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="208"/> + <source>Export Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="200"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="208"/> <source>Couldn't open %1 for writing</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="270"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="278"/> <source>Never Expire</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="298"/> + <source>Upload Key Pair</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="300"/> + <source>Update Key Pair</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>KeyPairSubkeyTab</name> @@ -1429,182 +1454,182 @@ Make sure you keep it save.Do you really want to export your private key?</sourc <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="96"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="100"/> <source>Select</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="96"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="119"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="100"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="123"/> <source>Name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="96"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="119"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="100"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="123"/> <source>Email</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="96"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="100"/> <source>Comment</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="119"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="123"/> <source>Key ID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="119"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="123"/> <source>Create Date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="119"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="123"/> <source>Expired Date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="212"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="216"/> <source>Never Expires</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="230"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="291"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="414"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="429"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="469"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="476"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="234"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="297"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="422"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="437"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="477"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="484"/> <source>Invalid Operation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="231"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="292"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="235"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="298"/> <source>Please select one or more UIDs before doing this operation.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="256"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="260"/> <source>Sign Selected UID(s)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="258"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="262"/> <source>Delete Selected UID(s)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="275"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="281"/> <source>Successful Operation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="276"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="282"/> <source>Successfully added a new UID.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="279"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="321"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="354"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="449"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="496"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="285"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="327"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="360"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="457"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="504"/> <source>Operation Failed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="280"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="322"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="355"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="450"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="497"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="286"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="328"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="361"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="458"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="505"/> <source>An error occurred during the operation.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="304"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="310"/> <source>Deleting UIDs</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="305"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="311"/> <source>Are you sure that you want to delete the following uids?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="306"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="348"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="443"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="490"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="312"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="354"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="451"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="498"/> <source>The action can not be undone.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="346"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="352"/> <source>Set Primary UID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="347"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="353"/> <source>Are you sure that you want to set the Primary UID to?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="386"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="392"/> <source>Set As Primary</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="388"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="394"/> <source>Sign UID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="390"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="396"/> <source>Delete UID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="415"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="430"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="423"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="438"/> <source>Please select one UID before doing this operation.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="441"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="449"/> <source>Deleting UID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="442"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="450"/> <source>Are you sure that you want to delete the following uid?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="458"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="466"/> <source>Delete(Revoke) Key Signature</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="470"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="478"/> <source>Please select one Key Signature before doing this operation.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="477"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="485"/> <source>To delete the signature, you need to have its corresponding public key in the local database.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="488"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="496"/> <source>Deleting Key Signature</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="489"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="497"/> <source>Are you sure that you want to delete the following signature?</source> <translation type="unfinished"></translation> </message> @@ -1612,103 +1637,141 @@ Make sure you keep it save.Do you really want to export your private key?</sourc <context> <name>KeyServerImportDialog</name> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="33"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="40"/> <source>&Close</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="34"/> - <source>&Import</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="41"/> + <source>&Import ALL</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="35"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="42"/> <source>&Search</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="38"/> - <source>Search string:</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="45"/> + <source>Search String:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="42"/> - <source>Keyserver:</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="49"/> + <source>Key Server:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="98"/> + <source>Update Keys from Keyserver</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="73"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="100"/> <source>Import Keys from Keyserver</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="110"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="161"/> <source>UID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="110"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="161"/> <source>Creation date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="110"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="161"/> <source>KeyID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="110"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="161"/> <source>Tag</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="150"/> - <source>Couldn't contact keyserver!</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="182"/> + <source><h4>Text is empty.</h4></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="216"/> + <source>Not Key Found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="219"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="389"/> + <source>Timeout</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="222"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="392"/> + <source>Key Server Not Found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="225"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="395"/> + <source>Connection Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="157"/> - <source>Too many responses from keyserver!</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="233"/> + <source><h4>CToo many responses from keyserver!</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="163"/> - <source>No keys found, input may be kexId, retrying search with 0x.</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="240"/> + <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="167"/> - <source>No keys found containing the search string!</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="245"/> + <source><h4>No keys found containing the search string!</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="170"/> - <source>Insufficiently specific search string!</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="249"/> + <source><h4>Insufficiently specific search string!</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="196"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="277"/> <source>revoked</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="199"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="280"/> <source>disabled</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="239"/> - <source>%1 keys found. Doubleclick a key to import it.</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="320"/> + <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="386"/> + <source>Key Not Found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="413"/> + <source><h4>Key Updated</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="279"/> - <source>Error while contacting keyserver!</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="415"/> + <source><h4>Key Imported</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="283"/> - <source>Key imported</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="476"/> + <source>Upload Keys from Keyserver</source> <translation type="unfinished"></translation> </message> </context> @@ -1769,6 +1832,34 @@ Make sure you keep it save.Do you really want to export your private key?</sourc </message> </context> <context> + <name>KeyUploadDialog</name> + <message> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="72"/> + <source>Uploading Public Key</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="107"/> + <source>Key Not Found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="110"/> + <source>Timeout</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="113"/> + <source>Key Server Not Found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="116"/> + <source>Connection Error</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>KeyserverTab</name> <message> <location filename="../../src/ui/SettingsDialog.cpp" line="548"/> @@ -1784,546 +1875,546 @@ Make sure you keep it save.Do you really want to export your private key?</sourc <context> <name>MainWindow</name> <message> - <location filename="../../src/MainWindow.cpp" line="175"/> + <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"/> + <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"/> + <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> + <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"/> + <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> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="289"/> + <source>The selected key cannot be used for signing and encryption at the same time.<br/></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotUI.cpp" line="54"/> + <source>There is one unencrypted file in attachment folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotUI.cpp" line="56"/> + <source>There are </source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotUI.cpp" line="56"/> + <source> unencrypted files in attachment folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="30"/> <source>&New</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="181"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="36"/> <source>Open a new file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="184"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="39"/> <source>&Open...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="187"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="42"/> <source>Open an existing file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="190"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="45"/> <source>&Save</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="193"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="48"/> <source>Save the current File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="196"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="51"/> <source>Save &As</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="199"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="54"/> <source>Save the current File as...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="202"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="57"/> <source>&Print</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="205"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="60"/> <source>Print Document</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="208"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="63"/> <source>&Close</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="210"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="65"/> <source>Close file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="213"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="68"/> <source>&Quit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="216"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="71"/> <source>Quit Program</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="221"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="76"/> <source>&Undo</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="223"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="78"/> <source>Undo Last Edit Action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="226"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="81"/> <source>&Redo</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="228"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="83"/> <source>Redo Last Edit Action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="231"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="86"/> <source>Zoom In</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="235"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="90"/> <source>Zoom Out</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="239"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="94"/> <source>&Paste</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="242"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="97"/> <source>Paste Text From Clipboard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="245"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="100"/> <source>Cu&t</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="248"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="103"/> <source>Cut the current selection's contents to the clipboard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="252"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="107"/> <source>&Copy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="255"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="110"/> <source>Copy the current selection's contents to the clipboard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="259"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="114"/> <source>&Quote</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="261"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="116"/> <source>Quote whole text</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="264"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="119"/> <source>Select &All</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="267"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="122"/> <source>Select the whole text</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="270"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="125"/> <source>&Find</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="272"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="127"/> <source>Find a word</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="275"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="130"/> <source>Remove &spacing</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="278"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="133"/> <source>Remove double linebreaks, e.g. in pasted text from webmailer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="281"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="136"/> <source>Se&ttings</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="282"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="137"/> <source>Open settings dialog</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="288"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="143"/> <source>&Encrypt</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="291"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="146"/> <source>Encrypt Message</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="294"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="149"/> <source>&Encrypt &Sign</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="297"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="152"/> <source>Encrypt and Sign Message</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="300"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="155"/> <source>&Decrypt</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="303"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="158"/> <source>Decrypt Message</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="306"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="161"/> <source>&Decrypt &Verify</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="309"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="164"/> <source>Decrypt and Verify Message</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="315"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="170"/> <source>&Encrypt File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="316"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="171"/> <source>Encrypt File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="319"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="174"/> <source>&Decrypt File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="320"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="175"/> <source>Decrypt File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="323"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="178"/> <source>&Sign File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="324"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="179"/> <source>Sign File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="327"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="182"/> <source>&Verify File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="328"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="183"/> <source>Verify File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="332"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="187"/> <source>&Sign</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="335"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="190"/> <source>Sign Message</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="338"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="193"/> <source>&Verify</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="341"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="196"/> <source>Verify Message</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="347"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="202"/> <source>&Editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="349"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="204"/> <source>Import New Key From Editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="352"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="207"/> <source>Manage &keys</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="354"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="209"/> <source>Open Keymanagement</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="359"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="214"/> <source>&About</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="361"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="216"/> <source>Show the application's About box</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="364"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="219"/> <source>Open &Wizard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="365"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="220"/> <source>Open the wizard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="370"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="225"/> <source>Append Selected Key(s) To Text</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="371"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="226"/> <source>Append The Selected Keys To Text in Editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="374"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="229"/> <source>Copy EMail-address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="375"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="230"/> <source>Copy selected EMailaddress to clipboard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="379"/> - <source>Show Keydetails</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="234"/> + <source>Show Key Details</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="380"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="235"/> <source>Show Details for this Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="383"/> - <source>Refresh key from keyserver</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="238"/> + <source>Refresh Key From Key Server</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="384"/> - <source>Refresh key from default keyserver</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="239"/> + <source>Refresh key from default key server</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="387"/> - <source>Upload Key(s) To Server</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="242"/> + <source>Upload Public Key(s) To Server</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="388"/> - <source>Upload The Selected Keys To Server</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="243"/> + <source>Upload The Selected Public Keys To Server</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="402"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="257"/> <source>Remove PGP Header</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="405"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="260"/> <source>Add PGP Header</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="446"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="265"/> <source>&File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="458"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="277"/> <source>&Edit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="476"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="295"/> <source>&File...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="482"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="301"/> <source>&Crypt</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="493"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="312"/> <source>&Keys</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="494"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="313"/> <source>&Import Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="503"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="322"/> <source>&Steganography</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="512"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="331"/> <source>&View</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="514"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="333"/> <source>&Help</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="522"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="341"/> <source>File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="530"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="349"/> <source>Crypt</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="540"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="359"/> <source>Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="545"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="364"/> <source>Edit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="552"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="371"/> <source>Special Edit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="564"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="383"/> <source>Import key from...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="565"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="384"/> <source>Import key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="573"/> - <source>Encrypt or decrypt File</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="393"/> + <source>Opera File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="574"/> - <source>File..</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="394"/> + <source>File Crypto</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="594"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="412"/> <source>Ready</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="601"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="419"/> <source>Key ToolBox</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="609"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="427"/> <source>Information Board</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="629"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="447"/> <source>Attached files:</source> <translation type="unfinished"></translation> </message> - <message> - <location filename="../../src/MainWindow.cpp" line="692"/> - <source>There is one unencrypted file in attachment folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/MainWindow.cpp" line="694"/> - <source>There are </source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/MainWindow.cpp" line="694"/> - <source> unencrypted files in attachment folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/MainWindow.cpp" line="726"/> - <location filename="../../src/MainWindow.cpp" line="773"/> - <location filename="../../src/MainWindow.cpp" line="1076"/> - <source>No Key Selected</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/MainWindow.cpp" line="733"/> - <location filename="../../src/MainWindow.cpp" line="780"/> - <location filename="../../src/MainWindow.cpp" line="1083"/> - <source>Invalid Operation</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/MainWindow.cpp" line="734"/> - <source>The selected key contains a key that does not actually have a encrypt function.<br/></source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/MainWindow.cpp" line="735"/> - <location filename="../../src/MainWindow.cpp" line="782"/> - <location filename="../../src/MainWindow.cpp" line="1085"/> - <source><br/>For example the Following Key: <br/></source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/MainWindow.cpp" line="781"/> - <source>The selected key contains a key that does not actually have a signature function.<br/></source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/MainWindow.cpp" line="1084"/> - <source>The selected key cannot be used for signing and encryption at the same time.<br/></source> - <translation type="unfinished"></translation> - </message> </context> <context> <name>MimeTab</name> @@ -2626,56 +2717,56 @@ Make sure you keep it save.Do you really want to export your private key?</sourc <context> <name>TextEdit</name> <message> - <location filename="../../src/ui/TextEdit.cpp" line="49"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="49"/> <source>untitled</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/TextEdit.cpp" line="68"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="76"/> <source>Open file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/TextEdit.cpp" line="93"/> - <location filename="../../src/ui/TextEdit.cpp" line="371"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="101"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="379"/> <source>Application</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/TextEdit.cpp" line="94"/> - <location filename="../../src/ui/TextEdit.cpp" line="372"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="102"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="380"/> <source>Cannot read file %1: %2.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/TextEdit.cpp" line="143"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="151"/> <source>File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/TextEdit.cpp" line="144"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="152"/> <source>Cannot write file %1: %2.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/TextEdit.cpp" line="165"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="173"/> <source>Save file </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/TextEdit.cpp" line="229"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="237"/> <source>Unsaved document</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/TextEdit.cpp" line="230"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="238"/> <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/TextEdit.cpp" line="232"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="240"/> <source><b>Note:</b> If you don't save these files, all changes are lost.<br/></source> <translation type="unfinished"></translation> </message> diff --git a/resource/ts/gpgfrontend_zh_cht.ts b/resource/ts/gpgfrontend_zh_cht.ts index 408af114..c6722829 100644 --- a/resource/ts/gpgfrontend_zh_cht.ts +++ b/resource/ts/gpgfrontend_zh_cht.ts @@ -101,35 +101,35 @@ <context> <name>Attachments</name> <message> - <location filename="../../src/ui/Attachments.cpp" line="78"/> - <location filename="../../src/ui/Attachments.cpp" line="113"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="78"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="113"/> <source>Save File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Attachments.cpp" line="79"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="79"/> <source>Save this file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Attachments.cpp" line="83"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="83"/> <source>Open File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Attachments.cpp" line="84"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="84"/> <source>Open this file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Attachments.cpp" line="119"/> - <location filename="../../src/ui/Attachments.cpp" line="164"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="119"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="164"/> <source>File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/Attachments.cpp" line="120"/> - <location filename="../../src/ui/Attachments.cpp" line="165"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="120"/> + <location filename="../../src/ui/widgets/Attachments.cpp" line="165"/> <source>Cannot write file %1: %2.</source> <translation type="unfinished"></translation> @@ -508,21 +508,21 @@ <name>InfoTab</name> <message> <location filename="../../src/ui/AboutDialog.cpp" line="55"/> - <source><br><center>GPGFrontend is a modern, easy-to-use, compact, <br>cross-platform, and installation-free gpg front-end tool.<br>It visualizes most of the common operations of gpg commands.<br>It's licensed under the GPL v3<br><br><b>Developer:</b><br>Saturneric<br><br>If you have any questions or suggestions have a look<br/>at my <a href="https://bktus.com/%e8%81%94%e7%b3%bb%e4%b8%8e%e9%aa%8c%e8%af%81">contact page</a> or send a mail to my<br/> mailing list at <a href="mailto:[email protected]">[email protected]</a>.</source> + <source><br><center>GPGFrontend is an easy-to-use, compact, <br>cross-platform, and installation-free gpg front-end tool.<br>It visualizes most of the common operations of gpg commands.<br>It's licensed under the GPL v3<br><br><b>Developer:</b><br>Saturneric<br><br>If you have any questions or suggestions, raise an issue<br/>at <a href="https://github.com/saturneric/GpgFrontend">GitHub</a> or send a mail to my mailing list at <a href="mailto:[email protected]">[email protected]</a>.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/AboutDialog.cpp" line="65"/> + <location filename="../../src/ui/AboutDialog.cpp" line="63"/> <source><br><br> Built with Qt </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/AboutDialog.cpp" line="66"/> + <location filename="../../src/ui/AboutDialog.cpp" line="64"/> <source> and GPGME </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/AboutDialog.cpp" line="67"/> + <location filename="../../src/ui/AboutDialog.cpp" line="65"/> <source><br>Built at </source> <translation type="unfinished"></translation> </message> @@ -727,108 +727,119 @@ <context> <name>KeyImportDetailDialog</name> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="33"/> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="49"/> - <source>Key import details</source> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="35"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="54"/> + <source>Key Update Details</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="35"/> + <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"/> + <source>Key Import Details</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="33"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="37"/> <source>No keys found to import</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="57"/> - <source>Genral key import info</source> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="65"/> + <source>General key info</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="60"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="68"/> <source>Considered:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="64"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="72"/> <source>Public unchanged:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="69"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="77"/> <source>Imported:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="74"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="82"/> <source>Not imported:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="79"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="87"/> <source>Private read:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="84"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="92"/> <source>Private imported:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="89"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="97"/> <source>Private unchanged:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="104"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="112"/> <source>Name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="104"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="112"/> <source>Email</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="104"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="112"/> <source>Status</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="104"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="112"/> <source>Fingerprint</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="128"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="136"/> <source>private</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="131"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="139"/> <source>public</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="134"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="142"/> <source>unchanged</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="137"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="145"/> <source>new key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="140"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="148"/> <source>new subkey</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="144"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="152"/> <source>new signature</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="148"/> + <location filename="../../src/ui/KeyImportDetailDialog.cpp" line="156"/> <source>new uid</source> <translation type="unfinished"></translation> </message> @@ -836,58 +847,58 @@ <context> <name>KeyList</name> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="76"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="77"/> <source>Select</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="76"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="77"/> <source>Type</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="76"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="77"/> <source>Name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="76"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="77"/> <source>Email Address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="77"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="78"/> <source>Usage</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="77"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="78"/> <source>Validity</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="77"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="78"/> <source>Finger Print</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="312"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="311"/> <source>Import Keys</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="314"/> - <source>You've dropped something on the keylist. - gpg4usb will now try to import key(s).</source> + <location filename="../../src/ui/widgets/KeyList.cpp" line="313"/> + <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="317"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="316"/> <source>Always import without bothering.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/widgets/KeyList.cpp" line="353"/> + <location filename="../../src/ui/widgets/KeyList.cpp" line="352"/> <source>Couldn't Open File: </source> <translation type="unfinished"></translation> </message> @@ -900,16 +911,6 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyMgmt.cpp" line="94"/> - <source>Ctrl+Q</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/ui/KeyMgmt.cpp" line="102"/> - <source>Generate KeyPair</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../../src/ui/KeyMgmt.cpp" line="88"/> <source>&Open</source> <translation type="unfinished"></translation> @@ -930,6 +931,11 @@ <translation type="unfinished"></translation> </message> <message> + <location filename="../../src/ui/KeyMgmt.cpp" line="94"/> + <source>Ctrl+Q</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../../src/ui/KeyMgmt.cpp" line="96"/> <source>Close</source> <translation type="unfinished"></translation> @@ -945,6 +951,11 @@ <translation type="unfinished"></translation> </message> <message> + <location filename="../../src/ui/KeyMgmt.cpp" line="102"/> + <source>Generate KeyPair</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../../src/ui/KeyMgmt.cpp" line="105"/> <source>New Subkey</source> <translation type="unfinished"></translation> @@ -1032,7 +1043,7 @@ </message> <message> <location filename="../../src/ui/KeyMgmt.cpp" line="145"/> - <source>Show Keydetails</source> + <source>Show Key Details</source> <translation type="unfinished"></translation> </message> <message> @@ -1056,6 +1067,11 @@ <translation type="unfinished"></translation> </message> <message> + <location filename="../../src/ui/KeyMgmt.cpp" line="173"/> + <source>Key</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../../src/ui/KeyMgmt.cpp" line="181"/> <source>Generate</source> <translation type="unfinished"></translation> @@ -1066,18 +1082,13 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyMgmt.cpp" line="192"/> - <source>Import Key</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/ui/KeyMgmt.cpp" line="173"/> - <source>Key</source> + <location filename="../../src/ui/KeyMgmt.cpp" line="191"/> + <source>Import key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyMgmt.cpp" line="191"/> - <source>Import key</source> + <location filename="../../src/ui/KeyMgmt.cpp" line="192"/> + <source>Import Key</source> <translation type="unfinished"></translation> </message> <message> @@ -1127,18 +1138,18 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyMgmt.cpp" line="344"/> - <location filename="../../src/ui/KeyMgmt.cpp" line="351"/> + <location filename="../../src/ui/KeyMgmt.cpp" line="338"/> + <location filename="../../src/ui/KeyMgmt.cpp" line="345"/> <source>Invalid Operation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyMgmt.cpp" line="345"/> + <location filename="../../src/ui/KeyMgmt.cpp" line="339"/> <source>Please select one KeyPair before doing this operation.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyMgmt.cpp" line="352"/> + <location filename="../../src/ui/KeyMgmt.cpp" line="346"/> <source>If a key pair does not have a private key then it will not be able to generate sub-keys.</source> <translation type="unfinished"></translation> </message> @@ -1276,57 +1287,71 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="138"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="139"/> <source>Modify Expiration Datetime</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="156"/> - <source>Warning: The master key of the key pair has expired.</source> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="143"/> + <source>Key Server Operation</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="165"/> + <source>Warning: The Master Key has expired.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="159"/> - <source>Warning: The master key of the key pair has been revoked</source> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="168"/> + <source>Warning: The Master Key has been revoked</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="182"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="191"/> <source>Exporting private Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="183"/> - <source>You are about to export your private key. -This is NOT your public key, so don't give it away. -Make sure you keep it save.Do you really want to export your private key?</source> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="192"/> + <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="196"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="204"/> <source>Export Key To File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="197"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="205"/> <source>Key Files</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="200"/> - <source>Export error</source> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="208"/> + <source>Export Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="200"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="208"/> <source>Couldn't open %1 for writing</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="270"/> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="278"/> <source>Never Expire</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="298"/> + <source>Upload Key Pair</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/keypair_details/KeyPairDetailTab.cpp" line="300"/> + <source>Update Key Pair</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>KeyPairSubkeyTab</name> @@ -1429,182 +1454,182 @@ Make sure you keep it save.Do you really want to export your private key?</sourc <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="96"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="100"/> <source>Select</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="96"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="119"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="100"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="123"/> <source>Name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="96"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="119"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="100"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="123"/> <source>Email</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="96"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="100"/> <source>Comment</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="119"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="123"/> <source>Key ID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="119"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="123"/> <source>Create Date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="119"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="123"/> <source>Expired Date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="212"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="216"/> <source>Never Expires</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="230"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="291"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="414"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="429"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="469"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="476"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="234"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="297"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="422"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="437"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="477"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="484"/> <source>Invalid Operation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="231"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="292"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="235"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="298"/> <source>Please select one or more UIDs before doing this operation.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="256"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="260"/> <source>Sign Selected UID(s)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="258"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="262"/> <source>Delete Selected UID(s)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="275"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="281"/> <source>Successful Operation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="276"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="282"/> <source>Successfully added a new UID.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="279"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="321"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="354"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="449"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="496"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="285"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="327"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="360"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="457"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="504"/> <source>Operation Failed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="280"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="322"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="355"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="450"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="497"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="286"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="328"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="361"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="458"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="505"/> <source>An error occurred during the operation.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="304"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="310"/> <source>Deleting UIDs</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="305"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="311"/> <source>Are you sure that you want to delete the following uids?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="306"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="348"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="443"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="490"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="312"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="354"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="451"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="498"/> <source>The action can not be undone.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="346"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="352"/> <source>Set Primary UID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="347"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="353"/> <source>Are you sure that you want to set the Primary UID to?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="386"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="392"/> <source>Set As Primary</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="388"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="394"/> <source>Sign UID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="390"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="396"/> <source>Delete UID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="415"/> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="430"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="423"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="438"/> <source>Please select one UID before doing this operation.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="441"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="449"/> <source>Deleting UID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="442"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="450"/> <source>Are you sure that you want to delete the following uid?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="458"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="466"/> <source>Delete(Revoke) Key Signature</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="470"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="478"/> <source>Please select one Key Signature before doing this operation.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="477"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="485"/> <source>To delete the signature, you need to have its corresponding public key in the local database.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="488"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="496"/> <source>Deleting Key Signature</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="489"/> + <location filename="../../src/ui/keypair_details/KeyPairUIDTab.cpp" line="497"/> <source>Are you sure that you want to delete the following signature?</source> <translation type="unfinished"></translation> </message> @@ -1612,103 +1637,141 @@ Make sure you keep it save.Do you really want to export your private key?</sourc <context> <name>KeyServerImportDialog</name> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="33"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="40"/> <source>&Close</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="34"/> - <source>&Import</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="41"/> + <source>&Import ALL</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="35"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="42"/> <source>&Search</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="38"/> - <source>Search string:</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="45"/> + <source>Search String:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="42"/> - <source>Keyserver:</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="49"/> + <source>Key Server:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="98"/> + <source>Update Keys from Keyserver</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="73"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="100"/> <source>Import Keys from Keyserver</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="110"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="161"/> <source>UID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="110"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="161"/> <source>Creation date</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="110"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="161"/> <source>KeyID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="110"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="161"/> <source>Tag</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="150"/> - <source>Couldn't contact keyserver!</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="182"/> + <source><h4>Text is empty.</h4></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="216"/> + <source>Not Key Found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="219"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="389"/> + <source>Timeout</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="222"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="392"/> + <source>Key Server Not Found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="225"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="395"/> + <source>Connection Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="157"/> - <source>Too many responses from keyserver!</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="233"/> + <source><h4>CToo many responses from keyserver!</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="163"/> - <source>No keys found, input may be kexId, retrying search with 0x.</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="240"/> + <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="167"/> - <source>No keys found containing the search string!</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="245"/> + <source><h4>No keys found containing the search string!</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="170"/> - <source>Insufficiently specific search string!</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="249"/> + <source><h4>Insufficiently specific search string!</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="196"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="277"/> <source>revoked</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="199"/> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="280"/> <source>disabled</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="239"/> - <source>%1 keys found. Doubleclick a key to import it.</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="320"/> + <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="386"/> + <source>Key Not Found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="413"/> + <source><h4>Key Updated</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="279"/> - <source>Error while contacting keyserver!</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="415"/> + <source><h4>Key Imported</h4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/KeyServerImportDialog.cpp" line="283"/> - <source>Key imported</source> + <location filename="../../src/ui/KeyServerImportDialog.cpp" line="476"/> + <source>Upload Keys from Keyserver</source> <translation type="unfinished"></translation> </message> </context> @@ -1769,6 +1832,34 @@ Make sure you keep it save.Do you really want to export your private key?</sourc </message> </context> <context> + <name>KeyUploadDialog</name> + <message> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="72"/> + <source>Uploading Public Key</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="107"/> + <source>Key Not Found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="110"/> + <source>Timeout</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="113"/> + <source>Key Server Not Found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/KeyUploadDialog.cpp" line="116"/> + <source>Connection Error</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>KeyserverTab</name> <message> <location filename="../../src/ui/SettingsDialog.cpp" line="548"/> @@ -1784,546 +1875,546 @@ Make sure you keep it save.Do you really want to export your private key?</sourc <context> <name>MainWindow</name> <message> - <location filename="../../src/MainWindow.cpp" line="175"/> + <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"/> + <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"/> + <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> + <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"/> + <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> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotFunction.cpp" line="289"/> + <source>The selected key cannot be used for signing and encryption at the same time.<br/></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotUI.cpp" line="54"/> + <source>There is one unencrypted file in attachment folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotUI.cpp" line="56"/> + <source>There are </source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowSlotUI.cpp" line="56"/> + <source> unencrypted files in attachment folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="30"/> <source>&New</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="181"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="36"/> <source>Open a new file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="184"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="39"/> <source>&Open...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="187"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="42"/> <source>Open an existing file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="190"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="45"/> <source>&Save</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="193"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="48"/> <source>Save the current File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="196"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="51"/> <source>Save &As</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="199"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="54"/> <source>Save the current File as...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="202"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="57"/> <source>&Print</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="205"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="60"/> <source>Print Document</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="208"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="63"/> <source>&Close</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="210"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="65"/> <source>Close file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="213"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="68"/> <source>&Quit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="216"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="71"/> <source>Quit Program</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="221"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="76"/> <source>&Undo</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="223"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="78"/> <source>Undo Last Edit Action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="226"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="81"/> <source>&Redo</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="228"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="83"/> <source>Redo Last Edit Action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="231"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="86"/> <source>Zoom In</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="235"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="90"/> <source>Zoom Out</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="239"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="94"/> <source>&Paste</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="242"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="97"/> <source>Paste Text From Clipboard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="245"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="100"/> <source>Cu&t</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="248"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="103"/> <source>Cut the current selection's contents to the clipboard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="252"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="107"/> <source>&Copy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="255"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="110"/> <source>Copy the current selection's contents to the clipboard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="259"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="114"/> <source>&Quote</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="261"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="116"/> <source>Quote whole text</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="264"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="119"/> <source>Select &All</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="267"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="122"/> <source>Select the whole text</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="270"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="125"/> <source>&Find</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="272"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="127"/> <source>Find a word</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="275"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="130"/> <source>Remove &spacing</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="278"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="133"/> <source>Remove double linebreaks, e.g. in pasted text from webmailer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="281"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="136"/> <source>Se&ttings</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="282"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="137"/> <source>Open settings dialog</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="288"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="143"/> <source>&Encrypt</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="291"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="146"/> <source>Encrypt Message</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="294"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="149"/> <source>&Encrypt &Sign</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="297"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="152"/> <source>Encrypt and Sign Message</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="300"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="155"/> <source>&Decrypt</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="303"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="158"/> <source>Decrypt Message</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="306"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="161"/> <source>&Decrypt &Verify</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="309"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="164"/> <source>Decrypt and Verify Message</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="315"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="170"/> <source>&Encrypt File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="316"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="171"/> <source>Encrypt File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="319"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="174"/> <source>&Decrypt File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="320"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="175"/> <source>Decrypt File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="323"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="178"/> <source>&Sign File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="324"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="179"/> <source>Sign File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="327"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="182"/> <source>&Verify File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="328"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="183"/> <source>Verify File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="332"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="187"/> <source>&Sign</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="335"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="190"/> <source>Sign Message</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="338"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="193"/> <source>&Verify</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="341"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="196"/> <source>Verify Message</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="347"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="202"/> <source>&Editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="349"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="204"/> <source>Import New Key From Editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="352"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="207"/> <source>Manage &keys</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="354"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="209"/> <source>Open Keymanagement</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="359"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="214"/> <source>&About</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="361"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="216"/> <source>Show the application's About box</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="364"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="219"/> <source>Open &Wizard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="365"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="220"/> <source>Open the wizard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="370"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="225"/> <source>Append Selected Key(s) To Text</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="371"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="226"/> <source>Append The Selected Keys To Text in Editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="374"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="229"/> <source>Copy EMail-address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="375"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="230"/> <source>Copy selected EMailaddress to clipboard</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="379"/> - <source>Show Keydetails</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="234"/> + <source>Show Key Details</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="380"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="235"/> <source>Show Details for this Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="383"/> - <source>Refresh key from keyserver</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="238"/> + <source>Refresh Key From Key Server</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="384"/> - <source>Refresh key from default keyserver</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="239"/> + <source>Refresh key from default key server</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="387"/> - <source>Upload Key(s) To Server</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="242"/> + <source>Upload Public Key(s) To Server</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="388"/> - <source>Upload The Selected Keys To Server</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="243"/> + <source>Upload The Selected Public Keys To Server</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="402"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="257"/> <source>Remove PGP Header</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="405"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="260"/> <source>Add PGP Header</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="446"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="265"/> <source>&File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="458"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="277"/> <source>&Edit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="476"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="295"/> <source>&File...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="482"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="301"/> <source>&Crypt</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="493"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="312"/> <source>&Keys</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="494"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="313"/> <source>&Import Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="503"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="322"/> <source>&Steganography</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="512"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="331"/> <source>&View</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="514"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="333"/> <source>&Help</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="522"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="341"/> <source>File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="530"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="349"/> <source>Crypt</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="540"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="359"/> <source>Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="545"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="364"/> <source>Edit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="552"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="371"/> <source>Special Edit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="564"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="383"/> <source>Import key from...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="565"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="384"/> <source>Import key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="573"/> - <source>Encrypt or decrypt File</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="393"/> + <source>Opera File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="574"/> - <source>File..</source> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="394"/> + <source>File Crypto</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="594"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="412"/> <source>Ready</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="601"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="419"/> <source>Key ToolBox</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="609"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="427"/> <source>Information Board</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/MainWindow.cpp" line="629"/> + <location filename="../../src/ui/main_window/MainWindowUI.cpp" line="447"/> <source>Attached files:</source> <translation type="unfinished"></translation> </message> - <message> - <location filename="../../src/MainWindow.cpp" line="692"/> - <source>There is one unencrypted file in attachment folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/MainWindow.cpp" line="694"/> - <source>There are </source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/MainWindow.cpp" line="694"/> - <source> unencrypted files in attachment folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/MainWindow.cpp" line="726"/> - <location filename="../../src/MainWindow.cpp" line="773"/> - <location filename="../../src/MainWindow.cpp" line="1076"/> - <source>No Key Selected</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/MainWindow.cpp" line="733"/> - <location filename="../../src/MainWindow.cpp" line="780"/> - <location filename="../../src/MainWindow.cpp" line="1083"/> - <source>Invalid Operation</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/MainWindow.cpp" line="734"/> - <source>The selected key contains a key that does not actually have a encrypt function.<br/></source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/MainWindow.cpp" line="735"/> - <location filename="../../src/MainWindow.cpp" line="782"/> - <location filename="../../src/MainWindow.cpp" line="1085"/> - <source><br/>For example the Following Key: <br/></source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/MainWindow.cpp" line="781"/> - <source>The selected key contains a key that does not actually have a signature function.<br/></source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../src/MainWindow.cpp" line="1084"/> - <source>The selected key cannot be used for signing and encryption at the same time.<br/></source> - <translation type="unfinished"></translation> - </message> </context> <context> <name>MimeTab</name> @@ -2626,56 +2717,56 @@ Make sure you keep it save.Do you really want to export your private key?</sourc <context> <name>TextEdit</name> <message> - <location filename="../../src/ui/TextEdit.cpp" line="49"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="49"/> <source>untitled</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/TextEdit.cpp" line="68"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="76"/> <source>Open file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/TextEdit.cpp" line="93"/> - <location filename="../../src/ui/TextEdit.cpp" line="371"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="101"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="379"/> <source>Application</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/TextEdit.cpp" line="94"/> - <location filename="../../src/ui/TextEdit.cpp" line="372"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="102"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="380"/> <source>Cannot read file %1: %2.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/TextEdit.cpp" line="143"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="151"/> <source>File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/TextEdit.cpp" line="144"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="152"/> <source>Cannot write file %1: %2.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/TextEdit.cpp" line="165"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="173"/> <source>Save file </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/TextEdit.cpp" line="229"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="237"/> <source>Unsaved document</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/TextEdit.cpp" line="230"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="238"/> <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/TextEdit.cpp" line="232"/> + <location filename="../../src/ui/widgets/TextEdit.cpp" line="240"/> <source><b>Note:</b> If you don't save these files, all changes are lost.<br/></source> <translation type="unfinished"></translation> </message> diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index c695d58c..9a640c1f 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -61,6 +61,7 @@ if(MINGW) file(COPY ${CMAKE_SOURCE_DIR}/resource/utils/imageformats DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ FOLLOW_SYMLINK_CHAIN) file(COPY ${CMAKE_SOURCE_DIR}/resource/utils/printsupport DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ FOLLOW_SYMLINK_CHAIN) file(COPY ${CMAKE_SOURCE_DIR}/resource/utils/platforms DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ FOLLOW_SYMLINK_CHAIN) + file(COPY ${CMAKE_SOURCE_DIR}/resource/utils/openssl/ DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ FOLLOW_SYMLINK_CHAIN) endif() set(RESOURCE_FILES ${CMAKE_SOURCE_DIR}/gpgfrontend.qrc ${APP_ICON_RESOURCE_WINDOWS} ${QON_QM_FILES}) @@ -84,11 +85,19 @@ if(${CMAKE_BUILD_TYPE} STREQUAL "Release") add_custom_command(TARGET gpgfrontend POST_BUILD COMMAND /bin/rm -rf ./gpgfrontend.app/Contents/Resources WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} - COMMENT "Copying Resource INTO App Bundle Resource") + COMMENT "Deleting Resources IN App Bundle") add_custom_command(TARGET gpgfrontend POST_BUILD COMMAND /bin/mv -n ./Resources ./gpgfrontend.app/Contents/ WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} - COMMENT "Copying Resource INTO App Bundle Resource") + COMMENT "Copying Resources INTO App Bundle Resource") + add_custom_command(TARGET gpgfrontend POST_BUILD + COMMAND /bin/rm -rf ./GpgFrontend.app + WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} + COMMENT "Deleting Old Final App Bundle") + add_custom_command(TARGET gpgfrontend POST_BUILD + COMMAND /bin/mv -n ./gpgfrontend.app ./GpgFrontend.app + WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} + COMMENT "Rename Build App Bundle to Final App Bundle") endif() else() add_executable(gpgfrontend ${BASE_SOURCE} ${RESOURCE_FILES} ${QT5_MOCS}) diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index e2e610a2..6fa77e5a 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -133,7 +133,7 @@ void MainWindow::restoreSettings() { settings.setValue("keyserver/keyServerList", keyServerList); // set default keyserver, if it's not set - QString defaultKeyServer = settings.value("keyserver/defaultKeyServer", QString("http://keys.gnupg.net")).toString(); + QString defaultKeyServer = settings.value("keyserver/defaultKeyServer", QString("https://keyserver.ubuntu.com")).toString(); settings.setValue("keyserver/defaultKeyServer", defaultKeyServer); // Iconstyle @@ -169,474 +169,6 @@ void MainWindow::saveSettings() { } } -void MainWindow::createActions() { - /* Main Menu - */ - newTabAct = new QAction(tr("&New"), this); - newTabAct->setIcon(QIcon(":misc_doc.png")); - QList<QKeySequence> newTabActShortcutList; - newTabActShortcutList.append(QKeySequence(Qt::CTRL + Qt::Key_N)); - newTabActShortcutList.append(QKeySequence(Qt::CTRL + Qt::Key_T)); - newTabAct->setShortcuts(newTabActShortcutList); - newTabAct->setToolTip(tr("Open a new file")); - connect(newTabAct, SIGNAL(triggered()), edit, SLOT(slotNewTab())); - - openAct = new QAction(tr("&Open..."), this); - openAct->setIcon(QIcon(":fileopen.png")); - openAct->setShortcut(QKeySequence::Open); - openAct->setToolTip(tr("Open an existing file")); - connect(openAct, SIGNAL(triggered()), edit, SLOT(slotOpen())); - - saveAct = new QAction(tr("&Save"), this); - saveAct->setIcon(QIcon(":filesave.png")); - saveAct->setShortcut(QKeySequence::Save); - saveAct->setToolTip(tr("Save the current File")); - connect(saveAct, SIGNAL(triggered()), edit, SLOT(slotSave())); - - saveAsAct = new QAction(tr("Save &As") + "...", this); - saveAsAct->setIcon(QIcon(":filesaveas.png")); - saveAsAct->setShortcut(QKeySequence::SaveAs); - saveAsAct->setToolTip(tr("Save the current File as...")); - connect(saveAsAct, SIGNAL(triggered()), edit, SLOT(slotSaveAs())); - - printAct = new QAction(tr("&Print"), this); - printAct->setIcon(QIcon(":fileprint.png")); - printAct->setShortcut(QKeySequence::Print); - printAct->setToolTip(tr("Print Document")); - connect(printAct, SIGNAL(triggered()), edit, SLOT(slotPrint())); - - closeTabAct = new QAction(tr("&Close"), this); - closeTabAct->setShortcut(QKeySequence::Close); - closeTabAct->setToolTip(tr("Close file")); - connect(closeTabAct, SIGNAL(triggered()), edit, SLOT(slotCloseTab())); - - quitAct = new QAction(tr("&Quit"), this); - quitAct->setShortcut(QKeySequence::Quit); - quitAct->setIcon(QIcon(":exit.png")); - quitAct->setToolTip(tr("Quit Program")); - connect(quitAct, SIGNAL(triggered()), this, SLOT(close())); - - /* Edit Menu - */ - undoAct = new QAction(tr("&Undo"), this); - undoAct->setShortcut(QKeySequence::Undo); - undoAct->setToolTip(tr("Undo Last Edit Action")); - connect(undoAct, SIGNAL(triggered()), edit, SLOT(slotUndo())); - - redoAct = new QAction(tr("&Redo"), this); - redoAct->setShortcut(QKeySequence::Redo); - redoAct->setToolTip(tr("Redo Last Edit Action")); - connect(redoAct, SIGNAL(triggered()), edit, SLOT(slotRedo())); - - zoomInAct = new QAction(tr("Zoom In"), this); - zoomInAct->setShortcut(QKeySequence::ZoomIn); - connect(zoomInAct, SIGNAL(triggered()), edit, SLOT(slotZoomIn())); - - zoomOutAct = new QAction(tr("Zoom Out"), this); - zoomOutAct->setShortcut(QKeySequence::ZoomOut); - connect(zoomOutAct, SIGNAL(triggered()), edit, SLOT(slotZoomOut())); - - pasteAct = new QAction(tr("&Paste"), this); - pasteAct->setIcon(QIcon(":button_paste.png")); - pasteAct->setShortcut(QKeySequence::Paste); - pasteAct->setToolTip(tr("Paste Text From Clipboard")); - connect(pasteAct, SIGNAL(triggered()), edit, SLOT(slotPaste())); - - cutAct = new QAction(tr("Cu&t"), this); - cutAct->setIcon(QIcon(":button_cut.png")); - cutAct->setShortcut(QKeySequence::Cut); - cutAct->setToolTip(tr("Cut the current selection's contents to the " - "clipboard")); - connect(cutAct, SIGNAL(triggered()), edit, SLOT(slotCut())); - - copyAct = new QAction(tr("&Copy"), this); - copyAct->setIcon(QIcon(":button_copy.png")); - copyAct->setShortcut(QKeySequence::Copy); - copyAct->setToolTip(tr("Copy the current selection's contents to the " - "clipboard")); - connect(copyAct, SIGNAL(triggered()), edit, SLOT(slotCopy())); - - quoteAct = new QAction(tr("&Quote"), this); - quoteAct->setIcon(QIcon(":quote.png")); - quoteAct->setToolTip(tr("Quote whole text")); - connect(quoteAct, SIGNAL(triggered()), edit, SLOT(slotQuote())); - - selectallAct = new QAction(tr("Select &All"), this); - selectallAct->setIcon(QIcon(":edit.png")); - selectallAct->setShortcut(QKeySequence::SelectAll); - selectallAct->setToolTip(tr("Select the whole text")); - connect(selectallAct, SIGNAL(triggered()), edit, SLOT(slotSelectAll())); - - findAct = new QAction(tr("&Find"), this); - findAct->setShortcut(QKeySequence::Find); - findAct->setToolTip(tr("Find a word")); - connect(findAct, SIGNAL(triggered()), this, SLOT(slotFind())); - - cleanDoubleLinebreaksAct = new QAction(tr("Remove &spacing"), this); - cleanDoubleLinebreaksAct->setIcon(QIcon(":format-line-spacing-triple.png")); - //cleanDoubleLineBreaksAct->setShortcut(QKeySequence::SelectAll); - cleanDoubleLinebreaksAct->setToolTip(tr("Remove double linebreaks, e.g. in pasted text from webmailer")); - connect(cleanDoubleLinebreaksAct, SIGNAL(triggered()), this, SLOT(slotCleanDoubleLinebreaks())); - - openSettingsAct = new QAction(tr("Se&ttings"), this); - openSettingsAct->setToolTip(tr("Open settings dialog")); - openSettingsAct->setShortcut(QKeySequence::Preferences); - connect(openSettingsAct, SIGNAL(triggered()), this, SLOT(slotOpenSettingsDialog())); - - /* Crypt Menu - */ - encryptAct = new QAction(tr("&Encrypt"), this); - encryptAct->setIcon(QIcon(":encrypted.png")); - encryptAct->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_E)); - encryptAct->setToolTip(tr("Encrypt Message")); - connect(encryptAct, SIGNAL(triggered()), this, SLOT(slotEncrypt())); - - encryptSignAct = new QAction(tr("&Encrypt &Sign"), this); - encryptSignAct->setIcon(QIcon(":encrypted_signed.png")); - encryptSignAct->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_E)); - encryptSignAct->setToolTip(tr("Encrypt and Sign Message")); - connect(encryptSignAct, SIGNAL(triggered()), this, SLOT(slotEncryptSign())); - - decryptAct = new QAction(tr("&Decrypt"), this); - decryptAct->setIcon(QIcon(":decrypted.png")); - decryptAct->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_D)); - decryptAct->setToolTip(tr("Decrypt Message")); - connect(decryptAct, SIGNAL(triggered()), this, SLOT(slotDecrypt())); - - decryptVerifyAct = new QAction(tr("&Decrypt &Verify"), this); - decryptVerifyAct->setIcon(QIcon(":decrypted_verified.png")); - decryptVerifyAct->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_D)); - decryptVerifyAct->setToolTip(tr("Decrypt and Verify Message")); - connect(decryptVerifyAct, SIGNAL(triggered()), this, SLOT(slotDecryptVerify())); - - /* - * File encryption submenu - */ - fileEncryptAct = new QAction(tr("&Encrypt File"), this); - fileEncryptAct->setToolTip(tr("Encrypt File")); - connect(fileEncryptAct, SIGNAL(triggered()), this, SLOT(slotFileEncrypt())); - - fileDecryptAct = new QAction(tr("&Decrypt File"), this); - fileDecryptAct->setToolTip(tr("Decrypt File")); - connect(fileDecryptAct, SIGNAL(triggered()), this, SLOT(slotFileDecrypt())); - - fileSignAct = new QAction(tr("&Sign File"), this); - fileSignAct->setToolTip(tr("Sign File")); - connect(fileSignAct, SIGNAL(triggered()), this, SLOT(slotFileSign())); - - fileVerifyAct = new QAction(tr("&Verify File"), this); - fileVerifyAct->setToolTip(tr("Verify File")); - connect(fileVerifyAct, SIGNAL(triggered()), this, SLOT(slotFileVerify())); - - - signAct = new QAction(tr("&Sign"), this); - signAct->setIcon(QIcon(":signature.png")); - signAct->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_I)); - signAct->setToolTip(tr("Sign Message")); - connect(signAct, SIGNAL(triggered()), this, SLOT(slotSign())); - - verifyAct = new QAction(tr("&Verify"), this); - verifyAct->setIcon(QIcon(":verify.png")); - verifyAct->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_V)); - verifyAct->setToolTip(tr("Verify Message")); - connect(verifyAct, SIGNAL(triggered()), this, SLOT(slotVerify())); - - /* Key Menu - */ - - importKeyFromEditAct = new QAction(tr("&Editor"), this); - importKeyFromEditAct->setIcon(QIcon(":txt.png")); - importKeyFromEditAct->setToolTip(tr("Import New Key From Editor")); - connect(importKeyFromEditAct, SIGNAL(triggered()), this, SLOT(slotImportKeyFromEdit())); - - openKeyManagementAct = new QAction(tr("Manage &keys"), this); - openKeyManagementAct->setIcon(QIcon(":keymgmt.png")); - openKeyManagementAct->setToolTip(tr("Open Keymanagement")); - connect(openKeyManagementAct, SIGNAL(triggered()), this, SLOT(slotOpenKeyManagement())); - - /* About Menu - */ - aboutAct = new QAction(tr("&About"), this); - aboutAct->setIcon(QIcon(":help.png")); - aboutAct->setToolTip(tr("Show the application's About box")); - connect(aboutAct, SIGNAL(triggered()), this, SLOT(slotAbout())); - - startWizardAct = new QAction(tr("Open &Wizard"), this); - startWizardAct->setToolTip(tr("Open the wizard")); - connect(startWizardAct, SIGNAL(triggered()), this, SLOT(slotStartWizard())); - - /* Popup-Menu-Action for KeyList - */ - appendSelectedKeysAct = new QAction(tr("Append Selected Key(s) To Text"), this); - appendSelectedKeysAct->setToolTip(tr("Append The Selected Keys To Text in Editor")); - connect(appendSelectedKeysAct, SIGNAL(triggered()), this, SLOT(slotAppendSelectedKeys())); - - copyMailAddressToClipboardAct = new QAction(tr("Copy EMail-address"), this); - copyMailAddressToClipboardAct->setToolTip(tr("Copy selected EMailaddress to clipboard")); - connect(copyMailAddressToClipboardAct, SIGNAL(triggered()), this, SLOT(slotCopyMailAddressToClipboard())); - - // TODO: find central place for shared actions, to avoid code-duplication with keymgmt.cpp - showKeyDetailsAct = new QAction(tr("Show Keydetails"), this); - showKeyDetailsAct->setToolTip(tr("Show Details for this Key")); - connect(showKeyDetailsAct, SIGNAL(triggered()), this, SLOT(slotShowKeyDetails())); - - refreshKeysFromKeyserverAct = new QAction(tr("Refresh key from keyserver"), this); - refreshKeysFromKeyserverAct->setToolTip(tr("Refresh key from default keyserver")); - connect(refreshKeysFromKeyserverAct, SIGNAL(triggered()), this, SLOT(refreshKeysFromKeyserver())); - - uploadKeyToServerAct = new QAction(tr("Upload Key(s) To Server"), this); - uploadKeyToServerAct->setToolTip(tr("Upload The Selected Keys To Server")); - connect(uploadKeyToServerAct, SIGNAL(triggered()), this, SLOT(uploadKeyToServer())); - /* Key-Shortcuts for Tab-Switchung-Action - */ - switchTabUpAct = new QAction(this); - switchTabUpAct->setShortcut(QKeySequence::NextChild); - connect(switchTabUpAct, SIGNAL(triggered()), edit, SLOT(slotSwitchTabUp())); - this->addAction(switchTabUpAct); - - switchTabDownAct = new QAction(this); - switchTabDownAct->setShortcut(QKeySequence::PreviousChild); - connect(switchTabDownAct, SIGNAL(triggered()), edit, SLOT(slotSwitchTabDown())); - this->addAction(switchTabDownAct); - - cutPgpHeaderAct = new QAction(tr("Remove PGP Header"), this); - connect(cutPgpHeaderAct, SIGNAL(triggered()), this, SLOT(slotCutPgpHeader())); - - addPgpHeaderAct = new QAction(tr("Add PGP Header"), this); - connect(addPgpHeaderAct, SIGNAL(triggered()), this, SLOT(slotAddPgpHeader())); -} - -void MainWindow::slotDisableTabActions(int number) { - bool disable; - - if (number == -1) { - disable = true; - } else { - disable = false; - } - printAct->setDisabled(disable); - saveAct->setDisabled(disable); - saveAsAct->setDisabled(disable); - quoteAct->setDisabled(disable); - cutAct->setDisabled(disable); - copyAct->setDisabled(disable); - pasteAct->setDisabled(disable); - closeTabAct->setDisabled(disable); - selectallAct->setDisabled(disable); - findAct->setDisabled(disable); - verifyAct->setDisabled(disable); - signAct->setDisabled(disable); - encryptAct->setDisabled(disable); - decryptAct->setDisabled(disable); - - redoAct->setDisabled(disable); - undoAct->setDisabled(disable); - zoomOutAct->setDisabled(disable); - zoomInAct->setDisabled(disable); - cleanDoubleLinebreaksAct->setDisabled(disable); - quoteAct->setDisabled(disable); - appendSelectedKeysAct->setDisabled(disable); - importKeyFromEditAct->setDisabled(disable); - - cutPgpHeaderAct->setDisabled(disable); - addPgpHeaderAct->setDisabled(disable); -} - -void MainWindow::createMenus() { - fileMenu = menuBar()->addMenu(tr("&File")); - fileMenu->addAction(newTabAct); - fileMenu->addAction(openAct); - fileMenu->addSeparator(); - fileMenu->addAction(saveAct); - fileMenu->addAction(saveAsAct); - fileMenu->addSeparator(); - fileMenu->addAction(printAct); - fileMenu->addSeparator(); - fileMenu->addAction(closeTabAct); - fileMenu->addAction(quitAct); - - editMenu = menuBar()->addMenu(tr("&Edit")); - editMenu->addAction(undoAct); - editMenu->addAction(redoAct); - editMenu->addSeparator(); - editMenu->addAction(zoomInAct); - editMenu->addAction(zoomOutAct); - editMenu->addSeparator(); - editMenu->addAction(copyAct); - editMenu->addAction(cutAct); - editMenu->addAction(pasteAct); - editMenu->addAction(selectallAct); - editMenu->addAction(findAct); - editMenu->addSeparator(); - editMenu->addAction(quoteAct); - editMenu->addAction(cleanDoubleLinebreaksAct); - editMenu->addSeparator(); - editMenu->addAction(openSettingsAct); - - fileEncMenu = new QMenu(tr("&File...")); - fileEncMenu->addAction(fileEncryptAct); - fileEncMenu->addAction(fileDecryptAct); - fileEncMenu->addAction(fileSignAct); - fileEncMenu->addAction(fileVerifyAct); - - cryptMenu = menuBar()->addMenu(tr("&Crypt")); - cryptMenu->addAction(encryptAct); - cryptMenu->addAction(encryptSignAct); - cryptMenu->addAction(decryptAct); - cryptMenu->addAction(decryptVerifyAct); - cryptMenu->addSeparator(); - cryptMenu->addAction(signAct); - cryptMenu->addAction(verifyAct); - cryptMenu->addSeparator(); - cryptMenu->addMenu(fileEncMenu); - - keyMenu = menuBar()->addMenu(tr("&Keys")); - importKeyMenu = keyMenu->addMenu(tr("&Import Key")); - importKeyMenu->setIcon(QIcon(":key_import.png")); - importKeyMenu->addAction(keyMgmt->importKeyFromFileAct); - importKeyMenu->addAction(importKeyFromEditAct); - importKeyMenu->addAction(keyMgmt->importKeyFromClipboardAct); - importKeyMenu->addAction(keyMgmt->importKeyFromKeyServerAct); - importKeyMenu->addAction(keyMgmt->importKeyFromKeyServerAct); - keyMenu->addAction(openKeyManagementAct); - - steganoMenu = menuBar()->addMenu(tr("&Steganography")); - steganoMenu->addAction(cutPgpHeaderAct); - steganoMenu->addAction(addPgpHeaderAct); - - // Hide menu, when steganography menu is disabled in settings - if (!settings.value("advanced/steganography").toBool()) { - this->menuBar()->removeAction(steganoMenu->menuAction()); - } - - viewMenu = menuBar()->addMenu(tr("&View")); - - helpMenu = menuBar()->addMenu(tr("&Help")); - helpMenu->addAction(startWizardAct); - helpMenu->addSeparator(); - helpMenu->addAction(aboutAct); - -} - -void MainWindow::createToolBars() { - fileToolBar = addToolBar(tr("File")); - fileToolBar->setObjectName("fileToolBar"); - fileToolBar->addAction(newTabAct); - fileToolBar->addAction(openAct); - fileToolBar->addAction(saveAct); - fileToolBar->hide(); - viewMenu->addAction(fileToolBar->toggleViewAction()); - - cryptToolBar = addToolBar(tr("Crypt")); - cryptToolBar->setObjectName("cryptToolBar"); - cryptToolBar->addAction(encryptAct); - cryptToolBar->addAction(encryptSignAct); - cryptToolBar->addAction(decryptAct); - cryptToolBar->addAction(decryptVerifyAct); - cryptToolBar->addAction(signAct); - cryptToolBar->addAction(verifyAct); - viewMenu->addAction(cryptToolBar->toggleViewAction()); - - keyToolBar = addToolBar(tr("Key")); - keyToolBar->setObjectName("keyToolBar"); - keyToolBar->addAction(openKeyManagementAct); - viewMenu->addAction(keyToolBar->toggleViewAction()); - - editToolBar = addToolBar(tr("Edit")); - editToolBar->setObjectName("editToolBar"); - editToolBar->addAction(copyAct); - editToolBar->addAction(pasteAct); - editToolBar->addAction(selectallAct); - viewMenu->addAction(editToolBar->toggleViewAction()); - - specialEditToolBar = addToolBar(tr("Special Edit")); - specialEditToolBar->setObjectName("specialEditToolBar"); - specialEditToolBar->addAction(quoteAct); - specialEditToolBar->addAction(cleanDoubleLinebreaksAct); - specialEditToolBar->hide(); - viewMenu->addAction(specialEditToolBar->toggleViewAction()); - - // Add dropdown menu for key import to keytoolbar - importButton = new QToolButton(); - importButton->setMenu(importKeyMenu); - importButton->setPopupMode(QToolButton::InstantPopup); - importButton->setIcon(QIcon(":key_import.png")); - importButton->setToolTip(tr("Import key from...")); - importButton->setText(tr("Import key")); - keyToolBar->addWidget(importButton); - - // Add dropdown menu for file encryption/decryption to crypttoolbar - fileEncButton = new QToolButton(); - fileEncButton->setMenu(fileEncMenu); - fileEncButton->setPopupMode(QToolButton::InstantPopup); - fileEncButton->setIcon(QIcon(":fileencryption.png")); - fileEncButton->setToolTip(tr("Encrypt or decrypt File")); - fileEncButton->setText(tr("File..")); - fileEncButton->hide(); - - cryptToolBar->addWidget(fileEncButton); - -} - -void MainWindow::createStatusBar() { - auto *statusBarBox = new QWidget(); - auto *statusBarBoxLayout = new QHBoxLayout(); - QPixmap *pixmap; - - // icon which should be shown if there are files in attachments-folder - pixmap = new QPixmap(":statusbar_icon.png"); - statusBarIcon = new QLabel(); - statusBar()->addWidget(statusBarIcon); - - statusBarIcon->setPixmap(*pixmap); - statusBar()->insertPermanentWidget(0, statusBarIcon, 0); - statusBarIcon->hide(); - statusBar()->showMessage(tr("Ready"), 2000); - statusBarBox->setLayout(statusBarBoxLayout); -} - -void MainWindow::createDockWindows() { - /* KeyList-Dockwindow - */ - keylistDock = new QDockWidget(tr("Key ToolBox"), this); - keylistDock->setObjectName("EncryptDock"); - keylistDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); - keylistDock->setMinimumWidth(460); - addDockWidget(Qt::RightDockWidgetArea, keylistDock); - keylistDock->setWidget(mKeyList); - viewMenu->addAction(keylistDock->toggleViewAction()); - - infoBoardDock = new QDockWidget(tr("Information Board"), this); - infoBoardDock->setObjectName("Information Board"); - infoBoardDock->setAllowedAreas(Qt::BottomDockWidgetArea); - addDockWidget(Qt::BottomDockWidgetArea, infoBoardDock); - infoBoardDock->setWidget(infoBoard); - infoBoardDock->widget()->layout()->setContentsMargins(0, 0, 0, 0); - viewMenu->addAction(infoBoardDock->toggleViewAction()); - - /* Attachments-Dockwindow - */ - if (settings.value("mime/parseMime").toBool()) { - createAttachmentDock(); - } -} - -void MainWindow::createAttachmentDock() { - if (attachmentDockCreated) { - return; - } - mAttachments = new Attachments(); - attachmentDock = new QDockWidget(tr("Attached files:"), this); - attachmentDock->setObjectName("AttachmentDock"); - attachmentDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea | Qt::BottomDockWidgetArea); - addDockWidget(Qt::LeftDockWidgetArea, attachmentDock); - attachmentDock->setWidget(mAttachments); - // hide till attachment is decrypted - viewMenu->addAction(attachmentDock->toggleViewAction()); - attachmentDock->hide(); - attachmentDockCreated = true; -} - void MainWindow::closeAttachmentDock() { if (!attachmentDockCreated) { return; @@ -662,494 +194,3 @@ void MainWindow::closeEvent(QCloseEvent *event) { mCtx->clearPasswordCache(); } -void MainWindow::slotAbout() { - new AboutDialog(this); -} - -void MainWindow::slotSetStatusBarText(const QString &text) { - statusBar()->showMessage(text, 20000); -} - -void MainWindow::slotStartWizard() { - auto *wizard = new Wizard(mCtx, keyMgmt, this); - wizard->show(); - wizard->setModal(true); -} - - -void MainWindow::slotCheckAttachmentFolder() { - // TODO: always check? - if (!settings.value("mime/parseMime").toBool()) { - return; - } - - QString attachmentDir = qApp->applicationDirPath() + "/attachments/"; - // filenum minus . and .. - uint filenum = QDir(attachmentDir).count() - 2; - if (filenum > 0) { - QString statusText; - if (filenum == 1) { - statusText = tr("There is one unencrypted file in attachment folder"); - } else { - statusText = tr("There are ") + QString::number(filenum) + tr(" unencrypted files in attachment folder"); - } - statusBarIcon->setStatusTip(statusText); - statusBarIcon->show(); - } else { - statusBarIcon->hide(); - } -} - -void MainWindow::slotImportKeyFromEdit() { - if (edit->tabCount() == 0 || edit->slotCurPage() == 0) { - return; - } - - keyMgmt->slotImportKeys(edit->curTextPage()->toPlainText().toUtf8()); -} - -void MainWindow::slotOpenKeyManagement() { - keyMgmt->show(); - keyMgmt->raise(); - keyMgmt->activateWindow(); -} - -void MainWindow::slotEncrypt() { - if (edit->tabCount() == 0 || edit->slotCurPage() == nullptr) { - return; - } - - QVector<GpgKey> keys; - mKeyList->getCheckedKeys(keys); - - 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 function.<br/>") - + tr("<br/>For example the Following Key: <br/>") + key.uids.first().uid); - return; - - } - } - - auto *tmp = new QByteArray(); - - 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 *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); - - delete resultAnalyse; -} - -void MainWindow::slotSign() { - if (edit->tabCount() == 0 || edit->slotCurPage() == nullptr) { - return; - } - - QVector<GpgKey> keys; - - mKeyList->getPrivateCheckedKeys(keys); - - if (keys.isEmpty()) { - QMessageBox::critical(nullptr, tr("No Key Selected"), tr("No Key Selected")); - return; - } - - 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); - return; - } - } - - auto *tmp = new QByteArray(); - - 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 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); - - delete resultAnalyse; -} - -void MainWindow::slotDecrypt() { - if (edit->tabCount() == 0 || edit->slotCurPage() == nullptr) { - return; - } - - 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()); - - if(gpgme_err_code(error) == GPG_ERR_NO_ERROR) - edit->slotFillTextEditWithText(QString::fromUtf8(*decrypted)); - - 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); - - delete resultAnalyse; -} - -void MainWindow::slotFind() { - if (edit->tabCount() == 0 || edit->curTextPage() == nullptr) { - return; - } - - // At first close verifynotification, if existing - edit->slotCurPage()->closeNoteByClass("findwidget"); - - auto *fw = new FindWidget(this, edit->curTextPage()); - edit->slotCurPage()->showNotificationWidget(fw, "findWidget"); - -} - -void MainWindow::slotVerify() { - if (edit->tabCount() == 0 || edit->slotCurPage() == nullptr) { - return; - } - - // If an unknown key is found, enable the importfromkeyserveraction - - 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; -} - -/* - * Append the selected (not checked!) Key(s) To Textedit - */ -void MainWindow::slotAppendSelectedKeys() { - if (edit->tabCount() == 0 || edit->slotCurPage() == nullptr) { - return; - } - - auto *keyArray = new QByteArray(); - mCtx->exportKeys(mKeyList->getSelected(), keyArray); - edit->curTextPage()->append(*keyArray); -} - -void MainWindow::slotCopyMailAddressToClipboard() { - if (mKeyList->getSelected()->isEmpty()) { - return; - } - auto &key = mCtx->getKeyById(mKeyList->getSelected()->first()); - QClipboard *cb = QApplication::clipboard(); - QString mail = key.email; - cb->setText(mail); -} - -void MainWindow::slotShowKeyDetails() { - if (mKeyList->getSelected()->isEmpty()) { - return; - } - auto &key = mCtx->getKeyById(mKeyList->getSelected()->first()); - if (key.good) { - new KeyDetailsDialog(mCtx, key, this); - } -} - -void MainWindow::refreshKeysFromKeyserver() { - if (mKeyList->getSelected()->isEmpty()) { - return; - } - - auto *ksid = new KeyServerImportDialog(mCtx, mKeyList, this); - ksid->slotImport(*mKeyList->getSelected()); - -} - -void MainWindow::uploadKeyToServer() { - auto *keyArray = new QByteArray(); - mCtx->exportKeys(mKeyList->getSelected(), keyArray); - - mKeyList->uploadKeyToServer(keyArray); -} - -void MainWindow::slotFileEncrypt() { - QStringList *keyList; - keyList = mKeyList->getChecked(); - new FileEncryptionDialog(mCtx, *keyList, FileEncryptionDialog::Encrypt, this); -} - -void MainWindow::slotFileDecrypt() { - QStringList *keyList; - keyList = mKeyList->getChecked(); - new FileEncryptionDialog(mCtx, *keyList, FileEncryptionDialog::Decrypt, this); -} - -void MainWindow::slotFileSign() { - QStringList *keyList; - keyList = mKeyList->getChecked(); - new FileEncryptionDialog(mCtx, *keyList, FileEncryptionDialog::Sign, this); -} - -void MainWindow::slotFileVerify() { - QStringList *keyList; - keyList = mKeyList->getChecked(); - new FileEncryptionDialog(mCtx, *keyList, FileEncryptionDialog::Verify, this); -} - -void MainWindow::slotOpenSettingsDialog() { - - QString preLang = settings.value("int/lang").toString(); - QString preKeydbPath = settings.value("gpgpaths/keydbpath").toString(); - - auto dialog = new SettingsDialog(mCtx, this); - - connect(dialog, &SettingsDialog::finished, this, [&] () -> void { - - qDebug() << "Setting Dialog Finished"; - - // Iconsize - QSize iconSize = settings.value("toolbar/iconsize", QSize(32, 32)).toSize(); - this->setIconSize(iconSize); - importButton->setIconSize(iconSize); - fileEncButton->setIconSize(iconSize); - - // Iconstyle - Qt::ToolButtonStyle buttonStyle = static_cast<Qt::ToolButtonStyle>(settings.value("toolbar/iconstyle", - Qt::ToolButtonTextUnderIcon).toUInt()); - this->setToolButtonStyle(buttonStyle); - importButton->setToolButtonStyle(buttonStyle); - fileEncButton->setToolButtonStyle(buttonStyle); - - // Mime-settings - if (settings.value("mime/parseMime").toBool()) { - createAttachmentDock(); - } else if (attachmentDockCreated) { - closeAttachmentDock(); - } - - // restart mainwindow if necessary - if (getRestartNeeded()) { - if (edit->maybeSaveAnyTab()) { - saveSettings(); - qApp->exit(RESTART_CODE); - } - } - - // steganography hide/show - if (!settings.value("advanced/steganography").toBool()) { - this->menuBar()->removeAction(steganoMenu->menuAction()); - } else { - this->menuBar()->insertAction(viewMenu->menuAction(), steganoMenu->menuAction()); - } - }); - -} - -void MainWindow::slotCleanDoubleLinebreaks() { - if (edit->tabCount() == 0 || edit->slotCurPage() == nullptr) { - return; - } - - QString content = edit->curTextPage()->toPlainText(); - content.replace("\n\n", "\n"); - edit->slotFillTextEditWithText(content); -} - -void MainWindow::slotAddPgpHeader() { - if (edit->tabCount() == 0 || edit->slotCurPage() == nullptr) { - return; - } - - QString content = edit->curTextPage()->toPlainText().trimmed(); - - content.prepend("\n\n").prepend(GpgConstants::PGP_CRYPT_BEGIN); - content.append("\n").append(GpgConstants::PGP_CRYPT_END); - - edit->slotFillTextEditWithText(content); -} - -void MainWindow::slotCutPgpHeader() { - - if (edit->tabCount() == 0 || edit->slotCurPage() == nullptr) { - return; - } - - QString content = edit->curTextPage()->toPlainText(); - int start = content.indexOf(GpgConstants::PGP_CRYPT_BEGIN); - int end = content.indexOf(GpgConstants::PGP_CRYPT_END); - - if (start < 0 || end < 0) { - return; - } - - // remove head - int headEnd = content.indexOf("\n\n", start) + 2; - content.remove(start, headEnd - start); - - // remove tail - end = content.indexOf(GpgConstants::PGP_CRYPT_END); - content.remove(end, QString(GpgConstants::PGP_CRYPT_END).size()); - - edit->slotFillTextEditWithText(content.trimmed()); -} - -void MainWindow::slotSetRestartNeeded(bool needed) { - this->restartNeeded = needed; -} - -bool MainWindow::getRestartNeeded() const { - return this->restartNeeded; -} - -void MainWindow::slotEncryptSign() { - - if (edit->tabCount() == 0 || edit->slotCurPage() == nullptr) { - return; - } - - QVector<GpgKey> keys; - mKeyList->getCheckedKeys(keys); - - if (keys.empty()) { - QMessageBox::critical(nullptr, 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, - 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; - } - } - - 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; -} - -void MainWindow::slotDecryptVerify() { - - if (edit->tabCount() == 0 || edit->slotCurPage() == nullptr) { - return; - } - - 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; -} diff --git a/src/gpg/GpgContext.cpp b/src/gpg/GpgContext.cpp index 62d7a246..603ad90b 100644 --- a/src/gpg/GpgContext.cpp +++ b/src/gpg/GpgContext.cpp @@ -1215,4 +1215,30 @@ namespace GpgME { return err; } + + bool GpgContext::exportKeys(const QVector<GpgKey> &keys, QByteArray &outBuffer) { + size_t read_bytes; + gpgme_data_t dataOut = nullptr; + outBuffer.resize(0); + + if (keys.count() == 0) { + QMessageBox::critical(nullptr, "Export Keys Error", "No Keys Selected"); + return false; + } + + for (const auto& key : keys) { + err = gpgme_data_new(&dataOut); + checkErr(err); + + err = gpgme_op_export(mCtx,key.id.toUtf8().constData(), 0, dataOut); + checkErr(err); + + read_bytes = gpgme_data_seek(dataOut, 0, SEEK_END); + + err = readToBuffer(dataOut, &outBuffer); + checkErr(err); + gpgme_data_release(dataOut); + } + return true; + } }
\ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index 7d6a71a3..db11ee6f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -81,6 +81,8 @@ int main(int argc, char *argv[]) { qDebug() << "Translator2" << translator2.filePath(); QApplication::installTranslator(&translator2); + QApplication::setQuitOnLastWindowClosed(true); + MainWindow window; return_from_event_loop_code = QApplication::exec(); diff --git a/src/ui/AboutDialog.cpp b/src/ui/AboutDialog.cpp index 652bb956..e51f225d 100644 --- a/src/ui/AboutDialog.cpp +++ b/src/ui/AboutDialog.cpp @@ -50,21 +50,19 @@ InfoTab::InfoTab(QWidget *parent) : QWidget(parent) { auto *pixmap = new QPixmap(":gpgfrontend-logo.png"); auto *text = new QString("<center><h2>" + qApp->applicationName() + "</h2></center>" - + "<center><b>" + qApp->applicationVersion() + "</b></center>" - + "<center>" + GIT_VERSION + "</center>" - + tr("<br><center>GPGFrontend is a modern, easy-to-use, compact, <br>" - "cross-platform, and installation-free gpg front-end tool.<br>" - "It visualizes most of the common operations of gpg commands.<br>" - "It's licensed under the GPL v3<br><br>" - "<b>Developer:</b><br>" - "Saturneric<br><br>" - "If you have any questions or suggestions have a look<br/>" - "at my <a href=\"https://bktus.com/%e8%81%94%e7%b3%bb%e4%b8%8e%e9%aa%8c%e8%af%81\">" - "contact page</a> or send a mail to my<br/> mailing list at" - " <a href=\"mailto:[email protected]\">[email protected]</a>.") + - tr("<br><br> Built with Qt ") + qVersion() - + tr(" and GPGME ") + GpgME::GpgContext::getGpgmeVersion() + - tr("<br>Built at ") + BUILD_TIMESTAMP + "</center>"); + + "<center><b>" + qApp->applicationVersion() + "</b></center>" + + "<center>" + GIT_VERSION + "</center>" + + tr("<br><center>GPGFrontend is an easy-to-use, compact, <br>" + "cross-platform, and installation-free gpg front-end tool.<br>" + "It visualizes most of the common operations of gpg commands.<br>" + "It's licensed under the GPL v3<br><br>" + "<b>Developer:</b><br>" + "Saturneric<br><br>" + "If you have any questions or suggestions, raise an issue<br/>" + "at <a href=\"https://github.com/saturneric/GpgFrontend\">GitHub</a> or send a mail to my mailing list at <a href=\"mailto:[email protected]\">[email protected]</a>.") + + tr("<br><br> Built with Qt ") + qVersion() + + tr(" and GPGME ") + GpgME::GpgContext::getGpgmeVersion() + + tr("<br>Built at ") + BUILD_TIMESTAMP + "</center>"); auto *layout = new QGridLayout(); auto *pixmapLabel = new QLabel(); @@ -83,7 +81,7 @@ InfoTab::InfoTab(QWidget *parent) TranslatorsTab::TranslatorsTab(QWidget *parent) : QWidget(parent) { QFile translatorsFile; - translatorsFile.setFileName(qApp->applicationDirPath() + "/TRANSLATORS"); + translatorsFile.setFileName(qApp->applicationDirPath() + "/About"); translatorsFile.open(QIODevice::ReadOnly); QByteArray inBuffer = translatorsFile.readAll(); diff --git a/src/ui/CMakeLists.txt b/src/ui/CMakeLists.txt index d92a63ed..68f57b81 100644 --- a/src/ui/CMakeLists.txt +++ b/src/ui/CMakeLists.txt @@ -2,6 +2,7 @@ aux_source_directory(. UI_SOURCE) aux_source_directory(./keypair_details UI_SOURCE) aux_source_directory(./widgets UI_SOURCE) aux_source_directory(./keygen UI_SOURCE) +aux_source_directory(./main_window UI_SOURCE) add_library(gpgfrontend-ui STATIC ${UI_SOURCE}) diff --git a/src/ui/KeyImportDetailDialog.cpp b/src/ui/KeyImportDetailDialog.cpp index 4c60ad0f..3d8d1cdc 100644 --- a/src/ui/KeyImportDetailDialog.cpp +++ b/src/ui/KeyImportDetailDialog.cpp @@ -24,13 +24,17 @@ #include <ui/KeyImportDetailDialog.h> -KeyImportDetailDialog::KeyImportDetailDialog(GpgME::GpgContext *ctx, GpgImportInformation result, QWidget *parent) +KeyImportDetailDialog::KeyImportDetailDialog(GpgME::GpgContext *ctx, GpgImportInformation result, bool automatic, + QWidget *parent) : QDialog(parent) { mCtx = ctx; mResult = std::move(result); // If no key for import found, just show a message if (mResult.considered == 0) { - QMessageBox::information(nullptr, tr("Key import details"), tr("No keys found to import")); + if(automatic) + QMessageBox::information(nullptr, tr("Key Update Details"), tr("No keys found")); + else + QMessageBox::information(nullptr, tr("Key Import Details"), tr("No keys found to import")); return; } @@ -46,7 +50,11 @@ KeyImportDetailDialog::KeyImportDetailDialog(GpgME::GpgContext *ctx, GpgImportIn mvbox->addWidget(buttonBox); this->setLayout(mvbox); - this->setWindowTitle(tr("Key import details")); + if(automatic) + this->setWindowTitle(tr("Key Update Details")); + else + this->setWindowTitle(tr("Key Import Details")); + this->resize(QSize(600, 300)); this->setModal(true); this->exec(); @@ -54,7 +62,7 @@ KeyImportDetailDialog::KeyImportDetailDialog(GpgME::GpgContext *ctx, GpgImportIn void KeyImportDetailDialog::createGeneralInfoBox() { // GridBox for general import information - generalInfoBox = new QGroupBox(tr("Genral key import info")); + generalInfoBox = new QGroupBox(tr("General key info")); auto *generalInfoBoxLayout = new QGridLayout(generalInfoBox); generalInfoBoxLayout->addWidget(new QLabel(tr("Considered:")), 1, 0); diff --git a/src/ui/KeyMgmt.cpp b/src/ui/KeyMgmt.cpp index 326c20b2..6f9c64a2 100755 --- a/src/ui/KeyMgmt.cpp +++ b/src/ui/KeyMgmt.cpp @@ -142,7 +142,7 @@ void KeyMgmt::createActions() deleteCheckedKeysAct->setIcon(QIcon(":button_delete.png")); connect(deleteCheckedKeysAct, SIGNAL(triggered()), this, SLOT(slotDeleteCheckedKeys())); - showKeyDetailsAct = new QAction(tr("Show Keydetails"), this); + showKeyDetailsAct = new QAction(tr("Show Key Details"), this); showKeyDetailsAct->setToolTip(tr("Show Details for this Key")); connect(showKeyDetailsAct, SIGNAL(triggered()), this, SLOT(slotShowKeyDetails())); } @@ -204,7 +204,7 @@ void KeyMgmt::createToolBars() void KeyMgmt::slotImportKeys(QByteArray inBuffer) { GpgImportInformation result = mCtx->importKey(std::move(inBuffer)); - new KeyImportDetailDialog(mCtx, result, this); + new KeyImportDetailDialog(mCtx, result, false, this); } @@ -226,7 +226,7 @@ void KeyMgmt::slotImportKeyFromFile() void KeyMgmt::slotImportKeyFromKeyServer() { - importDialog = new KeyServerImportDialog(mCtx, mKeyList, this); + importDialog = new KeyServerImportDialog(mCtx, mKeyList, false, this); importDialog->show(); } @@ -328,12 +328,6 @@ void KeyMgmt::slotGenerateKeyDialog() void KeyMgmt::closeEvent(QCloseEvent *event) { - QSettings settings; - //settings.setValue("geometry", saveGeometry()); - settings.setValue("keymgmt/windowState", saveState()); - settings.setValue("keymgmt/pos", pos()); - settings.setValue("keymgmt/size", size()); - QMainWindow::closeEvent(event); } diff --git a/src/ui/KeyServerImportDialog.cpp b/src/ui/KeyServerImportDialog.cpp index 88ec1c11..bfa53cce 100644 --- a/src/ui/KeyServerImportDialog.cpp +++ b/src/ui/KeyServerImportDialog.cpp @@ -26,52 +26,103 @@ #include <utility> -KeyServerImportDialog::KeyServerImportDialog(GpgME::GpgContext *ctx, KeyList *keyList, QWidget *parent) +KeyServerImportDialog::KeyServerImportDialog(GpgME::GpgContext *ctx, KeyList *keyList, bool automatic, + QWidget *parent) : QDialog(parent), appPath(qApp->applicationDirPath()), - settings(appPath + "/conf/gpgfrontend.ini", QSettings::IniFormat), mCtx(ctx), mKeyList(keyList) { + settings(appPath + "/conf/gpgfrontend.ini", QSettings::IniFormat), + mCtx(ctx), mKeyList(keyList), mAutomatic(automatic) { + + if(automatic) { + setWindowFlags(Qt::Window | Qt::WindowTitleHint | Qt::CustomizeWindowHint); + } + // Buttons closeButton = createButton(tr("&Close"), SLOT(close())); - importButton = createButton(tr("&Import"), SLOT(slotImport())); + importButton = createButton(tr("&Import ALL"), SLOT(slotImport())); searchButton = createButton(tr("&Search"), SLOT(slotSearch())); // Line edit for search string - searchLabel = new QLabel(tr("Search string:")); + searchLabel = new QLabel(tr("Search String:")); searchLineEdit = new QLineEdit(); // combobox for keyserverlist - keyServerLabel = new QLabel(tr("Keyserver:")); + keyServerLabel = new QLabel(tr("Key Server:")); keyServerComboBox = createComboBox(); // table containing the keys found createKeysTable(); message = new QLabel; + message->setFixedHeight(24); icon = new QLabel; + icon->setFixedHeight(24); + + // Network Waiting + waitingBar = new QProgressBar(); + waitingBar->setVisible(false); + waitingBar->setRange(0, 0); + waitingBar->setFixedHeight(24); + waitingBar->setFixedWidth(200); // Layout for messagebox auto *messageLayout = new QHBoxLayout; messageLayout->addWidget(icon); messageLayout->addWidget(message); + messageLayout->addWidget(waitingBar); messageLayout->addStretch(); // Layout for import and close button auto *buttonsLayout = new QHBoxLayout; buttonsLayout->addStretch(); - buttonsLayout->addWidget(importButton); + if(!automatic) + buttonsLayout->addWidget(importButton); buttonsLayout->addWidget(closeButton); auto *mainLayout = new QGridLayout; - mainLayout->addWidget(searchLabel, 1, 0); - mainLayout->addWidget(searchLineEdit, 1, 1); - mainLayout->addWidget(searchButton, 1, 2); - mainLayout->addWidget(keyServerLabel, 2, 0); - mainLayout->addWidget(keyServerComboBox, 2, 1); - mainLayout->addWidget(keysTable, 3, 0, 1, 3); - mainLayout->addLayout(messageLayout, 4, 0, 1, 3); - mainLayout->addLayout(buttonsLayout, 5, 0, 1, 3); + + // 自动化调用界面布局 + if(automatic) { + mainLayout->addLayout(messageLayout, 0, 0, 1, 3); + } else { + mainLayout->addWidget(searchLabel, 1, 0); + mainLayout->addWidget(searchLineEdit, 1, 1); + mainLayout->addWidget(searchButton, 1, 2); + mainLayout->addWidget(keyServerLabel, 2, 0); + mainLayout->addWidget(keyServerComboBox, 2, 1); + mainLayout->addWidget(keysTable, 3, 0, 1, 3); + mainLayout->addLayout(messageLayout, 4, 0, 1, 3); + mainLayout->addLayout(buttonsLayout, 6, 0, 1, 3); + } this->setLayout(mainLayout); - this->setWindowTitle(tr("Import Keys from Keyserver")); - this->resize(700, 300); + if(automatic) + this->setWindowTitle(tr("Update Keys from Keyserver")); + else + this->setWindowTitle(tr("Import Keys from Keyserver")); + + if(automatic) { + this->setFixedSize(200, 42); + } else { + // Restore window size & location + if (this->settings.value("ImportKeyFromServer/setWindowSize").toBool()) { + QPoint pos = settings.value("ImportKeyFromServer/pos", QPoint(150, 150)).toPoint(); + QSize size = settings.value("ImportKeyFromServer/size", QSize(500, 300)).toSize(); + qDebug() << "Settings size" << size << "pos" << pos; + this->setMinimumSize(size); + this->move(pos); + } else { + qDebug() << "Use default min windows size and pos"; + QPoint defaultPoint(150, 150); + QSize defaultMinSize(500, 300); + this->setMinimumSize(defaultMinSize); + this->move(defaultPoint); + this->settings.setValue("ImportKeyFromServer/pos", defaultPoint); + this->settings.setValue("ImportKeyFromServer/size", defaultMinSize); + this->settings.setValue("ImportKeyFromServer/setWindowSize", true); + } + } + + + this->setModal(true); } @@ -119,23 +170,35 @@ void KeyServerImportDialog::createKeysTable() { void KeyServerImportDialog::setMessage(const QString &text, bool error) { message->setText(text); if (error) { - QIcon undoicon = QIcon::fromTheme("dialog-error"); - QPixmap pixmap = undoicon.pixmap(QSize(32, 32), QIcon::Normal, QIcon::On); - icon->setPixmap(pixmap); + icon->setPixmap(QPixmap(":error.png").scaled(QSize(24, 24), Qt::KeepAspectRatio)); } else { - QIcon undoicon = QIcon::fromTheme("dialog-information"); - QPixmap pixmap = undoicon.pixmap(QSize(32, 32), QIcon::Normal, QIcon::On); - icon->setPixmap(pixmap); + icon->setPixmap(QPixmap(":info.png").scaled(QSize(24, 24), Qt::KeepAspectRatio)); } } void KeyServerImportDialog::slotSearch() { + + if (searchLineEdit->text().isEmpty()) { + setMessage(tr("<h4>Text is empty.</h4>"), false); + return; + } + QUrl urlFromRemote = keyServerComboBox->currentText() + "/pks/lookup?search=" + searchLineEdit->text() + "&op=index&options=mr"; qnam = new QNetworkAccessManager(this); QNetworkReply *reply = qnam->get(QNetworkRequest(urlFromRemote)); + connect(reply, SIGNAL(finished()), this, SLOT(slotSearchFinished())); + + setLoading(true); + + while (reply->isRunning()) { + QApplication::processEvents(); + } + + setLoading(false); + } void KeyServerImportDialog::slotSearchFinished() { @@ -145,31 +208,49 @@ void KeyServerImportDialog::slotSearchFinished() { keysTable->setRowCount(0); QString firstLine = QString(reply->readLine(1024)); - QVariant redirectionTarget = reply->attribute(QNetworkRequest::RedirectionTargetAttribute); - if (reply->error()) { - setMessage(tr("Couldn't contact keyserver!"), true); - //setMessage(reply->error()); - qDebug() << reply->error(); + auto error = reply->error(); + if (error != QNetworkReply::NoError) { + qDebug() << "Error From Reply" << reply->errorString(); + switch (error) { + case QNetworkReply::ContentNotFoundError : + setMessage(tr("Not Key Found"), true); + break; + case QNetworkReply::TimeoutError : + setMessage(tr("Timeout"), true); + break; + case QNetworkReply::HostNotFoundError : + setMessage(tr("Key Server Not Found"), true); + break; + default: + setMessage(tr("Connection Error"), true); + } + return; } + if (firstLine.contains("Error")) { QString text = QString(reply->readLine(1024)); if (text.contains("Too many responses")) { - setMessage(tr("Too many responses from keyserver!"), true); + setMessage(tr("<h4>CToo many responses from keyserver!</h4>"), true); + return; } else if (text.contains("No keys found")) { // if string looks like hex string, search again with 0x prepended QRegExp rx("[0-9A-Fa-f]*"); QString query = searchLineEdit->text(); if (rx.exactMatch(query)) { - setMessage(tr("No keys found, input may be kexId, retrying search with 0x."), true); + setMessage(tr("<h4>No keys found, input may be kexId, retrying search with 0x.</h4>"), true); searchLineEdit->setText(query.prepend("0x")); this->slotSearch(); + return; } else { - setMessage(tr("No keys found containing the search string!"), true); + setMessage(tr("<h4>No keys found containing the search string!</h4>"), true); + return; } } else if (text.contains("Insufficiently specific words")) { - setMessage(tr("Insufficiently specific search string!"), true); + setMessage(tr("<h4>Insufficiently specific search string!</h4>"), true); + return; } else { setMessage(text, true); + return; } } else { int row = 0; @@ -236,7 +317,7 @@ void KeyServerImportDialog::slotSearchFinished() { } } } - setMessage(tr("%1 keys found. Doubleclick a key to import it.").arg(row), false); + setMessage(tr("<h4>%1 keys found. Double click a key to import it.</h4>").arg(row), false); } keysTable->resizeColumnsToContents(); } @@ -250,23 +331,44 @@ void KeyServerImportDialog::slotImport() { } } -void KeyServerImportDialog::slotImport(QStringList keyIds) { - QString keyserver = settings.value("keyserver/defaultKeyServer").toString();; - slotImport(std::move(keyIds), QUrl(keyserver)); +void KeyServerImportDialog::slotImport(const QStringList& keyIds) { + QString keyserver = settings.value("keyserver/defaultKeyServer").toString(); + qDebug() << "Select Key Server" << keyserver; + slotImport(keyIds, QUrl(keyserver)); } +void KeyServerImportDialog::slotImportKey(const QVector<GpgKey>& keys) { + QString keyserver = settings.value("keyserver/defaultKeyServer").toString(); + qDebug() << "Select Key Server" << keyserver; + auto keyIds = QStringList(); + for(const auto &key : keys) { + keyIds.append(key.id); + } + slotImport(keyIds, QUrl(keyserver)); +} + + +void KeyServerImportDialog::slotImport(const QStringList& keyIds, const QUrl &keyServerUrl) { + for (const auto &keyId : keyIds) { + QUrl reqUrl( + keyServerUrl.scheme() + "://" + keyServerUrl.host() + "/pks/lookup?op=get&search=0x" + keyId + + "&options=mr"); + qDebug() << "slotImport reqUrl" << reqUrl; + auto pManager = new QNetworkAccessManager(this); -void KeyServerImportDialog::slotImport(QStringList keyIds, const QUrl &keyServerUrl) { - foreach(QString keyId, keyIds) { - QUrl reqUrl( - keyServerUrl.scheme() + "://" + keyServerUrl.host() + ":11371/pks/lookup?op=get&search=0x" + keyId + - "&options=mr"); - //qDebug() << "req to " << reqUrl; - qnam = new QNetworkAccessManager(this); - QNetworkReply *reply = qnam->get(QNetworkRequest(reqUrl)); - connect(reply, SIGNAL(finished()), - this, SLOT(slotImportFinished())); + QNetworkReply *reply = pManager->get(QNetworkRequest(reqUrl)); + + connect(reply, SIGNAL(finished()), + this, SLOT(slotImportFinished())); + + setLoading(true); + + while(reply->isRunning()) { + QApplication::processEvents(); } + + setLoading(false); + } } void KeyServerImportDialog::slotImportFinished() { @@ -275,12 +377,28 @@ void KeyServerImportDialog::slotImportFinished() { QByteArray key = reply->readAll(); QVariant redirectionTarget = reply->attribute(QNetworkRequest::RedirectionTargetAttribute); - if (reply->error()) { - setMessage(tr("Error while contacting keyserver!"), true); + + auto error = reply->error(); + if (error != QNetworkReply::NoError) { + qDebug() << "Error From Reply" << reply->errorString(); + switch (error) { + case QNetworkReply::ContentNotFoundError : + setMessage(tr("Key Not Found"), true); + break; + case QNetworkReply::TimeoutError : + setMessage(tr("Timeout"), true); + break; + case QNetworkReply::HostNotFoundError : + setMessage(tr("Key Server Not Found"), true); + break; + default: + setMessage(tr("Connection Error"), true); + } + if(mAutomatic) { + setWindowFlags(Qt::Window | Qt::WindowTitleHint | Qt::CustomizeWindowHint | Qt::WindowCloseButtonHint); + } return; } - this->importKeys(key.constData()); - setMessage(tr("Key imported"), false); // Add keyserver to list in config-file, if it isn't contained QStringList keyServerList = settings.value("keyserver/keyServerList").toStringList(); @@ -289,10 +407,73 @@ void KeyServerImportDialog::slotImportFinished() { settings.setValue("keyserver/keyServerList", keyServerList); } reply->deleteLater(); - reply = nullptr; + + this->importKeys(key.constData()); + if(mAutomatic) { + setMessage(tr("<h4>Key Updated</h4>"), false); + } else { + setMessage(tr("<h4>Key Imported</h4>"), false); + } + + } void KeyServerImportDialog::importKeys(QByteArray inBuffer) { GpgImportInformation result = mCtx->importKey(std::move(inBuffer)); - new KeyImportDetailDialog(mCtx, result, this); + if(mAutomatic) { + new KeyImportDetailDialog(mCtx, result, false, this); + this->accept(); + } else { + new KeyImportDetailDialog(mCtx, result, false, this); + } +} + +void KeyServerImportDialog::setLoading(bool status) { + if (status) { + waitingBar->setVisible(true); + icon->setVisible(false); + message->setVisible(false); + } else { + waitingBar->setVisible(false); + icon->setVisible(true); + message->setVisible(true); + } +} + +KeyServerImportDialog::KeyServerImportDialog(GpgME::GpgContext *ctx, QWidget *parent) + : QDialog(parent), appPath(qApp->applicationDirPath()), + settings(appPath + "/conf/gpgfrontend.ini", QSettings::IniFormat), + mCtx(ctx), mAutomatic(true) { + + setWindowFlags(Qt::Window | Qt::WindowTitleHint | Qt::CustomizeWindowHint); + + message = new QLabel; + message->setFixedHeight(24); + icon = new QLabel; + icon->setFixedHeight(24); + + // Network Waiting + waitingBar = new QProgressBar(); + waitingBar->setVisible(false); + waitingBar->setRange(0, 0); + waitingBar->setFixedHeight(24); + waitingBar->setFixedWidth(200); + + // Layout for messagebox + auto *messageLayout = new QHBoxLayout; + messageLayout->addWidget(icon); + messageLayout->addWidget(message); + messageLayout->addWidget(waitingBar); + messageLayout->addStretch(); + + keyServerComboBox = createComboBox(); + + auto *mainLayout = new QGridLayout; + + mainLayout->addLayout(messageLayout, 0, 0, 1, 3); + + this->setLayout(mainLayout); + this->setWindowTitle(tr("Upload Keys from Keyserver")); + this->setFixedSize(200, 42); + this->setModal(true); } diff --git a/src/ui/KeyUploadDialog.cpp b/src/ui/KeyUploadDialog.cpp new file mode 100644 index 00000000..a81ed7a4 --- /dev/null +++ b/src/ui/KeyUploadDialog.cpp @@ -0,0 +1,125 @@ +/** + * 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 "ui/KeyUploadDialog.h" + +#include <utility> + +KeyUploadDialog::KeyUploadDialog(GpgME::GpgContext *ctx, const QVector<GpgKey> &keys, QWidget *parent) +: appPath(qApp->applicationDirPath()), +settings(appPath + "/conf/gpgfrontend.ini", QSettings::IniFormat), +QDialog(parent) { + ctx->exportKeys(keys, mKeyData); + uploadKeyToServer(mKeyData); +} + +void KeyUploadDialog::uploadKeyToServer(QByteArray &keys) { + + // set default keyserver + QString keyserver = settings.value("keyserver/defaultKeyServer").toString(); + + QUrl reqUrl(keyserver + "/pks/add"); + auto qnam = new QNetworkAccessManager(this); + + // Building Post Data + QByteArray postData; + + keys.replace("\n", "%0A") + .replace("\r", "%0D") + .replace("(", "%28") + .replace(")", "%29") + .replace("/", "%2F") + .replace(":", "%3A") + .replace("+", "%2B") + .replace('=', "%3D") + .replace(' ', '+'); + + QNetworkRequest request(reqUrl); + request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); + + postData.append("keytext").append("=").append(keys); + + // Send Post Data + QNetworkReply *reply = qnam->post(request, postData); + connect(reply, SIGNAL(finished()), + this, SLOT(slotUploadFinished())); + + + // A Waiting Dialog + auto *dialog = new QDialog(this, Qt::CustomizeWindowHint | Qt::WindowTitleHint); + dialog->setModal(true); + dialog->setWindowTitle(tr("Uploading Public Key")); + dialog->setFixedSize(200, 42); + + auto *pb = new QProgressBar(); + pb->setRange(0, 0); + pb->setFixedSize(200, 24); + + auto *layout = new QVBoxLayout(dialog); + layout->addWidget(pb); + dialog->setLayout(layout); + + dialog->show(); + + // Keep Waiting + while(reply->isRunning()) { + QApplication::processEvents(); + } + + // Done + dialog->hide(); + dialog->close(); +} + +void KeyUploadDialog::slotUploadFinished() { + auto *reply = qobject_cast<QNetworkReply *>(sender()); + + QByteArray response = reply->readAll(); + qDebug() << "Response: " << response.data(); + + auto error = reply->error(); + if (error != QNetworkReply::NoError) { + qDebug() << "Error From Reply" << reply->errorString(); + QString message; + switch (error) { + case QNetworkReply::ContentNotFoundError : + message = tr("Key Not Found"); + break; + case QNetworkReply::TimeoutError : + message = tr("Timeout"); + break; + case QNetworkReply::HostNotFoundError : + message = tr("Key Server Not Found"); + break; + default: + message = tr("Connection Error"); + } + QMessageBox::critical(this, "Upload Failed", message); + return; + } else { + QMessageBox::information(this, "Upload Success", "Upload Public Key Successfully"); + qDebug() << "Success while contacting keyserver!"; + } + reply->deleteLater(); +} diff --git a/src/ui/keypair_details/KeyPairDetailTab.cpp b/src/ui/keypair_details/KeyPairDetailTab.cpp index 97b9cf87..c72a7685 100644 --- a/src/ui/keypair_details/KeyPairDetailTab.cpp +++ b/src/ui/keypair_details/KeyPairDetailTab.cpp @@ -135,9 +135,19 @@ KeyPairDetailTab::KeyPairDetailTab(GpgME::GpgContext *ctx, const GpgKey &mKey, Q vboxPK->addWidget(exportButton); connect(exportButton, SIGNAL(clicked()), this, SLOT(slotExportPrivateKey())); - auto *editExpiresButton = new QPushButton(tr("Modify Expiration Datetime")); - vboxPK->addWidget(editExpiresButton); - connect(editExpiresButton, SIGNAL(clicked()), this, SLOT(slotModifyEditDatetime())); + if(mKey.has_master_key) { + auto *editExpiresButton = new QPushButton(tr("Modify Expiration Datetime")); + vboxPK->addWidget(editExpiresButton); + connect(editExpiresButton, SIGNAL(clicked()), this, SLOT(slotModifyEditDatetime())); + + auto *keyServerOperaButton = new QPushButton(tr("Key Server Operation")); + vboxPK->addWidget(keyServerOperaButton); + connect(keyServerOperaButton, SIGNAL(clicked()), this, SLOT(slotModifyEditDatetime())); + + // Set Menu + createKeyServerOperaMenu(); + keyServerOperaButton->setMenu(keyServerOperaMenu); + } privKeyBox->setLayout(vboxPK); mvbox->addWidget(privKeyBox); @@ -147,19 +157,18 @@ KeyPairDetailTab::KeyPairDetailTab(GpgME::GpgContext *ctx, const GpgKey &mKey, Q if ((mKey.expired) || (mKey.revoked)) { auto *expBox = new QHBoxLayout(); - QIcon icon = QIcon::fromTheme("dialog-warning"); - QPixmap pixmap = icon.pixmap(QSize(32, 32), QIcon::Normal, QIcon::On); + QPixmap pixmap(":warning.png"); auto *expLabel = new QLabel(); auto *iconLabel = new QLabel(); if (mKey.expired) { - expLabel->setText(tr("Warning: The master key of the key pair has expired.")); + expLabel->setText(tr("Warning: The Master Key has expired.")); } if (mKey.revoked) { - expLabel->setText(tr("Warning: The master key of the key pair has been revoked")); + expLabel->setText(tr("Warning: The Master Key has been revoked")); } - iconLabel->setPixmap(pixmap); + iconLabel->setPixmap(pixmap.scaled(24,24,Qt::KeepAspectRatio)); QFont font = expLabel->font(); font.setBold(true); expLabel->setFont(font); @@ -180,10 +189,9 @@ KeyPairDetailTab::KeyPairDetailTab(GpgME::GpgContext *ctx, const GpgKey &mKey, Q void KeyPairDetailTab::slotExportPrivateKey() { // Show a information box with explanation about private key int ret = QMessageBox::information(this, tr("Exporting private Key"), - tr("You are about to export your private key.\n" - "This is NOT your public key, so don't give it away.\n" - "Make sure you keep it save." - "Do you really want to export your private key?"), + tr("<h3>You are about to export your <font color=\"red\">PRIVATE KEY</font>!</h3>\n" + "This is NOT your Public Key, so DON'T give it away.<br />" + "Do you REALLY want to export your PRIVATE KEY?"), QMessageBox::Cancel | QMessageBox::Ok); // export key, if ok was clicked @@ -192,12 +200,12 @@ void KeyPairDetailTab::slotExportPrivateKey() { mCtx->exportSecretKey(*keyid, keyArray); auto &key = mCtx->getKeyById(*keyid); QString fileString = key.name + " " +key.email + "(" + - key.id + ")_pub_sec.asc"; + key.id + ")_secret.asc"; QString fileName = QFileDialog::getSaveFileName(this, tr("Export Key To File"), fileString, tr("Key Files") + " (*.asc *.txt);;All Files (*)"); QFile file(fileName); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { - QMessageBox::critical(nullptr, tr("Export error"), tr("Couldn't open %1 for writing").arg(fileName)); + QMessageBox::critical(nullptr, tr("Export Error"), tr("Couldn't open %1 for writing").arg(fileName)); return; } QTextStream stream(&file); @@ -284,3 +292,30 @@ void KeyPairDetailTab::slotRefreshKeyInfo() { } +void KeyPairDetailTab::createKeyServerOperaMenu() { + keyServerOperaMenu = new QMenu(this); + + auto *uploadKeyPair = new QAction(tr("Upload Key Pair"), this); + connect(uploadKeyPair, SIGNAL(triggered()), this, SLOT(slotUploadKeyToServer())); + auto *updateKeyPair = new QAction(tr("Update Key Pair"), this); + connect(updateKeyPair, SIGNAL(triggered()), this, SLOT(slotUpdateKeyToServer())); + + keyServerOperaMenu->addAction(uploadKeyPair); + // TODO Solve Refresh Problem +// keyServerOperaMenu->addAction(updateKeyPair); +} + +void KeyPairDetailTab::slotUploadKeyToServer() { + QVector<GpgKey> keys; + keys.append(mKey); + auto *dialog = new KeyUploadDialog(mCtx, keys); +} + +void KeyPairDetailTab::slotUpdateKeyToServer() { + QVector<GpgKey> keys; + keys.append(mKey); + auto *dialog = new KeyServerImportDialog(mCtx, this); + dialog->show(); + dialog->slotImportKey(keys); +} + diff --git a/src/ui/keypair_details/KeyPairSubkeyTab.cpp b/src/ui/keypair_details/KeyPairSubkeyTab.cpp index 84042323..c5647553 100644 --- a/src/ui/keypair_details/KeyPairSubkeyTab.cpp +++ b/src/ui/keypair_details/KeyPairSubkeyTab.cpp @@ -35,7 +35,7 @@ KeyPairSubkeyTab::KeyPairSubkeyTab(GpgME::GpgContext *ctx, const GpgKey &key, QW auto uidButtonsLayout = new QGridLayout(); auto addSubkeyButton = new QPushButton(tr("Generate A New Subkey")); - if(!mKey.is_private_key) { + if(!mKey.is_private_key || !mKey.has_master_key) { addSubkeyButton->setDisabled(true); setHidden(addSubkeyButton); } diff --git a/src/ui/keypair_details/KeyPairUIDTab.cpp b/src/ui/keypair_details/KeyPairUIDTab.cpp index 1a6c769d..51f188bd 100644 --- a/src/ui/keypair_details/KeyPairUIDTab.cpp +++ b/src/ui/keypair_details/KeyPairUIDTab.cpp @@ -39,7 +39,11 @@ KeyPairUIDTab::KeyPairUIDTab(GpgME::GpgContext *ctx, const GpgKey &key, QWidget auto addUIDButton = new QPushButton(tr("New UID")); auto manageUIDButton = new QPushButton(tr("UID Management")); - manageUIDButton->setMenu(manageSelectedUIDMenu); + if(mKey.has_master_key) { + manageUIDButton->setMenu(manageSelectedUIDMenu); + } else { + manageUIDButton->setDisabled(true); + } uidButtonsLayout->addWidget(addUIDButton, 0, 1); uidButtonsLayout->addWidget(manageUIDButton, 0, 2); @@ -258,8 +262,10 @@ void KeyPairUIDTab::createManageUIDMenu() { auto *delUIDAct = new QAction(tr("Delete Selected UID(s)"), this); connect(delUIDAct, SIGNAL(triggered()), this, SLOT(slotDelUID())); - manageSelectedUIDMenu->addAction(signUIDAct); - manageSelectedUIDMenu->addAction(delUIDAct); + if(mKey.has_master_key) { + manageSelectedUIDMenu->addAction(signUIDAct); + manageSelectedUIDMenu->addAction(delUIDAct); + } } void KeyPairUIDTab::slotAddUID() { @@ -390,9 +396,11 @@ void KeyPairUIDTab::createUIDPopupMenu() { auto *delUIDAct = new QAction(tr("Delete UID"), this); connect(delUIDAct, SIGNAL(triggered()), this, SLOT(slotDelUIDSingle())); - uidPopupMenu->addAction(serPrimaryUIDAct); - uidPopupMenu->addAction(signUIDAct); - uidPopupMenu->addAction(delUIDAct); + if(mKey.has_master_key) { + uidPopupMenu->addAction(serPrimaryUIDAct); + uidPopupMenu->addAction(signUIDAct); + uidPopupMenu->addAction(delUIDAct); + } } void KeyPairUIDTab::contextMenuEvent(QContextMenuEvent *event) { diff --git a/src/ui/keypair_details/KeySetExpireDateDialog.cpp b/src/ui/keypair_details/KeySetExpireDateDialog.cpp index 67238685..f76fa3ab 100644 --- a/src/ui/keypair_details/KeySetExpireDateDialog.cpp +++ b/src/ui/keypair_details/KeySetExpireDateDialog.cpp @@ -37,9 +37,9 @@ QDialog(parent), mKey(key), mSubkey(subkey), mCtx(ctx) { auto *gridLayout = new QGridLayout(); gridLayout->addWidget(dateTimeEdit, 0, 0, 1, 2); - gridLayout->addWidget(nonExpiredCheck, 1, 0, 1, 1, Qt::AlignRight); - gridLayout->addWidget(new QLabel(tr("Never Expire"))); - gridLayout->addWidget(confirmButton, 2, 0); + gridLayout->addWidget(nonExpiredCheck, 0, 2, 1, 1, Qt::AlignRight); + gridLayout->addWidget(new QLabel(tr("Never Expire")), 0, 3); + gridLayout->addWidget(confirmButton, 1, 3); connect(nonExpiredCheck, SIGNAL(stateChanged(int)), this, SLOT(slotNonExpiredChecked(int))); connect(confirmButton, SIGNAL(clicked(bool)), this, SLOT(slotConfirm())); diff --git a/src/ui/main_window/MainWindowSlotFunction.cpp b/src/ui/main_window/MainWindowSlotFunction.cpp new file mode 100644 index 00000000..60c33d83 --- /dev/null +++ b/src/ui/main_window/MainWindowSlotFunction.cpp @@ -0,0 +1,360 @@ +/** + * 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 "MainWindow.h" + +void MainWindow::slotEncrypt() { + if (edit->tabCount() == 0 || edit->slotCurPage() == nullptr) { + return; + } + + QVector<GpgKey> keys; + mKeyList->getCheckedKeys(keys); + + 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 function.<br/>") + + tr("<br/>For example the Following Key: <br/>") + key.uids.first().uid); + return; + + } + } + + auto *tmp = new QByteArray(); + + 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 *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); + + delete resultAnalyse; +} + +void MainWindow::slotSign() { + if (edit->tabCount() == 0 || edit->slotCurPage() == nullptr) { + return; + } + + QVector<GpgKey> keys; + + mKeyList->getPrivateCheckedKeys(keys); + + if (keys.isEmpty()) { + QMessageBox::critical(nullptr, tr("No Key Selected"), tr("No Key Selected")); + return; + } + + 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); + return; + } + } + + auto *tmp = new QByteArray(); + + 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 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); + + delete resultAnalyse; +} + +void MainWindow::slotDecrypt() { + if (edit->tabCount() == 0 || edit->slotCurPage() == nullptr) { + return; + } + + 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()); + + if(gpgme_err_code(error) == GPG_ERR_NO_ERROR) + edit->slotFillTextEditWithText(QString::fromUtf8(*decrypted)); + + 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); + + delete resultAnalyse; +} + +void MainWindow::slotFind() { + if (edit->tabCount() == 0 || edit->curTextPage() == nullptr) { + return; + } + + // At first close verifynotification, if existing + edit->slotCurPage()->closeNoteByClass("findwidget"); + + auto *fw = new FindWidget(this, edit->curTextPage()); + edit->slotCurPage()->showNotificationWidget(fw, "findWidget"); + +} + +void MainWindow::slotVerify() { + if (edit->tabCount() == 0 || edit->slotCurPage() == nullptr) { + return; + } + + // If an unknown key is found, enable the importfromkeyserveraction + + 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; +} + +/* + * Append the selected (not checked!) Key(s) To Textedit + */ +void MainWindow::slotAppendSelectedKeys() { + if (edit->tabCount() == 0 || edit->slotCurPage() == nullptr) { + return; + } + + auto *keyArray = new QByteArray(); + mCtx->exportKeys(mKeyList->getSelected(), keyArray); + edit->curTextPage()->append(*keyArray); +} + +void MainWindow::slotCopyMailAddressToClipboard() { + if (mKeyList->getSelected()->isEmpty()) { + return; + } + auto &key = mCtx->getKeyById(mKeyList->getSelected()->first()); + QClipboard *cb = QApplication::clipboard(); + QString mail = key.email; + cb->setText(mail); +} + +void MainWindow::slotShowKeyDetails() { + if (mKeyList->getSelected()->isEmpty()) { + return; + } + auto &key = mCtx->getKeyById(mKeyList->getSelected()->first()); + if (key.good) { + new KeyDetailsDialog(mCtx, key, this); + } +} + +void MainWindow::refreshKeysFromKeyserver() { + if (mKeyList->getSelected()->isEmpty()) { + return; + } + + auto *dialog = new KeyServerImportDialog(mCtx, mKeyList, true, this); + dialog->show(); + dialog->slotImport(*mKeyList->getSelected()); + +} + +void MainWindow::uploadKeyToServer() { + QVector<GpgKey> keys; + keys.append(mKeyList->getSelectedKey()); + auto *dialog = new KeyUploadDialog(mCtx, keys); +} + +void MainWindow::slotFileEncrypt() { + QStringList *keyList; + keyList = mKeyList->getChecked(); + new FileEncryptionDialog(mCtx, *keyList, FileEncryptionDialog::Encrypt, this); +} + +void MainWindow::slotFileDecrypt() { + QStringList *keyList; + keyList = mKeyList->getChecked(); + new FileEncryptionDialog(mCtx, *keyList, FileEncryptionDialog::Decrypt, this); +} + +void MainWindow::slotFileSign() { + QStringList *keyList; + keyList = mKeyList->getChecked(); + new FileEncryptionDialog(mCtx, *keyList, FileEncryptionDialog::Sign, this); +} + +void MainWindow::slotFileVerify() { + QStringList *keyList; + keyList = mKeyList->getChecked(); + new FileEncryptionDialog(mCtx, *keyList, FileEncryptionDialog::Verify, this); +} + +void MainWindow::slotEncryptSign() { + + if (edit->tabCount() == 0 || edit->slotCurPage() == nullptr) { + return; + } + + QVector<GpgKey> keys; + mKeyList->getCheckedKeys(keys); + + if (keys.empty()) { + QMessageBox::critical(nullptr, 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, + 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; + } + } + + 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; +} + +void MainWindow::slotDecryptVerify() { + + if (edit->tabCount() == 0 || edit->slotCurPage() == nullptr) { + return; + } + + 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; +} diff --git a/src/ui/main_window/MainWindowSlotUI.cpp b/src/ui/main_window/MainWindowSlotUI.cpp new file mode 100644 index 00000000..8ee09f64 --- /dev/null +++ b/src/ui/main_window/MainWindowSlotUI.cpp @@ -0,0 +1,219 @@ +/** + * 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 "MainWindow.h" + +void MainWindow::slotAbout() { + new AboutDialog(this); +} + +void MainWindow::slotSetStatusBarText(const QString &text) { + statusBar()->showMessage(text, 20000); +} + +void MainWindow::slotStartWizard() { + auto *wizard = new Wizard(mCtx, keyMgmt, this); + wizard->show(); + wizard->setModal(true); +} + + +void MainWindow::slotCheckAttachmentFolder() { + // TODO: always check? + if (!settings.value("mime/parseMime").toBool()) { + return; + } + + QString attachmentDir = qApp->applicationDirPath() + "/attachments/"; + // filenum minus . and .. + uint filenum = QDir(attachmentDir).count() - 2; + if (filenum > 0) { + QString statusText; + if (filenum == 1) { + statusText = tr("There is one unencrypted file in attachment folder"); + } else { + statusText = tr("There are ") + QString::number(filenum) + tr(" unencrypted files in attachment folder"); + } + statusBarIcon->setStatusTip(statusText); + statusBarIcon->show(); + } else { + statusBarIcon->hide(); + } +} + +void MainWindow::slotImportKeyFromEdit() { + if (edit->tabCount() == 0 || edit->slotCurPage() == 0) { + return; + } + + keyMgmt->slotImportKeys(edit->curTextPage()->toPlainText().toUtf8()); +} + +void MainWindow::slotOpenKeyManagement() { + keyMgmt->show(); + keyMgmt->raise(); + keyMgmt->activateWindow(); +} + +void MainWindow::slotOpenFileTab() { + edit->slotNewFileTab(); +} + +void MainWindow::slotDisableTabActions(int number) { + bool disable; + + if (number == -1) + disable = true; + else + disable = false; + + printAct->setDisabled(disable); + saveAct->setDisabled(disable); + saveAsAct->setDisabled(disable); + quoteAct->setDisabled(disable); + cutAct->setDisabled(disable); + copyAct->setDisabled(disable); + pasteAct->setDisabled(disable); + closeTabAct->setDisabled(disable); + selectAllAct->setDisabled(disable); + findAct->setDisabled(disable); + verifyAct->setDisabled(disable); + signAct->setDisabled(disable); + encryptAct->setDisabled(disable); + decryptAct->setDisabled(disable); + + redoAct->setDisabled(disable); + undoAct->setDisabled(disable); + zoomOutAct->setDisabled(disable); + zoomInAct->setDisabled(disable); + cleanDoubleLinebreaksAct->setDisabled(disable); + quoteAct->setDisabled(disable); + appendSelectedKeysAct->setDisabled(disable); + importKeyFromEditAct->setDisabled(disable); + + cutPgpHeaderAct->setDisabled(disable); + addPgpHeaderAct->setDisabled(disable); +} + +void MainWindow::slotOpenSettingsDialog() { + + auto dialog = new SettingsDialog(mCtx, this); + + connect(dialog, &SettingsDialog::finished, this, [&] () -> void { + + qDebug() << "Setting Dialog Finished"; + + // Iconsize + QSize iconSize = settings.value("toolbar/iconsize", QSize(32, 32)).toSize(); + this->setIconSize(iconSize); + importButton->setIconSize(iconSize); + fileEncButton->setIconSize(iconSize); + + // Iconstyle + Qt::ToolButtonStyle buttonStyle = static_cast<Qt::ToolButtonStyle>(settings.value("toolbar/iconstyle", + Qt::ToolButtonTextUnderIcon).toUInt()); + this->setToolButtonStyle(buttonStyle); + importButton->setToolButtonStyle(buttonStyle); + fileEncButton->setToolButtonStyle(buttonStyle); + + // Mime-settings + if (settings.value("mime/parseMime").toBool()) { + createAttachmentDock(); + } else if (attachmentDockCreated) { + closeAttachmentDock(); + } + + // restart mainwindow if necessary + if (getRestartNeeded()) { + if (edit->maybeSaveAnyTab()) { + saveSettings(); + qApp->exit(RESTART_CODE); + } + } + + // steganography hide/show + if (!settings.value("advanced/steganography").toBool()) { + this->menuBar()->removeAction(steganoMenu->menuAction()); + } else { + this->menuBar()->insertAction(viewMenu->menuAction(), steganoMenu->menuAction()); + } + }); + +} + +void MainWindow::slotCleanDoubleLinebreaks() { + if (edit->tabCount() == 0 || edit->slotCurPage() == nullptr) { + return; + } + + QString content = edit->curTextPage()->toPlainText(); + content.replace("\n\n", "\n"); + edit->slotFillTextEditWithText(content); +} + +void MainWindow::slotAddPgpHeader() { + if (edit->tabCount() == 0 || edit->slotCurPage() == nullptr) { + return; + } + + QString content = edit->curTextPage()->toPlainText().trimmed(); + + content.prepend("\n\n").prepend(GpgConstants::PGP_CRYPT_BEGIN); + content.append("\n").append(GpgConstants::PGP_CRYPT_END); + + edit->slotFillTextEditWithText(content); +} + +void MainWindow::slotCutPgpHeader() { + + if (edit->tabCount() == 0 || edit->slotCurPage() == nullptr) { + return; + } + + QString content = edit->curTextPage()->toPlainText(); + int start = content.indexOf(GpgConstants::PGP_CRYPT_BEGIN); + int end = content.indexOf(GpgConstants::PGP_CRYPT_END); + + if (start < 0 || end < 0) { + return; + } + + // remove head + int headEnd = content.indexOf("\n\n", start) + 2; + content.remove(start, headEnd - start); + + // remove tail + end = content.indexOf(GpgConstants::PGP_CRYPT_END); + content.remove(end, QString(GpgConstants::PGP_CRYPT_END).size()); + + edit->slotFillTextEditWithText(content.trimmed()); +} + +void MainWindow::slotSetRestartNeeded(bool needed) { + this->restartNeeded = needed; +} + +bool MainWindow::getRestartNeeded() const { + return this->restartNeeded; +} diff --git a/src/ui/main_window/MainWindowUI.cpp b/src/ui/main_window/MainWindowUI.cpp new file mode 100644 index 00000000..fba2fe62 --- /dev/null +++ b/src/ui/main_window/MainWindowUI.cpp @@ -0,0 +1,456 @@ +/** + * 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 "MainWindow.h" + +void MainWindow::createActions() { + /* Main Menu + */ + newTabAct = new QAction(tr("&New"), this); + newTabAct->setIcon(QIcon(":misc_doc.png")); + QList<QKeySequence> newTabActShortcutList; + newTabActShortcutList.append(QKeySequence(Qt::CTRL + Qt::Key_N)); + newTabActShortcutList.append(QKeySequence(Qt::CTRL + Qt::Key_T)); + newTabAct->setShortcuts(newTabActShortcutList); + newTabAct->setToolTip(tr("Open a new file")); + connect(newTabAct, SIGNAL(triggered()), edit, SLOT(slotNewTab())); + + openAct = new QAction(tr("&Open..."), this); + openAct->setIcon(QIcon(":fileopen.png")); + openAct->setShortcut(QKeySequence::Open); + openAct->setToolTip(tr("Open an existing file")); + connect(openAct, SIGNAL(triggered()), edit, SLOT(slotOpen())); + + saveAct = new QAction(tr("&Save"), this); + saveAct->setIcon(QIcon(":filesave.png")); + saveAct->setShortcut(QKeySequence::Save); + saveAct->setToolTip(tr("Save the current File")); + connect(saveAct, SIGNAL(triggered()), edit, SLOT(slotSave())); + + saveAsAct = new QAction(tr("Save &As") + "...", this); + saveAsAct->setIcon(QIcon(":filesaveas.png")); + saveAsAct->setShortcut(QKeySequence::SaveAs); + saveAsAct->setToolTip(tr("Save the current File as...")); + connect(saveAsAct, SIGNAL(triggered()), edit, SLOT(slotSaveAs())); + + printAct = new QAction(tr("&Print"), this); + printAct->setIcon(QIcon(":fileprint.png")); + printAct->setShortcut(QKeySequence::Print); + printAct->setToolTip(tr("Print Document")); + connect(printAct, SIGNAL(triggered()), edit, SLOT(slotPrint())); + + closeTabAct = new QAction(tr("&Close"), this); + closeTabAct->setShortcut(QKeySequence::Close); + closeTabAct->setToolTip(tr("Close file")); + connect(closeTabAct, SIGNAL(triggered()), edit, SLOT(slotCloseTab())); + + quitAct = new QAction(tr("&Quit"), this); + quitAct->setShortcut(QKeySequence::Quit); + quitAct->setIcon(QIcon(":exit.png")); + quitAct->setToolTip(tr("Quit Program")); + connect(quitAct, SIGNAL(triggered()), this, SLOT(close())); + + /* Edit Menu + */ + undoAct = new QAction(tr("&Undo"), this); + undoAct->setShortcut(QKeySequence::Undo); + undoAct->setToolTip(tr("Undo Last Edit Action")); + connect(undoAct, SIGNAL(triggered()), edit, SLOT(slotUndo())); + + redoAct = new QAction(tr("&Redo"), this); + redoAct->setShortcut(QKeySequence::Redo); + redoAct->setToolTip(tr("Redo Last Edit Action")); + connect(redoAct, SIGNAL(triggered()), edit, SLOT(slotRedo())); + + zoomInAct = new QAction(tr("Zoom In"), this); + zoomInAct->setShortcut(QKeySequence::ZoomIn); + connect(zoomInAct, SIGNAL(triggered()), edit, SLOT(slotZoomIn())); + + zoomOutAct = new QAction(tr("Zoom Out"), this); + zoomOutAct->setShortcut(QKeySequence::ZoomOut); + connect(zoomOutAct, SIGNAL(triggered()), edit, SLOT(slotZoomOut())); + + pasteAct = new QAction(tr("&Paste"), this); + pasteAct->setIcon(QIcon(":button_paste.png")); + pasteAct->setShortcut(QKeySequence::Paste); + pasteAct->setToolTip(tr("Paste Text From Clipboard")); + connect(pasteAct, SIGNAL(triggered()), edit, SLOT(slotPaste())); + + cutAct = new QAction(tr("Cu&t"), this); + cutAct->setIcon(QIcon(":button_cut.png")); + cutAct->setShortcut(QKeySequence::Cut); + cutAct->setToolTip(tr("Cut the current selection's contents to the " + "clipboard")); + connect(cutAct, SIGNAL(triggered()), edit, SLOT(slotCut())); + + copyAct = new QAction(tr("&Copy"), this); + copyAct->setIcon(QIcon(":button_copy.png")); + copyAct->setShortcut(QKeySequence::Copy); + copyAct->setToolTip(tr("Copy the current selection's contents to the " + "clipboard")); + connect(copyAct, SIGNAL(triggered()), edit, SLOT(slotCopy())); + + quoteAct = new QAction(tr("&Quote"), this); + quoteAct->setIcon(QIcon(":quote.png")); + quoteAct->setToolTip(tr("Quote whole text")); + connect(quoteAct, SIGNAL(triggered()), edit, SLOT(slotQuote())); + + selectAllAct = new QAction(tr("Select &All"), this); + selectAllAct->setIcon(QIcon(":edit.png")); + selectAllAct->setShortcut(QKeySequence::SelectAll); + selectAllAct->setToolTip(tr("Select the whole text")); + connect(selectAllAct, SIGNAL(triggered()), edit, SLOT(slotSelectAll())); + + findAct = new QAction(tr("&Find"), this); + findAct->setShortcut(QKeySequence::Find); + findAct->setToolTip(tr("Find a word")); + connect(findAct, SIGNAL(triggered()), this, SLOT(slotFind())); + + cleanDoubleLinebreaksAct = new QAction(tr("Remove &spacing"), this); + cleanDoubleLinebreaksAct->setIcon(QIcon(":format-line-spacing-triple.png")); + //cleanDoubleLineBreaksAct->setShortcut(QKeySequence::SelectAll); + cleanDoubleLinebreaksAct->setToolTip(tr("Remove double linebreaks, e.g. in pasted text from webmailer")); + connect(cleanDoubleLinebreaksAct, SIGNAL(triggered()), this, SLOT(slotCleanDoubleLinebreaks())); + + openSettingsAct = new QAction(tr("Se&ttings"), this); + openSettingsAct->setToolTip(tr("Open settings dialog")); + openSettingsAct->setShortcut(QKeySequence::Preferences); + connect(openSettingsAct, SIGNAL(triggered()), this, SLOT(slotOpenSettingsDialog())); + + /* Crypt Menu + */ + encryptAct = new QAction(tr("&Encrypt"), this); + encryptAct->setIcon(QIcon(":encrypted.png")); + encryptAct->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_E)); + encryptAct->setToolTip(tr("Encrypt Message")); + connect(encryptAct, SIGNAL(triggered()), this, SLOT(slotEncrypt())); + + encryptSignAct = new QAction(tr("&Encrypt &Sign"), this); + encryptSignAct->setIcon(QIcon(":encrypted_signed.png")); + encryptSignAct->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_E)); + encryptSignAct->setToolTip(tr("Encrypt and Sign Message")); + connect(encryptSignAct, SIGNAL(triggered()), this, SLOT(slotEncryptSign())); + + decryptAct = new QAction(tr("&Decrypt"), this); + decryptAct->setIcon(QIcon(":decrypted.png")); + decryptAct->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_D)); + decryptAct->setToolTip(tr("Decrypt Message")); + connect(decryptAct, SIGNAL(triggered()), this, SLOT(slotDecrypt())); + + decryptVerifyAct = new QAction(tr("&Decrypt &Verify"), this); + decryptVerifyAct->setIcon(QIcon(":decrypted_verified.png")); + decryptVerifyAct->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_D)); + decryptVerifyAct->setToolTip(tr("Decrypt and Verify Message")); + connect(decryptVerifyAct, SIGNAL(triggered()), this, SLOT(slotDecryptVerify())); + + /* + * File encryption submenu + */ + fileEncryptAct = new QAction(tr("&Encrypt File"), this); + fileEncryptAct->setToolTip(tr("Encrypt File")); + connect(fileEncryptAct, SIGNAL(triggered()), this, SLOT(slotFileEncrypt())); + + fileDecryptAct = new QAction(tr("&Decrypt File"), this); + fileDecryptAct->setToolTip(tr("Decrypt File")); + connect(fileDecryptAct, SIGNAL(triggered()), this, SLOT(slotFileDecrypt())); + + fileSignAct = new QAction(tr("&Sign File"), this); + fileSignAct->setToolTip(tr("Sign File")); + connect(fileSignAct, SIGNAL(triggered()), this, SLOT(slotFileSign())); + + fileVerifyAct = new QAction(tr("&Verify File"), this); + fileVerifyAct->setToolTip(tr("Verify File")); + connect(fileVerifyAct, SIGNAL(triggered()), this, SLOT(slotFileVerify())); + + + signAct = new QAction(tr("&Sign"), this); + signAct->setIcon(QIcon(":signature.png")); + signAct->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_I)); + signAct->setToolTip(tr("Sign Message")); + connect(signAct, SIGNAL(triggered()), this, SLOT(slotSign())); + + verifyAct = new QAction(tr("&Verify"), this); + verifyAct->setIcon(QIcon(":verify.png")); + verifyAct->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_V)); + verifyAct->setToolTip(tr("Verify Message")); + connect(verifyAct, SIGNAL(triggered()), this, SLOT(slotVerify())); + + /* Key Menu + */ + + importKeyFromEditAct = new QAction(tr("&Editor"), this); + importKeyFromEditAct->setIcon(QIcon(":txt.png")); + importKeyFromEditAct->setToolTip(tr("Import New Key From Editor")); + connect(importKeyFromEditAct, SIGNAL(triggered()), this, SLOT(slotImportKeyFromEdit())); + + openKeyManagementAct = new QAction(tr("Manage &keys"), this); + openKeyManagementAct->setIcon(QIcon(":keymgmt.png")); + openKeyManagementAct->setToolTip(tr("Open Keymanagement")); + connect(openKeyManagementAct, SIGNAL(triggered()), this, SLOT(slotOpenKeyManagement())); + + /* About Menu + */ + aboutAct = new QAction(tr("&About"), this); + aboutAct->setIcon(QIcon(":help.png")); + aboutAct->setToolTip(tr("Show the application's About box")); + connect(aboutAct, SIGNAL(triggered()), this, SLOT(slotAbout())); + + startWizardAct = new QAction(tr("Open &Wizard"), this); + startWizardAct->setToolTip(tr("Open the wizard")); + connect(startWizardAct, SIGNAL(triggered()), this, SLOT(slotStartWizard())); + + /* Popup-Menu-Action for KeyList + */ + appendSelectedKeysAct = new QAction(tr("Append Selected Key(s) To Text"), this); + appendSelectedKeysAct->setToolTip(tr("Append The Selected Keys To Text in Editor")); + connect(appendSelectedKeysAct, SIGNAL(triggered()), this, SLOT(slotAppendSelectedKeys())); + + copyMailAddressToClipboardAct = new QAction(tr("Copy EMail-address"), this); + copyMailAddressToClipboardAct->setToolTip(tr("Copy selected EMailaddress to clipboard")); + connect(copyMailAddressToClipboardAct, SIGNAL(triggered()), this, SLOT(slotCopyMailAddressToClipboard())); + + // TODO: find central place for shared actions, to avoid code-duplication with keymgmt.cpp + showKeyDetailsAct = new QAction(tr("Show Key Details"), this); + showKeyDetailsAct->setToolTip(tr("Show Details for this Key")); + connect(showKeyDetailsAct, SIGNAL(triggered()), this, SLOT(slotShowKeyDetails())); + + refreshKeysFromKeyserverAct = new QAction(tr("Refresh Key From Key Server"), this); + refreshKeysFromKeyserverAct->setToolTip(tr("Refresh key from default key server")); + connect(refreshKeysFromKeyserverAct, SIGNAL(triggered()), this, SLOT(refreshKeysFromKeyserver())); + + uploadKeyToServerAct = new QAction(tr("Upload Public Key(s) To Server"), this); + uploadKeyToServerAct->setToolTip(tr("Upload The Selected Public Keys To Server")); + connect(uploadKeyToServerAct, SIGNAL(triggered()), this, SLOT(uploadKeyToServer())); + /* Key-Shortcuts for Tab-Switchung-Action + */ + switchTabUpAct = new QAction(this); + switchTabUpAct->setShortcut(QKeySequence::NextChild); + connect(switchTabUpAct, SIGNAL(triggered()), edit, SLOT(slotSwitchTabUp())); + this->addAction(switchTabUpAct); + + switchTabDownAct = new QAction(this); + switchTabDownAct->setShortcut(QKeySequence::PreviousChild); + connect(switchTabDownAct, SIGNAL(triggered()), edit, SLOT(slotSwitchTabDown())); + this->addAction(switchTabDownAct); + + cutPgpHeaderAct = new QAction(tr("Remove PGP Header"), this); + connect(cutPgpHeaderAct, SIGNAL(triggered()), this, SLOT(slotCutPgpHeader())); + + addPgpHeaderAct = new QAction(tr("Add PGP Header"), this); + connect(addPgpHeaderAct, SIGNAL(triggered()), this, SLOT(slotAddPgpHeader())); +} + +void MainWindow::createMenus() { + fileMenu = menuBar()->addMenu(tr("&File")); + fileMenu->addAction(newTabAct); + fileMenu->addAction(openAct); + fileMenu->addSeparator(); + fileMenu->addAction(saveAct); + fileMenu->addAction(saveAsAct); + fileMenu->addSeparator(); + fileMenu->addAction(printAct); + fileMenu->addSeparator(); + fileMenu->addAction(closeTabAct); + fileMenu->addAction(quitAct); + + editMenu = menuBar()->addMenu(tr("&Edit")); + editMenu->addAction(undoAct); + editMenu->addAction(redoAct); + editMenu->addSeparator(); + editMenu->addAction(zoomInAct); + editMenu->addAction(zoomOutAct); + editMenu->addSeparator(); + editMenu->addAction(copyAct); + editMenu->addAction(cutAct); + editMenu->addAction(pasteAct); + editMenu->addAction(selectAllAct); + editMenu->addAction(findAct); + editMenu->addSeparator(); + editMenu->addAction(quoteAct); + editMenu->addAction(cleanDoubleLinebreaksAct); + editMenu->addSeparator(); + editMenu->addAction(openSettingsAct); + + fileEncMenu = new QMenu(tr("&File...")); + fileEncMenu->addAction(fileEncryptAct); + fileEncMenu->addAction(fileDecryptAct); + fileEncMenu->addAction(fileSignAct); + fileEncMenu->addAction(fileVerifyAct); + + cryptMenu = menuBar()->addMenu(tr("&Crypt")); + cryptMenu->addAction(encryptAct); + cryptMenu->addAction(encryptSignAct); + cryptMenu->addAction(decryptAct); + cryptMenu->addAction(decryptVerifyAct); + cryptMenu->addSeparator(); + cryptMenu->addAction(signAct); + cryptMenu->addAction(verifyAct); + cryptMenu->addSeparator(); + cryptMenu->addMenu(fileEncMenu); + + keyMenu = menuBar()->addMenu(tr("&Keys")); + importKeyMenu = keyMenu->addMenu(tr("&Import Key")); + importKeyMenu->setIcon(QIcon(":key_import.png")); + importKeyMenu->addAction(keyMgmt->importKeyFromFileAct); + importKeyMenu->addAction(importKeyFromEditAct); + importKeyMenu->addAction(keyMgmt->importKeyFromClipboardAct); + importKeyMenu->addAction(keyMgmt->importKeyFromKeyServerAct); + importKeyMenu->addAction(keyMgmt->importKeyFromKeyServerAct); + keyMenu->addAction(openKeyManagementAct); + + steganoMenu = menuBar()->addMenu(tr("&Steganography")); + steganoMenu->addAction(cutPgpHeaderAct); + steganoMenu->addAction(addPgpHeaderAct); + + // Hide menu, when steganography menu is disabled in settings + if (!settings.value("advanced/steganography").toBool()) { + this->menuBar()->removeAction(steganoMenu->menuAction()); + } + + viewMenu = menuBar()->addMenu(tr("&View")); + + helpMenu = menuBar()->addMenu(tr("&Help")); + helpMenu->addAction(startWizardAct); + helpMenu->addSeparator(); + helpMenu->addAction(aboutAct); + +} + +void MainWindow::createToolBars() { + fileToolBar = addToolBar(tr("File")); + fileToolBar->setObjectName("fileToolBar"); + fileToolBar->addAction(newTabAct); + fileToolBar->addAction(openAct); + fileToolBar->addAction(saveAct); + fileToolBar->hide(); + viewMenu->addAction(fileToolBar->toggleViewAction()); + + cryptToolBar = addToolBar(tr("Crypt")); + cryptToolBar->setObjectName("cryptToolBar"); + cryptToolBar->addAction(encryptAct); + cryptToolBar->addAction(encryptSignAct); + cryptToolBar->addAction(decryptAct); + cryptToolBar->addAction(decryptVerifyAct); + cryptToolBar->addAction(signAct); + cryptToolBar->addAction(verifyAct); + viewMenu->addAction(cryptToolBar->toggleViewAction()); + + keyToolBar = addToolBar(tr("Key")); + keyToolBar->setObjectName("keyToolBar"); + keyToolBar->addAction(openKeyManagementAct); + viewMenu->addAction(keyToolBar->toggleViewAction()); + + editToolBar = addToolBar(tr("Edit")); + editToolBar->setObjectName("editToolBar"); + editToolBar->addAction(copyAct); + editToolBar->addAction(pasteAct); + editToolBar->addAction(selectAllAct); + viewMenu->addAction(editToolBar->toggleViewAction()); + + specialEditToolBar = addToolBar(tr("Special Edit")); + specialEditToolBar->setObjectName("specialEditToolBar"); + specialEditToolBar->addAction(quoteAct); + specialEditToolBar->addAction(cleanDoubleLinebreaksAct); + specialEditToolBar->hide(); + viewMenu->addAction(specialEditToolBar->toggleViewAction()); + + // Add dropdown menu for key import to keytoolbar + importButton = new QToolButton(); + importButton->setMenu(importKeyMenu); + importButton->setPopupMode(QToolButton::InstantPopup); + importButton->setIcon(QIcon(":key_import.png")); + importButton->setToolTip(tr("Import key from...")); + importButton->setText(tr("Import key")); + keyToolBar->addWidget(importButton); + + // Add dropdown menu for file encryption/decryption to crypttoolbar + fileEncButton = new QToolButton(); + // fileEncButton->setMenu(fileEncMenu); + 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); + +} + +void MainWindow::createStatusBar() { + auto *statusBarBox = new QWidget(); + auto *statusBarBoxLayout = new QHBoxLayout(); + QPixmap *pixmap; + + // icon which should be shown if there are files in attachments-folder + pixmap = new QPixmap(":statusbar_icon.png"); + statusBarIcon = new QLabel(); + statusBar()->addWidget(statusBarIcon); + + statusBarIcon->setPixmap(*pixmap); + statusBar()->insertPermanentWidget(0, statusBarIcon, 0); + statusBarIcon->hide(); + statusBar()->showMessage(tr("Ready"), 2000); + statusBarBox->setLayout(statusBarBoxLayout); +} + +void MainWindow::createDockWindows() { + /* KeyList-Dockwindow + */ + keyListDock = new QDockWidget(tr("Key ToolBox"), this); + keyListDock->setObjectName("EncryptDock"); + keyListDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); + keyListDock->setMinimumWidth(460); + addDockWidget(Qt::RightDockWidgetArea, keyListDock); + keyListDock->setWidget(mKeyList); + viewMenu->addAction(keyListDock->toggleViewAction()); + + infoBoardDock = new QDockWidget(tr("Information Board"), this); + infoBoardDock->setObjectName("Information Board"); + infoBoardDock->setAllowedAreas(Qt::BottomDockWidgetArea); + addDockWidget(Qt::BottomDockWidgetArea, infoBoardDock); + infoBoardDock->setWidget(infoBoard); + infoBoardDock->widget()->layout()->setContentsMargins(0, 0, 0, 0); + viewMenu->addAction(infoBoardDock->toggleViewAction()); + + /* Attachments-Dockwindow + */ + if (settings.value("mime/parseMime").toBool()) { + createAttachmentDock(); + } +} + +void MainWindow::createAttachmentDock() { + if (attachmentDockCreated) { + return; + } + mAttachments = new Attachments(); + attachmentDock = new QDockWidget(tr("Attached files:"), this); + attachmentDock->setObjectName("AttachmentDock"); + attachmentDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea | Qt::BottomDockWidgetArea); + addDockWidget(Qt::LeftDockWidgetArea, attachmentDock); + attachmentDock->setWidget(mAttachments); + // hide till attachment is decrypted + viewMenu->addAction(attachmentDock->toggleViewAction()); + attachmentDock->hide(); + attachmentDockCreated = true; +} diff --git a/src/ui/Attachments.cpp b/src/ui/widgets/Attachments.cpp index 87b42fa5..8f741f66 100644 --- a/src/ui/Attachments.cpp +++ b/src/ui/widgets/Attachments.cpp @@ -37,7 +37,7 @@ */ -#include "ui/Attachments.h" +#include "ui/widgets/Attachments.h" Attachments::Attachments(QWidget *parent) : QWidget(parent) { diff --git a/src/ui/EditorPage.cpp b/src/ui/widgets/EditorPage.cpp index b09b7460..cb4ca5ef 100644 --- a/src/ui/EditorPage.cpp +++ b/src/ui/widgets/EditorPage.cpp @@ -22,7 +22,7 @@ * */ -#include "ui/EditorPage.h" +#include "ui/widgets/EditorPage.h" #include <utility> diff --git a/src/ui/widgets/FilePage.cpp b/src/ui/widgets/FilePage.cpp new file mode 100644 index 00000000..e3d73670 --- /dev/null +++ b/src/ui/widgets/FilePage.cpp @@ -0,0 +1,88 @@ +/** + * 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 "ui/widgets/FilePage.h" + +FilePage::FilePage(QWidget *parent) : QWidget(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())); + + upLevelButton = new QPushButton("UP Level"); + connect(upLevelButton, SIGNAL(clicked(bool)), this, SLOT(slotUpLevel())); + + auto *menuLayout = new QHBoxLayout(); + menuLayout->addWidget(upLevelButton); + menuLayout->addStretch(0); + + auto *layout = new QVBoxLayout(); + layout->addLayout(menuLayout); + layout->addWidget(dirTreeView); + + 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 &))); + +} + +void FilePage::fileTreeViewItemClicked(const QModelIndex &index) { + mPath = dirModel->fileInfo(index).absoluteFilePath(); + qDebug() << "mPath" << mPath; +} + +void FilePage::slotUpLevel() { + QModelIndex currentRoot = dirTreeView->rootIndex(); + mPath = dirModel->fileInfo(currentRoot).absoluteFilePath(); + auto fileInfo = QFileInfo(mPath); + if(fileInfo.isDir() && fileInfo.isReadable() && fileInfo.isExecutable()) { + dirTreeView->setRootIndex(currentRoot.parent()); + } + qDebug() << "Current Root mPath" << mPath; +} + +void FilePage::fileTreeViewItemDoubleClicked(const QModelIndex &index) { + mPath = dirModel->fileInfo(index).absoluteFilePath(); + auto fileInfo = QFileInfo(mPath); + if(fileInfo.isDir() && fileInfo.isReadable() && fileInfo.isExecutable()) { + dirTreeView->setRootIndex(index); + } + qDebug() << "Index mPath" << mPath; +} + +void FilePage::getSelected(QString &path) { + QModelIndex index = dirTreeView->currentIndex(); + QVariant data = dirTreeView->model()->data(index); + path = data.toString(); + qDebug() << "Target Path" << mPath; +} diff --git a/src/ui/HelpPage.cpp b/src/ui/widgets/HelpPage.cpp index f2f0da48..e018da81 100644 --- a/src/ui/HelpPage.cpp +++ b/src/ui/widgets/HelpPage.cpp @@ -22,7 +22,7 @@ * */ -#include "ui/HelpPage.h" +#include "ui/widgets/HelpPage.h" #include <utility> @@ -35,8 +35,6 @@ HelpPage::HelpPage(const QString &path, QWidget *parent) : mainLayout->addWidget(browser); mainLayout->setContentsMargins(0, 0, 0, 0); setLayout(mainLayout); - //setAttribute(Qt::WA_DeleteOnClose); - //browser->setSource(QUrl::fromLocalFile(path)); connect(browser, SIGNAL(anchorClicked(QUrl)), this, SLOT(slotOpenUrl(QUrl))); browser->setOpenLinks(false); diff --git a/src/ui/widgets/InfoBoardWidget.cpp b/src/ui/widgets/InfoBoardWidget.cpp index bfd0c643..76f82505 100644 --- a/src/ui/widgets/InfoBoardWidget.cpp +++ b/src/ui/widgets/InfoBoardWidget.cpp @@ -60,7 +60,7 @@ InfoBoardWidget::InfoBoardWidget(QWidget *parent, GpgME::GpgContext *ctx, KeyLis } void InfoBoardWidget::slotImportFromKeyserver() { - auto *importDialog = new KeyServerImportDialog(mCtx, mKeyList, this); + auto *importDialog = new KeyServerImportDialog(mCtx, mKeyList, false, this); importDialog->slotImport(*keysNotInList); } diff --git a/src/ui/widgets/KeyList.cpp b/src/ui/widgets/KeyList.cpp index dccf1a56..6982c3a2 100644 --- a/src/ui/widgets/KeyList.cpp +++ b/src/ui/widgets/KeyList.cpp @@ -30,7 +30,8 @@ KeyList::KeyList(GpgME::GpgContext *ctx, KeyListRow::KeyType selectType, KeyListColumn::InfoType infoType, QWidget *parent) - : QWidget(parent), mSelectType(selectType), mInfoType(infoType) + : QWidget(parent), mSelectType(selectType), mInfoType(infoType), appPath(qApp->applicationDirPath()), + settings(appPath + "/conf/gpgfrontend.ini", QSettings::IniFormat) { mCtx = ctx; @@ -304,14 +305,12 @@ void KeyList::addMenuAction(QAction *act) void KeyList::dropEvent(QDropEvent* event) { -// importKeyDialog(); - QSettings settings; auto *dialog = new QDialog(); dialog->setWindowTitle(tr("Import Keys")); QLabel *label; - label = new QLabel(tr("You've dropped something on the keylist.\n gpg4usb will now try to import key(s).")+"\n"); + label = new QLabel(tr("You've dropped something on the table.\n GpgFrontend will now try to import key(s).")+"\n"); // "always import keys"-CheckBox auto *checkBox = new QCheckBox(tr("Always import without bothering.")); @@ -345,7 +344,7 @@ void KeyList::dropEvent(QDropEvent* event) if (event->mimeData()->hasUrls()) { - foreach (QUrl tmp, event->mimeData()->urls()) + for (const QUrl& tmp : event->mimeData()->urls()) { QFile file; file.setFileName(tmp.toLocalFile()); @@ -380,56 +379,7 @@ void KeyList::dragEnterEvent(QDragEnterEvent *event) void KeyList::importKeys(QByteArray inBuffer) { GpgImportInformation result = mCtx->importKey(std::move(inBuffer)); - new KeyImportDetailDialog(mCtx, result, this); -} - -void KeyList::uploadKeyToServer(QByteArray *keys) -{ - QUrl reqUrl("http://localhost:11371/pks/add"); - qnam = new QNetworkAccessManager(this); - - QUrl params; - keys->replace("\n", "%0D%0A") - .replace("(", "%28") - .replace(")", "%29") - .replace("/", "%2F") - .replace(":", "%3A") - .replace("+","%2B") - .replace(' ', '+'); - - QUrlQuery q; - - q.addQueryItem("keytext", *keys); - - params = q.query(QUrl::FullyEncoded).toUtf8(); - - QNetworkRequest req(reqUrl); - - req.setHeader(QNetworkRequest::ContentTypeHeader,"application/x-www-form-urlencoded"); - - QNetworkReply *reply = qnam->post(req,params.toEncoded()); - connect(reply, SIGNAL(finished()), - this, SLOT(uploadFinished())); - qDebug() << "REQURL: " << reqUrl; - qDebug() << "PARAMS.ENCODED: " << params.toEncoded(); -} - -void KeyList::uploadFinished() -{ - auto *reply = qobject_cast<QNetworkReply *>(sender()); - - QByteArray response = reply->readAll(); - qDebug() << "RESPNOSE: " << response.data(); - //reply->readAll(); - qDebug() << "ERROR: " << reply->error(); - if (reply->error()) { - qDebug() << "Error while contacting keyserver!"; - return; - } else { - qDebug() << "Success while contacting keyserver!"; - } - - reply->deleteLater(); + new KeyImportDetailDialog(mCtx, result, false, this); } void KeyList::getCheckedKeys(QVector<GpgKey> &keys) { @@ -472,3 +422,12 @@ void KeyList::getPrivateCheckedKeys(QVector<GpgKey> &keys) { } } } + +GpgKey KeyList::getSelectedKey() { + for (int i = 0; i < mKeyList->rowCount(); i++) { + if (mKeyList->item(i, 0)->isSelected() == 1) { + return buffered_keys[i]; + } + } + return GpgKey(); +} diff --git a/src/ui/TextEdit.cpp b/src/ui/widgets/TextEdit.cpp index 5a9206ca..49049baa 100644 --- a/src/ui/TextEdit.cpp +++ b/src/ui/widgets/TextEdit.cpp @@ -22,7 +22,7 @@ * */ -#include "ui/TextEdit.h" +#include "ui/widgets/TextEdit.h" TextEdit::TextEdit() { countPage = 0; @@ -64,6 +64,14 @@ void TextEdit::slotNewHelpTab(const QString &title, const QString &path) const { } +void TextEdit::slotNewFileTab() const { + + auto *page = new FilePage(); + tabWidget->addTab(page, "File"); + tabWidget->setCurrentIndex(tabWidget->count() - 1); + +} + void TextEdit::slotOpen() { QStringList fileNames = QFileDialog::getOpenFileNames(this, tr("Open file"), QDir::currentPath()); diff --git a/src/ui/widgets/VerifyKeyDetailBox.cpp b/src/ui/widgets/VerifyKeyDetailBox.cpp index 3091d672..3a0695b8 100644 --- a/src/ui/widgets/VerifyKeyDetailBox.cpp +++ b/src/ui/widgets/VerifyKeyDetailBox.cpp @@ -141,7 +141,7 @@ VerifyKeyDetailBox::VerifyKeyDetailBox(QWidget *parent, GpgME::GpgContext *ctx, } void VerifyKeyDetailBox::slotImportFormKeyserver() { - auto *importDialog = new KeyServerImportDialog(mCtx, mKeyList, this); + auto *importDialog = new KeyServerImportDialog(mCtx, mKeyList, false, this); importDialog->slotImport(QStringList(fpr)); } |