source: src/ConfigOptions.cpp @ 268

Revision 268, 4.3 KB checked in by Eoin, 12 years ago (diff)

Added copyright eventually.

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