]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/qt_helpers.h
Merge branch 'master' into biblatex2
[lyx.git] / src / frontends / qt4 / qt_helpers.h
index defd1a827fd47a46b4e61194baf22f3507e392b5..9569d90f82e5ae3930567489eff5414c70e4f5b1 100644 (file)
@@ -13,6 +13,7 @@
 #ifndef QTHELPERS_H
 #define QTHELPERS_H
 
+#include "ColorSet.h"
 #include "Length.h"
 #include "support/qstring_helpers.h"
 #include "support/filetools.h"
@@ -67,6 +68,14 @@ void doubleToWidget(QLineEdit * input, double const & value,
 /// method to set a (localized) double value in a widget (QLineEdit)
 void doubleToWidget(QLineEdit * input, std::string const & value,
        char f = 'g', int prec = 6);
+/**
+ * method to format localized floating point numbers without
+ * ever using scientific notation
+ */
+QString formatLocFPNumber(double d);
+
+/// Method to sort colors by GUI name in combo widgets
+bool ColorSorter(ColorCode lhs, ColorCode rhs);
 
 /// colors a widget red if invalid
 void setValid(QWidget * widget, bool valid);
@@ -186,6 +195,47 @@ QString changeExtension(QString const & oldname, QString const & ext);
 /// parameter.
 QString guiName(std::string const & type, BufferParams const & bp);
 
+/// Format \param text for display as a ToolTip, breaking at lines of \param
+/// width ems. Note: this function is expensive. Better call it in a delayed
+/// manner, i.e. not to fill in a model (see for instance the function
+/// ToolTipFormatter::eventFilter).
+///
+/// When is it called automatically? Whenever the tooltip is not already rich
+/// text beginning with <html>, and is defined by the following functions:
+///  - QWidget::setToolTip(),
+///  - QAbstractItemModel::setData(..., Qt::ToolTipRole),
+///  - Inset::toolTip()
+///
+/// In other words, tooltips can use Qt html, and the tooltip will still be
+/// correctly broken. Moreover, it is possible to specify an entirely custom
+/// tooltip (not subject to automatic formatting) by giving it in its entirety,
+/// i.e. starting with <html>.
+QString formatToolTip(QString text, int width = 30);
+
+
+#if QT_VERSION < 0x050300
+// Very partial implementation of QSignalBlocker for archaic qt versions.
+class QSignalBlocker {
+public:
+       explicit QSignalBlocker(QObject * o)
+               : obj(o), init_state(obj && obj->blockSignals(true)) {}
+
+       ~QSignalBlocker() {
+               if (obj)
+                       obj->blockSignals(init_state);
+       }
+private:
+       QObject * obj;
+       bool init_state;
+};
+#endif
+
+
+// Check if qstr is understood as rich text (Qt HTML) and if so, produce a
+// rendering in plain text.
+QString qtHtmlToPlainText(QString const & qstr);
+
+
 } // namespace lyx
 
 #endif // QTHELPERS_H