source: trunk/src/Halite.hpp @ 531

Revision 531, 3.0 KB checked in by Eoin, 11 years ago (diff)

Switched trunk to hal::wform.

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#pragma once
8
9using std::string;
10using std::wstring;
11
12using boost::lexical_cast;
13using boost::array;
14using boost::bind;
15using boost::thread;
16using boost::shared_ptr;
17using boost::scoped_ptr;
18using boost::filesystem::path;
19using boost::filesystem::wpath;
20using boost::noncopyable;
21
22template<class Archive>
23void serialize(Archive& ar, WTL::CRect& rect, const unsigned int version)
24{
25        ar & BOOST_SERIALIZATION_NVP(rect.top);
26        ar & BOOST_SERIALIZATION_NVP(rect.bottom);
27        ar & BOOST_SERIALIZATION_NVP(rect.left);
28        ar & BOOST_SERIALIZATION_NVP(rect.right);
29}
30
31namespace hal
32{       
33        namespace fs = boost::filesystem;
34        namespace pt = boost::posix_time;
35        namespace xp = boost::xpressive;
36        namespace sl = boost::serialization;
37
38        using std::pair;
39        using std::make_pair;
40       
41        using boost::tuple;
42
43        typedef boost::int64_t size_type;
44}
45
46#define foreach BOOST_FOREACH
47
48#include "global/wtl_app.hpp"
49#include "global/string_conv.hpp"
50
51#include "halIni.hpp"
52#include "halEvent.hpp"
53#include "halTorrent.hpp"
54
55template<class T>
56class RedrawLock
57{
58public:
59        RedrawLock(T& window) :
60                window_(window)
61        {
62                window_.SetRedraw(false);
63        }
64       
65        ~RedrawLock()
66        {
67                unlock();
68        }
69       
70        void unlock()
71        {
72                window_.SetRedraw(true);
73                window_.InvalidateRect(NULL, true);
74        }
75       
76private:
77        T& window_;
78};
79       
80class Halite :
81        public hal::IniBase<Halite>,
82        private boost::noncopyable
83{
84public:
85        Halite() :
86                hal::IniBase<Halite>("globals/halite", "Halite"),
87                oneInst(false),
88#ifdef TORRENT_LOGGING
89                logDebug_(true),
90#else
91                logDebug_(false),
92#endif
93                showMessage_(true),
94                logToFile_(true),
95                logListLen_(128),
96                dll_(L"")
97        {
98                hal::event_log.init();
99                load_from_ini();
100        }
101       
102        friend class boost::serialization::access;
103        template<class Archive>
104        void serialize(Archive& ar, const unsigned int version)
105        {       
106        ar & BOOST_SERIALIZATION_NVP(oneInst);
107                ar & BOOST_SERIALIZATION_NVP(logDebug_);
108                ar & boost::serialization::make_nvp("showMessage", showMessage_);
109               
110                ar & BOOST_SERIALIZATION_NVP(logToFile_);
111                if (version > 1)
112                        ar & BOOST_SERIALIZATION_NVP(logListLen_);
113                if (version > 0)
114                        ar & BOOST_SERIALIZATION_NVP(dll_);
115        }       
116       
117        bool logToFile() { return logToFile_; }
118        bool logDebug() { return logDebug_; }
119        const std::wstring& dll() { return dll_; }
120        const int logListLen() { return logListLen_; }
121        bool showMessage() { return showMessage_; }
122       
123        friend class GeneralOptions;
124        friend class GlobalOptions;
125        friend class PortOptions;
126        friend class SplashDialog;
127        friend class AdvDebugDialog;
128        friend int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);
129       
130private:
131        std::wstring dll_;
132        bool oneInst;
133        bool logDebug_;
134        bool showMessage_;
135        bool logToFile_;
136        size_t logListLen_;
137};
138
139Halite& halite();
140
141BOOST_CLASS_VERSION(Halite, 3)
Note: See TracBrowser for help on using the repository browser.