source: trunk/src/Halite.hpp @ 491

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

Merging changes from branch into trunk.

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