3 * This file is part of LyX, the document processor.
4 * Licence details can be found in the file COPYING.
6 * \author Angus Leeming
8 * Full author contact details are available in file CREDITS.
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.
21 #include "xforms_helpers.h" // formatted
23 #include "support/LAssert.h"
24 #include "support/lstrings.h"
26 #include "lyx_forms.h"
28 #include <boost/bind.hpp>
30 using namespace lyx::support;
33 bool Tooltips::enabled_ = true;
35 boost::signal0<void> Tooltips::toggled;
40 toggled.connect(boost::bind(&Tooltips::set, this));
44 void Tooltips::toggleEnabled()
53 if (tooltipsMap.empty())
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);
66 void Tooltips::init(FL_OBJECT * ob, string const & tip)
68 Assert(ob && ob->form);
70 // Store the tooltip string
71 string const str = formatted(trim(tip), 400);
72 tooltipsMap[ob] = str;
75 char const * const c_str = enabled_ ? str.c_str() : 0;
76 fl_set_object_helper(ob, c_str);