/**************************************************************************** ** ** Definition of TQStyle class ** ** Created : 980616 ** ** Copyright (C) 1992-2008 Trolltech ASA. All rights reserved. ** ** This file is part of the kernel module of the TQt GUI Toolkit. ** ** This file may be used under the terms of the GNU General ** Public License versions 2.0 or 3.0 as published by the Free ** Software Foundation and appearing in the files LICENSE.GPL2 ** and LICENSE.GPL3 included in the packaging of this file. ** Alternatively you may (at your option) use any later version ** of the GNU General Public License if such license has been ** publicly approved by Trolltech ASA (or its successors, if any) ** and the KDE Free TQt Foundation. ** ** Please review the following information to ensure GNU General ** Public Licensing requirements will be met: ** http://trolltech.com/products/qt/licenses/licensing/opensource/. ** If you are unsure which license is appropriate for your use, please ** review the following information: ** http://trolltech.com/products/qt/licenses/licensing/licensingoverview ** or contact the sales department at sales@trolltech.com. ** ** This file may be used under the terms of the Q Public License as ** defined by Trolltech ASA and appearing in the file LICENSE.TQPL ** included in the packaging of this file. Licensees holding valid TQt ** Commercial licenses may use this file in accordance with the TQt ** Commercial License Agreement provided with the Software. ** ** This file is provided "AS IS" with NO WARRANTY OF ANY KIND, ** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted ** herein. ** **********************************************************************/ #ifndef TQSTYLE_H #define TQSTYLE_H #ifndef QT_H #include "ntqobject.h" #include "ntqpixmap.h" #include "ntqcolor.h" #include "ntqiconset.h" #include "ntqtabbar.h" #include "ntqtoolbutton.h" #endif // QT_H #ifndef QT_NO_STYLE class TQPopupMenu; class TQStylePrivate; class TQMenuItem; class TQTab; class TQListViewItem; class TQCheckListItem; class TQStyleOption { public: enum StyleOptionDefault { Default }; TQStyleOption(StyleOptionDefault=Default) : def(TRUE), tb(NULL), cli(NULL), tbh(NULL) {} // Note: we don't use default arguments since that is unnecessary // initialization. TQStyleOption(int in1) : def(FALSE), tb(NULL), i1(in1), cli(NULL), tbh(NULL) {} TQStyleOption(int in1, int in2) : def(FALSE), tb(NULL), i1(in1), i2(in2), cli(NULL), tbh(NULL) {} TQStyleOption(int in1, int in2, int in3, int in4) : def(FALSE), tb(NULL), i1(in1), i2(in2), i3(in3), i4(in4), cli(NULL), tbh(NULL) {} TQStyleOption(TQMenuItem* m) : def(FALSE), mi(m), tb(NULL), cli(NULL), tbh(NULL) {} TQStyleOption(TQMenuItem* m, int in1) : def(FALSE), mi(m), tb(NULL), i1(in1), cli(NULL), tbh(NULL) {} TQStyleOption(TQMenuItem* m, int in1, int in2) : def(FALSE), mi(m), tb(NULL), i1(in1), i2(in2), cli(NULL), tbh(NULL) {} TQStyleOption(const TQColor& c) : def(FALSE), tb(NULL), cl(&c), cli(NULL), tbh(NULL) {} TQStyleOption(TQTab* t) : def(FALSE), tb(t), cli(NULL), tbh(NULL) {} TQStyleOption(TQListViewItem* i) : def(FALSE), tb(NULL), li(i), cli(NULL), tbh(NULL) {} TQStyleOption(TQCheckListItem* i) : def(FALSE), tb(NULL), cli(i), tbh(NULL) {} TQStyleOption(TQt::ArrowType a) : def(FALSE), tb(NULL), i1((int)a), cli(NULL), tbh(NULL) {} TQStyleOption(const TQRect& r) : def(FALSE), tb(NULL), i1(r.x()), i2(r.y()), i3(r.width()), i4(r.height()), cli(NULL), tbh(NULL) {} TQStyleOption(TQWidget *w) : def(FALSE), tb(NULL), cli(NULL), p1((void*)w), tbh(NULL) {} bool isDefault() const { return def; } int day() const { return i1; } int lineWidth() const { return i1; } int midLineWidth() const { return i2; } int frameShape() const { return i3; } int frameShadow() const { return i4; } int headerSection() const { return i1; } TQMenuItem* menuItem() const { return mi; } int maxIconWidth() const { return i1; } int tabWidth() const { return i2; } const TQColor& color() const { return *cl; } TQTab* tab() const { return tb; } TQCheckListItem* checkListItem() const { return cli; } TQListViewItem* listViewItem() const { return li; } TQt::ArrowType arrowType() const { return (TQt::ArrowType)i1; } TQRect rect() const { return TQRect( i1, i2, i3, i4 ); } TQWidget* widget() const { return (TQWidget*)p1; } TQStyleOption(TQTab* t, TQTab* h) : def(FALSE), tb(t), cli(NULL), tbh(h) {} TQTab* hoverTab() const { return tbh; } private: // NOTE: none of these components have constructors. bool def; bool b1,b2,b3; // reserved TQMenuItem* mi; TQTab* tb; TQListViewItem* li; const TQColor* cl; int i1, i2, i3, i4; int i5, i6; // reserved TQCheckListItem* cli; void *p1, *p2, *p3, *p4; // reserved TQTab* tbh; // (padded to 64 bytes on some architectures) }; class TQStyleHintReturn; // not defined yet typedef TQMap DialogButtonSizeMap; typedef TQMap TabIdentifierIndexMap; class TQStyleControlElementGenericWidgetData; class TQStyleControlElementPopupMenuData { public: // }; class TQStyleControlElementCheckListItemData { public: bool dataValid; bool enabled; bool hasParent; int height; }; class TQStyleControlElementListViewData { public: bool rootDecorated; int itemMargin; }; class TQStyleControlElementSpinWidgetData { public: TQ_UINT32 buttonSymbols; TQRect upRect; TQRect downRect; bool upEnabled; bool downEnabled; }; class TQStyleControlElementTitleBarData { public: bool hasWindow; bool usesActiveColor; int windowState; TQString visibleText; }; class TQStyleControlElementDockWidgetData { public: bool hasDockArea; bool closeEnabled; TQt::Orientation areaOrientation; }; class TQStyleControlElementToolBarWidgetData { public: TQt::Orientation orientation; }; class TQStyleControlElementGenericWidgetData { public: TQStringList widgetObjectTypes; bool allDataPopulated; TQt::WFlags wflags; TQt::WindowState windowState; TQPixmap bgPixmap; TQBrush bgBrush; TQColor bgColor; TQPoint bgOffset; TQt::BackgroundMode backgroundMode; TQColor fgColor; TQColorGroup colorGroup; TQRect geometry; TQRect rect; TQPoint pos; TQPixmap icon; TQPalette palette; TQFont font; TQColor paletteBgColor; TQString name; TQString caption; }; class TQStyleControlElementTabBarData { public: int tabCount; int currentTabIndex; TQTabBar::Shape shape; TabIdentifierIndexMap identIndexMap; #ifdef Q_QDOC #else TQStyleControlElementGenericWidgetData cornerWidgets[4]; #endif enum CornerWidgetLocation { CWL_TopLeft = 0, CWL_TopRight = 1, CWL_BottomLeft = 2, CWL_BottomRight = 3 }; }; class Q_EXPORT TQStyleControlElementData { public: TQStringList widgetObjectTypes; bool allDataPopulated; TQt::WFlags wflags; TQt::WindowState windowState; TQPixmap bgPixmap; TQBrush bgBrush; TQColor bgColor; TQPoint bgOffset; TQt::BackgroundMode backgroundMode; TQPixmap fgPixmap; TQColor fgColor; TQColorGroup colorGroup; TQRect geometry; TQRect rect; TQPoint pos; TQPixmap icon; TQIconSet iconSet; TQString text; TQt::Orientation orientation; TQColor activeItemPaletteBgColor; TQPalette palette; int totalSteps; int currentStep; TQ_UINT32 tickMarkSetting; int tickInterval; int minSteps; int maxSteps; int startStep; int pageStep; int lineStep; int dlgVisibleButtons; DialogButtonSizeMap dlgVisibleSizeHints; TQString progressText; TQString textLabel; TQFont font; int percentageVisible; TQStyleControlElementDockWidgetData dwData; TQToolButton::TextPosition toolButtonTextPosition; int popupDelay; TQStyleControlElementTitleBarData titleBarData; TQStyleControlElementSpinWidgetData spinWidgetData; TQStyleControlElementGenericWidgetData parentWidgetData; TQStyleControlElementGenericWidgetData viewportData; TQStyleControlElementListViewData listViewData; TQStyleControlElementTabBarData tabBarData; TQStyleControlElementCheckListItemData checkListItemData; TQ_UINT32 comboBoxLineEditFlags; TQ_UINT32 frameStyle; TQRect sliderRect; TQPainter* activePainter; TQStyleControlElementToolBarWidgetData toolBarData; TQ_UINT32 comboBoxListBoxFlags; TQColor paletteBgColor; TQ_UINT32 parentWidgetFlags; TQString name; TQString caption; TQStyleControlElementGenericWidgetData topLevelWidgetData; TQ_UINT32 topLevelWidgetFlags; public: TQStyleControlElementData(); }; class Q_EXPORT TQStyleWidgetActionRequestData { public: TQStyleWidgetActionRequestData(); TQStyleWidgetActionRequestData(int metric1, int metric2=0); TQStyleWidgetActionRequestData(TQPalette palette, bool informWidgets = FALSE, const char* className = 0); TQStyleWidgetActionRequestData(TQFont font, bool informWidgets = FALSE, const char* className = 0); TQStyleWidgetActionRequestData(TQRect rect); TQStyleWidgetActionRequestData(TQPaintEvent* paintEvent); ~TQStyleWidgetActionRequestData(); public: bool bool1; bool bool2; int metric1; int metric2; TQPalette palette; TQFont font; TQRect rect; const char * cstr; TQString string; TQPaintEvent * paintEvent; }; typedef TQStyleWidgetActionRequestData TQStyleApplicationActionRequestData; class Q_EXPORT TQStyle: public TQObject { TQ_OBJECT public: TQStyle(); virtual ~TQStyle(); enum ControlElementFlags { CEF_None = 0x00000000, CEF_IsDefault = 0x00000001, CEF_AutoDefault = 0x00000002, CEF_IsActive = 0x00000004, CEF_IsDown = 0x00000008, CEF_IsOn = 0x00000010, CEF_IsEnabled = 0x00000020, CEF_BiState = 0x00000040, CEF_HasFocus = 0x00000080, CEF_IsMenuWidget = 0x00000100, CEF_IsContainerEmpty = 0x00000200, CEF_CenterIndicator = 0x00000400, CEF_IndicatorFollowsStyle = 0x00000800, CEF_UsesTextLabel = 0x00001000, CEF_UsesBigPixmap = 0x00002000, CEF_UseGenericParameters = 0x00004000, CEF_HasParentWidget = 0x00008000, CEF_HasPopupMenu = 0x00010000, CEF_IsCheckable = 0x00020000, CEF_HasFocusProxy = 0x00040000, CEF_IsEditable = 0x00080000, CEF_IsFlat = 0x00100000, CEF_IsActiveWindow = 0x00200000, CEF_IsTopLevel = 0x00400000, CEF_IsVisible = 0x00800000, CEF_IsShown = 0x01000000, CEF_HasMouse = 0x01000000 }; // New TQStyle API - most of these should probably be pure virtual // Old API // DEPRECATED virtual void polish( TQWidget * ); // New API virtual void polish( TQStyleControlElementData ceData, ControlElementFlags elementFlags, void * ); // Old API // DEPRECATED virtual void unPolish( TQWidget * ); // New API virtual void unPolish( TQStyleControlElementData ceData, ControlElementFlags elementFlags, void * ); // Old API // DEPRECATED virtual void polish( TQApplication * ); // New API virtual void applicationPolish( TQStyleControlElementData ceData, ControlElementFlags elementFlags, void * ); // Old API // DEPRECATED virtual void unPolish( TQApplication * ); // New API virtual void applicationUnPolish( TQStyleControlElementData ceData, ControlElementFlags elementFlags, void * ); virtual void polish( TQPalette & ); // Old API // DEPRECATED virtual void polishPopupMenu( TQPopupMenu* ); // New API virtual void polishPopupMenu( TQStyleControlElementData ceData, ControlElementFlags elementFlags, void * ) = 0; virtual TQRect itemRect( TQPainter *p, const TQRect &r, int flags, bool enabled, const TQPixmap *pixmap, const TQString &text, int len = -1 ) const; virtual void drawItem( TQPainter *p, const TQRect &r, int flags, const TQColorGroup &g, bool enabled, const TQPixmap *pixmap, const TQString &text, int len = -1, const TQColor *penColor = 0 ) const; enum PrimitiveElement { PE_ButtonCommand, PE_ButtonDefault, PE_ButtonBevel, PE_ButtonTool, PE_ButtonDropDown, PE_FocusRect, PE_ArrowUp, PE_ArrowDown, PE_ArrowRight, PE_ArrowLeft, PE_SpinWidgetUp, PE_SpinWidgetDown, PE_SpinWidgetPlus, PE_SpinWidgetMinus, PE_Indicator, PE_IndicatorMask, PE_ExclusiveIndicator, PE_ExclusiveIndicatorMask, PE_DockWindowHandle, PE_DockWindowSeparator, PE_DockWindowResizeHandle, PE_Splitter, PE_Panel, PE_PanelPopup, PE_PanelMenuBar, PE_PanelDockWindow, PE_TabBarBase, PE_HeaderSection, PE_HeaderArrow, PE_StatusBarSection, PE_GroupBoxFrame, PE_Separator, PE_SizeGrip, PE_CheckMark, PE_ScrollBarAddLine, PE_ScrollBarSubLine, PE_ScrollBarAddPage, PE_ScrollBarSubPage, PE_ScrollBarSlider, PE_ScrollBarFirst, PE_ScrollBarLast, PE_ProgressBarChunk, PE_PanelLineEdit, PE_PanelTabWidget, PE_WindowFrame, PE_CheckListController, PE_CheckListIndicator, PE_CheckListExclusiveIndicator, PE_PanelGroupBox, PE_RubberBand, PE_HeaderSectionMenu, PE_PanelScrollBar, PE_MenuItemIndicatorFrame, PE_MenuItemIndicatorIconFrame, PE_MenuItemIndicatorCheck, PE_ScrollBarTrough, // do not add any values below/greater this PE_CustomBase = 0xf000000 }; enum StyleFlags { Style_Default = 0x00000000, Style_Enabled = 0x00000001, Style_Raised = 0x00000002, Style_Sunken = 0x00000004, Style_Off = 0x00000008, Style_NoChange = 0x00000010, Style_On = 0x00000020, Style_Down = 0x00000040, Style_Horizontal = 0x00000080, Style_HasFocus = 0x00000100, Style_Top = 0x00000200, Style_Bottom = 0x00000400, Style_FocusAtBorder = 0x00000800, Style_AutoRaise = 0x00001000, Style_MouseOver = 0x00002000, Style_Up = 0x00004000, Style_Selected = 0x00008000, Style_Active = 0x00010000, Style_ButtonDefault = 0x00020000 }; typedef uint SFlags; // Old API // DEPRECATED virtual void drawPrimitive( PrimitiveElement pe, TQPainter *p, const TQRect &r, const TQColorGroup &cg, SFlags flags = Style_Default, const TQStyleOption& = TQStyleOption::Default ) const; // New API virtual void drawPrimitive( PrimitiveElement pe, TQPainter *p, TQStyleControlElementData ceData, ControlElementFlags elementFlags, const TQRect &r, const TQColorGroup &cg, SFlags flags = Style_Default, const TQStyleOption& = TQStyleOption::Default ) const = 0; enum ControlElement { CE_PushButton, CE_PushButtonLabel, CE_CheckBox, CE_CheckBoxLabel, CE_RadioButton, CE_RadioButtonLabel, CE_TabBarTab, CE_TabBarLabel, CE_ProgressBarGroove, CE_ProgressBarContents, CE_ProgressBarLabel, CE_PopupMenuItem, CE_MenuBarItem, CE_ToolButtonLabel, CE_MenuBarEmptyArea, CE_PopupMenuScroller, CE_DockWindowEmptyArea, CE_PopupMenuVerticalExtra, CE_PopupMenuHorizontalExtra, CE_ToolBoxTab, CE_HeaderLabel, // do not add any values below/greater than this CE_CustomBase = 0xf0000000 }; // Old API // DEPRECATED virtual void drawControl( ControlElement element, TQPainter *p, const TQWidget *widget, const TQRect &r, const TQColorGroup &cg, SFlags how = Style_Default, const TQStyleOption& = TQStyleOption::Default ) const; // New API virtual void drawControl( ControlElement element, TQPainter *p, TQStyleControlElementData ceData, ControlElementFlags elementFlags, const TQRect &r, const TQColorGroup &cg, SFlags how = Style_Default, const TQStyleOption& = TQStyleOption::Default, const TQWidget *widget = 0 /* compat, will likely go away */ ) const = 0; // Old API // DEPRECATED virtual void drawControlMask( ControlElement element, TQPainter *p, const TQWidget *widget, const TQRect &r, const TQStyleOption& = TQStyleOption::Default ) const; // New API virtual void drawControlMask( ControlElement element, TQPainter *p, TQStyleControlElementData ceData, ControlElementFlags elementFlags, const TQRect &r, const TQStyleOption& = TQStyleOption::Default, const TQWidget *widget = 0 /* compat, will likely go away */ ) const = 0; enum SubRect { SR_PushButtonContents, SR_PushButtonFocusRect, SR_CheckBoxIndicator, SR_CheckBoxContents, SR_CheckBoxFocusRect, SR_RadioButtonIndicator, SR_RadioButtonContents, SR_RadioButtonFocusRect, SR_ComboBoxFocusRect, SR_SliderFocusRect, SR_DockWindowHandleRect, SR_ProgressBarGroove, SR_ProgressBarContents, SR_ProgressBarLabel, SR_ToolButtonContents, SR_DialogButtonAccept, SR_DialogButtonReject, SR_DialogButtonApply, SR_DialogButtonHelp, SR_DialogButtonAll, SR_DialogButtonAbort, SR_DialogButtonIgnore, SR_DialogButtonRetry, SR_DialogButtonCustom, SR_ToolBoxTabContents, // do not add any values below/greater than this SR_CustomBase = 0xf0000000 }; // Old API // DEPRECATED virtual TQRect subRect( SubRect r, const TQWidget *widget ) const; // New API virtual TQRect subRect( SubRect r, const TQStyleControlElementData ceData, const ControlElementFlags elementFlags, const TQWidget *widget ) const = 0; enum ComplexControl{ CC_SpinWidget, CC_ComboBox, CC_ScrollBar, CC_Slider, CC_ToolButton, CC_TitleBar, CC_ListView, // do not add any values below/greater than this CC_CustomBase = 0xf0000000 }; enum SubControl { SC_None = 0x00000000, SC_ScrollBarAddLine = 0x00000001, SC_ScrollBarSubLine = 0x00000002, SC_ScrollBarAddPage = 0x00000004, SC_ScrollBarSubPage = 0x00000008, SC_ScrollBarFirst = 0x00000010, SC_ScrollBarLast = 0x00000020, SC_ScrollBarSlider = 0x00000040, SC_ScrollBarGroove = 0x00000080, SC_SpinWidgetUp = 0x00000001, SC_SpinWidgetDown = 0x00000002, SC_SpinWidgetFrame = 0x00000004, SC_SpinWidgetEditField = 0x00000008, SC_SpinWidgetButtonField = 0x00000010, SC_ComboBoxFrame = 0x00000001, SC_ComboBoxEditField = 0x00000002, SC_ComboBoxArrow = 0x00000004, SC_ComboBoxListBoxPopup = 0x00000008, SC_SliderGroove = 0x00000001, SC_SliderHandle = 0x00000002, SC_SliderTickmarks = 0x00000004, SC_ToolButton = 0x00000001, SC_ToolButtonMenu = 0x00000002, SC_TitleBarLabel = 0x00000001, SC_TitleBarSysMenu = 0x00000002, SC_TitleBarMinButton = 0x00000004, SC_TitleBarMaxButton = 0x00000008, SC_TitleBarCloseButton = 0x00000010, SC_TitleBarNormalButton = 0x00000020, SC_TitleBarShadeButton = 0x00000040, SC_TitleBarUnshadeButton = 0x00000080, SC_ListView = 0x00000001, SC_ListViewBranch = 0x00000002, SC_ListViewExpand = 0x00000004, SC_All = 0xffffffff }; typedef uint SCFlags; // Old API // DEPRECATED virtual void drawComplexControl( ComplexControl control, TQPainter *p, const TQWidget *widget, const TQRect &r, const TQColorGroup &cg, SFlags how = Style_Default, #ifdef Q_QDOC SCFlags sub = SC_All, #else SCFlags sub = (uint)SC_All, #endif SCFlags subActive = SC_None, const TQStyleOption& = TQStyleOption::Default ) const; virtual void drawComplexControl( ComplexControl control, TQPainter *p, TQStyleControlElementData ceData, ControlElementFlags elementFlags, const TQRect &r, const TQColorGroup &cg, SFlags how = Style_Default, #ifdef Q_QDOC SCFlags sub = SC_All, #else SCFlags sub = (uint)SC_All, #endif SCFlags subActive = SC_None, const TQStyleOption& = TQStyleOption::Default, const TQWidget *widget = 0 ) const = 0; // Old API // DEPRECATED virtual void drawComplexControlMask( ComplexControl control, TQPainter *p, const TQWidget *widget, const TQRect &r, const TQStyleOption& = TQStyleOption::Default ) const; // New API virtual void drawComplexControlMask( ComplexControl control, TQPainter *p, const TQStyleControlElementData ceData, const ControlElementFlags elementFlags, const TQRect &r, const TQStyleOption& = TQStyleOption::Default, const TQWidget *widget = 0 ) const = 0; // Old API // DEPRECATED virtual TQRect querySubControlMetrics( ComplexControl control, const TQWidget *widget, SubControl sc, const TQStyleOption& = TQStyleOption::Default ) const; // New API virtual TQRect querySubControlMetrics( ComplexControl control, TQStyleControlElementData ceData, ControlElementFlags elementFlags, SubControl sc, const TQStyleOption& = TQStyleOption::Default, const TQWidget *widget = 0 ) const = 0; // Old API // DEPRECATED virtual SubControl querySubControl( ComplexControl control, const TQWidget *widget, const TQPoint &pos, const TQStyleOption& = TQStyleOption::Default ) const; // New API virtual SubControl querySubControl( ComplexControl control, TQStyleControlElementData ceData, ControlElementFlags elementFlags, const TQPoint &pos, const TQStyleOption& = TQStyleOption::Default, const TQWidget *widget = 0 ) const = 0; enum PixelMetric { PM_ButtonMargin, PM_ButtonDefaultIndicator, PM_MenuButtonIndicator, PM_ButtonShiftHorizontal, PM_ButtonShiftVertical, PM_DefaultFrameWidth, PM_SpinBoxFrameWidth, PM_MaximumDragDistance, PM_ScrollBarExtent, PM_ScrollBarSliderMin, PM_SliderThickness, // total slider thickness PM_SliderControlThickness, // thickness of the business part PM_SliderLength, // total length of slider PM_SliderTickmarkOffset, // PM_SliderSpaceAvailable, // available space for slider to move PM_DockWindowSeparatorExtent, PM_DockWindowHandleExtent, PM_DockWindowFrameWidth, PM_MenuBarFrameWidth, PM_TabBarTabOverlap, PM_TabBarTabHSpace, PM_TabBarTabVSpace, PM_TabBarBaseHeight, PM_TabBarBaseOverlap, PM_ProgressBarChunkWidth, PM_SplitterWidth, PM_TitleBarHeight, PM_IndicatorWidth, PM_IndicatorHeight, PM_ExclusiveIndicatorWidth, PM_ExclusiveIndicatorHeight, PM_PopupMenuScrollerHeight, PM_CheckListButtonSize, PM_CheckListControllerSize, PM_PopupMenuFrameHorizontalExtra, PM_PopupMenuFrameVerticalExtra, PM_DialogButtonsSeparator, PM_DialogButtonsButtonWidth, PM_DialogButtonsButtonHeight, PM_MDIFrameWidth, PM_MDIMinimizedWidth, PM_HeaderMargin, PM_HeaderMarkSize, PM_HeaderGripMargin, PM_TabBarTabShiftHorizontal, PM_TabBarTabShiftVertical, PM_TabBarScrollButtonWidth, PM_MenuBarItemSpacing, PM_ToolBarItemSpacing, PM_MenuIndicatorFrameHBorder, PM_MenuIndicatorFrameVBorder, PM_MenuIconIndicatorFrameHBorder, PM_MenuIconIndicatorFrameVBorder, PM_ArrowSize, // do not add any values below/greater than this PM_CustomBase = 0xf0000000 }; // Old API // DEPRECATED virtual int pixelMetric( PixelMetric metric, const TQWidget *widget = 0 ) const; // New API virtual int pixelMetric( PixelMetric metric, TQStyleControlElementData ceData, ControlElementFlags elementFlags, const TQWidget *widget = 0 ) const = 0; enum ContentsType { CT_PushButton, CT_CheckBox, CT_RadioButton, CT_ToolButton, CT_ComboBox, CT_Splitter, CT_DockWindow, CT_ProgressBar, CT_PopupMenuItem, CT_TabBarTab, CT_Slider, CT_Header, CT_LineEdit, CT_MenuBar, CT_SpinBox, CT_SizeGrip, CT_TabWidget, CT_DialogButtons, // do not add any values below/greater than this CT_CustomBase = 0xf0000000 }; // Old API // DEPRECATED virtual TQSize sizeFromContents( ContentsType contents, const TQWidget *widget, const TQSize &contentsSize, const TQStyleOption& = TQStyleOption::Default ) const; virtual TQSize sizeFromContents( ContentsType contents, TQStyleControlElementData ceData, ControlElementFlags elementFlags, const TQSize &contentsSize, const TQStyleOption& = TQStyleOption::Default, const TQWidget *widget = 0 ) const = 0; enum StyleHint { // ... // the general hints // ... // disabled text should be etched, ala Windows SH_EtchDisabledText, // the GUI style enum, argh! SH_GUIStyle, // ... // widget specific hints // ... SH_ScrollBar_BackgroundMode, SH_ScrollBar_MiddleClickAbsolutePosition, SH_ScrollBar_ScrollWhenPointerLeavesControl, // TQEvent::Type - which mouse event to select a tab SH_TabBar_SelectMouseType, SH_TabBar_Alignment, SH_Header_ArrowAlignment, // bool - sliders snap to values while moving, ala Windows SH_Slider_SnapToValue, // bool - key presses handled in a sloppy manner - ie. left on a vertical // slider subtracts a line SH_Slider_SloppyKeyEvents, // bool - center button on progress dialogs, ala Motif, else right aligned // perhaps this should be a TQt::Alignment value SH_ProgressDialog_CenterCancelButton, // TQt::AlignmentFlags - text label alignment in progress dialogs // Center on windows, Auto|VCenter otherwize SH_ProgressDialog_TextLabelAlignment, // bool - right align buttons on print dialog, ala Windows SH_PrintDialog_RightAlignButtons, // bool - 1 or 2 pixel space between the menubar and the dockarea, ala Windows // this *REALLY* needs a better name SH_MainWindow_SpaceBelowMenuBar, // bool - select the text in the line edit about the listbox when selecting // an item from the listbox, or when the line edit receives focus, ala Windows SH_FontDialog_SelectAssociatedText, // bool - allows disabled menu items to be active SH_PopupMenu_AllowActiveAndDisabled, // bool - pressing space activates item, ala Motif SH_PopupMenu_SpaceActivatesItem, // int - number of milliseconds to wait before opening a submenu // 256 on windows, 96 on motif SH_PopupMenu_SubMenuPopupDelay, // bool - should scrollviews draw their frame only around contents (ala Motif), // or around contents, scrollbars and corner widgets (ala Windows) ? SH_ScrollView_FrameOnlyAroundContents, // bool - menubars items are navigatable by pressing alt, followed by using // the arrow keys to select the desired item SH_MenuBar_AltKeyNavigation, // bool - mouse tracking in combobox dropdown lists SH_ComboBox_ListMouseTracking, // bool - mouse tracking in popupmenus SH_PopupMenu_MouseTracking, // bool - mouse tracking in menubars SH_MenuBar_MouseTracking, // bool - gray out selected items when loosing focus SH_ItemView_ChangeHighlightOnFocus, // bool - supports shared activation among modeless widgets SH_Widget_ShareActivation, // bool - workspace should just maximize the client area SH_Workspace_FillSpaceOnMaximize, // bool - supports popup menu comboboxes SH_ComboBox_Popup, // bool - titlebar has no border SH_TitleBar_NoBorder, // bool - stop scrollbar at mouse SH_ScrollBar_StopMouseOverSlider, //bool - blink cursort with selected text SH_BlinkCursorWhenTextSelected, //bool - richtext selections extend the full width of the docuemnt SH_RichText_FullWidthSelection, //bool - popupmenu supports scrolling instead of multicolumn mode SH_PopupMenu_Scrollable, // TQt::AlignmentFlags - text label vertical alignment in groupboxes // Center on windows, Auto|VCenter otherwize SH_GroupBox_TextLabelVerticalAlignment, // TQt::TQRgb - text label color in groupboxes SH_GroupBox_TextLabelColor, // bool - popupmenu supports sloppy submenus SH_PopupMenu_SloppySubMenus, // TQt::TQRgb - table grid color SH_Table_GridLineColor, // TQChar - Unicode character for password char SH_LineEdit_PasswordCharacter, // TQDialogButtons::Button - default button SH_DialogButtons_DefaultButton, // TQToolBox - Boldness of the selected page title SH_ToolBox_SelectedPageTitleBold, //bool - if a tabbar prefers not to have scroller arrows SH_TabBar_PreferNoArrows, //bool - if left button should cause an absolute position SH_ScrollBar_LeftClickAbsolutePosition, // TQEvent::Type - which mouse event to select a list view expansion SH_ListViewExpand_SelectMouseType, //bool - if underline for accelerators SH_UnderlineAccelerator, // bool - TQToolButton - if tool buttons should use a 3D frame // when the mouse is over the button SH_ToolButton_Uses3D, // bool - hide underlined accelerators uless Alt key is currently down SH_HideUnderlineAcceleratorWhenAltUp, // int - width of menu check column SH_MenuIndicatorColumnWidth, // bool - whether or not the lower two button drawing areas should be combined into one SH_ScrollBar_CombineAddLineRegionDrawingAreas, // bool - whether or not the upper two button drawing areas should be combined into one SH_ScrollBar_CombineSubLineRegionDrawingAreas, // do not add any values below/greater than this SH_CustomBase = 0xf0000000 }; // Old API // DEPRECATED virtual int styleHint( StyleHint stylehint, const TQWidget *widget = 0, const TQStyleOption& = TQStyleOption::Default, TQStyleHintReturn* returnData = 0 ) const; // New API virtual int styleHint( StyleHint stylehint, TQStyleControlElementData ceData, ControlElementFlags elementFlags, const TQStyleOption& = TQStyleOption::Default, TQStyleHintReturn* returnData = 0, const TQWidget *widget = 0 ) const = 0; enum StylePixmap { SP_TitleBarMinButton, SP_TitleBarMaxButton, SP_TitleBarCloseButton, SP_TitleBarNormalButton, SP_TitleBarShadeButton, SP_TitleBarUnshadeButton, SP_DockWindowCloseButton, SP_MessageBoxInformation, SP_MessageBoxWarning, SP_MessageBoxCritical, SP_MessageBoxQuestion, // do not add any values below/greater than this SP_CustomBase = 0xf0000000 }; // Old API // DEPRECATED virtual TQPixmap stylePixmap( StylePixmap stylepixmap, const TQWidget *widget = 0, const TQStyleOption& = TQStyleOption::Default ) const; virtual TQPixmap stylePixmap( StylePixmap stylepixmap, TQStyleControlElementData ceData, ControlElementFlags elementFlags, const TQStyleOption& = TQStyleOption::Default, const TQWidget *widget = 0 ) const = 0; // Old API // DEPRECATED static TQRect visualRect( const TQRect &logical, const TQWidget *w ); // New API static TQRect visualRect( const TQRect &logical, const TQStyleControlElementData ceData, const ControlElementFlags elementFlags ); static TQRect visualRect( const TQRect &logical, const TQRect &bounding ); // Object event handling API typedef TQMap ObjectEventSourceToHandlerMap; typedef TQMap ObjectEventSourceDataToHandlerMap; typedef TQMap ObjectEventSourceFlagsToHandlerMap; typedef bool (*EventHandlerInstallationHook)(TQStyleControlElementData ceData, ControlElementFlags elementFlags, void* source, TQStyle* handler); typedef bool (*EventHandlerRemovalHook)(TQStyleControlElementData ceData, ControlElementFlags elementFlags, void* source, TQStyle* handler); void installObjectEventHandler( TQStyleControlElementData ceData, ControlElementFlags elementFlags, void* source, TQStyle* handler ); void removeObjectEventHandler( TQStyleControlElementData ceData, ControlElementFlags elementFlags, void* source, TQStyle* handler ); void setEventHandlerInstallationHook( EventHandlerInstallationHook ); void setEventHandlerRemovalHook( EventHandlerRemovalHook hook ); virtual bool objectEventHandler( TQStyleControlElementData ceData, ControlElementFlags elementFlags, void* source, TQEvent *e ); enum WidgetActionRequest { WAR_Repaint, WAR_RepaintRect, WAR_EnableMouseTracking, WAR_DisableMouseTracking, WAR_SetAutoMask, WAR_UnSetAutoMask, WAR_SetCheckable, WAR_UnSetCheckable, WAR_FrameSetStyle, WAR_FrameSetLineWidth, WAR_SetLayoutMargin, WAR_SetPalette, WAR_SetBackgroundMode, WAR_SetBackgroundOrigin, WAR_SetFont, WAR_RepaintAllAccelerators, WAR_SetDefault, WAR_UnSetDefault, WAR_SendPaintEvent }; typedef bool (*WidgetActionRequestHook)(TQStyleControlElementData ceData, ControlElementFlags elementFlags, void* source, WidgetActionRequest request, TQStyleWidgetActionRequestData requestData); void setWidgetActionRequestHook( WidgetActionRequestHook ); virtual bool widgetActionRequest( TQStyleControlElementData ceData, ControlElementFlags elementFlags, void* source, WidgetActionRequest request, TQStyleWidgetActionRequestData requestData = TQStyleWidgetActionRequestData() ); enum ApplicationActionRequest { AAR_SetPalette, AAR_SetFont }; typedef bool (*ApplicationActionRequestHook)(TQStyleControlElementData ceData, ControlElementFlags elementFlags, void* source, ApplicationActionRequest request, TQStyleApplicationActionRequestData requestData); void setApplicationActionRequestHook( ApplicationActionRequestHook ); virtual bool applicationActionRequest( TQStyleControlElementData ceData, ControlElementFlags elementFlags, void* source, ApplicationActionRequest request, TQStyleApplicationActionRequestData requestData = TQStyleApplicationActionRequestData() ); // Old 2.x TQStyle API #ifndef QT_NO_COMPAT int defaultFrameWidth() const { return pixelMetric( PM_DefaultFrameWidth, TQStyleControlElementData(), CEF_None ); } void tabbarMetrics( const TQWidget* t, int& hf, int& vf, int& ov ) const { hf = pixelMetric( PM_TabBarTabHSpace, TQStyleControlElementData(), CEF_None, t ); vf = pixelMetric( PM_TabBarTabVSpace, TQStyleControlElementData(), CEF_None, t ); ov = pixelMetric( PM_TabBarBaseOverlap, TQStyleControlElementData(), CEF_None, t ); } TQSize scrollBarExtent() const { return TQSize(pixelMetric(PM_ScrollBarExtent, TQStyleControlElementData(), CEF_None), pixelMetric(PM_ScrollBarExtent, TQStyleControlElementData(), CEF_None)); } #endif public: virtual bool eventFilter( TQObject *, TQEvent * ); bool acceleratorsShown() const; protected: void acceleratorKeypressEventMonitor( TQObject *, TQEvent * ); private: TQStylePrivate * d; #if defined(TQ_DISABLE_COPY) TQStyle( const TQStyle & ); TQStyle& operator=( const TQStyle & ); #endif EventHandlerInstallationHook m_eventHandlerInstallationHook; EventHandlerRemovalHook m_eventHandlerRemovalHook; WidgetActionRequestHook m_widgetActionRequestHook; ApplicationActionRequestHook m_applicationActionRequestHook; ObjectEventSourceToHandlerMap m_objectEventSourceToHandlerMap; ObjectEventSourceDataToHandlerMap m_objectEventSourceDataToHandlerMap; ObjectEventSourceFlagsToHandlerMap m_objectEventSourceFlagsToHandlerMap; bool conditionalAcceleratorsEnabled; }; inline TQStyle::ControlElementFlags operator|(const TQStyle::ControlElementFlags a, const TQStyle::ControlElementFlags b) { return static_cast(static_cast(a) | static_cast(b)); } // inline TQStyle::ControlElementFlags operator|=(TQStyle::ControlElementFlags &a, const TQStyle::ControlElementFlags b) { a = static_cast(static_cast(a) | static_cast(b)); return a; } Q_EXPORT TQStyleControlElementData populateControlElementDataFromWidget(const TQWidget* widget, const TQStyleOption& opt, bool populateReliantFields=true); Q_EXPORT TQStyleControlElementData populateControlElementDataFromApplication(const TQApplication* app, const TQStyleOption& opt, bool populateReliantFields=true); Q_EXPORT TQStyle::ControlElementFlags getControlElementFlagsForObject(const TQObject* object, TQStringList objectTypeList, const TQStyleOption& opt, bool populateReliantFields=true); Q_EXPORT TQStringList getObjectTypeListForObject(const TQObject* object); Q_EXPORT TQStyleControlElementData populateControlElementDataFromWidget(const TQWidget* widget, const TQStyleOption& opt, bool populateReliantFields, bool populateMinimumNumberOfFields); #endif // QT_NO_STYLE #endif // TQSTYLE_H