tdestyle.h
00001 /* 00002 * $Id$ 00003 * 00004 * TDEStyle 00005 * Copyright (C) 2001-2002 Karol Szwed <gallium@kde.org> 00006 * 00007 * TQWindowsStyle CC_ListView and style images were kindly donated by TrollTech, 00008 * Copyright (C) 1998-2000 TrollTech AS. 00009 * 00010 * Many thanks to Bradley T. Hughes for the 3 button scrollbar code. 00011 * 00012 * This library is free software; you can redistribute it and/or 00013 * modify it under the terms of the GNU Library General Public 00014 * License version 2 as published by the Free Software Foundation. 00015 * 00016 * This library is distributed in the hope that it will be useful, 00017 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00018 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00019 * Library General Public License for more details. 00020 * 00021 * You should have received a copy of the GNU Library General Public License 00022 * along with this library; see the file COPYING.LIB. If not, write to 00023 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 00024 * Boston, MA 02110-1301, USA. 00025 */ 00026 00027 #ifndef __TDESTYLE_H 00028 #define __TDESTYLE_H 00029 00030 // W A R N I N G 00031 // ------------- 00032 // This API is still subject to change. 00033 // I will remove this warning when I feel the API is sufficiently flexible. 00034 00035 #include <tqcommonstyle.h> 00036 00037 #include <tdelibs_export.h> 00038 00039 class KPixmap; 00040 00041 struct TDEStylePrivate; 00057 class TDEFX_EXPORT TDEStyle: public TQCommonStyle 00058 { 00059 Q_OBJECT 00060 00061 00062 public: 00063 00080 typedef uint TDEStyleFlags; 00081 enum TDEStyleOption { 00082 Default = 0x00000000, 00083 AllowMenuTransparency = 0x00000001, 00084 FilledFrameWorkaround = 0x00000002 00085 }; 00086 00110 enum TDEStyleScrollBarType { 00111 WindowsStyleScrollBar = 0x00000000, 00112 PlatinumStyleScrollBar = 0x00000001, 00113 ThreeButtonScrollBar = 0x00000002, 00114 NextStyleScrollBar = 0x00000004 00115 }; 00116 00136 TDEStyle( TDEStyleFlags flags = TDEStyle::Default, 00137 TDEStyleScrollBarType sbtype = TDEStyle::WindowsStyleScrollBar ); 00138 00142 ~TDEStyle(); 00143 00147 static TQString defaultStyle(); 00148 00160 void setScrollBarType(TDEStyleScrollBarType sbtype); 00161 00167 TDEStyleFlags styleFlags() const; 00168 00169 // --------------------------------------------------------------------------- 00170 00182 virtual void renderMenuBlendPixmap( KPixmap& pix, const TQColorGroup& cg, 00183 const TQPopupMenu* popup ) const; 00184 00228 enum TDEStylePrimitive { 00229 KPE_DockWindowHandle, 00230 KPE_ToolBarHandle, 00231 KPE_GeneralHandle, 00232 00233 KPE_SliderGroove, 00234 KPE_SliderHandle, 00235 00236 KPE_ListViewExpander, 00237 KPE_ListViewBranch 00238 }; 00239 00240 // Old API 00241 // DEPRECATED 00242 virtual void drawTDEStylePrimitive( TDEStylePrimitive kpe, 00243 TQPainter* p, 00244 const TQWidget* widget, 00245 const TQRect &r, 00246 const TQColorGroup &cg, 00247 SFlags flags = Style_Default, 00248 const TQStyleOption& = TQStyleOption::SO_Default ) const; 00249 00259 virtual void drawTDEStylePrimitive( TDEStylePrimitive kpe, 00260 TQPainter* p, 00261 const TQStyleControlElementData &ceData, 00262 ControlElementFlags elementFlags, 00263 const TQRect &r, 00264 const TQColorGroup &cg, 00265 SFlags flags = Style_Default, 00266 const TQStyleOption& = TQStyleOption::SO_Default, 00267 const TQWidget* widget = 0 ) const; 00268 00269 00270 enum TDEStylePixelMetric { 00271 KPM_MenuItemSeparatorHeight = 0x00000001, 00272 KPM_MenuItemHMargin = 0x00000002, 00273 KPM_MenuItemVMargin = 0x00000004, 00274 KPM_MenuItemHFrame = 0x00000008, 00275 KPM_MenuItemVFrame = 0x00000010, 00276 KPM_MenuItemCheckMarkHMargin = 0x00000020, 00277 KPM_MenuItemArrowHMargin = 0x00000040, 00278 KPM_MenuItemTabSpacing = 0x00000080, 00279 KPM_ListViewBranchThickness = 0x00000100 00280 }; 00281 00282 int kPixelMetric( TDEStylePixelMetric kpm, const TQStyleControlElementData &ceData, ControlElementFlags elementFlags, const TQWidget* widget = 0 ) const; 00283 00284 // --------------------------------------------------------------------------- 00285 00286 void polish( const TQStyleControlElementData &ceData, ControlElementFlags elementFlags, void * ); 00287 void unPolish( const TQStyleControlElementData &ceData, ControlElementFlags elementFlags, void * ); 00288 void polishPopupMenu( const TQStyleControlElementData &ceData, ControlElementFlags elementFlags, void *ptr ); 00289 00290 void drawPrimitive( TQ_PrimitiveElement pe, 00291 TQPainter* p, 00292 const TQStyleControlElementData &ceData, 00293 ControlElementFlags elementFlags, 00294 const TQRect &r, 00295 const TQColorGroup &cg, 00296 SFlags flags = Style_Default, 00297 const TQStyleOption& = TQStyleOption::SO_Default ) const; 00298 00299 // #ifdef USE_QT4 // tdebindings / smoke needs this function declaration available at all times. Furthermore I don't think it would hurt to have the declaration available at all times...so leave these commented out for now 00300 00301 // void drawPrimitive( TQ_ControlElement pe, 00302 // TQPainter* p, 00303 // const TQStyleControlElementData &ceData, 00304 // ControlElementFlags elementFlags, 00305 // const TQRect &r, 00306 // const TQColorGroup &cg, 00307 // SFlags flags = Style_Default, 00308 // const TQStyleOption& = TQStyleOption::SO_Default ) const; 00309 00310 // #endif // USE_QT4 00311 00312 void drawControl( TQ_ControlElement element, 00313 TQPainter* p, 00314 const TQStyleControlElementData &ceData, 00315 ControlElementFlags elementFlags, 00316 const TQRect &r, 00317 const TQColorGroup &cg, 00318 SFlags flags = Style_Default, 00319 const TQStyleOption& = TQStyleOption::SO_Default, 00320 const TQWidget* widget = 0 ) const; 00321 00322 void drawComplexControl( TQ_ComplexControl control, 00323 TQPainter *p, 00324 const TQStyleControlElementData &ceData, 00325 ControlElementFlags elementFlags, 00326 const TQRect &r, 00327 const TQColorGroup &cg, 00328 SFlags flags = Style_Default, 00329 SCFlags controls = SC_All, 00330 SCFlags active = SC_None, 00331 const TQStyleOption& = TQStyleOption::SO_Default, 00332 const TQWidget* widget = 0 ) const; 00333 00334 SubControl querySubControl( TQ_ComplexControl control, 00335 const TQStyleControlElementData &ceData, 00336 ControlElementFlags elementFlags, 00337 const TQPoint &pos, 00338 const TQStyleOption& = TQStyleOption::SO_Default, 00339 const TQWidget* widget = 0 ) const; 00340 00341 TQRect querySubControlMetrics( TQ_ComplexControl control, 00342 const TQStyleControlElementData &ceData, 00343 ControlElementFlags elementFlags, 00344 SubControl sc, 00345 const TQStyleOption& = TQStyleOption::SO_Default, 00346 const TQWidget* widget = 0 ) const; 00347 00348 int pixelMetric( PixelMetric m, const TQStyleControlElementData &ceData, ControlElementFlags elementFlags, 00349 const TQWidget* widget = 0 ) const; 00350 00351 TQRect subRect( SubRect r, const TQStyleControlElementData &ceData, const ControlElementFlags elementFlags, 00352 const TQWidget* widget = 0 ) const; 00353 00354 TQPixmap stylePixmap( StylePixmap stylepixmap, 00355 const TQStyleControlElementData &ceData, 00356 ControlElementFlags elementFlags, 00357 const TQStyleOption& = TQStyleOption::SO_Default, 00358 const TQWidget* widget = 0 ) const; 00359 00360 int styleHint( TQ_StyleHint sh, const TQStyleControlElementData &ceData, 00361 ControlElementFlags elementFlags, 00362 const TQStyleOption &opt = TQStyleOption::SO_Default, 00363 TQStyleHintReturn* shr = 0, 00364 const TQWidget* w = 0 ) const; 00365 00366 protected: 00367 virtual bool objectEventHandler( const TQStyleControlElementData &ceData, ControlElementFlags elementFlags, void* source, TQEvent *e ); 00368 00369 private: 00370 // Disable copy constructor and = operator 00371 TDEStyle( const TDEStyle & ); 00372 TDEStyle& operator=( const TDEStyle & ); 00373 00374 protected: 00375 virtual void virtual_hook( int id, void* data ); 00376 private: 00377 TDEStylePrivate *d; 00378 }; 00379 00380 00381 // vim: set noet ts=4 sw=4: 00382 #endif 00383