source: src/ConfigOptions.cpp @ 232

Revision 232, 3.9 KB checked in by Eoin, 12 years ago (diff)

GUI support for Protocol Encryption

Line 
1
2#include "stdAfx.hpp"
3#include <boost/xpressive/xpressive.hpp>
4namespace xp = boost::xpressive;
5namespace fs = boost::filesystem;
6
7#include "ConfigOptions.hpp"
8#include "ProgressDialog.hpp"
9
10void SecurityOptions::onFilterImport(UINT, int, HWND hWnd)
11{
12        CSSFileDialog dlgOpen(TRUE, NULL, NULL, OFN_HIDEREADONLY, L"eMule ipfilter.dat. (*.dat)|*.dat|", m_hWnd);
13       
14        if (dlgOpen.DoModal() == IDOK) 
15        {
16                ProgressDialog progDlg(L"Importing IP filters...", bind(
17                        &hal::BitTorrent::ip_filter_import_dat, &hal::bittorrent(), path(hal::to_utf8(dlgOpen.m_ofn.lpstrFile)), _1, true));
18                progDlg.DoModal();
19        }
20}       
21
22BOOL GeneralOptions::OnInitDialog(HWND hwndFocus, LPARAM lParam)
23{
24        lang_list_.Attach(GetDlgItem(IDC_LANGLIST));
25        lang_list_.AddString(L"English");
26        lang_list_.SetCurSel(0);
27       
28        if (fs::is_directory(hal::app().exe_path().branch_path()))
29        {
30                fs::wdirectory_iterator end_iter;
31               
32                for (fs::wdirectory_iterator dir_itr(hal::app().exe_path().branch_path());
33                                dir_itr != end_iter; ++dir_itr )
34                {
35                        if (fs::is_regular(dir_itr->status()))
36                        {
37                                xp::wsregex rex = xp::wsregex::compile(L"[\\s\\w]+\\.[dD][lL]{2}");
38                                xp::wsmatch what;
39
40                                if(xp::regex_match(dir_itr->path().leaf(), what, rex))
41                                {
42                                        HMODULE hMod = ::LoadLibraryEx(dir_itr->path().string().c_str(), 0, LOAD_LIBRARY_AS_DATAFILE);
43
44                                        // The upper size limit ain't nice, but at least it's safe from buffer overflow
45                                        const int buffer_size = 512;
46                                        boost::array<wchar_t, buffer_size> buffer;
47                                        int length = ::LoadString(hMod, HALITE_LANGUAGE, buffer.elems, buffer_size);
48                                       
49                                        if (length)
50                                        {
51                                                wstring lang_name(buffer.elems);
52                                                lang_map_[lang_name] = dir_itr->path().leaf();
53                                                int index = lang_list_.AddString(lang_name.c_str());
54                                               
55                                                if (dir_itr->path().leaf() == halite().dll_) 
56                                                        lang_list_.SetCurSel(index);
57                                        }
58                                        ::FreeLibrary(hMod);
59                                }
60                        }
61                }
62        }
63        return DoDataExchange(false);
64}
Note: See TracBrowser for help on using the repository browser.