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() {
28 inline QStyle
*QTMProxyStyle::baseStyle() const {
29 return ( base
? base
: qApp
->style() );
34 QTMProxyStyle::drawComplexControl (ComplexControl control
, const QStyleOptionComplex
* option
, QPainter
* painter
, const QWidget
* widget
) const {
35 baseStyle()->drawComplexControl (control
, option
, painter
, widget
);
39 QTMProxyStyle::drawControl (ControlElement element
, const QStyleOption
* option
, QPainter
* painter
, const QWidget
* widget
) const {
40 baseStyle()->drawControl (element
, option
, painter
, widget
);
44 QTMProxyStyle::drawItemPixmap (QPainter
* painter
, const QRect
& rect
, int alignment
, const QPixmap
& pixmap
) const {
45 baseStyle()->drawItemPixmap (painter
, rect
, alignment
, pixmap
);
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
);
54 QTMProxyStyle::drawPrimitive (PrimitiveElement elem
, const QStyleOption
* option
, QPainter
* painter
, const QWidget
* widget
) const {
55 baseStyle()->drawPrimitive (elem
, option
, painter
, widget
);
59 QTMProxyStyle::generatedIconPixmap (QIcon::Mode iconMode
, const QPixmap
& pixmap
, const QStyleOption
* option
) const {
60 return baseStyle()->generatedIconPixmap (iconMode
, pixmap
, option
);
64 QTMProxyStyle::hitTestComplexControl (ComplexControl control
, const QStyleOptionComplex
* option
, const QPoint
& pos
, const QWidget
* widget
) const {
65 return baseStyle()->hitTestComplexControl (control
, option
, pos
, widget
);
69 QTMProxyStyle::itemPixmapRect (const QRect
& rect
, int alignment
, const QPixmap
& pixmap
) const {
70 return baseStyle()->itemPixmapRect (rect
, alignment
, pixmap
);
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
);
79 QTMProxyStyle::pixelMetric (PixelMetric metric
, const QStyleOption
* option
, const QWidget
* widget
) const {
80 return baseStyle()->pixelMetric (metric
, option
, widget
);
84 QTMProxyStyle::polish (QWidget
* widget
) {
85 baseStyle()->polish (widget
);
89 QTMProxyStyle::polish (QApplication
* app
) {
90 baseStyle()->polish (app
);
94 QTMProxyStyle::polish (QPalette
& pal
) {
95 baseStyle()->polish (pal
);
99 QTMProxyStyle::sizeFromContents (ContentsType type
, const QStyleOption
* option
, const QSize
& contentsSize
, const QWidget
* widget
) const {
100 return baseStyle()->sizeFromContents (type
, option
, contentsSize
, widget
);
104 QTMProxyStyle::standardIcon (StandardPixmap standardIcon
, const QStyleOption
* option
, const QWidget
* widget
) const {
105 return baseStyle()->standardIcon (standardIcon
, option
, widget
);
109 QTMProxyStyle::standardPalette () const {
110 return baseStyle()->standardPalette ();
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
);
124 QTMProxyStyle::subControlRect (ComplexControl control
, const QStyleOptionComplex
* option
, SubControl subControl
, const QWidget
* widget
) const {
125 return baseStyle()->subControlRect (control
, option
, subControl
, widget
);
129 QTMProxyStyle::subElementRect (SubElement element
, const QStyleOption
* option
, const QWidget
* widget
) const {
130 return baseStyle()->subElementRect (element
, option
, widget
);
134 QTMProxyStyle::unpolish (QWidget
* widget
) {
135 baseStyle()->unpolish (widget
);
139 QTMProxyStyle::unpolish (QApplication
* app
) {
140 baseStyle()->unpolish (app
);
143 /******************************************************************************
145 ******************************************************************************/
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 {
157 case PM_ToolBarItemSpacing
:
160 return baseStyle()->pixelMetric(metric
,opt
,widget
);
166 QTMStyle::drawControl (ControlElement element
, const QStyleOption
* option
, QPainter
* painter
, const QWidget
* widget
) const {
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
);
177 baseStyle()->drawControl (element
, option
, painter
, widget
);
183 QTMStyle::styleHint (StyleHint hint
, const QStyleOption
* option
, const QWidget
* widget
, QStyleHintReturn
* returnData
) const {
185 case SH_MenuBar_AltKeyNavigation
:
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.
191 return baseStyle()->styleHint (hint
, option
, widget
, returnData
);
197 static QStyle
* qtmstyle
= NULL
;
199 qtmstyle
= new QTMStyle ();
202 qtmstyle
= qApp
->style ();