From 2b126859937b2b3d3939fb0666bc0dcf3fcec1e6 Mon Sep 17 00:00:00 2001 From: Gluzskiy Alexandr Date: Mon, 28 Jan 2013 14:21:06 +0200 Subject: merged with miranda_ng main repo implemented #78 (except menu) --- res/new_gpg.rc | 46 ++++++++++------------- src/main.cpp | 113 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- src/options.cpp | 3 +- src/resource.h | 4 +- 4 files changed, 132 insertions(+), 34 deletions(-) diff --git a/res/new_gpg.rc b/res/new_gpg.rc index e93473f..928a1cf 100755 --- a/res/new_gpg.rc +++ b/res/new_gpg.rc @@ -1,6 +1,6 @@ // Microsoft Visual C++ generated resource script. // -#include "resource.h" +#include "..\src\resource.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// @@ -27,7 +27,7 @@ LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT 1 TEXTINCLUDE BEGIN - "resource.h\0" + "..\src\resource.h\0" END 2 TEXTINCLUDE @@ -56,31 +56,33 @@ CAPTION "Load Public GPG key" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN DEFPUSHBUTTON "ОК",ID_OK,7,169,50,14 - PUSHBUTTON "Load from file",ID_LOAD_FROM_FILE,273,169,58,14 + PUSHBUTTON "Load from file",ID_LOAD_FROM_FILE,256,169,75,14 EDITTEXT IDC_PUBLIC_KEY_EDIT,7,7,324,134,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | WS_VSCROLL,WS_EX_STATICEDGE PUSHBUTTON "Select existing",IDC_SELECT_EXISTING,113,169,97,14 CONTROL "Turn on encryption",IDC_ENABLE_ENCRYPTION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,143,196,10 PUSHBUTTON "Import key from keyserver",IDC_IMPORT,140,152,188,14,WS_DISABLED END -IDD_FIRST_RUN DIALOGEX 0, 0, 291, 230 +IDD_FIRST_RUN DIALOGEX 0, 0, 291, 241 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Set own key" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - DEFPUSHBUTTON "ОК",ID_OK,12,209,50,14,WS_DISABLED + DEFPUSHBUTTON "ОК",ID_OK,12,220,50,14,WS_DISABLED CONTROL "",IDC_KEY_LIST,"SysListView32",LVS_REPORT | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,7,44,277,105 - PUSHBUTTON "Generate key",IDC_GENERATE_KEY,8,152,74,14 + PUSHBUTTON "Generate key",IDC_GENERATE_KEY,7,152,74,14 LTEXT "Select key for use",IDC_STATIC,16,33,186,8 - EDITTEXT IDC_KEY_PASSWORD,94,168,77,14,ES_PASSWORD | ES_AUTOHSCROLL - RTEXT "Key password:",IDC_STATIC,12,170,76,8 - PUSHBUTTON "Load other",IDC_OTHER,83,152,64,14 - PUSHBUTTON "Delete key",IDC_DELETE_KEY,149,152,70,14 - PUSHBUTTON "Generate and use random key",IDC_GENERATE_RANDOM,40,184,141,14 + EDITTEXT IDC_KEY_PASSWORD,94,187,77,14,ES_PASSWORD | ES_AUTOHSCROLL + RTEXT "Key password:",IDC_STATIC,12,191,76,8 + PUSHBUTTON "Load other",IDC_OTHER,117,152,64,14 + PUSHBUTTON "Delete key",IDC_DELETE_KEY,214,152,70,14 + PUSHBUTTON "Generate and use random key",IDC_GENERATE_RANDOM,143,220,141,14 LTEXT "",IDC_GENERATING_KEY,82,207,174,8 LTEXT "Account:",IDC_STATIC,15,12,42,8 LTEXT "key id: ",IDC_KEY_ID,178,12,99,8 COMBOBOX IDC_ACCOUNT,66,9,104,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "Copy public key",IDC_COPY_PUBKEY,7,169,101,14 + PUSHBUTTON "Export private key",IDC_EXPORT_PRIVATE,182,169,102,14 END IDD_BIN_PATH DIALOGEX 0, 0, 354, 108 @@ -107,8 +109,8 @@ BEGIN DEFPUSHBUTTON "Import key",ID_IMPORT,9,47,46,14 PUSHBUTTON "Accept and enable encryption",IDC_IMPORT_AND_USE,156,47,119,14 PUSHBUTTON "Ignore",IDC_IGNORE_KEY,368,47,52,14 - CTEXT "Статический",IDC_MESSAGE,18,25,392,8 - CTEXT "Статический",IDC_KEY_FROM,16,12,395,8 + CTEXT "Static",IDC_MESSAGE,18,25,392,8 + CTEXT "Static",IDC_KEY_FROM,16,12,395,8 END IDD_KEY_GEN DIALOGEX 0, 0, 284, 169 @@ -188,7 +190,7 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPT CAPTION "Choose which keys to export" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - GROUPBOX "Статический",IDC_STATIC,7,7,267,63 + GROUPBOX "Static",IDC_STATIC,7,7,267,63 PUSHBUTTON "Ok",IDC_OK,7,71,50,14 PUSHBUTTON "Cancel",IDC_CANCEL,224,71,50,14 CONTROL "Export public keys (only set for contacts)",IDC_PUBLIC, @@ -220,8 +222,10 @@ BEGIN RIGHTMARGIN, 284 VERTGUIDE, 15 TOPMARGIN, 7 - BOTTOMMARGIN, 223 + BOTTOMMARGIN, 234 HORZGUIDE, 20 + HORZGUIDE, 166 + HORZGUIDE, 183 END IDD_BIN_PATH, DIALOG @@ -427,18 +431,6 @@ END #ifdef APSTUDIO_INVOKED GUIDELINES DESIGNINFO BEGIN - IDD_OPT_GPG, DIALOG - BEGIN - END - - IDD_OPT_GPG_BIN, DIALOG - BEGIN - END - - IDD_OPT_GPG_MESSAGES, DIALOG - BEGIN - END - IDD_OPT_GPG_ADVANCED, DIALOG BEGIN VERTGUIDE, 12 diff --git a/src/main.cpp b/src/main.cpp index 87edd03..495f025 100755 --- a/src/main.cpp +++ b/src/main.cpp @@ -42,6 +42,8 @@ static INT_PTR CALLBACK DlgProcFirstRun(HWND hwndDlg,UINT msg,WPARAM wParam,LPAR SetWindowPos(hwndDlg, 0, firstrun_rect.left, firstrun_rect.top, 0, 0, SWP_NOSIZE|SWP_SHOWWINDOW); TranslateDialogDefault(hwndDlg); SetWindowText(hwndDlg, TranslateT("Set own key")); + EnableWindow(GetDlgItem(hwndDlg, IDC_COPY_PUBKEY), 0); + EnableWindow(GetDlgItem(hwndDlg, IDC_EXPORT_PRIVATE), 0); col.pszText = _T("Key ID"); col.mask = LVCF_TEXT | LVCF_WIDTH; col.fmt = LVCFMT_LEFT; @@ -321,10 +323,7 @@ static INT_PTR CALLBACK DlgProcFirstRun(HWND hwndDlg,UINT msg,WPARAM wParam,LPAR if(result == pxNotFound) break; string::size_type s = 0; - while((s = out.find("\r", s)) != string::npos) - { - out.erase(s, 1); - } + boost::algorithm::erase_all(out, "\r"); { char buf[64]; GetDlgItemTextA(hwndDlg, IDC_ACCOUNT, buf, 63); @@ -708,6 +707,110 @@ static INT_PTR CALLBACK DlgProcFirstRun(HWND hwndDlg,UINT msg,WPARAM wParam,LPAR } } break; + case IDC_COPY_PUBKEY: + { + if(OpenClipboard(hwndDlg)) + { + ListView_GetItemText(hwndList, itemnum, 0, fp, 16); + string out; + DWORD code; + wstring cmd = _T("--batch -a --export "); + cmd += fp; + gpg_execution_params params; + pxResult result; + params.cmd = &cmd; + params.useless = ""; + params.out = &out; + params.code = &code; + params.result = &result; + boost::thread gpg_thread(boost::bind(&pxEexcute_thread, ¶ms)); + if(!gpg_thread.timed_join(boost::posix_time::seconds(10))) + { + gpg_thread.~thread(); + TerminateProcess(params.hProcess, 1); + params.hProcess = NULL; + if(bDebugLog) + debuglog<hdr.code == NM_CLICK) { EnableWindow(GetDlgItem(hwndDlg, ID_OK), 1); + EnableWindow(GetDlgItem(hwndDlg, IDC_COPY_PUBKEY), 1); + EnableWindow(GetDlgItem(hwndDlg, IDC_EXPORT_PRIVATE), 1); itemnum = hdr->iItem; } } diff --git a/src/options.cpp b/src/options.cpp index d635302..ab54404 100755 --- a/src/options.cpp +++ b/src/options.cpp @@ -381,8 +381,7 @@ static INT_PTR CALLBACK DlgProcGpgOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LP char *szKey = UniGetContactSettingUtf(NULL, szGPGModuleName, "GPGPubKey", ""); std::string str = szKey;; mir_free(szKey); - for(std::string::size_type i = str.find("\n"); i != std::string::npos; i = str.find("\n", i+2)) - str.replace(i, 1, "\r\n"); + boost::algorithm::replace_all(str, "\n", "\r\n"); HGLOBAL hMem = GlobalAlloc(GMEM_MOVEABLE, str.size() +1); if(!hMem) { diff --git a/src/resource.h b/src/resource.h index 7ffd83c..38f790f 100755 --- a/src/resource.h +++ b/src/resource.h @@ -82,6 +82,7 @@ #define IDC_AUT_EXCHANGE 1065 #define IDC_BUTTON3 1066 #define IDC_COPY_KEY 1066 +#define IDC_COPY_PUBKEY 1066 #define IDC_STRIP_TAGS 1067 #define IDC_CHECK1 1068 #define IDC_PRESCENSE_SUBSCRIPTION 1068 @@ -95,6 +96,7 @@ #define IDC_PUBLIC 1073 #define IDC_PRIVATE 1074 #define IDC_ALL 1075 +#define IDC_EXPORT_PRIVATE 1076 // Next default values for new objects // @@ -102,7 +104,7 @@ #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 115 #define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1076 +#define _APS_NEXT_CONTROL_VALUE 1077 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif -- cgit v1.2.3