source: trunk/src/ConfigOptions.cpp @ 552

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