summaryrefslogtreecommitdiff
path: root/options.cpp
diff options
context:
space:
mode:
authorGluzskiy Alexandr <sss123next@list.ru>2010-08-10 23:51:58 +0300
committerGluzskiy Alexandr <sss123next@list.ru>2010-08-10 23:51:58 +0300
commit1de40ac790d3218cc10d37f95f9f1a8c573dbe77 (patch)
tree7d67c67d58a9b5066597233b7abe04b4a46e08a1 /options.cpp
parent36a60a8021dc0fa84ce13677f69e5a3f1428fe5b (diff)
modified: main.cpp
modified: options.cpp modified: utilities.cpp modified: utilities.h
Diffstat (limited to 'options.cpp')
-rw-r--r--options.cpp63
1 files changed, 58 insertions, 5 deletions
diff --git a/options.cpp b/options.cpp
index 60cf2d9..b5c690d 100644
--- a/options.cpp
+++ b/options.cpp
@@ -138,7 +138,12 @@ static BOOL CALLBACK DlgProcGpgOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARA
}
wfstream f(tmp, std::ios::out);
delete [] tmp;
- wstring str = UniGetContactSettingUtf(user_data[item_num+1], szModuleName, "GPGPubKey", _T(""));
+ wstring str;
+ {
+ TCHAR *tmp = UniGetContactSettingUtf(user_data[item_num+1], szModuleName, "GPGPubKey", _T(""));
+ str.append(tmp);
+ mir_free(tmp);
+ }
wstring::size_type s = 0;
while((s = str.find(_T("\r"), s)) != wstring::npos)
{
@@ -191,8 +196,12 @@ static BOOL CALLBACK DlgProcGpgBinOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LP
case WM_INITDIALOG:
{
TranslateDialogDefault(hwndDlg);
- SetDlgItemText(hwndDlg, IDC_BIN_PATH, UniGetContactSettingUtf(NULL, szModuleName, "szGpgBinPath", _T("gpg2.exe")));
- SetDlgItemText(hwndDlg, IDC_HOME_DIR, UniGetContactSettingUtf(NULL, szModuleName, "szHomePath", _T("gpg")));
+ tmp = UniGetContactSettingUtf(NULL, szModuleName, "szGpgBinPath", _T("gpg2.exe"));
+ SetDlgItemText(hwndDlg, IDC_BIN_PATH, tmp);
+ mir_free(tmp);
+ tmp = UniGetContactSettingUtf(NULL, szModuleName, "szHomePath", _T("gpg"));
+ SetDlgItemText(hwndDlg, IDC_HOME_DIR, tmp);
+ mir_free(tmp);
return TRUE;
}
@@ -203,11 +212,15 @@ static BOOL CALLBACK DlgProcGpgBinOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LP
{
case IDC_SET_BIN_PATH:
GetFilePath(_T("Choose gpg2.exe"), "szGpgBinPath", _T("*.exe"), _T("EXE Executables"));
- SetDlgItemText(hwndDlg, IDC_BIN_PATH, UniGetContactSettingUtf(NULL, szModuleName, "szGpgBinPath", _T("gpg2.exe")));
+ tmp = UniGetContactSettingUtf(NULL, szModuleName, "szGpgBinPath", _T("gpg2.exe"));
+ SetDlgItemText(hwndDlg, IDC_BIN_PATH, tmp);
+ mir_free(tmp);
break;
case IDC_SET_HOME_DIR:
GetFolderPath(_T("Set home diractory"), "szHomePath");
- SetDlgItemText(hwndDlg, IDC_HOME_DIR, UniGetContactSettingUtf(NULL, szModuleName, "szHomePath", _T("")));
+ tmp = UniGetContactSettingUtf(NULL, szModuleName, "szHomePath", _T(""));
+ SetDlgItemText(hwndDlg, IDC_HOME_DIR, tmp);
+ mir_free(tmp);
break;
default:
break;
@@ -282,6 +295,46 @@ static BOOL CALLBACK DlgProcLoadPublicKey(HWND hwndDlg,UINT msg,WPARAM wParam,LP
tmp = new TCHAR [key_buf.length()+1];
_tcscpy(tmp, key_buf.substr(ws1,ws2-ws1).c_str());
ListView_SetItemText(hwndList_p, item_num, 2, tmp);
+ { //gpg execute block
+ TCHAR cmd[40960] = {0};
+ TCHAR tmp2[MAX_PATH] = {0};
+ TCHAR *ptmp;
+ string output;
+ DWORD exitcode;
+ ptmp = UniGetContactSettingUtf(NULL, szModuleName, "szGpgBinPath", _T(""));
+ _tcscpy(cmd, ptmp);
+ mir_free(ptmp);
+ _tcscat(cmd, _T(" --homedir "));
+ _tcscat(cmd, _T("\""));
+ ptmp = UniGetContactSettingUtf(NULL, szModuleName, "szHomePath", _T(""));
+ _tcscat(cmd, ptmp);
+ _tcscat(cmd, _T("\""));
+ _tcscat(cmd, _T(" --import "));
+ {
+ _tcscpy(tmp2, ptmp);
+ mir_free(ptmp);
+ _tcscat(tmp2, _T("\\"));
+ _tcscat(tmp2, _T("temporary_exported.asc"));
+ wfstream f(tmp2, std::ios::out);
+ ptmp = UniGetContactSettingUtf(user_data[item_num+1], szModuleName, "GPGPubKey", _T(""));
+ wstring str = ptmp;
+ mir_free(ptmp);
+ wstring::size_type s = 0;
+ while((s = str.find(_T("\r"), s)) != wstring::npos)
+ {
+ str.erase(s, 1);
+ }
+ f<<str.c_str();
+ f.close();
+ _tcscat(cmd, _T(" \""));
+ _tcscat(cmd, tmp2);
+ _tcscat(cmd, _T("\""));
+ }
+ pxResult pxresult=pxExecute(cmd,"",&output,&exitcode);
+ cp866_to_cp1251(&output);
+ MessageBoxA(0, output.c_str(), "", MB_OK);
+ DeleteFile(tmp2);
+ }
delete [] tmp;
key_buf.clear();
DestroyWindow(hwndDlg);