Systematic use of tm_ostream class instead of ostream (removing dependency on std)
[texmacs.git] / src / src / Plugins / Qt / QTMStyle.cpp
blobadc0056d99282a208eb445203e63b985c87fc50e
2 /******************************************************************************
3 * MODULE : QTMStyle.hpp
4 * DESCRIPTION: QT Texmacs custom style (for some elements)
5 * COPYRIGHT : (C) 2008 Massimiliano Gubinelli
6 *******************************************************************************
7 * This software falls under the GNU general public license version 3 or later.
8 * It comes WITHOUT ANY WARRANTY WHATSOEVER. For details, see the file LICENSE
9 * in the root directory or <http://www.gnu.org/licenses/gpl-3.0.html>.
10 ******************************************************************************/
12 #include "QTMStyle.hpp"
13 #include <QApplication>
14 #include <QStyleOptionMenuItem>
15 #include "tm_ostream.hpp"
17 /******************************************************************************
18 * QTMProxyStyle (does not own *style)
19 ******************************************************************************/
21 QTMProxyStyle::QTMProxyStyle (QStyle* _base):
22 QStyle (), base (_base) {}
24 QTMProxyStyle::~QTMProxyStyle() {
25 // delete style;
28 inline QStyle *QTMProxyStyle::baseStyle() const {
29 return ( base ? base : qApp->style() );
33 void
34 QTMProxyStyle::drawComplexControl (ComplexControl control, const QStyleOptionComplex* option, QPainter* painter, const QWidget* widget) const {
35 baseStyle()->drawComplexControl (control, option, painter, widget);
38 void
39 QTMProxyStyle::drawControl (ControlElement element, const QStyleOption* option, QPainter* painter, const QWidget* widget) const {
40 baseStyle()->drawControl (element, option, painter, widget);
43 void
44 QTMProxyStyle::drawItemPixmap (QPainter* painter, const QRect& rect, int alignment, const QPixmap& pixmap) const {
45 baseStyle()->drawItemPixmap (painter, rect, alignment, pixmap);
48 void
49 QTMProxyStyle::drawItemText (QPainter* painter, const QRect& rect, int alignment, const QPalette& pal, bool enabled, const QString& text, QPalette::ColorRole textRole) const {
50 baseStyle()->drawItemText (painter, rect, alignment, pal, enabled, text, textRole);
53 void
54 QTMProxyStyle::drawPrimitive (PrimitiveElement elem, const QStyleOption* option, QPainter* painter, const QWidget* widget) const {
55 baseStyle()->drawPrimitive (elem, option, painter, widget);
58 QPixmap
59 QTMProxyStyle::generatedIconPixmap (QIcon::Mode iconMode, const QPixmap& pixmap, const QStyleOption* option) const {
60 return baseStyle()->generatedIconPixmap (iconMode, pixmap, option);
63 QStyle::SubControl
64 QTMProxyStyle::hitTestComplexControl (ComplexControl control, const QStyleOptionComplex* option, const QPoint& pos, const QWidget* widget) const {
65 return baseStyle()->hitTestComplexControl (control, option, pos, widget);
68 QRect
69 QTMProxyStyle::itemPixmapRect (const QRect& rect, int alignment, const QPixmap& pixmap) const {
70 return baseStyle()->itemPixmapRect (rect, alignment, pixmap);
73 QRect
74 QTMProxyStyle::itemTextRect (const QFontMetrics& metrics, const QRect& rect, int alignment, bool enabled, const QString& text) const {
75 return baseStyle()->itemTextRect (metrics, rect, alignment, enabled, text);
78 int
79 QTMProxyStyle::pixelMetric (PixelMetric metric, const QStyleOption* option, const QWidget* widget) const {
80 return baseStyle()->pixelMetric (metric, option, widget);
83 void
84 QTMProxyStyle::polish (QWidget* widget) {
85 baseStyle()->polish (widget);
88 void
89 QTMProxyStyle::polish (QApplication* app) {
90 baseStyle()->polish (app);
93 void
94 QTMProxyStyle::polish (QPalette& pal) {
95 baseStyle()->polish (pal);
98 QSize
99 QTMProxyStyle::sizeFromContents (ContentsType type, const QStyleOption* option, const QSize& contentsSize, const QWidget* widget) const {
100 return baseStyle()->sizeFromContents (type, option, contentsSize, widget);
103 QIcon
104 QTMProxyStyle::standardIcon (StandardPixmap standardIcon, const QStyleOption* option, const QWidget* widget) const {
105 return baseStyle()->standardIcon (standardIcon, option, widget);
108 QPalette
109 QTMProxyStyle::standardPalette () const {
110 return baseStyle()->standardPalette ();
113 QPixmap
114 QTMProxyStyle::standardPixmap (StandardPixmap standardPixmap, const QStyleOption* option, const QWidget* widget) const {
115 return baseStyle()->standardPixmap (standardPixmap, option, widget);
119 QTMProxyStyle::styleHint (StyleHint hint, const QStyleOption* option, const QWidget* widget, QStyleHintReturn* returnData) const {
120 return baseStyle()->styleHint (hint, option, widget, returnData);
123 QRect
124 QTMProxyStyle::subControlRect (ComplexControl control, const QStyleOptionComplex* option, SubControl subControl, const QWidget* widget) const {
125 return baseStyle()->subControlRect (control, option, subControl, widget);
128 QRect
129 QTMProxyStyle::subElementRect (SubElement element, const QStyleOption* option, const QWidget* widget) const {
130 return baseStyle()->subElementRect (element, option, widget);
133 void
134 QTMProxyStyle::unpolish (QWidget* widget) {
135 baseStyle()->unpolish (widget);
138 void
139 QTMProxyStyle::unpolish (QApplication* app) {
140 baseStyle()->unpolish (app);
143 /******************************************************************************
144 * QTMStyle
145 ******************************************************************************/
147 void
148 QTMStyle::drawPrimitive (PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const {
149 // if (element == QStyle::PE_FrameStatusBarItem) return;
150 if (element == QStyle::PE_FrameStatusBar) return;
151 baseStyle()->drawPrimitive(element,option,painter,widget);
155 QTMStyle::pixelMetric (PixelMetric metric, const QStyleOption *opt, const QWidget *widget) const {
156 switch (metric) {
157 case PM_ToolBarItemSpacing:
158 return 0;
159 default:
160 return baseStyle()->pixelMetric(metric,opt,widget);
164 #if 0
165 void
166 QTMStyle::drawControl (ControlElement element, const QStyleOption* option, QPainter* painter, const QWidget* widget) const {
167 switch (element) {
168 case CE_MenuItem:
169 if (const QStyleOptionMenuItem *mi =
170 qstyleoption_cast<const QStyleOptionMenuItem *> (option)) {
171 QStyleOptionMenuItem mi2(*mi);
172 mi2.text= QString ("pippo");
173 baseStyle()->drawControl (element, &mi2, painter, widget);
174 break;
176 default:
177 baseStyle()->drawControl (element, option, painter, widget);
180 #endif
183 QTMStyle::styleHint (StyleHint hint, const QStyleOption* option, const QWidget* widget, QStyleHintReturn* returnData) const {
184 switch (hint) {
185 case SH_MenuBar_AltKeyNavigation:
186 return 0;
187 // Set SH_MenuBar_AltKeyNavigation to false. Typically this would be the job of the style that is selected.
188 // However: That mechanism seems to be broken with some Qt versions. Furthermore, the Alt key is heavily
189 // used within TeXmacs, so the menubar navigation gets in the way quite often.
190 default:
191 return baseStyle()->styleHint (hint, option, widget, returnData);
195 QStyle*
196 qtmstyle () {
197 static QStyle* qtmstyle= NULL;
198 if (!qtmstyle) {
199 qtmstyle = new QTMStyle ();
201 if (!qtmstyle) {
202 qtmstyle = qApp->style ();
204 return qtmstyle;