synfig-core  1.0.3
general.h
Go to the documentation of this file.
1 /* === S Y N F I G ========================================================= */
22 /* ========================================================================= */
23 
24 /* === S T A R T =========================================================== */
25 
26 #ifndef __SYNFIG_GENERAL_H
27 #define __SYNFIG_GENERAL_H
28 
29 /* === H E A D E R S ======================================================= */
30 
31 #include <ETL/stringf>
32 #include "string.h"
33 #include "version.h"
34 #ifdef ENABLE_NLS
35  #include <locale.h>
36  #include <libintl.h>
37 #endif
38 
39 /* === M A C R O S ========================================================= */
40 
41 #ifdef ENABLE_NLS
42 #define _(x) dgettext("synfig",x)
43 #define gettext_noop(x) x
44 #define N_(x) gettext_noop(x)
45 #else
46 #define dgettext(a,x) (x)
47 #define _(x) (x)
48 #define N_(x) (x)
49 #endif
50 
51 #define SYNFIG_COPYRIGHT "Copyright (c) 2001-2005 Robert B. Quattlebaum Jr., Adrian Bentley"
52 
53 
54 #ifdef _DEBUG
55 #ifdef __FUNC__
56 #define DEBUGPOINT() synfig::warning(etl::strprintf(__FILE__":"__FUNC__":%d DEBUGPOINT",__LINE__))
57 #define DEBUGINFO(x) synfig::warning(etl::strprintf(__FILE__":"__FUNC__":%d:DEBUGINFO:",__LINE__)+x)
58 #else
59 #define DEBUGPOINT() synfig::warning(etl::strprintf(__FILE__":%d DEBUGPOINT",__LINE__))
60 #define DEBUGINFO(x) synfig::warning(etl::strprintf(__FILE__":%d:DEBUGINFO:",__LINE__)+x)
61 #endif
62 
63 #else
64 #define DEBUGPOINT()
65 #define DEBUGINFO(x)
66 #endif
67 
68 /* === C L A S S E S & S T R U C T S ======================================= */
69 
70 namespace synfig {
71 
72 class ChangeLocale {
73  const String previous;
74  const int category;
75 public:
76  ChangeLocale(int category, const char *locale):
77  // This backups the old locale
78  previous(setlocale(category,NULL)),category(category)
79  {
80  // This effectively changes the locale
81  setlocale(category, locale);
82  }
84  // This restores the locale
85  setlocale(category,previous.c_str());
86  }
87 };
88 
93 {
94 public:
95 
96  virtual ~ProgressCallback() { }
97  virtual bool task(const String &/*task*/) { return true; }
98  virtual bool error(const String &/*task*/) { return true; }
99  virtual bool warning(const String &/*task*/) { return true; }
100  virtual bool amount_complete(int /*current*/, int /*total*/) { return true; }
101 
102  virtual bool valid() const { return true; }
103 };
104 
106 
111 {
112  ProgressCallback *cb;
113  int start,end,tot;
114  int w;
115 public:
116 
117  SuperCallback(): cb(), start(), end(), tot(), w() { }
118  SuperCallback(ProgressCallback *cb,int start_, int end_, int total):
119  cb(cb),start(start_),end(end_),tot(total),w(end-start)
120  {
121  //make sure we don't "inherit" if our subcallback is invalid
122  if(!cb || !cb->valid())
123  cb = NULL;
124  }
125  virtual bool task(const String &task) { if(cb)return cb->task(task); return true; }
126  virtual bool error(const String &task) { if(cb)return cb->error(task); return true; }
127  virtual bool warning(const String &task) { if(cb)return cb->warning(task); return true; }
128  virtual bool amount_complete(int cur, int total) { if(cb)return cb->amount_complete(start+cur*w/total,tot); return true; }
129 
130  virtual bool valid() const { return cb != 0; }
131 };
132 
133 
134 /*
135 extern bool add_to_module_search_path(const std:string &path);
136 extern bool add_to_config_search_path(const std:string &path);
137 */
138 
140 extern void shutdown();
141 
143 
144 extern void error(const char *format,...);
145 extern void error(const String &str);
146 
148 
149 extern void warning(const char *format,...);
150 extern void warning(const String &str);
151 
153 
154 extern void info(const char *format,...);
155 extern void info(const String &str);
156 
158 extern String get_binary_path(const String &fallback_path);
159 
160 }; // END of namespace synfig
161 
162 /* === E N D =============================================================== */
163 
164 #endif