]> git.lyx.org Git - lyx.git/blob - src/frontends/xforms/Tooltips.C
Strip out another 180 #includes.
[lyx.git] / src / frontends / xforms / Tooltips.C
1 /**
2  * \file Tooltips.C
3  * This file is part of LyX, the document processor.
4  * Licence details can be found in the file COPYING.
5  *
6  * \author Angus Leeming
7  *
8  * Full author contact details are available in file CREDITS.
9  */
10
11 /* Tooltips for xforms. xforms 0.89 supports them directly, but 0.88 needs
12  * a bit of jiggery pokery. This class wraps it all up in a neat interface.
13  * Based on code originally in Toolbar_pimpl.C that appears to have been
14  * written by Matthias Ettrich and Jean-Marc Lasgouttes.
15  */
16
17 #include <config.h>
18
19 #include "Tooltips.h"
20
21 #include "xforms_helpers.h" // formatted
22
23 #include "support/LAssert.h"
24 #include "support/lstrings.h"
25
26 #include "lyx_forms.h"
27
28 #include <boost/bind.hpp>
29
30 using namespace lyx::support;
31
32
33 bool Tooltips::enabled_ = true;
34
35 boost::signal0<void> Tooltips::toggled;
36
37
38 Tooltips::Tooltips()
39 {
40         toggled.connect(boost::bind(&Tooltips::set, this));
41 }
42
43
44 void Tooltips::toggleEnabled()
45 {
46         enabled_ = !enabled_;
47         toggled();
48 }
49
50
51 void Tooltips::set()
52 {
53         if (tooltipsMap.empty())
54                 return;
55
56         TooltipsMap::const_iterator it  = tooltipsMap.begin();
57         TooltipsMap::const_iterator end = tooltipsMap.end();
58         for (; it != end; ++it) {
59                 FL_OBJECT * const ob = it->first;
60                 char const * const c_str = enabled_ ? it->second.c_str() : 0;
61                 fl_set_object_helper(ob, c_str);
62         }
63 }
64
65
66 void Tooltips::init(FL_OBJECT * ob, string const & tip)
67 {
68         Assert(ob && ob->form);
69
70         // Store the tooltip string
71         string const str = formatted(trim(tip), 400);
72         tooltipsMap[ob] = str;
73
74         // Set the tooltip
75         char const * const c_str = enabled_ ? str.c_str() : 0;
76         fl_set_object_helper(ob, c_str);
77 }