kde-style-polyester-2.0.0.orig/0000755000175000001440000000000011146642105015261 5ustar pinouserskde-style-polyester-2.0.0.orig/AUTHORS0000644000175000001440000000030611146600215016324 0ustar pinousersMarco Martin Window decoration: based on Smootblend by Ryan Nickell Widget style: based on Plastik by Sandro Giessl kde-style-polyester-2.0.0.orig/style/0000755000175000001440000000000011146642105016421 5ustar pinouserskde-style-polyester-2.0.0.orig/style/misc.h0000755000175000001440000000165011146600215017526 0ustar pinousers/* * Copyright 2003, Sandro Giessl * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License version 2 as published by the Free Software Foundation. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public License * along with this library; see the file COPYING.LIB. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef __MISC_H #define __MISC_H QColor alphaBlendColors(const QColor &backgroundColor, const QColor &foregroundColor, const int alpha); #endif // __MISC_H kde-style-polyester-2.0.0.orig/style/qmake.pro0000644000175000001440000000005411146600215020234 0ustar pinousersTEMPLATE = subdirs SUBDIRS += polyester.pro kde-style-polyester-2.0.0.orig/style/CMakeLists.txt0000644000175000001440000000103511146600215021154 0ustar pinousersproject(libpolyester) ########### next target ############### add_subdirectory( config ) set( polyester_SRCS polyester.cpp drawcontrol.cpp scrollareaborder.cpp misc.cpp ) include(${QT_USE_FILE}) kde4_add_plugin(libpolyester ${polyester_SRCS} ) target_link_libraries( libpolyester ${KDE4_KDEUI_LIBS} ) install( TARGETS libpolyester DESTINATION ${PLUGIN_INSTALL_DIR}/plugins/styles/ ) ########### install files ############### install( FILES polyester.themerc DESTINATION ${DATA_INSTALL_DIR}/kstyle/themes ) kde-style-polyester-2.0.0.orig/style/polyester.themerc0000755000175000001440000000017311146600215022020 0ustar pinousers[Misc] Name=Polyester ConfigPage=libpolyester_config Comment=An almost simple and clean style [KDE] WidgetStyle=Polyester kde-style-polyester-2.0.0.orig/style/polyester.pro0000644000175000001440000000057111146600215021170 0ustar pinousersHEADERS = misc.h polyester.h scrollareaborder.h SOURCES = polyester.cpp drawcontrol.cpp scrollareaborder.cpp misc.cpp TEMPLATE = lib PLUGIN = true CONFIG += qt x11 plugin QT += qt3support VERSION = 1.90 target.path += $$[QT_INSTALL_PLUGINS]/styles DATA.files = polyester.themerc DATA.path += $$(KDEDIR)/share/apps/kstyle/themes/ INSTALLS += target DATA DEFINES += NO_KDEkde-style-polyester-2.0.0.orig/style/polyester.h0000755000175000001440000004362211146600215020626 0ustar pinousers/* Polyester widget style for KDE 3 Copyright (C) 2005 Marco Martin based on Plastik widget style for KDE 3 Copyright (C) 2003 Sandro Giessl based on the KDE style "dotNET": Copyright (C) 2001-2002, Chris Lee Carsten Pfeiffer Karol Szwed Drawing routines completely reimplemented from KDE3 HighColor, which was originally based on some stuff from the KDE2 HighColor. based on drawing routines of the style "Keramik": Copyright (c) 2002 Malte Starostik (c) 2002,2003 Maksim Orlovich based on the KDE3 HighColor Style Copyright (C) 2001-2002 Karol Szwed (C) 2001-2002 Fredrik Höglund Drawing routines adapted from the KDE2 HCStyle, Copyright (C) 2000 Daniel M. Duley (C) 2000 Dirk Mueller (C) 2001 Martijn Klingens Progressbar code based on KStyle, Copyright (C) 2001-2002 Karol Szwed This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License version 2 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef __POLYESTER_H #define __POLYESTER_H #include #ifdef NO_KDE #include #else #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "misc.h" #include "scrollareaborder.h" #define u_arrow -4,1, 2,1, -3,0, 1,0, -2,-1, 0,-1, -1,-2 #define d_arrow -4,-2, 2,-2, -3,-1, 1,-1, -2,0, 0,0, -1,1 #define l_arrow 0,-3, 0,3,-1,-2,-1,2,-2,-1,-2,1,-3,0 #define r_arrow -2,-3,-2,3,-1,-2, -1,2,0,-1,0,1,1,0 #define PI 3.14159265 #define QCOORDARRLEN(x) sizeof(x)/(sizeof(QCOORD)*2) // popupmenu item constants... static const int itemHMargin = 6; static const int itemVMargin = 0; static const int itemFrame = 2; static const int dockWidgetButtonSize = 12; static const int arrowHMargin = 6; static const int rightBorder = 12; static const uint TIMERINTERVAL = 25; // msec static const int ANIMATIONSTEPS = 20; //a tiny reimplementation of max... //int max(int a, int b){return (a>b?a:b);} class PolyesterStyle : public #ifdef NO_KDE QWindowsStyle #else KStyle #endif { Q_OBJECT public: PolyesterStyle(); virtual ~PolyesterStyle(); void polish(QApplication* app ); void polish(QWidget* widget ); void polish(QPalette& pal); void unpolish(QWidget* widget ); void unpolish(QApplication* app ); /*void drawKStylePrimitive(KStylePrimitive kpe, QPainter* p, const QWidget* widget, const QRect &r, const QColorGroup &cg, SFlags flags = Style_Default, const QStyleOption& = QStyleOption::Default ) const;*/ QRect subControlRect(ComplexControl control, const QStyleOptionComplex *opt, SubControl subcontrol, const QWidget *widget) const; QStyle::SubControl hitTestComplexControl(ComplexControl control, const QStyleOptionComplex *option, const QPoint &position, const QWidget *widget) const; void drawPrimitive(PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget = 0) const; void drawControl(ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget = 0) const; void drawComplexControl(ComplexControl control, const QStyleOptionComplex *option, QPainter *painter, const QWidget *widget = 0) const; //void drawControlMask( ControlElement, QPainter *, const QWidget *, const QRect &, const QStyleOption &) const; int pixelMetric(PixelMetric metric, const QStyleOption *option = 0, const QWidget *widget = 0) const; //int kPixelMetric(KStylePixelMetric kpm, const QWidget *widget) const; QRect subElementRect(SubElement element, const QStyleOption *option, const QWidget *widget) const; /* QRect subControlRect(ComplexControl control, const QStyleOptionComplex *option, SubControl subcontrol, const QWidget *widget = 0) const;*/ /*QRect querySubControlMetrics(ComplexControl control, const QWidget *widget, SubControl subcontrol, const QStyleOption &opt = QStyleOption::Default ) const;*/ /*void drawComplexControlMask(QStyle::ComplexControl c, QPainter *p, const QWidget *w, const QRect &r, const QStyleOption &o=QStyleOption::Default) const;*/ QSize sizeFromContents(ContentsType type, const QStyleOption* option, const QSize& contentsSize, const QWidget* widget) const; int styleHint(StyleHint hint, const QStyleOption *option = 0, const QWidget *widget = 0, QStyleHintReturn *data = 0) const; protected Q_SLOTS: QIcon standardIconImplementation(StandardPixmap standardIcon, const QStyleOption *option, const QWidget *widget = 0) const; protected: /* enum TabPosition { First = 0, Middle, Last, Single // only one tab! };*/ enum SelectedTab { ThisTab, NextTab, PrevTab, OtherTab }; enum ColorType { ButtonContour, DragButtonContour, DragButtonSurface, PanelContour, PanelLight, PanelLight2, PanelDark, PanelDark2, MouseOverHighlight, FocusHighlight, CheckMark, MenuBarEmphasis }; enum WidgetState { IsEnabled, IsPressed, // implies IsEnabled IsHighlighted, // implies IsEnabled IsDisabled }; // the only way i see to provide all these options // to renderContour/renderSurface... enum SurfaceFlags { Draw_Left = 0x00000001, Draw_Right = 0x00000002, Draw_Top = 0x00000004, Draw_Bottom = 0x00000008, Highlight_Left = 0x00000010, // surface Highlight_Right = 0x00000020, // surface Highlight_Top = 0x00000040, // surface Highlight_Bottom = 0x00000080, // surface Is_Sunken = 0x00000100, // surface Is_Horizontal = 0x00000200, // surface Is_Highlight = 0x00000400, // surface Is_Default = 0x00000800, // surface Is_Disabled = 0x00001000, Round_UpperLeft = 0x00002000, Round_UpperRight = 0x00004000, Round_BottomLeft = 0x00008000, Round_BottomRight = 0x00010000, Draw_AlphaBlend = 0x00020000, Sharp_UpperLeft = 0x00040000, Sharp_UpperRight = 0x00080000, Sharp_BottomLeft = 0x00100000, Sharp_BottomRight = 0x00200000 }; static const uint defaultFlags = Draw_Left|Draw_Right|Draw_Top|Draw_Bottom| Round_UpperLeft|Round_UpperRight|Round_BottomLeft|Round_BottomRight| Is_Horizontal; enum ScrollBarType { ThreeButtonScrollBar, WindowsStyleScrollBar, PlatinumStyleScrollBar, NextStyleScrollBar, NoButtonsScrollBar }; enum Direction { Up, Down, Left, Right }; void renderContour(QPainter *p, const QRect &r, const QColor &backgroundColor, const QColor &contourColor, const uint flags = Draw_Left|Draw_Right|Draw_Top|Draw_Bottom| Round_UpperLeft|Round_UpperRight|Round_BottomLeft|Round_BottomRight) const; void renderMask(QPainter *p, const QRect &r, const QColor &color, const uint flags = Draw_Left|Draw_Right|Draw_Top|Draw_Bottom| Round_UpperLeft|Round_UpperRight|Round_BottomLeft|Round_BottomRight) const; void renderArrow( QPainter *p, const QRect &rect, const QColor color, Direction direction ) const; QBrush getSurfaceBrush(const QRect &r, const QColor &backgroundColor, bool horizontal = true) const; QBrush getShadowBrush(const QRect &r, const QColor &backgroundColor, bool horizontal = true) const; QBrush getTransparentShadowBrush(const QRect &r, QColor shadowColor, bool horizontal = true, bool invert = false, int alpha = 80) const; void renderSunkenShadow(QPainter *p, const QRect &r, const QColor &shadowColor = Qt::black, const uint flags = Draw_Top|Draw_Bottom|Draw_Left|Draw_Right, bool horizontal = true) const; void adjustScrollbarBorders(const QRect &borderRect, QRect *surfRect, const QWidget *widget, uint *contourFlags, uint *surfaceFlags, bool *hasFocus) const; void renderSurface(QPainter *p, const QRect &r, const QColor &backgroundColor, const QColor &buttonColor, const QColor &highlightColor, int intensity = 5, const uint flags = Draw_Left|Draw_Right|Draw_Top|Draw_Bottom| Round_UpperLeft|Round_UpperRight|Round_BottomLeft|Round_BottomRight| Is_Horizontal) const; void renderRadioButton(QPainter *p, const QRect &r, const QColor &backgroundColor, const QColor &checkColor, const QColor &buttonColor, const QColor &highlightColor, bool checked, const uint flags) const; void renderButton(QPainter *p, const QRect &r, const QPalette &pal, bool sunken = false, bool mouseOver = false, bool horizontal = true, bool enabled = true, int animFrame = 0, bool isDefault = false) const; void renderPanel(QPainter *p, const QRect &r, const QPalette &pal, const bool pseudo3d = true, const bool sunken = true, const bool focusHighlight = false) const; void renderDot(QPainter *p, const QPoint &point, const QColor &baseColor, const bool thick = false, const bool sunken = false) const; void renderGradient(QPainter *p, const QRect &r, const QColor &c1, const QColor &c2, bool horizontal = true) const; void renderTab(QPainter *p, const QRect &r, const QPalette &pal, bool mouseOver = false, const SelectedTab selected = OtherTab, const bool bottom = false, const QStyleOptionTab::TabPosition pos = QStyleOptionTab::Middle, const bool triangular = false, bool cornerWidget = false, const bool reverseLayout = false) const; bool eventFilter(QObject *, QEvent *); protected slots: /*void khtmlWidgetDestroyed(QObject* w);*/ //Animation slots. void updateProgressPos(); void progressBarDestroyed(QObject* bar); void animWidgetDestroyed(QObject* w); void animate(); QColor getColor(const QPalette &pal, const ColorType t, const bool enabled = true)const; QColor getColor(const QPalette &pal, const ColorType t, const WidgetState s)const; private: // Disable copy constructor and = operator PolyesterStyle( const PolyesterStyle & ); PolyesterStyle& operator=( const PolyesterStyle & ); //bool kickerMode, kornMode; mutable bool flatMode; int _contrast; bool _scrollBarLines; QString _scrollBarStyle; int _scrollBarExtent; ScrollBarType _scrollBarType; bool _useLowerCaseText; bool _animateProgressBar; bool _animateButton; bool _sunkenShadows; bool _animateButtonToDark; bool _lightBorder; bool _coloredScrollBar; bool _centeredTabBar; bool _highLightTab; bool _statusBarFrame; bool _colorizeSortedHeader; int _menuItemSpacing; bool _buttonMenuItem; bool _menuBarEmphasis; bool _menuBarEmphasisBorder; bool _customMenuBarEmphasisColor; bool _menuStripe; QColor _menuBarEmphasisColor; bool _shadowedMenuBarText; bool _shadowedButtonsText; bool _drawToolBarSeparator; bool _drawToolBarItemSeparator; bool _drawFocusRect; bool _drawTriangularExpander; bool _inputFocusHighlight; bool _customOverHighlightColor; bool _customFocusHighlightColor; bool _customCheckMarkColor; QColor _overHighlightColor; QColor _focusHighlightColor; QColor _checkMarkColor; QString _buttonStyle; // track khtml widgets. QMap khtmlWidgets; //Animation support. QMap progAnimWidgets; // pixmap cache. enum CacheEntryType { cSurface, cGradientTile, cAlphaDot }; struct CacheEntry { CacheEntryType type; int width; int height; QRgb c1Rgb; QRgb c2Rgb; bool horizontal; QPixmap* pixmap; CacheEntry(CacheEntryType t, int w, int h, QRgb c1, QRgb c2 = 0, bool hor = false, QPixmap* p = 0 ): type(t), width(w), height(h), c1Rgb(c1), c2Rgb(c2), horizontal(hor), pixmap(p) {} ~CacheEntry() { delete pixmap; } int key() { // create an int key from the properties which is used to refer to entries in the QIntCache. // the result may not be 100% correct as we don't have so much space in one integer -- use // == operator after find to make sure we got the right one. :) return horizontal ^ (type<<1) ^ (width<<5) ^ (height<<10) ^ (c1Rgb<<19) ^ (c2Rgb<<22); } bool operator == (const CacheEntry& other) { bool match = (type == other.type) && (width == other.width) && (height == other.height) && (c1Rgb == other.c1Rgb) && (c1Rgb == other.c1Rgb) && (horizontal = other.horizontal); // if(!match) { // qDebug("operator ==: CacheEntries don't match!"); // qDebug("width: %d\t\tother width: %d", width, other.width); // qDebug("height: %d\t\tother height: %d", height, other.height); // qDebug("fgRgb: %d\t\tother fgRgb: %d", fgRgb, other.fgRgb); // qDebug("bgRgb: %d\t\tother bgRgb: %d", bgRgb, other.bgRgb); // qDebug("surfaceFlags: %d\t\tother surfaceFlags: %d", surfaceFlags, other.surfaceFlags); // } return match; } }; QCache *pixmapCache; // For renderFocusRect mutable QBitmap *verticalDots; mutable QBitmap *horizontalDots; // For buttons animation struct AnimInfo { bool active; uint animFrame; }; typedef QMapAnimWidgetMap; AnimWidgetMap animWidgets; QTimer *btnAnimTimer; typedef QMapSliderValuesMap; SliderValuesMap sliderValues; // For progress bar animation QTimer *animationTimer; }; #endif // __POLYESTER_H kde-style-polyester-2.0.0.orig/style/drawcontrol.cpp0000644000175000001440000022224111146600215021462 0ustar pinousers/* Polyester widget style for KDE 4 Copyright (C) 2006 Marco Martin based on Plastik widget style for KDE 3 Copyright (C) 2003 Sandro Giessl based on the KDE style "dotNET": Copyright (C) 2001-2002, Chris Lee Carsten Pfeiffer Karol Szwed Drawing routines completely reimplemented from KDE3 HighColor, which was originally based on some stuff from the KDE2 HighColor. based on drawing routines of the style "Keramik": Copyright (c) 2002 Malte Starostik (c) 2002,2003 Maksim Orlovich based on the KDE3 HighColor Style Copyright (C) 2001-2002 Karol Szwed (C) 2001-2002 Fredrik Höglund Drawing routines adapted from the KDE2 HCStyle, Copyright (C) 2000 Daniel M. Duley (C) 2000 Dirk Mueller (C) 2001 Martijn Klingens Progressbar code based on KStyle, Copyright (C) 2001-2002 Karol Szwed This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License version 2 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "polyester.h" #include void PolyesterStyle::adjustScrollbarBorders(const QRect &borderRect, QRect *surfRect, const QWidget *widget, uint *contourFlags, uint *surfaceFlags, bool *hasFocus) const { if( !widget ) return; QWidget *parent = widget->parentWidget(); if( !parent ) return; QWidget *grandParent = parent->parentWidget(); if( !grandParent ) return; //Up if( parent->pos().y()+borderRect.y() == 1 ) { *contourFlags ^= Draw_Top; *surfaceFlags ^= Draw_Top; surfRect->adjust(0,-1,0,0); } //Down if( parent->pos().y()+borderRect.y()+borderRect.height()+1 == grandParent->height() ) { *contourFlags ^= Draw_Bottom; *surfaceFlags ^= Draw_Bottom; surfRect->adjust(0,0,0,1); } //Left if( parent->pos().x()+borderRect.x() == 1) { *contourFlags ^= Draw_Left; *surfaceFlags ^= Draw_Left; surfRect->adjust(-1,0,0,0); } //Right if( parent->pos().x()+borderRect.x()+borderRect.width()+1 == grandParent->width() ) { *contourFlags ^= Draw_Right; *surfaceFlags ^= Draw_Right; surfRect->adjust(0,0,1,0); } //grandparent has focus? *hasFocus = grandParent->hasFocus(); } void PolyesterStyle::drawControl( ControlElement element, const QStyleOption *opt, QPainter *p, const QWidget *widget ) const { bool reverseLayout = opt->direction == Qt::RightToLeft; const QPalette &pal = opt->palette; QRect r = opt->rect; const State &flags = opt->state; const bool enabled = (flags & State_Enabled); bool down = flags & State_Sunken; bool on = flags & State_On; bool sunken = flags & State_Sunken; bool horiz = flags & State_Horizontal; int x = r.x(); int y = r.y(); int w = r.width(); int h = r.height(); switch (element) { // PROGRESSBAR // ----------- case CE_ProgressBarGroove: { break; if( _sunkenShadows ) break; const QColor content = enabled?pal.color(QPalette::Base):pal.color(QPalette::Background); renderContour(p, r, pal.color(QPalette::Background), getColor(pal, ButtonContour, enabled) ); p->setPen(content.dark(105) ); p->drawLine(r.left()+2, r.top()+1, r.right()-2, r.top()+1 ); p->drawLine(r.left()+1, r.top()+2, r.left()+1, r.bottom()-2); p->setPen(content.light(105) ); p->drawLine(r.left()+2, r.bottom()-1, r.right()-2, r.bottom()-1 ); p->drawLine(r.right()-1, r.top()+2, r.right()-1, r.bottom()-2); break; } case CE_ProgressBarContents: { const QStyleOptionProgressBar *pbarOpt; pbarOpt = qstyleoption_cast(opt); if (!pbarOpt) break; bool vertical = false; bool inverted = false; if( const QStyleOptionProgressBarV2 *pbarOpt2 = qstyleoption_cast(opt) ) { vertical = (pbarOpt2->orientation == Qt::Vertical); inverted = pbarOpt2->invertedAppearance; } const QColor bg = enabled?pal.color(QPalette::Base):pal.color(QPalette::Background); // background const QColor fg = enabled?pal.color(QPalette::Highlight):pal.color(QPalette::Background).dark(110); // foreground if( vertical ) { r = QRect(r.left(), r.top(), r.height(), r.width()); QTransform m; reverseLayout = !inverted; m.scale(-1,1); m.rotate(90); p->setTransform(m); } else if( inverted ) //it can have reversed appearance, so re-compute reverseLayout reverseLayout = !reverseLayout; if( pbarOpt->minimum == 0 && pbarOpt->maximum == 0 ) { // Busy indicator static const int barWidth = 10; int progress = pbarOpt->progress % (2*(r.width()-barWidth)); if( progress < 0) progress = 0; if( progress > r.width()-barWidth ) progress = (r.width()-barWidth)-(progress-(r.width()-barWidth)); QRect rEmpty = r.adjusted(1,1,-1,-1); QBrush baseBrush; if(_sunkenShadows) baseBrush = pal.color(QPalette::Base); else baseBrush = getShadowBrush(rEmpty, pal.color(QPalette::Base), true); p->fillRect(rEmpty, baseBrush ); if(_sunkenShadows) renderSunkenShadow(p, rEmpty); renderContour( p, QRect( r.x()+progress, r.y(), barWidth, r.height() ), bg, fg.dark(160), Draw_Left|Draw_Right|Draw_Top|Draw_Bottom|Round_UpperRight| Round_BottomRight|Round_UpperLeft|Round_BottomLeft ); renderSurface(p, QRect( r.x()+progress+1, r.y()+1, barWidth-2, r.height()-2 ), bg, fg, pal.color(QPalette::Highlight), 2*(_contrast/3), Draw_Right|Draw_Left|Draw_Top|Draw_Bottom| Round_UpperRight|Round_BottomRight| Round_UpperLeft|Round_BottomLeft|Is_Horizontal); if( _sunkenShadows ) renderContour(p, r, pal.color(QPalette::Background), getColor(pal, ButtonContour, enabled) ); } else { double percent = (double)pbarOpt->progress / (double)pbarOpt->maximum; int w = static_cast(r.width() * percent); // renderContour/renderSurface handle small sizes not very well, so set a minimal // progressbar width... if(w<4) w = 4; int w2 = r.width()-(r.width()-w); QRect rEmpty; if(_sunkenShadows) rEmpty = QRect(reverseLayout?r.left()+1:r.left()+w-2, r.top()+1, r.width()-w-1, r.height()-2 ); else rEmpty = QRect(reverseLayout?r.left():r.left()+w-1, r.top(), r.width()-w+1, r.height() ); QRect Rcontour(reverseLayout?r.right()-w2+1:r.left(), r.top(), w2, r.height() ); QRect Rsurface(Rcontour.left()+1, Rcontour.top()+1, w2-2, Rcontour.height()-2); QBrush baseBrush; if(_sunkenShadows) baseBrush = pal.color(QPalette::Base); else baseBrush = getShadowBrush(rEmpty, pal.color(QPalette::Base), true); p->fillRect(rEmpty, baseBrush ); if(_sunkenShadows) renderSunkenShadow(p, r); //moved after the surface in order to not get it overwritten //by the ugly left sharp borders of the surface renderContour(p, Rcontour, bg, fg.dark(160), Draw_Left|Draw_Right|Draw_Top|Draw_Bottom| Round_UpperRight|Round_BottomRight|Round_UpperLeft|Round_BottomLeft); QRegion mask(Rsurface); mask -= QRegion(Rsurface.left(), Rsurface.top(), 1, 1); mask -= QRegion(Rsurface.left(), Rsurface.bottom(), 1, 1); mask -= QRegion(Rsurface.right(), Rsurface.top(), 1, 1); mask -= QRegion(Rsurface.right(), Rsurface.bottom(), 1, 1); p->setClipRegion(mask); int counter = 0; QPixmap surfaceTile(21, r.height()-2); QPainter surfacePainter(&surfaceTile); // - 21 pixel - // __________ // | ` `| <- 3 // | 1 | 2 | // |____,____,| <- 3 // 1 = light, 11 pixel, 1 pixel overlapping with 2 // 2 = dark, 11 pixel, 1 pixel overlapping with 3 // 3 = light edges const int tileHeight = surfaceTile.height(); // 3 renderSurface(&surfacePainter, QRect(20, 0, 11, tileHeight), fg.light(105), fg, pal.color(QPalette::Highlight), 2*(_contrast/3), reverseLayout ? Draw_Right|Draw_Left|Draw_Top|Draw_Bottom| Round_UpperLeft|Round_BottomLeft|Is_Horizontal : Draw_Right|Draw_Left|Draw_Top|Draw_Bottom| Round_UpperRight|Round_BottomRight| Is_Horizontal); // 2 renderSurface(&surfacePainter, QRect(10, 0, 11, tileHeight), fg, fg.light(105), pal.color(QPalette::Highlight), 2*(_contrast/3), reverseLayout ? Draw_Right|Draw_Left|Draw_Top|Draw_Bottom| Round_UpperLeft|Round_BottomLeft|Is_Horizontal : Draw_Right|Draw_Left|Draw_Top|Draw_Bottom| Round_UpperRight|Round_BottomRight|Is_Horizontal); // 1 renderSurface(&surfacePainter, QRect(0, 0, 11, tileHeight), fg.light(105), fg, pal.color(QPalette::Highlight), 2*(_contrast/3), reverseLayout ? Draw_Right|Draw_Left|Draw_Top|Draw_Bottom| Round_UpperLeft|Round_BottomLeft|Is_Horizontal : Draw_Right|Draw_Left|Draw_Top|Draw_Bottom| Round_UpperRight|Round_BottomRight|Is_Horizontal); surfacePainter.end(); int staticShift = 0; int animShift = 0; if (!_animateProgressBar) { staticShift = (reverseLayout ? Rsurface.left() : Rsurface.right()) % 40 - 40; } else { // find the animation Offset for the current Widget QWidget* nonConstWidget = const_cast(widget); QMap::const_iterator iter = progAnimWidgets.find(nonConstWidget); if (iter != progAnimWidgets.end()) animShift = iter.value(); } while( (counter*10) < (Rsurface.width()+20) ) { counter++; if (reverseLayout) { // from right to left, overlap 1 pixel with the previously drawn tile p->drawPixmap(Rsurface.right()-counter*20-animShift+40+staticShift, r.top()+1, surfaceTile); } else { // from left to right, overlap 1 pixel with the previously drawn tile p->drawPixmap(Rsurface.left()+counter*20+animShift-40+staticShift, r.top()+1, surfaceTile); } } p->setClipping(false); } renderContour(p, r, pal.color(QPalette::Background), getColor(pal, ButtonContour, enabled) ); break; } case CE_ProgressBarLabel: { // label of progress bar const QStyleOptionProgressBar *pbarOpt; pbarOpt = qstyleoption_cast(opt); if (!pbarOpt) break; if (pbarOpt->minimum == 0 && pbarOpt->maximum == 0) break; bool vertical = false; bool inverted = false; bool bottomToTop = false; if( const QStyleOptionProgressBarV2 *pbarOpt2 = qstyleoption_cast(opt) ) { vertical = (pbarOpt2->orientation == Qt::Vertical); inverted = pbarOpt2->invertedAppearance; bottomToTop = pbarOpt2->bottomToTop; } if( vertical ) { r = QRect(r.left(), r.top(), r.height(), r.width()); QTransform m; if( bottomToTop ) { reverseLayout = false; m.translate(0.0, r.width()+5); m.rotate(-90); } else { reverseLayout = true; m.translate(r.height(), 0.0); m.rotate(90); } p->setTransform(m); } if( inverted ) //it can have reversed appearance, so re-compute reverseLayout reverseLayout = !reverseLayout; int coloredWidth; if( opt->state & QStyle::State_Enabled ) coloredWidth = int(((pbarOpt->progress - pbarOpt->minimum) / double(pbarOpt->maximum - pbarOpt->minimum)) * r.width()); else coloredWidth = 0; if( reverseLayout ) coloredWidth = r.width() - coloredWidth; QFont font = p->font(); font.setWeight(QFont::Bold); p->setFont(font); p->setPen(reverseLayout ? pbarOpt->palette.base().color() : pbarOpt->palette.text().color()); p->drawText(r, Qt::AlignCenter, pbarOpt->text); p->setClipRect(QRect(x,y,coloredWidth,h)); p->setPen(!reverseLayout ? pbarOpt->palette.base().color() : pbarOpt->palette.text().color()); p->drawText(r, Qt::AlignCenter, pbarOpt->text); break; } case CE_ToolBar: { drawPrimitive(PE_PanelToolBar, opt, p, widget); break; } case CE_Splitter: { // highlight on mouse over QColor color; if( flags & State_MouseOver ) color = pal.color(QPalette::Background).light(100+_contrast); else color = pal.color(QPalette::Background); p->fillRect(r, color); int ycenter = r.height()/2; int xcenter = r.width()/2; qreal opacity = p->opacity(); if (w > h) { if (h > 4) { for(int k = r.width()/2-12; k <= r.width()/2+12; k+=6) { p->setOpacity( 1.5-((double)qAbs(k-xcenter)/12.0) ); renderDot(p, QPoint(k, ycenter-1), color, true, true); } } } else { if (w > 4) { for(int k = r.height()/2-12; k <= r.height()/2+12; k+=6) { p->setOpacity( 1.5-((double)qAbs(k-ycenter)/12.0) ); renderDot(p, QPoint(xcenter-1, k), color, true, true); } } } p->setOpacity( opacity); break; } case CE_HeaderSection: { const QStyleOptionHeader *headerOpt = qstyleoption_cast(opt); if( !headerOpt ) { renderButton(p, r, pal); break; } //HACK: hide the borders in order to merge them with the panel border //only if the panel border is visible if( QAbstractScrollArea *area = qobject_cast(widget->parentWidget()) ) if( area->frameStyle() == QFrame::StyledPanel | QFrame::Sunken ) { r.adjust(-1,-1,0,0); //hide right border of the last header if( r.right() == area->viewport()->contentsRect().right() ) r.adjust(0,0,1,0); } bool isFirst = headerOpt->position == QStyleOptionHeader::Beginning; bool isLast = headerOpt->position == QStyleOptionHeader::End; // header item id int headerId = headerOpt->section; //is the section sorted? bool sortedSection = headerOpt->sortIndicator != QStyleOptionHeader::None; //orientation Qt::Orientation orientation = headerOpt->orientation; //Passes always sharp, when Round is on sharp is ignored //so this doesn't cause damage uint contourFlags = Draw_Right|Draw_Bottom| Sharp_BottomLeft|Sharp_BottomRight| Sharp_UpperLeft|Sharp_UpperRight; if(!enabled) contourFlags|=Is_Disabled; //if horizontal draw always the top contour, else always the left one if( orientation == Qt::Horizontal ) contourFlags |= Draw_Top; else contourFlags |= Draw_Left; //round first header contour and draw the border that usually is not drawn if( isFirst && orientation == Qt::Horizontal ) contourFlags |= Draw_Left|Round_UpperLeft; if( isFirst && orientation == Qt::Vertical ) contourFlags |= Draw_Top|Round_UpperLeft; //round last header contour //if it's horizontal and we are in a QListView, round only if resizemode !=NoColumn if( isLast && orientation == Qt::Horizontal /*&& (( list && list->resizeMode() != QListView::NoColumn) || !list)*/ ) contourFlags |= Round_UpperRight; if( isLast && orientation == Qt::Vertical ) contourFlags |= Round_BottomLeft; uint surfaceFlags = Draw_Left|Draw_Right|Draw_Top|Draw_Bottom|Is_Horizontal; if(!enabled) surfaceFlags|=Is_Disabled; else { if(isFirst) surfaceFlags |= Round_UpperLeft; if(isLast) surfaceFlags |= Round_UpperRight; if(on||down) surfaceFlags|=Is_Sunken; else if(flags & State_MouseOver) surfaceFlags|=Is_Highlight|Highlight_Top; } if( headerId == 0 && !isFirst ) contourFlags |= Draw_Left|Draw_Right|Draw_Top|Draw_Bottom| Round_UpperRight|Round_UpperLeft| Round_BottomRight|Round_BottomLeft; renderSurface(p, QRect(isFirst?r.left()+1:r.left(), r.top()+1, isFirst?r.width()-2:r.width()-1, r.height()-2), pal.color(QPalette::Background), sortedSection? alphaBlendColors(pal.color(QPalette::Highlight), pal.color(QPalette::Button), 70): pal.color(QPalette::Button), getColor(pal,MouseOverHighlight), _contrast, surfaceFlags); renderContour(p, r, pal.color(QPalette::Background), getColor(pal,ButtonContour), contourFlags); break; } //Rubberband from Oxygen :) case CE_RubberBand: { p->save(); QColor color = pal.color(QPalette::Highlight); p->setPen(color); color.setAlpha(100); p->setBrush(color); p->drawRect(r.adjusted(0,0,-1,-1)); p->restore(); break; } case CE_DockWidgetTitle: { const QStyleOptionDockWidget *dockOpt = qstyleoption_cast(opt); if( !dockOpt ) break; QRect titleRect = subElementRect(SE_DockWidgetTitleBarText, opt, widget); int textWidth = opt->fontMetrics.width(dockOpt->title); if( !dockOpt->title.isEmpty() ) { p->setPen(pal.foreground().color()); drawItemText(p, titleRect/*r.adjusted(4, 0, -18, -1)*/, Qt::AlignCenter | Qt::TextSingleLine | Qt::TextShowMnemonic, pal, enabled, dockOpt->title); } int dotsY = titleRect.center().y(); int textLeft = titleRect.center().x() - textWidth/2 -5; int textRight = titleRect.center().x() + textWidth/2 +5; if( dockOpt->title.isEmpty() ) { textLeft += 2; textRight -= 2; } renderDot(p, QPoint(textLeft, dotsY), pal.background().color(), true, true ); renderDot(p, QPoint(textRight, dotsY), pal.background().color(), true, true ); qreal opacity = p->opacity(); p->setOpacity(0.7); renderDot(p, QPoint(textLeft-6, dotsY), pal.background().color(), true, true ); renderDot(p, QPoint(textRight+6, dotsY), pal.background().color(), true, true ); p->setOpacity(0.5); renderDot(p, QPoint(textLeft-12, dotsY), pal.background().color(), true, true ); renderDot(p, QPoint(textRight+12, dotsY), pal.background().color(), true, true ); p->setOpacity(opacity); break; } case CE_ScrollBarSlider: { /*a little bit complicated: deciding if the scrollbar is enabled, pressed, with mouse over or not. Everything with the right dependencies*/ const WidgetState s = enabled?(down?IsPressed: ((flags & State_MouseOver)? IsHighlighted:IsEnabled)):IsDisabled; const QColor surface = getColor(pal, DragButtonSurface, s); uint contourFlags = Draw_Left|Draw_Right|Draw_Top|Draw_Bottom|Sharp_UpperLeft|Sharp_UpperRight|Sharp_BottomLeft|Sharp_BottomRight; if(!enabled) contourFlags|=Is_Disabled; uint surfaceFlags = contourFlags; if( !_coloredScrollBar && flags & State_MouseOver ) { if( !horiz ) surfaceFlags |= Highlight_Top|Highlight_Bottom; else surfaceFlags |= Highlight_Left|Highlight_Right; } if( _scrollBarType == PlatinumStyleScrollBar || _scrollBarType == NoButtonsScrollBar) { if( !horiz ) { contourFlags |= Round_UpperLeft|Round_UpperRight; surfaceFlags |= Round_UpperLeft|Round_UpperRight; } else { contourFlags |= Round_UpperLeft|Round_BottomLeft; surfaceFlags |= Round_UpperLeft|Round_BottomLeft; } } if( _scrollBarType == NextStyleScrollBar || _scrollBarType == NoButtonsScrollBar) { if( !horiz ) { contourFlags |= Round_BottomLeft|Round_BottomRight; surfaceFlags |= Round_BottomLeft|Round_BottomRight; } else { contourFlags |= Round_BottomLeft|Round_UpperLeft; surfaceFlags |= Round_BottomLeft|Round_UpperLeft; } } bool hasFocus; //useless QRect surfRect(r.left()+1, r.top()+1, r.width()-2, r.height()-2); adjustScrollbarBorders(r, &surfRect, widget, &contourFlags, &surfaceFlags, &hasFocus); renderContour(p, r, pal.color(QPalette::Background), getColor(pal, DragButtonContour, s), contourFlags); if(horiz) surfaceFlags|=Is_Horizontal; if(!enabled) surfaceFlags|=Is_Disabled; if(down) surfaceFlags|= Is_Sunken; if(r.height() >= 4) { renderSurface(p, surfRect, pal.color(QPalette::Background), surface, pal.color(QPalette::Highlight), _contrast+3, surfaceFlags); } //draw a fake border in case we are in a scrollarea p->setPen(getColor(pal, ButtonContour).light(120)); if( !(contourFlags&Draw_Top)&&!(contourFlags&Draw_Left) ) p->drawPoint(r.left(), r.top()); if( !(contourFlags&Draw_Top)&&!(contourFlags&Draw_Right) ) p->drawPoint(r.right(), r.top()); if( !(contourFlags&Draw_Bottom)&&!(contourFlags&Draw_Left) ) p->drawPoint(r.left(), r.bottom()); if( !(contourFlags&Draw_Bottom)&&!(contourFlags&Draw_Right) ) p->drawPoint(r.right(), r.bottom()); const int xPos = r.center().x(); const int yPos = r.center().y(); const int displacement = 5; if( !horiz && r.height() > 24) { for( int i = -displacement; i <= displacement; i+=displacement) { if(_scrollBarLines) { p->setPen(alphaBlendColors(pal.color(QPalette::Background), surface.dark(enabled?140:120), 50) ); p->drawLine(r.x()+1, yPos+i, r.right()-1, yPos+i); p->setPen(alphaBlendColors(pal.color(QPalette::Background), surface.light(enabled?120:110), 50) ); p->drawLine(r.x()+1, yPos+i+1, r.right()-1, yPos+i+1); } else { renderDot(p, QPoint(xPos-3, yPos+i), surface, true, true ); renderDot(p, QPoint(xPos+2, yPos+i), surface, true, true ); } } } else if( r.width() > 24 ) { for( int i = -displacement; i <= displacement; i+=displacement) { if(_scrollBarLines) { p->setPen(alphaBlendColors(pal.color(QPalette::Background), surface.dark(enabled?140:120), 50) ); p->drawLine(xPos+i, r.y()+1, xPos+i, r.bottom()-1); p->setPen(alphaBlendColors(pal.color(QPalette::Background), surface.light(enabled?120:110), 50) ); p->drawLine(xPos+i+1, r.y()+1, xPos+i+1, r.bottom()-1); } else { renderDot(p, QPoint(xPos+i, yPos-3), surface, true, true ); renderDot(p, QPoint(xPos+i, yPos+2), surface, true, true ); } } } break; } case CE_ScrollBarAddPage: case CE_ScrollBarSubPage: { if (on || down) { p->fillRect(r, QBrush(pal.color(QPalette::Mid).dark())); } else { uint contourFlags, surfaceFlags; if(horiz) { contourFlags = Draw_Top|Draw_Bottom; surfaceFlags = Draw_Left|Draw_Right|Draw_Top|Draw_Bottom|Is_Sunken|Is_Horizontal; //coordinates for the surface uint xs=x,ws=w; //TODO: scrollbar type if( element == CE_ScrollBarSubPage && ( _scrollBarType == PlatinumStyleScrollBar ||_scrollBarType == NoButtonsScrollBar) ) { contourFlags |= Draw_Left|Round_UpperLeft|Round_BottomLeft; surfaceFlags |= Round_UpperLeft|Round_BottomLeft; xs++; ws--; } else if( element == CE_ScrollBarAddPage && ( _scrollBarType == NextStyleScrollBar ||_scrollBarType == NoButtonsScrollBar) ) { contourFlags |= Draw_Right|Round_UpperRight|Round_BottomRight; surfaceFlags |= Round_UpperRight|Round_BottomRight; ws--; } bool hasFocus; //useless QRect surfRect(xs,y+1,ws,h-2); adjustScrollbarBorders(r, &surfRect, widget, &contourFlags, &surfaceFlags, &hasFocus); if(_sunkenShadows) { p->fillRect( surfRect, pal.color(QPalette::Background).light(100+_contrast)); renderSunkenShadow( p, surfRect, Qt::black, Draw_Top|Draw_Bottom|Draw_Left|Draw_Right|Sharp_UpperLeft|Sharp_UpperRight|Sharp_BottomLeft|Sharp_BottomRight, true ); } else { QBrush brush = getShadowBrush(surfRect, pal.color(QPalette::Background).light(100+_contrast/2), true); p->fillRect( surfRect, brush); } renderContour(p, r, pal.color(QPalette::Background), getColor(pal, ButtonContour), contourFlags); //draw a fake border in case we are in a scrollarea p->setPen(getColor(pal, ButtonContour).light(120)); if( _scrollBarType == NextStyleScrollBar ||_scrollBarType == NoButtonsScrollBar) { if( !(contourFlags&Draw_Top)&&!(contourFlags&Draw_Right) ) p->drawPoint(r.right(), r.top()); if( !(contourFlags&Draw_Bottom)&&!(contourFlags&Draw_Right) ) p->drawPoint(r.right(), r.bottom()); } if( _scrollBarType == NoButtonsScrollBar ||_scrollBarType == PlatinumStyleScrollBar ) { if( !(contourFlags&Draw_Bottom)&&!(contourFlags&Draw_Left) ) p->drawPoint(r.left(), r.bottom()); if( !(contourFlags&Draw_Top)&&!(contourFlags&Draw_Left) ) p->drawPoint(r.left(), r.top()); } } else { contourFlags = Draw_Left|Draw_Right; surfaceFlags = Draw_Left|Draw_Right|Draw_Top|Draw_Bottom|Is_Sunken; //coordinates for the surface uint ys=y,hs=h; if( element == CE_ScrollBarSubPage && ( _scrollBarType == PlatinumStyleScrollBar ||_scrollBarType == NoButtonsScrollBar) ) { //HACK p->fillRect( r, pal.color(QPalette::Background) ); contourFlags |= Draw_Top|Round_UpperLeft|Round_UpperRight; surfaceFlags |= Round_UpperLeft|Round_UpperRight; ys++; hs--; } else if( element == CE_ScrollBarAddPage && ( _scrollBarType == NextStyleScrollBar ||_scrollBarType == NoButtonsScrollBar) ) { //HACK p->fillRect( r, pal.color(QPalette::Background) ); contourFlags |= Draw_Bottom|Round_BottomLeft|Round_BottomRight; surfaceFlags |= Round_BottomLeft|Round_BottomRight; hs--; } bool hasFocus; //useless QRect surfRect(x+1, ys, w-2, hs); adjustScrollbarBorders(r, &surfRect, widget, &contourFlags, &surfaceFlags, &hasFocus); if(_sunkenShadows) { p->fillRect( surfRect, pal.color(QPalette::Background).light(100+_contrast/2)); renderSunkenShadow( p, surfRect, Qt::black, Draw_Top|Draw_Bottom|Draw_Left|Draw_Right|Sharp_UpperLeft|Sharp_UpperRight|Sharp_BottomLeft|Sharp_BottomRight, false ); } else { QBrush brush = getShadowBrush(surfRect, pal.color(QPalette::Background).light(100+_contrast), false ); p->fillRect( surfRect, brush ); } renderContour(p, r, pal.color(QPalette::Background), getColor(pal, ButtonContour), contourFlags); //must put a fake border? if( 1/*_sunkenShadows*/) { p->setPen(getColor(pal, ButtonContour).light(120)); if( _scrollBarType == NoButtonsScrollBar ||_scrollBarType == PlatinumStyleScrollBar ) { if( !(contourFlags&Draw_Top)&&!(contourFlags&Draw_Left) ) p->drawPoint(r.left(), r.top()); if( !(contourFlags&Draw_Top)&&!(contourFlags&Draw_Right) ) p->drawPoint(r.right(), r.top()); } if( _scrollBarType == NextStyleScrollBar ||_scrollBarType == NoButtonsScrollBar) { if( !(contourFlags&Draw_Bottom)&&!(contourFlags&Draw_Left) ) p->drawPoint(r.left(), r.bottom()); if( !(contourFlags&Draw_Bottom)&&!(contourFlags&Draw_Right) ) p->drawPoint(r.right(), r.bottom()); } } } } break; } // SCROLLBAR BUTTONS // ----------------- case CE_ScrollBarSubLine: { //don't like it but it seems necessary... p->fillRect(r, pal.color(QPalette::Background)); uint contourFlags = Draw_Left|Draw_Right|Draw_Top|Draw_Bottom; uint surfaceFlags = Draw_Left|Draw_Top|Draw_Right|Draw_Bottom; if(down) surfaceFlags|=Is_Sunken; if(!enabled) { contourFlags|=Is_Disabled; surfaceFlags|=Is_Disabled; } if( _scrollBarType == PlatinumStyleScrollBar ) { if(horiz) { contourFlags |= Sharp_UpperLeft|Sharp_BottomLeft|Is_Horizontal; surfaceFlags |= Sharp_UpperLeft|Sharp_BottomLeft|Is_Horizontal; } else { contourFlags |= Sharp_UpperLeft|Sharp_UpperRight; surfaceFlags |= Sharp_UpperLeft|Sharp_UpperRight; } } else { if(horiz) { contourFlags |= Round_UpperLeft|Round_BottomLeft|Is_Horizontal; surfaceFlags |= Round_UpperLeft|Round_BottomLeft|Is_Horizontal; } else { contourFlags |= Round_UpperLeft|Round_UpperRight; surfaceFlags |= Round_UpperLeft|Round_UpperRight; } } if( horiz ) { contourFlags |= Sharp_UpperRight|Sharp_BottomRight; surfaceFlags |= Sharp_UpperRight|Sharp_BottomRight; } else { contourFlags |= Sharp_BottomLeft|Sharp_BottomRight; surfaceFlags |= Sharp_BottomLeft|Sharp_BottomRight; } QRect buttonRect, buttonRect2; if( horiz ) { buttonRect = QRect(r.x(), r.y(), r.height(), r.height()); buttonRect2 = QRect(r.right()-r.height()+1, r.y(), r.height(), r.height()); } else { buttonRect = QRect(r.x(), r.y(), r.width(), r.width()); buttonRect2 = QRect(r.x(), r.bottom()-r.width()+1, r.width(), r.width()); } bool hasFocus; QRect surfRect = buttonRect.adjusted(1,1,-1,-1); adjustScrollbarBorders(buttonRect, &surfRect, widget, &contourFlags, &surfaceFlags, &hasFocus); renderContour(p, buttonRect, pal.color(QPalette::Background), getColor(pal, ButtonContour), contourFlags); renderSurface(p, /*QRect(r.left()+1, r.top()+1, r.width()-(r.x()==0?2:1), r.height()-(r.y()==0?2:1))*/ surfRect, pal.color(QPalette::Background), pal.color(QPalette::Button), getColor(pal,MouseOverHighlight), _contrast+3, surfaceFlags); //must put a fake border? if( 1/*_sunkenShadows*/ ) { if( hasFocus ) p->setPen(getColor(pal, FocusHighlight)); else p->setPen(getColor(pal, ButtonContour).light(120)); if( !(contourFlags&Draw_Top)&&!(contourFlags&Draw_Left) ) p->drawPoint(r.left(), r.top()); if( !(contourFlags&Draw_Top)&&!(contourFlags&Draw_Right) ) p->drawPoint(r.right(), r.top()); if( !(contourFlags&Draw_Bottom)&&!(contourFlags&Draw_Left) ) p->drawPoint(r.left(), r.bottom()); if( !(contourFlags&Draw_Bottom)&&!(contourFlags&Draw_Right) ) p->drawPoint(r.right(), r.bottom()); } if( _scrollBarType == ThreeButtonScrollBar ) { if( horiz ) { contourFlags = Draw_Top|Draw_Bottom|Draw_Left|Sharp_UpperLeft|Sharp_BottomLeft; surfaceFlags |= Sharp_UpperLeft|Sharp_BottomLeft; } else { contourFlags = Draw_Top|Draw_Right|Draw_Left|Sharp_UpperLeft|Sharp_UpperRight; surfaceFlags |= Sharp_UpperLeft|Sharp_UpperRight; } bool hasFocus; //useless surfRect = buttonRect2.adjusted(1,1,-1,-1); adjustScrollbarBorders(buttonRect2, &surfRect, widget, &contourFlags, &surfaceFlags, &hasFocus); renderContour(p, buttonRect2, pal.color(QPalette::Background), getColor(pal, ButtonContour), contourFlags); renderSurface(p, surfRect, pal.color(QPalette::Background), pal.color(QPalette::Button), getColor(pal,MouseOverHighlight), _contrast+3, surfaceFlags); } p->setPen(pal.color(QPalette::Foreground)); renderArrow(p, buttonRect, pal.color(QPalette::ButtonText), (horiz?Left:Up)); if( _scrollBarType == ThreeButtonScrollBar ) renderArrow(p, buttonRect2, pal.color(QPalette::ButtonText), (horiz?Left:Up)); break; } case CE_ScrollBarAddLine: { p->fillRect(r, pal.color(QPalette::Background)); uint isNext = _scrollBarType == NextStyleScrollBar; uint contourFlags = (!isNext||!horiz||down?Draw_Left:0)| Draw_Right| (!isNext||horiz||down?Draw_Top:0)| Draw_Bottom; uint surfaceFlags = contourFlags; if(down) surfaceFlags|=Is_Sunken; if(!enabled) { contourFlags|=Is_Disabled; surfaceFlags|=Is_Disabled; } if( horiz && !isNext) { contourFlags |= Round_UpperRight|Round_BottomRight|Is_Horizontal; surfaceFlags |= Round_UpperRight|Round_BottomRight|Is_Horizontal; } else if( !isNext ){ contourFlags |= Round_BottomLeft|Round_BottomRight; surfaceFlags |= Round_BottomLeft|Round_BottomRight; } else if( horiz && isNext){ contourFlags |= Is_Horizontal; surfaceFlags |= Is_Horizontal; } if( horiz ) { contourFlags |= Sharp_UpperLeft|Sharp_BottomLeft; surfaceFlags |= Sharp_UpperLeft|Sharp_BottomLeft; //TODO:scrollbar type if( isNext ) { contourFlags |= Sharp_UpperRight|Sharp_BottomRight; surfaceFlags |= Sharp_UpperRight|Sharp_BottomRight; } } else { contourFlags |= Sharp_UpperLeft|Sharp_UpperRight; surfaceFlags |= Sharp_UpperLeft|Sharp_UpperRight; if( isNext ) { contourFlags |= Sharp_BottomLeft|Sharp_BottomRight; surfaceFlags |= Sharp_BottomLeft|Sharp_BottomRight; } } bool hasFocus; QRect surfRect = QRect(r.left()+(!isNext||!horiz?1:0), r.top()+(!isNext||horiz?1:0), r.width()-(isNext&&horiz?1:2), r.height()-(isNext&&!horiz?1:2)); adjustScrollbarBorders(r, &surfRect, widget, &contourFlags, &surfaceFlags, &hasFocus); renderContour(p, r, pal.color(QPalette::Background), getColor(pal, ButtonContour), contourFlags); renderSurface(p, surfRect, pal.color(QPalette::Background), pal.color(QPalette::Button), getColor(pal,MouseOverHighlight), _contrast+3, surfaceFlags); //draw a fake border in case we are in a scrollarea if( hasFocus ) p->setPen(getColor(pal, FocusHighlight)); else p->setPen(getColor(pal, ButtonContour).light(120)); if( !(contourFlags&Draw_Top)&&!(contourFlags&Draw_Left) ) p->drawPoint(r.left(), r.top()); if( !(contourFlags&Draw_Top)&&!(contourFlags&Draw_Right) ) p->drawPoint(r.right(), r.top()); if( !(contourFlags&Draw_Bottom)&&!(contourFlags&Draw_Left) ) p->drawPoint(r.left(), r.bottom()); if( !(contourFlags&Draw_Bottom)&&!(contourFlags&Draw_Right) ) p->drawPoint(r.right(), r.bottom()); p->setPen(pal.color(QPalette::Foreground)); drawPrimitive((horiz ? PE_IndicatorArrowRight : PE_IndicatorArrowDown), opt, p, widget); break; } //TABBAR TEXT (code from Qt libraries Copyright Trolltech 2006) //-------------- case CE_TabBarTabLabel: { /*if ( opt.isDefault() ) break;*/ const QStyleOptionTab* tabOpt = qstyleoption_cast(opt); if (!tabOpt) break; //for icons QStyleOptionTabV2 tabOpt2(*tabOpt); if( tabOpt->shape == QTabBar::RoundedWest || tabOpt->shape == QTabBar::RoundedEast ) { #ifdef NO_KDE QWindowsStyle::drawControl(element, opt, p, widget); #else KStyle::drawControl(element, opt, p, widget); #endif break; } const uint text_flags = Qt::AlignCenter | Qt::TextDontClip | Qt::TextSingleLine | Qt::TextShowMnemonic; QRect tr = r; if ( flags & State_Selected )//t->identifier() == tb->currentTab()) { tr.moveTop( tr.top() - pixelMetric( QStyle::PM_TabBarTabShiftVertical, opt, widget ) ); tr.moveLeft( tr.left() - pixelMetric( QStyle::PM_TabBarTabShiftHorizontal, opt, widget ) ); } if (!tabOpt2.icon.isNull()) { QSize iconSize = tabOpt2.iconSize; if (!iconSize.isValid()) { int iconExtent = pixelMetric(PM_SmallIconSize); iconSize = QSize(iconExtent, iconExtent); } QPixmap tabIcon = tabOpt2.icon.pixmap(iconSize, (tabOpt2.state & State_Enabled) ? QIcon::Normal : QIcon::Disabled); p->drawPixmap(tr.left() + 6, tr.center().y() - tabIcon.height() / 2, tabIcon); tr.setLeft(tr.left() + iconSize.width() + 4); } if(_shadowedButtonsText) { p->setPen( pal.color(QPalette::Button).dark(120+_contrast)); p->drawText(QRect(tr.x()+1, tr.y()+1, tr.width(), tr.height()), text_flags, tabOpt->text); } p->setPen( pal.color(QPalette::ButtonText)); drawItemText( p, tr, text_flags, pal, enabled, tabOpt->text ); if ( (flags & State_HasFocus) && !tabOpt->text.isEmpty() ) { QStyleOptionFocusRect focusOpt; focusOpt.QStyleOption::operator=(*tabOpt); /*focusOpt.rect = subElementRect(SE_ComboBoxFocusRect, combo, widget);*/ focusOpt.rect = QRect(r.x()+4, r.y()+4, r.width()-8, r.height()-8); drawPrimitive( PE_FrameFocusRect, &focusOpt, p, widget ); } break; } // TABS // ---- case CE_TabBarTabShape: { const QStyleOptionTab* tabOpt = qstyleoption_cast(opt); if (!tabOpt) break; const QTabBar * tb = (const QTabBar *) widget; bool cornerWidget = reverseLayout ? (tabOpt->cornerWidgets&QStyleOptionTab::LeftCornerWidget) : (tabOpt->cornerWidgets&QStyleOptionTab::RightCornerWidget); QTabBar::Shape tbs = tb->shape(); SelectedTab selected = OtherTab; if( tabOpt->selectedPosition == QStyleOptionTab::NextIsSelected ) selected = NextTab; if( tabOpt->selectedPosition == QStyleOptionTab::PreviousIsSelected ) selected = PrevTab; if( flags & State_Selected ) selected = ThisTab; QStyleOptionTab::TabPosition pos = tabOpt->position; //TODO: disabled control doesn't have mouseover bool disabled = !(tabOpt->state & State_Enabled); bool mouseOver = (flags & State_MouseOver) && (selected != ThisTab) && !disabled; /* if (opt.tab() == hoverTab) { mouseOver = true; flags |= State_MouseOver; }*/ switch (tbs) { case QTabBar::TriangularNorth: renderTab(p, r, pal, mouseOver, selected, false, pos, true, cornerWidget, reverseLayout); break; case QTabBar::RoundedNorth: renderTab(p, r, pal, mouseOver, selected, false, pos, false, cornerWidget, reverseLayout); break; case QTabBar::TriangularSouth: renderTab(p, r, pal, mouseOver, selected, true, pos, true, cornerWidget, reverseLayout); break; case QTabBar::RoundedSouth: renderTab(p, r, pal, mouseOver, selected, true, pos, false, cornerWidget, reverseLayout); break; case QTabBar::TriangularEast: case QTabBar::RoundedEast: { r = QRect(r.left(), r.top(), r.height(), r.width()); QTransform m; m.translate(-r.y(), r.y()); m.rotate(90); m.scale(1,-1); p->save(); p->setTransform(m); renderTab(p, r, pal, mouseOver, selected, true, pos, (tbs == QTabBar::TriangularEast), cornerWidget, false); p->restore(); break; } case QTabBar::TriangularWest: case QTabBar::RoundedWest: { r = QRect(r.left(), r.top(), r.height(), r.width()); QTransform m; m.translate(-r.y(), r.y()); m.rotate(90); m.scale(1,-1); p->save(); p->setTransform(m); renderTab(p, r, pal, mouseOver, selected, false, pos, (tbs == QTabBar::TriangularWest), cornerWidget, false); p->restore(); break; } default: #ifdef NO_KDE QWindowsStyle::drawControl(element, opt, p, widget); #else KStyle::drawControl(element, opt, p, widget); #endif } break; } case CE_PushButtonLabel: { int x, y, w, h; r.getRect( &x, &y, &w, &h ); const QStyleOptionButton *buttonOpt = qstyleoption_cast(opt); //Hacky thing for animation support QPushButton* button = (QPushButton *)( widget ); if( !buttonOpt ) { #ifdef NO_KDE QWindowsStyle::drawControl(element, opt, p, widget); #else KStyle::drawControl(element, opt, p, widget); #endif break; } bool active = flags&State_On || flags&State_Sunken; bool cornArrow = false; int textWidth = 0; if( buttonOpt->text.length() > 0 ) { const QFontMetrics &fm = buttonOpt->fontMetrics; textWidth = fm.boundingRect(buttonOpt->text).width(); } // Shift button contents if pushed. if( widget && active ) { x += pixelMetric(PM_ButtonShiftHorizontal, opt, widget); y += pixelMetric(PM_ButtonShiftVertical, opt, widget); //flags |= State_Sunken; } else if( active ) //if there is no widget move only 1 pixel { x += 1; y += 1; } //TODO: decide if a checkbox here makes sense at all, probably not... /*if( button && w > (textWidth + 30) && button->isCheckable() ) { int checkSize = pixelMetric(PM_IndicatorWidth, opt, widget); QStyleOption checkOpt; checkOpt.QStyleOption::operator=(*opt); int checkPos = (int)((double)h/2.0 - ((double)checkSize/3.5)); x += checkSize+checkPos; w -= checkSize+checkPos; if( active ) checkPos += pixelMetric(PM_ButtonShiftHorizontal, opt, widget); //otherwise drawprimitive thinks that it is a tristate if( !(flags&State_On) ) checkOpt.state |= State_Off; checkOpt.rect = QRect(checkPos, checkPos, checkSize, checkSize); drawPrimitive(PE_IndicatorCheckBox, &checkOpt, p, widget); }*/ // Draw the icon if there is one if ( !buttonOpt->icon.isNull() ) { QIcon::Mode mode = QIcon::Disabled; QIcon::State state = flags&State_On ? QIcon::On : QIcon::Off; /*if (button->isEnabled()) mode = button->hasFocus() ? QIcon::Active : QIcon::Normal; if (button->isCheckable() && button->isChecked()) state = QIcon::On;*/ if( flags&State_Enabled ) mode = QIcon::Normal; else mode = QIcon::Disabled; if( mode == QIcon::Normal && flags&State_HasFocus ) mode = QIcon::Active; QPixmap pixmap = buttonOpt->icon.pixmap( pixelMetric(QStyle::PM_SmallIconSize), mode, state ); if (buttonOpt->text.isEmpty() /*&& !button->pixmap()*/) p->drawPixmap( x + w/2 - pixmap.width()/2, y + h / 2 - pixmap.height() / 2, pixmap ); else p->drawPixmap( x + 4, y + h / 2 - pixmap.height() / 2, pixmap ); #if 0 if (cornArrow) //Draw over the icon { QStyleOption arrowOpt; arrowOpt.QStyleOption::operator=(*opt); arrowOpt.rect = visualRect( arrowOpt.direction, r, QRect(x + w - 6, x + h - 6, 7, 7)); drawPrimitive( PE_IndicatorArrowDown, &arrowOpt, p, widget); } #endif int pw = pixmap.width(); x += pw + 4; w -= pw + 4; } //making the text of the default button always readable with a cute animation int animFrame = 0; if( button && _animateButton && (!(buttonOpt->features & QStyleOptionButton::Flat) || active) && button->isDefault() && animWidgets.contains( button )) animFrame = animWidgets[button].animFrame; //12.8 is the maximum amount of blending (256) / ANIMATIONSTEPS (20) QColor textColor = alphaBlendColors( pal.color(QPalette::HighlightedText), pal.color(QPalette::ButtonText), (int)(12.8*animFrame) ); const uint text_flags = Qt::AlignCenter | Qt::TextDontClip | Qt::TextSingleLine | Qt::TextShowMnemonic; // shadow on button text if( _shadowedButtonsText && flags&State_Enabled && !buttonOpt->text.isEmpty() ) { QColor shadowColor = alphaBlendColors( pal.color(QPalette::Highlight), pal.color(QPalette::Button), (int)(12.8*animFrame) ).dark(120+_contrast); QPalette palCopy = pal; palCopy.setColor( QPalette::ButtonText, shadowColor); p->setPen( shadowColor ); p->drawText(QRect(x+1, y+1, w, h), text_flags, _useLowerCaseText? buttonOpt->text.toLower(): buttonOpt->text); } p->setPen( textColor ); p->drawText(QRect(x, y, w, h), text_flags, _useLowerCaseText? buttonOpt->text.toLower(): buttonOpt->text); /*if ( flags & Style_HasFocus ) { QColorGroup g2 = cg; drawPrimitive( PE_FocusRect, p, visualRect( subRect( SR_PushButtonFocusRect, widget ), widget ), g2, flags, opt ); }*/ break; } case CE_ToolBoxTabShape: { const QStyleOptionToolBox *toolBoxOpt = qstyleoption_cast(opt); if( !toolBoxOpt ) break; uint borderFlags = Draw_Top|Draw_Bottom|Draw_Left|Draw_Right|Round_UpperLeft|Round_UpperRight; uint surfaceFlags = borderFlags|Is_Horizontal; if( opt->state & State_Selected ) { surfaceFlags |= Highlight_Top; } else { borderFlags |= Round_BottomLeft|Round_BottomRight; surfaceFlags |= Round_BottomLeft|Round_BottomRight; } renderContour(p,r,pal.color(QPalette::Background), getColor(pal, ButtonContour, true), borderFlags); renderSurface(p,r.adjusted(1,1,-1,-1), pal.color(QPalette::Background), pal.color(QPalette::Button), getColor(pal,FocusHighlight), _contrast, surfaceFlags); break; } // MENUBAR ITEM // ----------------------------------------- case CE_MenuBarItem: { const QStyleOptionMenuItem *miOpt; miOpt = qstyleoption_cast(opt); if (!miOpt) break; bool active = flags & State_Selected; bool focused = flags & State_HasFocus; bool down = flags & State_Sunken; const int text_flags = Qt::AlignVCenter | Qt::AlignHCenter | Qt::TextDontClip | Qt::TextSingleLine | Qt::TextShowMnemonic; if( _menuBarEmphasis ) { QMenuBar *mb = (QMenuBar*)widget; renderSurface(p, mb->rect(), pal.color(QPalette::Background), getColor(pal, MenuBarEmphasis), pal.color(QPalette::Background), _contrast+3, Is_Horizontal); } else { p->fillRect(r, pal.color(QPalette::Background)); } if (active && focused) { if (down) { //drawPrimitive(PE_ButtonTool, p, r, cg, flags|State_Sunken, opt); //code to draw the menubar item as a tab (ugly?) renderSurface(p, QRect(r.left()+1, r.top()+1, r.width()-2, r.height()), pal.color(QPalette::Highlight), pal.color(QPalette::Highlight), pal.color(QPalette::Highlight), _contrast, Is_Horizontal|Draw_Right|Draw_Top|Draw_Left); renderContour(p, r, getColor(pal, MenuBarEmphasis), pal.color(QPalette::Highlight).dark(100+_contrast*8), Draw_Right|Draw_Top|Draw_Left|Round_UpperRight|Round_UpperLeft); //renderTab( p, QRect(r.left(), r.top(), r.width(), r.height()+2), cg, false, true, false, Single, false, false); } else { renderSurface(p, QRect(r.left()+1, r.top()+1, r.width()-2, r.height()-2), pal.color(QPalette::Background), getColor(pal, MenuBarEmphasis), pal.color(QPalette::Background), _contrast, Is_Horizontal|Draw_Right|Draw_Top|Draw_Left|Draw_Bottom); renderContour(p, r, getColor(pal, MenuBarEmphasis), getColor(pal, MenuBarEmphasis).dark(120+_contrast*8), Draw_Right|Draw_Top|Draw_Left|Round_UpperRight|Round_UpperLeft|Draw_Bottom|Round_BottomRight|Round_BottomLeft); //not used this because of the possible custom menubar color //drawPrimitive(PE_ButtonTool, p, r, cg, flags, opt); } } if ( _shadowedMenuBarText ){ if (active && focused && down) p->setPen(pal.color(QPalette::Highlight).dark(100+_contrast*2) ); else p->setPen(getColor(pal, MenuBarEmphasis).dark(100+_contrast*2) ); p->drawText(r.x()+1, r.y()+1, r.width(), r.height(), text_flags, miOpt->text); } if (active && focused && down) p->setPen(pal.color(QPalette::HighlightedText) ); else if( _customMenuBarEmphasisColor ) p->setPen( (qGray(_menuBarEmphasisColor.rgb())>150?pal.color(QPalette::Foreground):Qt::white) ); else p->setPen( pal.color(QPalette::Foreground) ); p->drawText(r, text_flags, miOpt->text); break; } // POPUPMENU ITEM (highlighted on mouseover) // ------------------------------------------ case CE_MenuItem: { const QStyleOptionMenuItem *miOpt; miOpt = qstyleoption_cast(opt); if (!miOpt) break; //Dolphin draws separators with menuitem separators... if( !::qobject_cast(widget) && miOpt->menuItemType == QStyleOptionMenuItem::Separator ) { p->setPen( pal.color(QPalette::Mid) ); p->drawLine( r.x()+5, r.y() + 1, r.right()-5, r.y() + 1 ); if( !_lightBorder) { p->setPen( pal.color(QPalette::Light) ); p->drawLine( r.x()+5, r.y() + 2, r.right()-5 , r.y() + 2 ); } break; } int stripeWidth = qMax(miOpt->maxIconWidth, 22); bool active = (flags & State_Selected); bool checked = (miOpt->checkType != QStyleOptionMenuItem::NotCheckable) ? miOpt->checked : false; bool checkable = miOpt->checkType != QStyleOptionMenuItem::NotCheckable; //background p->fillRect( r, pal.color(QPalette::Background).light( 105 ) ); //stripe if( _menuStripe ) { if( !reverseLayout ) p->fillRect( QRect(r.left(), r.top(), stripeWidth, r.height()), pal.color(QPalette::Background).dark( 110+_contrast ) ); else p->fillRect( QRect(r.right()-stripeWidth, r.top(), stripeWidth, r.height()), pal.color(QPalette::Background).dark( 110+_contrast ) ); } //active? if( active ) { //FIXME: why i must put r.width()-3? QRect r2 = QRect(r.left()+1, r.top()+1, r.width()-3, r.height()-2); QRect r3 = QRect(r.left()+2, r.top()+2, r.width()-5, r.height()-4); //enabled? if( enabled ) { if (_buttonMenuItem ) { renderSurface(p, r3, pal.color(QPalette::Background), pal.color(QPalette::Highlight), pal.color(QPalette::Highlight), _contrast+3, Is_Horizontal|Draw_Right|Draw_Top|Draw_Bottom|Draw_Left); renderContour(p, r2, pal.color(QPalette::Background), pal.color(QPalette::Highlight).dark(100+_contrast*8), Draw_Right|Draw_Top|Draw_Bottom|Draw_Left|Round_UpperRight|Round_UpperLeft|Round_BottomRight|Round_BottomLeft|Draw_AlphaBlend); } else renderSurface(p, r, pal.color(QPalette::Background), pal.color(QPalette::Highlight), pal.color(QPalette::Highlight), _contrast+3, Is_Horizontal|Draw_Top|Draw_Bottom); } else { qreal opacity = p->opacity(); p->setOpacity(0.8); QColor background = pal.color(QPalette::Background); if (_buttonMenuItem ) { renderSurface(p, r3, background, background.light(120), pal.color(QPalette::Highlight), _contrast+3, Is_Horizontal|Round_UpperLeft| Round_BottomRight|Round_BottomLeft); renderContour(p, r2, pal.color(QPalette::Background), pal.color(QPalette::Background).dark(100+_contrast*5), Draw_Right|Draw_Top|Draw_Bottom|Draw_Left|Round_UpperRight|Round_UpperLeft|Round_BottomRight|Round_BottomLeft|Draw_AlphaBlend); } else renderSurface(p, r, background, background.light(120), pal.color(QPalette::Highlight), _contrast+3, Is_Horizontal|Draw_Top|Draw_Bottom| Draw_Left|Draw_Right); p->setOpacity(opacity); } } // Are we a menu item separator? if( miOpt->menuItemType == QStyleOptionMenuItem::Separator ) { p->setPen( pal.color(QPalette::Mid) ); if( !reverseLayout ) { p->drawLine( r.x()+stripeWidth, r.y() + 1, r.right()-5, r.y() + 1 ); if( !_lightBorder) { p->setPen( pal.color(QPalette::Light) ); p->drawLine( r.x()+stripeWidth, r.y() + 2, r.right()-5 , r.y() + 2 ); } } else { p->drawLine( r.x()+5, r.y() + 1, r.right()-24, r.y() + 1 ); if( !_lightBorder) { p->setPen( pal.color(QPalette::Light) ); p->drawLine( r.x()+5, r.y() + 2, r.right()-24 , r.y() + 2 ); } } break; } QRect vrect = visualRect(miOpt->direction, r, QRect(x, y, stripeWidth, h)); //Checkbox, radiobutton or checked icon? //TODO: the radiobutton is drawn poorly but this is NOT going to be fixed //until the surfaces are drawn with QBrush if( checkable ) { QStyleOptionMenuItem miOptCheck = *miOpt; miOptCheck.rect = QRect(vrect.x()+5, vrect.y()+5, 13, 13); if(!miOpt->icon.isNull()) { if( checked ) { miOptCheck.state |= State_Off; miOptCheck.rect = vrect; drawPrimitive(PE_IndicatorCheckBox, &miOptCheck, p, widget); } } else if( (miOpt->checkType & QStyleOptionMenuItem::Exclusive) ) { if( checked ) miOptCheck.state |= State_On; else miOptCheck.state |= State_Off; drawPrimitive(PE_IndicatorRadioButton, &miOptCheck, p, widget); } else { if( checked ) miOptCheck.state |= State_On; else miOptCheck.state |= State_Off; drawPrimitive(PE_IndicatorCheckBox, &miOptCheck, p, widget); } } // Do we have an icon? if ( !miOpt->icon.isNull() ) { QIcon::Mode mode; // Select the correct icon from the iconset if( active ) mode = enabled?QIcon::Active:QIcon::Disabled; else mode = enabled?QIcon::Normal:QIcon::Disabled; // Draw the icon QPixmap pixmap = miOpt->icon.pixmap(pixelMetric(PM_SmallIconSize), mode); QRect pmr( 0, 0, pixmap.width(), pixmap.height() ); pmr.moveCenter( vrect.center() ); p->drawPixmap( pmr.topLeft(), pixmap ); } //draw text QString text = miOpt->text; int xm = 2 + stripeWidth; // X position margin int xp = reverseLayout ? // X position r.x() + miOpt->tabWidth + rightBorder + itemHMargin + itemFrame - 1 : r.x() + xm; //int offset = reverseLayout ? -1 : 1; // Shadow offset for etched text // Label width (minus the width of the accelerator portion) int tw = r.width() - xm - miOpt->tabWidth - arrowHMargin - itemHMargin * 3 - itemFrame + 1; QRect trect(xp, y+itemVMargin, tw, h - 2 * itemVMargin); vrect = visualRect(opt->direction, r, trect); //p->setPen( enabled ? pal.color(QPalette::ButtonText) : pal.color(QPalette::Mid) ); if( active && enabled ) p->setPen( pal.color(QPalette::HighlightedText) ); else if( enabled ) p->setPen( pal.color(QPalette::Text) ); else p->setPen( pal.color(QPalette::Mid) ); if(!text.isEmpty()) { p->save(); //default is bold if (miOpt->menuItemType == QStyleOptionMenuItem::DefaultItem) { QFont font = miOpt->font; font.setBold(true); p->setFont(font); } int t = text.indexOf('\t'); int tFlags = Qt::AlignVCenter | Qt::AlignLeft | Qt::TextDontClip | Qt::TextSingleLine; if (styleHint(SH_UnderlineShortcut, miOpt, widget)) tFlags |= Qt::TextShowMnemonic; else tFlags |= Qt::TextHideMnemonic; //(accelerator) if (t >= 0) { QRect tabrect = visualRect(opt->direction, r, QRect(trect.topRight(), QPoint(r.right(), trect.bottom()))); p->drawText(tabrect, tFlags, text.mid(t+1)); text = text.left(t); } p->drawText(vrect, tFlags, text.left(t)); p->restore(); } //Draw arrow at the far end of the menu item if( miOpt->menuItemType == QStyleOptionMenuItem::SubMenu ) { QStyleOptionMenuItem miOptArrow = *miOpt; PrimitiveElement arrow = reverseLayout ? PE_IndicatorArrowLeft : PE_IndicatorArrowRight; int dim = pixelMetric(PM_MenuButtonIndicator) - 1; QRect vr = visualRect(miOpt->direction, r, QRect( r.left() + r.width() - 5 - 1 - dim, r.y() + r.height() / 2 - dim / 2, dim, dim) ); miOptArrow.rect = vr; if( active ) miOptArrow.palette.setColor(QPalette::ButtonText, miOptArrow.palette.highlightedText().color()); drawPrimitive(arrow, &miOptArrow, p, widget); } break; } case CE_MenuBarEmptyArea: { if( _menuBarEmphasis ) { renderSurface(p, r, pal.color(QPalette::Background), getColor(pal, MenuBarEmphasis), pal.color(QPalette::Background), _contrast+3, Is_Horizontal); if( _menuBarEmphasisBorder ) { int margin = pixelMetric(PM_MenuBarPanelWidth, opt, widget); renderContour(p, QRect(r.x()+margin,r.y()+margin,r.width()-2*margin,r.height()-2*margin), pal.color(QPalette::Background), getColor(pal, MenuBarEmphasis).dark(115), Draw_Left|Draw_Top|Draw_Bottom|Draw_Right| Round_UpperLeft|Round_UpperRight| Round_BottomRight|Round_BottomLeft); } } else p->fillRect(r, pal.color(QPalette::Background)); // if ( _drawToolBarSeparator ) { // p->setPen( getColor(pal, PanelDark) ); // p->drawLine( r.left(), r.bottom(), r.right(), r.bottom() ); // } break; } #if 0 case CE_HeaderLabel: { const QStyleOptionHeader *headerOpt = qstyleoption_cast(opt); //const QHeader *header = static_cast< const QHeader * >( widget ); if( !headerOpt ) break; //const QS /*int headerId = header->sectionAt( (header->orientation()==Qt::Horizontal?r.x():r.y()) + header->offset());*/ QString text = headerOpt->text; // Does the header have a text label? if( !text.isNull() ) { int t = text.indexOf( '\t' ); int text_flags = Qt::AlignVCenter | Qt::TextDontClip | Qt::TextSingleLine | Qt::TextShowMnemonic; text_flags |= reverseLayout ? Qt::AlignRight : Qt::AlignLeft; p->setPen(pal.color(QPalette::Text)); /*draw the text label always attempting to display the entire label, except when reverse layout the text label is already shown entirely*/ p->drawText( QRect(r.x()<=2&&!reverseLayout?2:r.x(), r.y(), r.width(), r.height()), text_flags, text.left(t) ); } if( !headerOpt->icon.isNull() ) { QIcon::Mode mode = QIcon::Normal; QIcon::State state = QIcon::On; QPixmap pixmap = headerOpt->icon.pixmap( pixelMetric(QStyle::PM_SmallIconSize) , mode, state ); p->drawPixmap(r.x(), r.y()+r.height()/2-pixmap.height()/2, pixmap); } break; } #endif default: #ifdef NO_KDE QWindowsStyle::drawControl(element, opt, p, widget); #else KStyle::drawControl(element, opt, p, widget); #endif } } kde-style-polyester-2.0.0.orig/style/scrollareaborder.h0000755000175000001440000000531611146600215022123 0ustar pinousers/* Polyester widget style for KDE 4 Copyright (C) 2006 Marco Martin based on Plastik widget style for KDE 3 Copyright (C) 2003 Sandro Giessl based on the KDE style "dotNET": Copyright (C) 2001-2002, Chris Lee Carsten Pfeiffer Karol Szwed Drawing routines completely reimplemented from KDE3 HighColor, which was originally based on some stuff from the KDE2 HighColor. based on drawing routines of the style "Keramik": Copyright (c) 2002 Malte Starostik (c) 2002,2003 Maksim Orlovich based on the KDE3 HighColor Style Copyright (C) 2001-2002 Karol Szwed (C) 2001-2002 Fredrik Höglund Drawing routines adapted from the KDE2 HCStyle, Copyright (C) 2000 Daniel M. Duley (C) 2000 Dirk Mueller (C) 2001 Martijn Klingens Progressbar code based on KStyle, Copyright (C) 2001-2002 Karol Szwed This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License version 2 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef __SCROLLAREABORDER_H #define __SCROLLAREABORDER_H #include #include #include class ScrollAreaBorder : public QWidget { Q_OBJECT public: enum Orientation { Top, Bottom, Left, Right }; private: Orientation o; QColor borderColor; QColor highlightColor; int alpha; int highlightAlpha; bool shadow; public: ScrollAreaBorder( Orientation orient, const QColor &col, const QColor &highlightCol, const int contrast, const bool drawShadow, QWidget *parent = 0 ); ~ScrollAreaBorder(); Orientation orientation(){return o;} protected: void paintEvent(QPaintEvent *); }; #endif // __SCROLLAREABORDER_H kde-style-polyester-2.0.0.orig/style/polyester.cpp0000755000175000001440000057244211146600215021170 0ustar pinousers/* Polyester widget style for KDE 4 Copyright (C) 2006 Marco Martin based on Plastik widget style for KDE 3 Copyright (C) 2003 Sandro Giessl based on the KDE style "dotNET": Copyright (C) 2001-2002, Chris Lee Carsten Pfeiffer Karol Szwed Drawing routines completely reimplemented from KDE3 HighColor, which was originally based on some stuff from the KDE2 HighColor. based on drawing routines of the style "Keramik": Copyright (c) 2002 Malte Starostik (c) 2002,2003 Maksim Orlovich based on the KDE3 HighColor Style Copyright (C) 2001-2002 Karol Szwed (C) 2001-2002 Fredrik Höglund Drawing routines adapted from the KDE2 HCStyle, Copyright (C) 2000 Daniel M. Duley (C) 2000 Dirk Mueller (C) 2001 Martijn Klingens Progressbar code based on KStyle, Copyright (C) 2001-2002 Karol Szwed This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License version 2 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "polyester.h" #include "moc_polyester.cpp" #include #include //bitmap for the slider handle static const unsigned char slider_mask_bits[] = { 0xfe, 0xfc, 0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe}; PolyesterStyle::PolyesterStyle() : #ifdef NO_KDE QWindowsStyle(), #else KStyle(), #endif flatMode(false) { horizontalDots = 0; verticalDots = 0; QSettings globalSettings; _contrast = globalSettings.value("/Qt/KDE/contrast", 6).toInt(); QSettings settings("Polyester", "Style"); settings.beginGroup("Style"); _useLowerCaseText = settings.value("useLowerCaseText", false).toBool(); _scrollBarLines = settings.value("scrollBarLines", false).toBool(); _scrollBarStyle = settings.value("scrollBarStyle", "ThreeButtonScrollBar").toString(); _scrollBarExtent = settings.value("scrollBarSize", 16).toInt(); if(_scrollBarExtent < 8 || _scrollBarExtent > 48) _scrollBarExtent = 16; _animateProgressBar = settings.value("animateProgressBar", false).toBool(); _animateButton = settings.value("animateButton", false).toBool(); /*don't animate buttons in gtk-qt or openoffice, they aren't able to do so :-)*/ if( ( qstrcmp( qApp->argv() [ 0 ], "unknown" ) == 0 ) || ( qstrcmp( qApp->argv() [ 0 ], "soffice.bin" ) == 0 )) _animateButton = false; _animateButtonToDark = settings.value("animateButtonToDark", false).toBool(); _buttonStyle = settings.value("buttonStyle", "glass").toString(); _lightBorder= settings.value("lightBorder", true).toBool(); _coloredScrollBar = settings.value("coloredScrollBar", true).toBool(); _sunkenShadows = settings.value("sunkenShadows", true).toBool(); _centeredTabBar = settings.value("centeredTabBar", false).toBool(); _highLightTab = settings.value("highLightTab", true).toBool(); _statusBarFrame = settings.value("statusBarFrame", true).toBool(); _colorizeSortedHeader = settings.value("colorizeSortedHeader", true).toBool(); _menuItemSpacing = settings.value("menuItemSpacing", 8).toInt(); if( _menuItemSpacing > 12 || _menuItemSpacing < 0 ) _menuItemSpacing = 8; _buttonMenuItem = settings.value("buttonMenuItem", true).toBool(); _menuBarEmphasis = settings.value("menuBarEmphasis", false).toBool(); _menuBarEmphasisBorder = settings.value("menuBarEmphasisBorder", true).toBool(); if( _menuBarEmphasis ) _customMenuBarEmphasisColor = settings.value("customMenuBarEmphasisColor", false).toBool(); else _customMenuBarEmphasisColor = false; _menuBarEmphasisColor = settings.value("menuBarEmphasisColor", "black").toString(); _menuStripe = settings.value("menuStripe", true).toBool(); _shadowedMenuBarText = settings.value("shadowedMenuBarText", true).toBool(); _shadowedButtonsText = settings.value("shadowedButtonsText", true).toBool(); _drawToolBarSeparator = settings.value("drawToolBarSeparator", true).toBool(); _drawToolBarItemSeparator = settings.value("drawToolBarItemSeparator", true).toBool(); _drawFocusRect = settings.value("drawFocusRect", true).toBool(); _drawTriangularExpander = settings.value("drawTriangularExpander", false).toBool(); _inputFocusHighlight = settings.value("inputFocusHighlight", true).toBool(); _customOverHighlightColor = settings.value("customOverHighlightColor", false).toBool(); _overHighlightColor.setNamedColor( settings.value("overHighlightColor", "black").toString() ); _customFocusHighlightColor = settings.value("customFocusHighlightColor", false).toBool(); _focusHighlightColor.setNamedColor( settings.value("focusHighlightColor", "black").toString() ); _customCheckMarkColor = settings.value("customCheckMarkColor", false).toBool(); _checkMarkColor.setNamedColor( settings.value("checkMarkColor", "black").toString() ); settings.endGroup(); if( !_scrollBarStyle.compare( "ThreeButtonScrollBar" ) ) _scrollBarType = ThreeButtonScrollBar; else if( !_scrollBarStyle.compare( "WindowsStyleScrollBar" ) ) _scrollBarType = WindowsStyleScrollBar; else if( !_scrollBarStyle.compare( "PlatinumStyleScrollBar" ) ) _scrollBarType = PlatinumStyleScrollBar; else if( !_scrollBarStyle.compare( "NextStyleScrollBar" ) ) _scrollBarType = NextStyleScrollBar; else _scrollBarType = NoButtonsScrollBar; // setup pixmap cache... /* pixmapCache = new QIntCache(150000, 499); pixmapCache->setAutoDelete(true);*/ // setup pixmap cache... pixmapCache = new QCache(327680); #ifndef NO_KDE setWidgetLayoutProp(WT_MenuBar, MenuBar::ItemSpacing, 0); setWidgetLayoutProp(WT_MenuBar, MenuBar::Margin, 0); setWidgetLayoutProp(WT_MenuBar, MenuBar::Margin + Left, 0); setWidgetLayoutProp(WT_MenuBar, MenuBar::Margin + Right, 0); setWidgetLayoutProp(WT_MenuBar, MenuBar::Margin + Top, 0); setWidgetLayoutProp(WT_MenuBar, MenuBar::Margin + Bot, 2); setWidgetLayoutProp(WT_MenuBarItem, MenuBarItem::Margin, 3); setWidgetLayoutProp(WT_MenuBarItem, MenuBarItem::Margin+Left, 8); setWidgetLayoutProp(WT_MenuBarItem, MenuBarItem::Margin+Right, 8); setWidgetLayoutProp(WT_MenuBarItem, MenuBarItem::Margin+Top, 0); setWidgetLayoutProp(WT_MenuBarItem, MenuBarItem::Margin+Bot, 0); #endif //if ( _animateProgressBar ) { animationTimer = new QTimer( this ); connect( animationTimer, SIGNAL(timeout()), this, SLOT(updateProgressPos()) ); } if ( _animateButton ) { btnAnimTimer = new QTimer( this ); connect( btnAnimTimer, SIGNAL(timeout()), this, SLOT(animate()) ); } } void PolyesterStyle::updateProgressPos() { QProgressBar* pb; //Update the registered progressbars. QMap::iterator iter; bool visible = false; for (iter = progAnimWidgets.begin(); iter != progAnimWidgets.end(); iter++) { pb = dynamic_cast(iter.key()); if ( !pb ) continue; if ( iter.key() -> isEnabled() && pb -> value() != pb->maximum() ) { // update animation Offset of the current Widget iter.value() = (iter.value() + 1) % 20; iter.key()->update(); } if ((pb->minimum() == 0 && pb->maximum() == 0)) { pb->setValue(pb->value()+1); pb->update(); } if (iter.key()->isVisible()) visible = true; } if (!visible) animationTimer->stop(); } void PolyesterStyle::animate() { btnAnimTimer->stop(); int animationDelta = 1; if( _animateButtonToDark ) animationDelta = -1; bool mustStop = true; for ( AnimWidgetMap::iterator it = animWidgets.begin(); it != animWidgets.end(); ++it) { QWidget *widget = it.key(); if( animWidgets[widget].active == true ) { mustStop = false; if(abs(animWidgets[widget].animFrame) < ANIMATIONSTEPS) { if ( _animateButton ) { animWidgets[widget].animFrame += animationDelta; widget->repaint(); } else { animWidgets[widget].animFrame = ANIMATIONSTEPS; } } } else { if(abs(animWidgets[widget].animFrame) > 0) { mustStop = false; if ( _animateButton ) { animWidgets[widget].animFrame -= animationDelta; widget->repaint(); } else { animWidgets[widget].animFrame = 0; } // btnAnimTimer->start(TIMERINTERVAL, true); // single-shot } } } if( !mustStop ) { btnAnimTimer->setSingleShot( true ); btnAnimTimer->start(TIMERINTERVAL); } } PolyesterStyle::~PolyesterStyle() { delete pixmapCache; delete horizontalDots; delete verticalDots; } void PolyesterStyle::polish(QApplication* app) { #ifdef NO_KDE QWindowsStyle::polish(app); #else KStyle::polish(app); #endif } void PolyesterStyle::polish(QPalette& pal) { #ifdef NO_KDE QWindowsStyle::polish(pal); #else KStyle::polish(pal); #endif } void PolyesterStyle::polish(QWidget* widget) { // use qobject_cast where possible to check if the widget inheits one of the classes. might improve // performance compared to QObject::inherits() //TODO:don't add to animwidgets non animated widgets :) if ( ::qobject_cast(widget) || ::qobject_cast(widget) || ::qobject_cast(widget) || ::qobject_cast(widget) || ::qobject_cast(widget) || ::qobject_cast(widget) || ::qobject_cast(widget) || widget->inherits("QSplitterHandle") ) { // widget->setBackgroundMode(PaletteBackground); widget->installEventFilter(this); if( _animateButton ) { //TODO: discover if it's going to stay deleted... //if (!btnAnimTimer->isActive()) // btnAnimTimer->start( TIMERINTERVAL, false ); animWidgets[widget].active = false; connect(widget, SIGNAL(destroyed(QObject*)), this, SLOT(animWidgetDestroyed(QObject*))); } widget->setAttribute(Qt::WA_Hover); /*QSlider *slider = ::qobject_cast(widget); if(slider) { connect(slider, SIGNAL(sliderMoved(int)), this, SLOT(sliderThumbMoved(int))); connect(slider, SIGNAL(valueChanged(int)), this, SLOT(sliderThumbMoved(int))); }*/ } else if( qobject_cast(widget) || widget->inherits("QHeaderView")) { widget->setAttribute(Qt::WA_Hover); widget->installEventFilter(this); } else if( qobject_cast(widget)) { widget->setAttribute(Qt::WA_Hover); //widget->setAttribute(Qt::WA_OpaquePaintEvent, false); } else if (QFrame *frame = qobject_cast(widget)) { //never ugly panels(idea from bespin)... /* if( frame->frameShape() == QFrame::Box || frame->frameShape() == QFrame::Panel || frame->frameShape() == QFrame::WinPanel ) frame->setFrameShape(QFrame::StyledPanel);*/ // overwrite ugly lines if( frame->frameShape() == QFrame::HLine || frame->frameShape() == QFrame::VLine ) widget->installEventFilter(this); } else if (qobject_cast(widget) || widget->inherits("Q3ToolBar") || qobject_cast(widget) || (widget && qobject_cast(widget->parent())) ) { widget->setBackgroundRole(QPalette::Background); } if( QAbstractScrollArea *area = qobject_cast(widget)) { //TODO:don't make shadow on QGraphicsViews //QGraphicsView *view = qobject_cast(widget); bool systemBackground = !(area->testAttribute(Qt::WA_NoSystemBackground)); if( _sunkenShadows && systemBackground && area->frameStyle() == (QFrame::StyledPanel | QFrame::Sunken) ) { widget->installEventFilter(this); QColor borderColor = getColor(widget->palette(), PanelContour); QColor highlightColor = getColor(widget->palette(), MouseOverHighlight); QWidget * borderLeft = new ScrollAreaBorder(ScrollAreaBorder::Left, borderColor, highlightColor, _contrast, true, area); QWidget * borderRight = new ScrollAreaBorder(ScrollAreaBorder::Right, borderColor, highlightColor, _contrast, true, area); QWidget * borderTop = new ScrollAreaBorder(ScrollAreaBorder::Top, borderColor, highlightColor, _contrast, true, area); QWidget * borderBottom = new ScrollAreaBorder(ScrollAreaBorder::Bottom, borderColor, highlightColor, _contrast, true, area); borderLeft->show(); borderRight->show(); borderTop->show(); borderBottom->show(); } else if( systemBackground && area->frameShape() == QFrame::StyledPanel ) { widget->installEventFilter(this); QColor borderColor = getColor(widget->palette(), PanelContour); QColor highlightColor = getColor(widget->palette(), MouseOverHighlight); QWidget * borderTop = new ScrollAreaBorder(ScrollAreaBorder::Top, borderColor, highlightColor, _contrast, false, area); QWidget * borderBottom = new ScrollAreaBorder(ScrollAreaBorder::Bottom, borderColor, highlightColor, _contrast, false, area); borderTop->show(); borderBottom->show(); } } //HACK: if the height of the parent widget is "not much", assuming we're in a statusbar, //this for not animating dolphin statusbar progressbar all the time (it's not a QStatusBar it seems) if( !widget->parentWidget() || widget->parentWidget()->height() > widget->height()*2 ) { if( QProgressBar* pb = ::qobject_cast(widget)) { widget->installEventFilter(this); progAnimWidgets[widget] = 0; connect(widget, SIGNAL(destroyed(QObject*)), this, SLOT(progressBarDestroyed(QObject*))); if( !animationTimer->isActive() ) { if( pb->minimum() == 0 && pb->maximum() == 0 ) animationTimer->start( 25 ); else if( _animateProgressBar ) animationTimer->start( 50 ); } } } #ifdef NO_KDE QWindowsStyle::polish(widget); #else KStyle::polish(widget); #endif } void PolyesterStyle::unpolish(QWidget* widget) { // use qobject_cast to check if the widget inheits one of the classes. if ( ::qobject_cast(widget) || ::qobject_cast(widget) || ::qobject_cast(widget) || ::qobject_cast(widget) || ::qobject_cast(widget) || ::qobject_cast(widget) || ::qobject_cast(widget) || ::qobject_cast(widget) || widget->inherits("QSplitterHandle") ) { widget->removeEventFilter(this); widget->setAttribute(Qt::WA_Hover, false); animWidgets.remove(widget); } if (qobject_cast(widget) || widget->inherits("Q3ToolBar") || qobject_cast(widget) || (widget && qobject_cast(widget->parent())) ) { widget->setBackgroundRole(QPalette::Button); } const QSlider *slider = ::qobject_cast(widget); if(slider && sliderValues.contains(slider)) sliderValues.remove(slider); if ( ::qobject_cast(widget) ) { progAnimWidgets.remove(widget); } if( QAbstractScrollArea *area = qobject_cast(widget)) { if( area->frameShape() == QFrame::StyledPanel ) { QList borders = area->findChildren(); foreach (ScrollAreaBorder *border, borders) { border->hide(); border->deleteLater(); } } } if( QFrame *frame = qobject_cast(widget) ) { if( frame->frameShape() == QFrame::HLine || frame->frameShape() == QFrame::VLine ) widget->removeEventFilter(this); } #ifdef NO_KDE QWindowsStyle::unpolish(widget); #else KStyle::unpolish(widget); #endif } void PolyesterStyle::unpolish(QApplication* app) { #ifdef NO_KDE QWindowsStyle::unpolish(app); #else KStyle::unpolish(app); #endif } void PolyesterStyle::progressBarDestroyed(QObject* obj) { progAnimWidgets.remove(static_cast(obj)); } void PolyesterStyle::animWidgetDestroyed(QObject* obj) { animWidgets.remove(static_cast(obj)); } void PolyesterStyle::renderContour(QPainter *p, const QRect &r, const QColor &backgroundColor, const QColor &contour, const uint flags) const { if((r.width() <= 0)||(r.height() <= 0)) return; const bool drawLeft = flags&Draw_Left; const bool drawRight = flags&Draw_Right; const bool drawTop = flags&Draw_Top; const bool drawBottom = flags&Draw_Bottom; const bool disabled = flags&Is_Disabled; const bool sharpTopLeft = flags&Sharp_UpperLeft; const bool sharpTopRight = flags&Sharp_UpperRight; const bool sharpBottomLeft = flags&Sharp_BottomLeft; const bool sharpBottomRight = flags&Sharp_BottomRight; QColor contourColor; if (disabled) { contourColor = backgroundColor.dark(150); } else { contourColor = contour; } // sides p->setPen( alphaBlendColors(backgroundColor, contourColor, 50) ); if(drawLeft) p->drawLine(r.left(), drawTop?r.top()+2:r.top(), r.left(), drawBottom?r.bottom()-2:r.bottom()); if(drawRight) p->drawLine(r.right(), drawTop?r.top()+2:r.top(), r.right(), drawBottom?r.bottom()-2:r.bottom()); if(drawTop) p->drawLine(drawLeft?r.left()+2:r.left(), r.top(), drawRight?r.right()-2:r.right(), r.top()); if(drawBottom) p->drawLine(drawLeft?r.left()+2:r.left(), r.bottom(), drawRight?r.right()-2:r.right(), r.bottom()); // edges // first part... p->setPen(alphaBlendColors(backgroundColor, contourColor, 50) ); if(drawLeft && drawTop) { switch(flags&Round_UpperLeft) { case false: p->drawPoint(r.left()+1, r.top()); p->drawPoint(r.left(), r.top()+1); break; default: p->drawPoint(r.left()+1, r.top()+1); } } if(drawLeft && drawBottom) { switch(flags&Round_BottomLeft) { case false: p->drawPoint(r.left()+1, r.bottom()); p->drawPoint(r.left(), r.bottom()-1); break; default: p->drawPoint(r.left()+1, r.bottom()-1); } } if(drawRight && drawTop) { switch(flags&Round_UpperRight) { case false: p->drawPoint(r.right()-1, r.top()); p->drawPoint(r.right(), r.top()+1); break; default: p->drawPoint(r.right()-1, r.top()+1); } } if(drawRight && drawBottom) { switch(flags&Round_BottomRight) { case false: p->drawPoint(r.right()-1, r.bottom()); p->drawPoint(r.right(), r.bottom()-1); break; default: p->drawPoint(r.right()-1, r.bottom()-1); } } // second part... fill edges in case we don't paint alpha-blended /* p->setPen( backgroundColor ); if (!alphaBlend) { if(flags&Round_UpperLeft && drawLeft && drawTop) { p->drawPoint( r.x(), r.y() ); } if(flags&Round_BottomLeft && drawLeft && drawBottom) { p->drawPoint( r.x(), r.bottom() ); } if(flags&Round_UpperRight && drawRight && drawTop) { p->drawPoint( r.right(), r.y() ); } if(flags&Round_BottomRight && drawRight && drawBottom) { p->drawPoint( r.right(), r.bottom() ); } }*/ qreal oldOpacity = p->opacity(); qreal newOpacity = oldOpacity/3; // third part... anti-aliasing... if(drawLeft && drawTop) { switch(flags&Round_UpperLeft) { case false: p->setOpacity(newOpacity); p->drawPoint(r.left(),r.top()); p->setOpacity(oldOpacity); //TODO: renderpixel.. renderPixel(p,QPoint(r.left(),r.top()),alphaAA,contourColor,backgroundColor,alphaBlend); break; default: p->setOpacity(newOpacity); p->drawPoint(r.left()+1,r.top()); p->drawPoint(r.left(),r.top()+1); p->setOpacity(oldOpacity); /*renderPixel(p,QPoint(r.left()+1,r.top()),alphaAA,contourColor,backgroundColor,alphaBlend); renderPixel(p,QPoint(r.left(),r.top()+1),alphaAA,contourColor,backgroundColor,alphaBlend);*/ } } if(drawLeft && drawBottom) { switch(flags&Round_BottomLeft) { case false: p->setOpacity(newOpacity); p->drawPoint(r.left(),r.bottom()); p->setOpacity(oldOpacity); //renderPixel(p,QPoint(r.left(),r.bottom()),alphaAA,contourColor,backgroundColor,alphaBlend); break; default: p->setOpacity(newOpacity); p->drawPoint(r.left()+1,r.bottom()); p->drawPoint(r.left(),r.bottom()-1); p->setOpacity(oldOpacity); /*renderPixel(p,QPoint(r.left()+1,r.bottom()),alphaAA,contourColor,backgroundColor,alphaBlend); renderPixel(p,QPoint(r.left(),r.bottom()-1),alphaAA,contourColor,backgroundColor,alphaBlend);*/ } } if(drawRight && drawTop) { switch(flags&Round_UpperRight) { case false: p->setOpacity(newOpacity); p->drawPoint(QPoint(r.right(),r.top())); p->setOpacity(oldOpacity); //renderPixel(p,QPoint(r.right(),r.top()),alphaAA,contourColor,backgroundColor,alphaBlend); break; default: p->setOpacity(newOpacity); p->drawPoint(QPoint(r.right()-1,r.top())); p->drawPoint(QPoint(r.right(),r.top()+1)); p->setOpacity(oldOpacity); /*renderPixel(p,QPoint(r.right()-1,r.top()),alphaAA,contourColor,backgroundColor,alphaBlend); renderPixel(p,QPoint(r.right(),r.top()+1),alphaAA,contourColor,backgroundColor,alphaBlend);*/ } } if(drawRight && drawBottom) { switch(flags&Round_BottomRight) { case false: p->setOpacity(newOpacity); p->drawPoint(QPoint(r.right(),r.bottom())); p->setOpacity(oldOpacity); //renderPixel(p,QPoint(r.right(),r.bottom()),alphaAA,contourColor,backgroundColor,alphaBlend); break; default: p->setOpacity(newOpacity); p->drawPoint(QPoint(r.right()-1,r.bottom())); p->drawPoint(QPoint(r.right(),r.bottom()-1)); p->setOpacity(oldOpacity); /*renderPixel(p,QPoint(r.right()-1,r.bottom()),alphaAA,contourColor,backgroundColor,alphaBlend); renderPixel(p,QPoint(r.right(),r.bottom()-1),alphaAA,contourColor,backgroundColor,alphaBlend);*/ } } //HACK: paint the sharp border over the rest, it's NoGooD(tm) p->setPen( alphaBlendColors(backgroundColor, contourColor, 50) ); if( !(flags&Round_UpperLeft) && sharpTopLeft ) p->drawPoint( r.left(), r.top() ); if( !(flags&Round_UpperRight) && sharpTopRight ) p->drawPoint( r.right(), r.top() ); if( !(flags&Round_BottomLeft) && sharpBottomLeft ) p->drawPoint( r.left(), r.bottom() ); if( !(flags&Round_BottomRight) && sharpBottomRight ) p->drawPoint( r.right(), r.bottom() ); } void PolyesterStyle::renderMask(QPainter *p, const QRect &r, const QColor &color, const uint flags) const { if((r.width() <= 0)||(r.height() <= 0)) return; const bool roundUpperLeft = flags&Round_UpperLeft; const bool roundUpperRight = flags&Round_UpperRight; const bool roundBottomLeft = flags&Round_BottomLeft; const bool roundBottomRight = flags&Round_BottomRight; p->fillRect (QRect(r.x()+1, r.y()+1, r.width()-2, r.height()-2) , color); p->setPen(color); // sides p->drawLine(roundUpperLeft?r.x()+1:r.x(), r.y(), roundUpperRight?r.right()-1:r.right(), r.y() ); p->drawLine(roundBottomLeft?r.x()+1:r.x(), r.bottom(), roundBottomRight?r.right()-1:r.right(), r.bottom() ); p->drawLine(r.x(), roundUpperLeft?r.y()+1:r.y(), r.x(), roundBottomLeft?r.bottom()-1:r.bottom() ); p->drawLine(r.right(), roundUpperLeft?r.y()+1:r.y(), r.right(), roundBottomLeft?r.bottom()-1:r.bottom() ); } void PolyesterStyle::renderSurface(QPainter *p, const QRect &r, const QColor &backgroundColor, const QColor &buttonColor, const QColor &highlightColor, int intensity, const uint flags) const { if((r.width() <= 0)||(r.height() <= 0)) return; const bool disabled = flags&Is_Disabled; const bool drawLeft = flags&Draw_Left; const bool drawRight = flags&Draw_Right; const bool drawTop = flags&Draw_Top; const bool drawBottom = flags&Draw_Bottom; const bool roundUpperLeft = flags&Round_UpperLeft; const bool roundUpperRight = flags&Round_UpperRight; const bool roundBottomLeft = flags&Round_BottomLeft; const bool roundBottomRight = flags&Round_BottomRight; const bool sunken = flags&Is_Sunken; const bool horizontal = flags&Is_Horizontal; bool highlight = false, highlightLeft = false, highlightRight = false, highlightTop = false, highlightBottom = false; // only highlight if not sunken & not disabled... if(!sunken && !disabled) { highlight = (flags&Is_Highlight); highlightLeft = (flags&Highlight_Left); highlightRight = (flags&Highlight_Right); highlightTop = (flags&Highlight_Top); highlightBottom = (flags&Highlight_Bottom); } QColor baseColor = alphaBlendColors(backgroundColor, disabled?backgroundColor:buttonColor, 10); if (disabled) { intensity = 2; } else if (highlight) { // blend this _slightly_ with the background baseColor = alphaBlendColors(baseColor, highlightColor, 240); baseColor.setAlpha(255); } else if (sunken) { // enforce a common sunken-style... baseColor = baseColor.dark(100+intensity); //intensity = _contrast*2; } // some often needed colors... // 1 more intensive than 2. const QColor colorTop1 = alphaBlendColors(baseColor, sunken?baseColor.dark(100+intensity*2):baseColor.light(100+intensity*2), 80); const QColor colorTop2 = alphaBlendColors(baseColor, sunken?baseColor.dark(100+intensity):baseColor.light(100+intensity), 80); const QColor colorBottom1 = alphaBlendColors(baseColor, sunken?baseColor.light(100+intensity*2):baseColor.dark(100+intensity*2), 80); const QColor colorBottom2 = alphaBlendColors(baseColor, sunken?baseColor.light(100+intensity):baseColor.dark(100+intensity), 80); const QColor colorBorder = colorTop1.light(100+_contrast); // sides if (drawLeft) { if (horizontal && !_lightBorder) { int height = r.height(); if (roundUpperLeft || !drawTop) height--; if (roundBottomLeft || !drawBottom) height--; renderGradient(p, QRect(r.left(), (roundUpperLeft&&drawTop)?r.top()+1:r.top(), 1, height), colorBorder, baseColor); } else { p->setPen((sunken&&!_lightBorder)?colorTop1:colorBorder ); p->drawLine(r.left(), (roundUpperLeft&&drawTop)?r.top()+1:r.top(), r.left(), (roundBottomLeft&&drawBottom)?r.bottom()-1:r.bottom() ); } } if (drawRight) { if (horizontal && !_lightBorder) { int height = r.height(); // TODO: there's still a bogus in it: when edge4 is Thick // and we don't whant to draw the Top, we have a unpainted area if (roundUpperRight || !drawTop) height--; if (roundBottomRight || !drawBottom) height--; renderGradient(p, QRect(r.right(), (roundUpperRight&&drawTop)?r.top()+1:r.top(), 1, height), baseColor, _lightBorder&&!sunken?colorBorder:colorBottom1); } else { /*3d effect or light borders?*/ p->setPen(_lightBorder&&!sunken?colorBorder:colorBottom1 ); p->drawLine(r.right(), (roundUpperRight&&drawTop)?r.top()+1:r.top(), r.right(), (roundBottomRight&&drawBottom)?r.bottom()-1:r.bottom() ); } } if (drawTop) { if ( horizontal || _lightBorder ) { p->setPen((sunken&&!_lightBorder)?colorTop1:colorBorder ); p->drawLine((roundUpperLeft&&drawLeft)?r.left()+1:r.left(), r.top(), (roundUpperRight&&drawRight)?r.right()-1:r.right(), r.top() ); } else { int width = r.width(); if (roundUpperLeft || !drawLeft) width--; if (roundUpperRight || !drawRight) width--; renderGradient(p, QRect((roundUpperLeft&&drawLeft)?r.left()+1:r.left(), r.top(), width, 1), colorTop2, colorBorder, false ); } } if (drawBottom) { if ( horizontal|| _lightBorder ) { p->setPen(_lightBorder&&!sunken?colorBorder:colorBottom1 ); p->drawLine((roundBottomLeft&&drawLeft)?r.left()+1:r.left(), r.bottom(), (roundBottomRight&&drawRight)?r.right()-1:r.right(), r.bottom() ); } else { int width = r.width(); if (roundBottomLeft || !drawLeft) width--; if (roundBottomRight || !drawRight) width--; renderGradient(p, QRect((roundBottomLeft&&drawLeft)?r.left()+1:r.left(), r.bottom(), width, 1), colorBottom2, _lightBorder&&!sunken?colorBorder:colorBottom1, false); } } // button area... int width = r.width(); int height = r.height(); if (drawLeft) width--; if (drawRight) width--; if (drawTop) height--; if (drawBottom) height--; int left = r.left(); int top = r.top(); if (drawLeft) left++; if (drawTop) top++; QRect surfaceRect(drawLeft?r.left()+1:r.left(), drawTop?r.top()+1:r.top(), width, height); QBrush brush; if( sunken ) { if( _sunkenShadows ) brush = getSurfaceBrush(surfaceRect.adjusted(0,0, horizontal?0:3, horizontal?3:0), baseColor, horizontal); else brush = getShadowBrush(surfaceRect, baseColor, horizontal); } else brush = getSurfaceBrush(surfaceRect, baseColor, horizontal); p->fillRect(surfaceRect, brush); //sunken shadow, flags a little bit complicated :) if( _sunkenShadows && sunken ) { uint shadowFlags = Draw_Top|Draw_Left; if( horizontal ) shadowFlags |= Draw_Right; else shadowFlags |= Draw_Bottom; if( !(flags & Draw_Top) ) shadowFlags |= Sharp_UpperLeft|Sharp_UpperRight; if( !(flags & Draw_Bottom) ) shadowFlags |= Sharp_BottomLeft|Sharp_BottomRight; if( !(flags & Draw_Left) ) shadowFlags |= Sharp_UpperLeft|Sharp_BottomLeft; if( !(flags & Draw_Right) ) shadowFlags |= Sharp_BottomRight|Sharp_UpperRight; if( flags & Sharp_UpperLeft ) shadowFlags |= Sharp_UpperLeft; if( flags & Sharp_UpperRight ) shadowFlags |= Sharp_UpperRight; if( flags & Sharp_BottomLeft ) shadowFlags |= Sharp_BottomLeft; if( flags & Sharp_BottomRight ) shadowFlags |= Sharp_BottomRight; renderSunkenShadow(p, r, Qt::black, shadowFlags, horizontal); } // highlighting... qreal opacity = p->opacity(); p->setOpacity((double)highlightColor.alpha()/255.0); if(highlightTop) { p->setPen(alphaBlendColors(colorTop1 , highlightColor, 20) ); p->drawLine((roundUpperLeft&&drawLeft)?r.left()+1:r.left(), r.top(), (roundUpperRight&&drawRight)?r.right()-1:r.right(), r.top() ); p->setPen(alphaBlendColors(colorTop2 , highlightColor, 90) ); p->drawLine(highlightLeft?r.left()+1:r.left(), r.top()+1, highlightRight?r.right()-1:r.right(), r.top()+1 ); if( roundUpperLeft&&drawLeft&&!highlightLeft ) { p->drawPoint(r.left(),r.top()+2); p->setPen(alphaBlendColors(colorTop1 , highlightColor, 20) ); p->drawPoint(r.left(),r.top()+1); } if( roundUpperRight&&drawRight&&!highlightRight ) { p->setPen(alphaBlendColors(colorTop1 , highlightColor, 20) ); p->drawPoint(r.right(),r.top()+1); p->setPen(alphaBlendColors(colorTop2 , highlightColor, 90) ); p->drawPoint(r.right(),r.top()+2); } } if(highlightBottom) { p->setPen(alphaBlendColors(colorBottom1 , highlightColor, 20) ); p->drawLine((roundBottomLeft&&drawLeft)?r.left()+1:r.left(), r.bottom(), (roundBottomRight&&drawRight)?r.right()-1:r.right(), r.bottom() ); p->setPen(alphaBlendColors(colorBottom2 , highlightColor, 90) ); p->drawLine(highlightLeft?r.left()+1:r.left(), r.bottom()-1, highlightRight?r.right()-1:r.right(), r.bottom()-1 ); if( roundBottomLeft&&drawLeft&&!highlightLeft ) { p->drawPoint(r.left(),r.bottom()-2); p->setPen(alphaBlendColors(colorBottom1 , highlightColor, 20) ); p->drawPoint(r.left(),r.bottom()-1); } if( roundBottomRight&&drawRight&&!highlightRight ) { p->setPen(alphaBlendColors(colorBottom2 , highlightColor, 90) ); p->drawPoint(r.right(),r.bottom()-2); p->setPen(alphaBlendColors(colorBottom1 , highlightColor, 20) ); p->drawPoint(r.right(),r.bottom()-1); } } if(highlightLeft) { p->setPen(alphaBlendColors(colorTop1 , highlightColor, 20) ); p->drawLine(r.left(), (roundUpperLeft&&drawTop)?r.top()+1:r.top(), r.left(), (roundBottomLeft&&drawBottom)?r.bottom()-1:r.bottom() ); p->setPen(alphaBlendColors(colorTop2 , highlightColor, 90) ); p->drawLine(r.left()+1, highlightTop?r.top()+1:r.top(), r.left()+1, highlightBottom?r.bottom()-1:r.bottom() ); } if(highlightRight) { p->setPen(alphaBlendColors(colorBottom1 , highlightColor, 20) ); p->drawLine(r.right(), (roundUpperRight&&drawTop)?r.top()+1:r.top(), r.right(), (roundBottomRight&&drawBottom)?r.bottom()-1:r.bottom() ); p->setPen(alphaBlendColors(colorBottom2 , highlightColor, 90) ); p->drawLine(r.right()-1, highlightTop?r.top()+1:r.top(), r.right()-1, highlightBottom?r.bottom()-1:r.bottom() ); } p->setOpacity(opacity); } QBrush PolyesterStyle::getSurfaceBrush(const QRect &r, const QColor &backgroundColor, bool horizontal) const { QLinearGradient gradient; if(horizontal) gradient = QLinearGradient(r.center().x(), r.top(), r.center().x(), r.bottom()); else gradient = QLinearGradient(r.left(), r.center().y(), r.right(), r.center().y()); if( !_buttonStyle.compare("glass" ) ) { gradient.setColorAt(0, backgroundColor.lighter(100+_contrast)); gradient.setColorAt(0.5, backgroundColor); gradient.setColorAt(0.501, backgroundColor.darker(100+_contrast)); gradient.setColorAt(1, backgroundColor.lighter(100+_contrast)); } else if( !_buttonStyle.compare("flat" ) ) { return(QBrush(backgroundColor)); } else if( !_buttonStyle.compare("gradients" ) ) { gradient.setColorAt(0, backgroundColor.lighter(100+_contrast)); gradient.setColorAt(1, backgroundColor.darker(100+_contrast)); } else //reverseGradients { gradient.setColorAt(0, backgroundColor.darker(100+_contrast)); gradient.setColorAt(1, backgroundColor.lighter(100+_contrast)); } return QBrush(gradient); } //for sunken frames like in lineedits, scrollbars etc QBrush PolyesterStyle::getShadowBrush(const QRect &r, const QColor &backgroundColor, bool horizontal) const { /*if( !_sunkenShadows ) return backgroundColor;*/ QLinearGradient gradient; if(horizontal) gradient = QLinearGradient(r.center().x(), r.top(), r.center().x(), r.bottom()); else gradient = QLinearGradient(r.left(), r.center().y(), r.right(), r.center().y()); gradient.setColorAt(0, backgroundColor.darker(110+_contrast)); gradient.setColorAt(0.5, backgroundColor); //gradient.setColorAt(0.65, backgroundColor); gradient.setColorAt(1, backgroundColor.light(110+_contrast)); return QBrush(gradient); } //the previous method is for surfaces, this is for little retouches QBrush PolyesterStyle::getTransparentShadowBrush(const QRect &r, QColor shadowColor, bool horizontal, bool invert, int alpha) const { QLinearGradient gradient; if(horizontal) gradient = QLinearGradient(r.center().x(), (invert?r.bottom():r.top()), r.center().x(), (invert?r.top():r.bottom())); else gradient = QLinearGradient((invert?r.right():r.left()), r.center().y(), (invert?r.left():r.right()), r.center().y()); shadowColor.setAlpha(alpha); gradient.setColorAt(0, shadowColor); shadowColor.setAlpha(0); gradient.setColorAt(1, shadowColor); return QBrush(gradient); } void PolyesterStyle::renderSunkenShadow(QPainter *p, const QRect &r, const QColor &shadowColor, const uint flags, bool horizontal) const { QRegion mask(r); if( !(flags&Sharp_UpperLeft) ) mask -= QRegion( r.x(), r.y(), 1, 1 ); if( !(flags&Sharp_BottomLeft) ) mask -= QRegion( r.x(), r.bottom(), 1, 1 ); if( !(flags&Sharp_UpperRight) ) mask -= QRegion( r.right(), r.y(), 1, 1 ); if( !(flags&Sharp_BottomRight) ) mask -= QRegion( r.right(), r.bottom(), 1, 1 ); p->save(); p->setClipRegion(mask); QRect shadowRect; QBrush shadowBrush; //more the color is dark more is transparent int alpha = shadowColor.value()/4 + _contrast*5; //TOP if( flags&Draw_Top ) { shadowRect = QRect(r.x(), r.y(), r.width(), horizontal?5:3); shadowBrush = QBrush(getTransparentShadowBrush(shadowRect, shadowColor, true, false, alpha)); p->fillRect(shadowRect, shadowBrush); } //LEFT if( flags&Draw_Left ) { shadowRect = QRect(r.x(), r.y(), horizontal?3:5, r.height()); shadowBrush = QBrush(getTransparentShadowBrush(shadowRect, shadowColor, false, false, alpha)); p->fillRect(shadowRect, shadowBrush); } //RIGHT if( flags&Draw_Right ) { shadowRect = QRect(r.right()-(horizontal?2:3), r.y(), horizontal?3:4, r.height()); shadowBrush = QBrush(getTransparentShadowBrush(shadowRect, (horizontal?shadowColor:Qt::white), false, true, horizontal?alpha:128)); p->fillRect(shadowRect, shadowBrush); } //BOTTOM if( flags&Draw_Bottom ) { shadowRect = QRect(r.x(), r.bottom()-(horizontal?3:2), r.width(), horizontal?4:3); shadowBrush = QBrush(getTransparentShadowBrush(shadowRect, (horizontal?Qt::white:shadowColor), true, true, horizontal?128:alpha)); p->fillRect(shadowRect, shadowBrush); } p->restore(); } void PolyesterStyle::renderRadioButton(QPainter *p, const QRect &r, const QColor &backgroundColor, const QColor &checkColor, const QColor &contourColor, const QColor &highlightColor, bool checked, const uint flags) const { const bool highlight = (flags&Is_Highlight); const bool disabled = flags&Is_Disabled; p->save(); if(disabled) p->setOpacity(0.6); p->setBrush(getSurfaceBrush(r, backgroundColor)); p->setRenderHint(QPainter::Antialiasing); p->setPen(alphaBlendColors(backgroundColor, contourColor, 50) ); p->drawEllipse(QRect(r.x()+1,r.y()+1,r.width()-2,r.height()-2)); if( highlight ) { p->setPen(QPen(highlightColor, 2) ); p->drawEllipse(QRect(r.x()+2,r.y()+2,r.width()-4,r.height()-4)); } if( checked ) { p->setPen(QPen(Qt::NoPen) ); p->setBrush(QBrush( checkColor, Qt::SolidPattern )); int dotSize = r.width()/3; p->drawEllipse(QRect(r.x()+dotSize,r.y()+dotSize,r.width()-dotSize*2,r.height()-dotSize*2)); } p->restore(); } void PolyesterStyle::renderButton(QPainter *p, const QRect &r, const QPalette &pal, bool sunken, bool mouseOver, bool horizontal, bool enabled, int animFrame, bool isDefault //TODO: move here all the default-button related code? ) const { // small fix for the kicker buttons... // if(kickerMode) enabled = true; const QPen oldPen( p->pen() ); uint contourFlags = Draw_Left|Draw_Right|Draw_Top|Draw_Bottom; if(!enabled) contourFlags|=Is_Disabled; // if(khtmlMode) contourFlags|=Draw_AlphaBlend; uint surfaceFlags = Draw_Left|Draw_Right|Draw_Top|Draw_Bottom; if(horizontal) surfaceFlags|=Is_Horizontal; if(!enabled) surfaceFlags|=Is_Disabled; else { if(sunken) surfaceFlags|=Is_Sunken; else { if(((animFrame != 0) || mouseOver) && (!_animateButton||!isDefault)) { surfaceFlags|=Is_Highlight; if(horizontal) { surfaceFlags|=Highlight_Top; surfaceFlags|=Highlight_Bottom; } else { surfaceFlags|=Highlight_Left; surfaceFlags|=Highlight_Right; } } } } if (!flatMode) { contourFlags |= Round_UpperLeft|Round_UpperRight|Round_BottomLeft|Round_BottomRight; surfaceFlags |= Round_UpperLeft|Round_UpperRight|Round_BottomLeft|Round_BottomRight; renderContour(p, r, pal.color(QPalette::Background), (isDefault?getColor(pal,ButtonContour).dark(100+_contrast*10):getColor(pal,ButtonContour)), contourFlags); /*Colorize to mouseHover only the default button, the others will get lighter or darker*/ if(!isDefault) { QColor higlight = pal.color(QPalette::Highlight); if( _animateButton ) { higlight.setAlpha((int)(255*((double)animFrame/(double)ANIMATIONSTEPS))); } renderSurface(p, QRect(r.left()+1, r.top()+1, r.width()-2, r.height()-2), pal.color(QPalette::Background), pal.color(QPalette::Button).light(100+animFrame), higlight, _contrast, surfaceFlags); } else { //12.8 is the maximum amount of blending (256) / ANIMATIONSTEPS (20) QColor buttonColor = alphaBlendColors( pal.color(QPalette::Highlight), pal.color(QPalette::Button), (int)(12.8*animFrame)+50); renderSurface(p, QRect(r.left()+1, r.top()+1, r.width()-2, r.height()-2), pal.color(QPalette::Background), buttonColor.light(100+animFrame), getColor(pal,MouseOverHighlight), _contrast+animFrame, surfaceFlags); } } else { renderContour(p, r, pal.color(QPalette::Background), pal.color(QPalette::Button).dark(105+_contrast*3), contourFlags); renderSurface(p, QRect(r.left()+1, r.top()+1, r.width()-2, r.height()-2), pal.color(QPalette::Background), pal.color(QPalette::Button), getColor(pal,MouseOverHighlight), _contrast/2, surfaceFlags); flatMode = false; } p->setPen(oldPen); } void PolyesterStyle::renderDot(QPainter *p, const QPoint &point, const QColor &baseColor, const bool thick, const bool sunken) const { const QColor topColor = alphaBlendColors(baseColor, sunken?baseColor.dark(130):baseColor.light(150), 70); const QColor bottomColor = alphaBlendColors(baseColor, sunken?baseColor.light(150):baseColor.dark(130), 70); p->setPen(topColor ); p->drawLine(point.x(), point.y(), point.x()+1, point.y()); p->drawPoint(point.x(), point.y()+1); p->setPen(bottomColor ); if(thick) { p->drawLine(point.x()+1, point.y()+2, point.x()+2, point.y()+2); p->drawPoint(point.x()+2, point.y()+1); } else { p->drawPoint(point.x()+1, point.y()+1); } } void PolyesterStyle::renderGradient(QPainter *painter, const QRect &rect, const QColor &c1, const QColor &c2, bool horizontal) const { if((rect.width() <= 0)||(rect.height() <= 0)) return; // generate a quite unique key for this surface. CacheEntry search(cGradientTile, horizontal ? 0 : rect.width(), horizontal ? rect.height() : 0, c1.rgb(), c2.rgb(), horizontal ); int key = search.key(); CacheEntry *cacheEntry; if( (cacheEntry = pixmapCache->object(key)) ) { if( search == *cacheEntry ) { // match! we can draw now... if(cacheEntry->pixmap) { painter->drawTiledPixmap(rect, *(cacheEntry->pixmap) ); } return; } else { // Remove old entry in case of a conflict! // This shouldn't happen very often, see comment in CacheEntry. pixmapCache->remove(key); } } // there wasn't anything matching in the cache, create the pixmap now... QPixmap *result = new QPixmap(horizontal ? 10 : rect.width(), horizontal ? rect.height() : 10); QPainter p(result); int r_w = result->rect().width(); int r_h = result->rect().height(); int r_x, r_y, r_x2, r_y2; result->rect().getCoords(&r_x, &r_y, &r_x2, &r_y2); int rDiff, gDiff, bDiff; int rc, gc, bc; register int x, y; rDiff = ( c2.red()) - (rc = c1.red()); gDiff = ( c2.green()) - (gc = c1.green()); bDiff = ( c2.blue()) - (bc = c1.blue()); register int rl = rc << 16; register int gl = gc << 16; register int bl = bc << 16; int rdelta = ((1<<16) / (horizontal ? r_h : r_w)) * rDiff; int gdelta = ((1<<16) / (horizontal ? r_h : r_w)) * gDiff; int bdelta = ((1<<16) / (horizontal ? r_h : r_w)) * bDiff; // these for-loops could be merged, but the if's in the inner loop // would make it slow if(horizontal) { for ( y = 0; y < r_h; y++ ) { rl += rdelta; gl += gdelta; bl += bdelta; p.setPen(QColor(rl>>16, gl>>16, bl>>16)); p.drawLine(r_x, r_y+y, r_x2, r_y+y); } } else { for( x = 0; x < r_w; x++) { rl += rdelta; gl += gdelta; bl += bdelta; p.setPen(QColor(rl>>16, gl>>16, bl>>16)); p.drawLine(r_x+x, r_y, r_x+x, r_y2); } } p.end(); // draw the result... painter->drawTiledPixmap(rect, *result); // insert into cache using the previously created key. CacheEntry *toAdd = new CacheEntry(search); toAdd->pixmap = result; bool insertOk = pixmapCache->insert( key, toAdd, result->width()*result->height()*result->depth()/8 ); if(!insertOk) delete result; } void PolyesterStyle::renderPanel(QPainter *p, const QRect &r, const QPalette &pal, const bool pseudo3d, const bool sunken, const bool focusHighlight) const { int x, x2, y, y2, w, h; r.getRect(&x,&y,&w,&h); r.getCoords(&x, &y, &x2, &y2); if( focusHighlight ) { renderContour(p, r, pal.color(QPalette::Background), getColor(pal,FocusHighlight) ); } else { renderContour(p, r, pal.color(QPalette::Background), getColor(pal, PanelContour) ); } if(pseudo3d) { if (sunken && !_lightBorder) { p->setPen(getColor(pal, PanelDark) ); } else { p->setPen(getColor(pal, PanelLight) ); } p->drawLine(r.left()+2, r.top()+1, r.right()-2, r.top()+1); p->drawLine(r.left()+1, r.top()+2, r.left()+1, r.bottom()-2); if (_lightBorder || sunken) { p->setPen(getColor(pal, PanelLight) ); } else { p->setPen(getColor(pal, PanelDark) ); } p->drawLine(r.left()+2, r.bottom()-1, r.right()-2, r.bottom()-1); p->drawLine(r.right()-1, r.top()+2, r.right()-1, r.bottom()-2); if( _sunkenShadows && sunken ) renderSunkenShadow(p, r.adjusted(1,1,-1,-1)); } } void PolyesterStyle::renderTab(QPainter *p, const QRect &r, const QPalette &pal, bool mouseOver, const SelectedTab selected, const bool bottom, const QStyleOptionTab::TabPosition pos, const bool triangular, bool cornerWidget, const bool reverseLayout) const { const bool isFirst = (pos == QStyleOptionTab::Beginning) || (pos == QStyleOptionTab::OnlyOneTab); const bool isLast = (pos == QStyleOptionTab::End); const bool isSingle = (pos == QStyleOptionTab::OnlyOneTab); /*if the tabbar is centered always render the left rounded connection of the first tab*/ if( _centeredTabBar && !reverseLayout && isFirst ) cornerWidget = true; if (selected == ThisTab) { // is selected // the top part of the tab which is nearly the same for all positions QRect Rc; // contour if (!bottom) { if (isFirst && !cornerWidget && !reverseLayout) { Rc = QRect(r.x(), r.y(), r.width()-1, r.height()-3); } else if (isFirst && !cornerWidget && reverseLayout) { Rc = QRect(r.x()+1, r.y(), r.width()-1, r.height()-3); } else { Rc = QRect(r.x()+1, r.y(), r.width()-2, r.height()-3); } } else { if (isFirst && !cornerWidget && !reverseLayout) { Rc = QRect(r.x(), r.y()+3, r.width()-1, r.height()-3); } else if (isFirst && !cornerWidget && reverseLayout) { Rc = QRect(r.x()+1, r.y()+3, r.width()-1, r.height()-3); } else { Rc = QRect(r.x()+1, r.y()+3, r.width()-2, r.height()-3); } } //const QRect Rs = Rc.adjusted(1,1,-1,0); QRect Rs(Rc.x()+1, bottom?Rc.y():Rc.y()+1, Rc.width()-2, Rc.height()-1); // the resulting surface // the area where the fake border shoudl appear const QRect Rb(r.x(), bottom?r.top():Rc.bottom()+1, r.width(), r.height()-Rc.height() ); //if( p->viewTransformEnabled() ) //Rs.adjust(0,0,-10,0); uint contourFlags = Draw_Left|Draw_Right; if(!bottom) { contourFlags |= Draw_Top|Round_UpperLeft|Round_UpperRight; } else { contourFlags |= Draw_Bottom|Round_BottomLeft|Round_BottomRight; } renderContour(p, Rc, pal.color(QPalette::Background), getColor(pal,PanelContour), contourFlags); // surface if(!bottom) { p->setPen(getColor(pal,PanelLight) ); p->drawLine(Rs.x()+1, Rs.y(), Rs.right()-1, Rs.y() ); renderGradient(p, QRect(Rs.x(), Rs.y()+1, 1, Rs.height()-1), getColor(pal,PanelLight), getColor(pal,PanelLight2)); renderGradient(p, QRect(Rs.right(), Rs.y()+1, 1, Rs.height()-1), getColor(pal,PanelDark), getColor(pal,PanelDark2)); if( !_buttonStyle.compare("glass" ) ){ renderGradient(p, QRect(Rs.x()+1, Rs.y()+1, Rs.width()-2, Rs.height()/2), pal.color(QPalette::Background).light(100+_contrast), pal.color(QPalette::Background)); renderGradient(p, QRect(Rs.x()+1, Rs.y()+Rs.height()/2, Rs.width()-2, Rs.height()/2), pal.color(QPalette::Background).dark(100+_contrast), pal.color(QPalette::Background)); }else if( !_buttonStyle.compare("gradients" ) ) renderGradient(p, QRect(Rs.x()+1, Rs.y()+1, Rs.width()-2, Rs.height()-1), getColor(pal,PanelLight), pal.color(QPalette::Background)); else if( !_buttonStyle.compare("reverseGradients" ) ) renderGradient(p, QRect(Rs.x()+1, Rs.y()+1, Rs.width()-2, Rs.height()-1), pal.color(QPalette::Background).dark(100+_contrast), pal.color(QPalette::Background)); else renderGradient(p, QRect(Rs.x()+1, Rs.y()+1, Rs.width()-2, Rs.height()-1), pal.color(QPalette::Background), pal.color(QPalette::Background)); if( _highLightTab ) { p->fillRect( QRect(Rs.x()+1, Rs.y(), Rs.width()-2, 2), pal.color(QPalette::Highlight)); p->setPen( pal.color(QPalette::Highlight) ); p->drawLine( Rs.x(), Rs.y()+1, Rs.x(), Rs.y()+2 ); p->drawLine( Rs.right(), Rs.y()+1, Rs.right(), Rs.y()+2 ); } /*renderSurface(p, Rs, pal.color(QPalette::Background), pal.color(QPalette::Button), getColor(pal,MouseOverHighlight), _contrast, Draw_Top|Draw_Bottom|Is_Horizontal);*/ //hide the panel border p->fillRect( QRect(Rb.x()+1, Rb.bottom()-1, Rb.width()-1, 2), pal.color(QPalette::Background) ); } else { p->setPen(pal.color(QPalette::Highlight)); //p->drawLine(Rs.x()+1, Rs.bottom(), Rs.right()-1, Rs.bottom() ); if( _highLightTab ) { p->fillRect(Rs.x()+1, Rs.bottom()-1, Rs.width()-2, 2, pal.color(QPalette::Highlight) ); p->drawLine(Rs.x(), Rs.bottom()-2, Rs.x(), Rs.bottom()-1 ); p->drawLine(Rs.right(), Rs.bottom()-2, Rs.right(), Rs.bottom()-1 ); } renderGradient(p, QRect(Rs.x(), Rs.y(), 1, Rs.height()-4), getColor(pal,PanelLight), getColor(pal,PanelLight2)); renderGradient(p, QRect(Rs.right(), Rs.y(), 1, Rs.height()-4), getColor(pal,PanelDark), getColor(pal,PanelDark2)); renderSurface(p, QRect(Rs.x()+1, Rs.y(), Rs.width()-2, Rs.height()-3), pal.color(QPalette::Background), pal.color(QPalette::Background), pal.color(QPalette::Highlight), _contrast, Is_Horizontal); //hide the panel border p->fillRect( QRect(Rb.x()+1, Rb.top(), Rb.width()-1, 2), pal.color(QPalette::Background) ); } // some "position specific" paintings... // left connection from the panel border to the tab. :) if(isFirst && !reverseLayout && !cornerWidget) { p->setPen(alphaBlendColors(pal.color(QPalette::Background), getColor(pal,PanelContour), 50) ); p->drawLine(Rb.x(), Rb.y(), Rb.x(), Rb.bottom() ); p->setPen(getColor(pal,PanelLight) ); p->drawLine(Rb.x()+1, Rb.y(), Rb.x()+1, Rb.bottom() ); } else if(isFirst && reverseLayout && !cornerWidget) { p->setPen(alphaBlendColors(pal.color(QPalette::Background), getColor(pal,PanelContour), 50) ); p->drawLine(Rb.right(), Rb.y(), Rb.right(), Rb.bottom() ); p->setPen(getColor(pal,PanelDark) ); p->drawLine(Rb.right()-1, Rb.y(), Rb.right()-1, Rb.bottom() ); } // rounded connections to the panel... if(!bottom) { // left if( (!isFirst && !reverseLayout) || (reverseLayout) || (isFirst && !reverseLayout && cornerWidget) ) { p->setPen( alphaBlendColors(pal.color(QPalette::Background), getColor(pal,PanelContour), 50) ); p->drawPoint(Rb.x(), Rb.y()); p->setPen( alphaBlendColors(pal.color(QPalette::Background), getColor(pal,PanelContour), 150) ); p->drawPoint(Rb.x(), Rb.y()+1); p->drawPoint(Rb.x()+1, Rb.y()); } // right if( (!reverseLayout) || (!isFirst && reverseLayout) || (isFirst && reverseLayout) ) { p->setPen( alphaBlendColors(pal.color(QPalette::Background), getColor(pal,PanelContour), 50) ); p->drawPoint(Rb.right(), Rb.y()); p->setPen( alphaBlendColors(pal.color(QPalette::Background), getColor(pal,PanelContour), 150) ); p->drawPoint(Rb.right(), Rb.y()+1); p->drawPoint(Rb.right()-1, Rb.y()); } } else { // left if( (!isFirst && !reverseLayout) || (reverseLayout) || (isFirst && !reverseLayout && cornerWidget) ) { p->setPen( alphaBlendColors(pal.color(QPalette::Background), getColor(pal,PanelContour), 50) ); p->drawPoint(Rb.x(), Rb.bottom()); p->setPen( alphaBlendColors(pal.color(QPalette::Background), getColor(pal,PanelContour), 150) ); p->drawPoint(Rb.x(), Rb.bottom()-1); p->drawPoint(Rb.x()+1, Rb.bottom()); } // right if( (!reverseLayout) || (!isFirst && reverseLayout) || (isFirst && reverseLayout && cornerWidget) ) { p->setPen( alphaBlendColors(pal.color(QPalette::Background), getColor(pal,PanelContour), 50) ); p->drawPoint(Rb.right(), Rb.bottom()); p->setPen( alphaBlendColors(pal.color(QPalette::Background), getColor(pal,PanelContour), 150) ); p->drawPoint(Rb.right(), Rb.bottom()-1); p->drawPoint(Rb.right()-1, Rb.bottom()); } } } else { // inactive tabs // the top part of the tab which is nearly the same for all positions QRect Rc; // contour if (isFirst&&reverseLayout ) { Rc = QRect(r.x()+1, (bottom?r.y()+2:(triangular?r.y()+2:r.y()+3)), r.width()-2, (triangular?r.height()-4:r.height()-5) ); } else { Rc = QRect(r.x()+1, (bottom?r.y()+2:(triangular?r.y()+2:r.y()+3)), r.width()-1, (triangular?r.height()-4:r.height()-5) ); } if(pos == QStyleOptionTab::Middle || pos == QStyleOptionTab::Beginning) { Rc.adjust(0,0,1,0); } if( selected == PrevTab ) { Rc.adjust(-2,0,0,0); } QRect Rs; // the resulting surface if ( (isFirst&&!reverseLayout) || (isLast&&reverseLayout) ) Rs = QRect(Rc.x()+1, bottom?Rc.y():Rc.y()+1, Rc.width()-(selected == OtherTab?2:1), Rc.height()-1); else if( reverseLayout ){ Rs = QRect(Rc.x()-(selected == NextTab?1:0), bottom?Rc.y():Rc.y()+1, Rc.width()-(selected == OtherTab?1:0), Rc.height()-1); } else{ Rs = QRect(Rc.x()-(selected == PrevTab?1:0), bottom?Rc.y():Rc.y()+1, Rc.width()-(selected == OtherTab?1:0), Rc.height()-1); } // the area where the fake border shoudl appear const QRect Rb(r.x(), bottom?r.y():Rc.bottom()+1, r.width(), 2 ); uint contourFlags; if(!bottom) { if ( (isFirst&&!reverseLayout) || (isLast&&reverseLayout) ) { contourFlags = Draw_Left|Draw_Right|Draw_Top|Sharp_UpperRight|Round_UpperLeft; } else if ( (isLast&&!reverseLayout) || (isFirst&&reverseLayout) ) { contourFlags = Draw_Right|Draw_Top|Sharp_UpperLeft|Round_UpperRight; } else { contourFlags = Draw_Right|Draw_Top|Sharp_UpperLeft|Sharp_UpperRight; } } else { if ( (isFirst&&!reverseLayout) || (isLast&&reverseLayout) ) { contourFlags = Draw_Left|Draw_Right|Draw_Bottom|Sharp_BottomRight|Round_BottomLeft; } else if ( (isLast&&!reverseLayout) || (isFirst&&reverseLayout) ) { contourFlags = Draw_Right|Draw_Bottom|Sharp_BottomLeft|Round_BottomRight; } else { contourFlags = Draw_Right|Draw_Bottom|Sharp_BottomLeft|Sharp_BottomRight; } } renderContour(p, Rc, pal.color(QPalette::Background), getColor(pal, ButtonContour), contourFlags); uint surfaceFlags = Is_Horizontal; if(mouseOver) { surfaceFlags |= (bottom?Highlight_Bottom:Highlight_Top); surfaceFlags |= Is_Highlight; } if ( (isFirst&&!reverseLayout) || (isLast&&reverseLayout) ) { if(!bottom) surfaceFlags |= Draw_Left|Draw_Top|Round_UpperLeft; else surfaceFlags |= Draw_Left|Draw_Bottom|Round_BottomLeft; } else if ( (isLast&&!reverseLayout) || (isFirst&&reverseLayout) ) { if(!bottom) surfaceFlags |= Draw_Right|Draw_Top|Round_UpperRight; else surfaceFlags |= Draw_Right|Draw_Bottom|Round_BottomRight; } else { surfaceFlags |= (!bottom?Draw_Top:Draw_Bottom); } renderSurface(p, Rs, pal.color(QPalette::Background), pal.color(QPalette::Button), getColor(pal,MouseOverHighlight), _contrast, surfaceFlags); // some "position specific" paintings... // fake parts of the panel border #if 0 if(!bottom) { p->setPen(alphaBlendColors(pal.color(QPalette::Background), getColor(pal,PanelContour), 50) ); p->drawLine(Rb.x(), Rb.y(), ((isLast&&!reverseLayout)||(isFirst&&reverseLayout&&cornerWidget))?Rb.right():Rb.right()-1, Rb.y()); p->setPen(getColor(pal,PanelLight) ); //p->drawLine(Rb.x(), Rb.y()+1, ((isLast&&!reverseLayout)||(isFirst&&reverseLayout&&cornerWidget))?Rb.right():Rb.right()-1, Rb.y()+1 ); } else { p->setPen(alphaBlendColors(pal.color(QPalette::Background), getColor(pal,PanelContour), 50) ); p->drawLine(Rb.x(), Rb.bottom(), ((isLast&&!reverseLayout)||(isFirst&&reverseLayout&&cornerWidget))?Rb.right():Rb.right()-1, Rb.bottom()); p->setPen(getColor(pal,PanelDark) ); p->drawLine(Rb.x(), Rb.bottom()-1, ((isLast&&!reverseLayout)||(isFirst&&reverseLayout&&cornerWidget))?Rb.right():Rb.right()-1, Rb.bottom()-1 ); } #endif // fake the panel border edge for tabs which are aligned left-most // (i.e. only if there is no widget in the corner of the tabwidget!) if(isFirst&&!reverseLayout&&!cornerWidget) // normal layout { if (!bottom) { p->setPen(alphaBlendColors(pal.color(QPalette::Background), getColor(pal,PanelContour), 50) ); p->drawPoint(Rb.x()+1, Rb.y()+1 ); p->setPen(alphaBlendColors(pal.color(QPalette::Background), getColor(pal,PanelContour), 150) ); p->drawPoint(Rb.x(), Rb.y()+1 ); p->setPen(pal.color(QPalette::Background) ); p->drawPoint(Rb.x(), Rb.y() ); p->setPen(alphaBlendColors( alphaBlendColors(pal.color(QPalette::Background), getColor(pal, ButtonContour), 50), getColor(pal,PanelContour), 150) ); p->drawPoint(Rb.x()+1, Rb.y() ); } else { p->setPen(alphaBlendColors(pal.color(QPalette::Background), getColor(pal,PanelContour), 50) ); p->drawPoint(Rb.x()+1, Rb.bottom()-1 ); p->setPen(alphaBlendColors(pal.color(QPalette::Background), getColor(pal,PanelContour), 150) ); p->drawPoint(Rb.x(), Rb.bottom()-1 ); p->setPen(pal.color(QPalette::Background) ); p->drawPoint(Rb.x(), Rb.bottom() ); p->setPen(alphaBlendColors( alphaBlendColors(pal.color(QPalette::Background), getColor(pal, ButtonContour), 50), getColor(pal,PanelContour), 150) ); p->drawPoint(Rb.x()+1, Rb.bottom() ); } } else if(isFirst&&reverseLayout&&!cornerWidget) // reverse layout { if (!bottom) { p->setPen(alphaBlendColors(pal.color(QPalette::Background), getColor(pal,PanelContour), 50) ); p->drawPoint(Rb.right()-1, Rb.y()+1 ); p->setPen(alphaBlendColors(pal.color(QPalette::Background), getColor(pal,PanelContour), 150) ); p->drawPoint(Rb.right(), Rb.y()+1 ); p->setPen(pal.color(QPalette::Background) ); p->drawPoint(Rb.right(), Rb.y() ); p->setPen(alphaBlendColors( alphaBlendColors(pal.color(QPalette::Background), getColor(pal, ButtonContour), 50), getColor(pal,PanelContour), 150) ); p->drawPoint(Rb.right()-1, Rb.y() ); } else { p->setPen(alphaBlendColors(pal.color(QPalette::Background), getColor(pal,PanelContour), 50) ); p->drawPoint(Rb.right()-1, Rb.bottom()-1 ); p->setPen(alphaBlendColors(pal.color(QPalette::Background), getColor(pal,PanelContour), 150) ); p->drawPoint(Rb.right(), Rb.bottom()-1 ); p->setPen(pal.color(QPalette::Background) ); p->drawPoint(Rb.right(), Rb.bottom() ); p->setPen(alphaBlendColors( alphaBlendColors(pal.color(QPalette::Background), getColor(pal, ButtonContour), 50), getColor(pal,PanelContour), 150) ); p->drawPoint(Rb.right()-1, Rb.bottom() ); } } } } void PolyesterStyle::renderArrow( QPainter *p, const QRect &rect, const QColor color, Direction direction ) const { int centerX = rect.center().x(); int centerY = rect.center().y(); int halfWidth = 3; int halfHeight = 2; QPointF points[3]; switch(direction) { case Up: centerX++; points[0] = QPointF(centerX, centerY-halfHeight+1); points[1] = QPointF(centerX-halfWidth, centerY+halfHeight); points[2] = QPointF(centerX+halfWidth, centerY+halfHeight); break; case Down: centerX++; points[0] = QPointF(centerX-halfWidth, centerY-halfHeight+1); points[1] = QPointF(centerX+halfWidth, centerY-halfHeight+1); points[2] = QPointF(centerX, centerY+halfHeight); break; case Left: centerY++; points[0] = QPointF(centerX-halfHeight+1, centerY); points[1] = QPointF(centerX+halfHeight, centerY-halfWidth); points[2] = QPointF(centerX+halfHeight, centerY+halfWidth); break; //Default: Right default: centerY++; points[0] = QPointF(centerX-halfHeight+1, centerY-halfWidth); points[1] = QPointF(centerX-halfHeight+1, centerY+halfWidth); points[2] = QPointF(centerX+halfHeight, centerY); break; }; p->save(); p->setRenderHint(QPainter::Antialiasing, true); p->setBrush(color); p->setPen(QPen ( color, 1, Qt::SolidLine, Qt::RoundCap)); p->drawPolygon(points, 3); p->restore(); } void PolyesterStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *option, QPainter *p, const QWidget *widget) const { const bool reverseLayout = option->direction == Qt::RightToLeft; const State &flags = option->state; const QPalette &pal = option->palette; const QRect &r = option->rect; bool down = flags & State_Sunken; bool on = flags & State_On; bool sunken = down; bool horiz = flags & State_Horizontal; const bool enabled = flags & State_Enabled; const bool mouseOver = flags & State_MouseOver; bool hasFocus = flags & State_HasFocus; int x = r.x(); int y = r.y(); int w = r.width(); int h = r.height(); int x2, y2; r.getCoords(&x, &y, &x2, &y2); switch(pe) { // BUTTONS // ------- case PE_FrameFocusRect: { if(_drawFocusRect) //FIXME: it's necessary to be configurable? naaah :) { //Figuring out in what beast we are painting... //QWidget *widget = dynamic_cast( p->device() ); //rendercontour isn't able to draw with negative measures //rounded border in a listview/listbox is ugly //also if the background and the border color are equal the result is ugly if( r.width() < 0 || r.height() < 0 || /*(widget && (dynamic_cast( widget->parent() ) || dynamic_cast( widget->parent()) ) ) ||*/ pal.color(QPalette::Background) == getColor(pal, ButtonContour) ) { p->setPen( getColor(pal, ButtonContour) ); p->drawRect( r ); break; } QColor backgroundColor = pal.color(QPalette::Background); renderContour(p, r, backgroundColor, getColor(pal,ButtonContour), Draw_Left| Draw_Right|Draw_Top|Draw_Bottom| Round_UpperLeft|Round_UpperRight| Round_BottomLeft|Round_BottomRight|Draw_AlphaBlend ); } break; } case PE_PanelButtonTool: { int animFrame = 0; QWidget* nonConstWidget = const_cast(widget); if( _animateButton && animWidgets.contains(nonConstWidget) ) animFrame = (int)animWidgets[nonConstWidget].animFrame; //const QStyleOptionButton* opt = qstyleoption_cast(option); //vertical if the height is more than double the width if( on||down ) renderButton(p, r, pal, true, mouseOver, ((qreal)r.width()/(qreal)r.height()) > 0.4, enabled, animFrame, false ); else { uint bflags = Draw_Right|Draw_Left|Draw_Top|Draw_Bottom| Round_UpperRight|Round_BottomRight| Round_UpperLeft|Round_BottomLeft; if( ((qreal)r.width()/(qreal)r.height()) > 0.4 ) bflags |= Is_Horizontal; renderContour(p, r, pal.color(QPalette::Background), getColor(pal, ButtonContour), bflags ); renderSurface(p, r.adjusted(1,1,-1,-1), pal.color(QPalette::Background), pal.color(QPalette::Background).light(100+animFrame), pal.color(QPalette::Background), _contrast, bflags); } break; } case PE_PanelButtonBevel: //case PE_PanelButtonTool: case PE_IndicatorButtonDropDown: case PE_PanelButtonCommand: { int animFrame = 0; QWidget* nonConstWidget = const_cast(widget); if( _animateButton && animWidgets.contains(nonConstWidget) ) animFrame = (int)animWidgets[nonConstWidget].animFrame; const QStyleOptionButton* opt = qstyleoption_cast(option); bool isDefault = opt && (opt->features & QStyleOptionButton::DefaultButton); //vertical if the height is more than double the width renderButton(p, r, pal, (on||down), mouseOver, ((qreal)r.width()/(qreal)r.height()) > 0.4, enabled, animFrame, isDefault ); break; } case PE_FrameDefaultButton: { uint contourFlags = Draw_Left|Draw_Right|Draw_Top|Draw_Bottom| Round_UpperLeft|Round_UpperRight|Round_BottomLeft|Round_BottomRight; if(!enabled) contourFlags|=Is_Disabled; renderContour(p, r, pal.color(QPalette::Background), pal.color(QPalette::Background).dark(120), contourFlags); break; } case PE_IndicatorSpinPlus: case PE_IndicatorSpinMinus: { p->setPen( pal.color(QPalette::ButtonText) ); int l = qMin( w-2, h-2 ); // make the length even so that we get a nice symmetric plus... if(l%2 != 0) --l; QPoint c = r.center(); p->drawLine( c.x()-l/2, c.y(), c.x()+l/2, c.y() ); if ( pe == PE_IndicatorSpinPlus ) { p->drawLine( c.x(), c.y()-l/2, c.x(), c.y()+l/2 ); } break; } // CHECKBOXES // ---------- case PE_IndicatorCheckBox: { QColor contentColor = enabled?pal.color(QPalette::Base):pal.color(QPalette::Background); uint contourFlags = Draw_Left|Draw_Right|Draw_Top|Draw_Bottom; if(!enabled) { contourFlags |= Is_Disabled; } renderContour(p, r, pal.color(QPalette::Background), getColor(pal, ButtonContour), contourFlags); // surface uint surfaceFlags = Draw_Left|Draw_Right|Draw_Top|Draw_Bottom|Is_Horizontal; if(!enabled) { surfaceFlags |= Is_Disabled; } else if(mouseOver) { contentColor = alphaBlendColors(contentColor, getColor(pal,MouseOverHighlight), 240); surfaceFlags |= Is_Highlight; surfaceFlags |= Highlight_Left|Highlight_Right| Highlight_Top|Highlight_Bottom; } renderSurface(p, QRect(r.x()+1, r.y()+1, r.width()-2, r.height()-2), pal.color(QPalette::Background), contentColor, getColor(pal,MouseOverHighlight), enabled?_contrast+3:(_contrast/2), surfaceFlags); drawPrimitive(PE_IndicatorMenuCheckMark, option, p, widget); break; } // RADIOBUTTONS // ------------ case PE_IndicatorRadioButton: { const QColor contourColor = getColor(pal, ButtonContour, enabled); QColor contentColor = enabled?pal.color(QPalette::Base):pal.color(QPalette::Background); QColor checkmarkColor = enabled?getColor(pal,CheckMark):pal.color(QPalette::Background); uint renderFlags = 0; if(!enabled) renderFlags |= Is_Disabled; if(mouseOver) renderFlags |= Is_Highlight; bool checked = (flags & State_On || flags & State_Sunken); renderRadioButton(p, r, contentColor, checkmarkColor, contourColor, getColor(pal,MouseOverHighlight), checked, renderFlags); break; } // GENERAL PANELS // -------------- case PE_FrameGroupBox: { //FIXME /*if ( option.isDefault() || option.lineWidth() <= 0 ) break;*/ renderPanel(p, r, pal, false); break; } case PE_FrameWindow: { p->setPen( pal.color(QPalette::Highlight).dark(130+_contrast)); p->drawRect(r.adjusted(0,0,-1,-1)); int bottom = r.bottom()-pixelMetric(PM_MDIFrameWidth, option, widget)+1; p->fillRect(QRect(r.x(),bottom, r.right(), bottom), pal.color(QPalette::Highlight).dark(130+_contrast)); break; } case PE_Frame: { #ifdef NO_KDE //HACK: if we are in a qmenu render like a surface if( ::qobject_cast(widget->parent()) ) { const bool top = (widget->pos().y() <= 2); renderSurface(p,r.adjusted(top?0:1,0,-1,-1), pal.color(QPalette::Background), pal.color(QPalette::Button), pal.color(QPalette::Highlight)); p->setPen(getColor(pal, ButtonContour, true)); if( !top ) p->drawLine(r.left(),r.top(), r.right(), r.top()); p->drawLine(r.left(),r.bottom(), r.right(), r.bottom()); break; } #endif //normal frame bool pseudo3d = false; bool sunken = false; if (option->state & State_Sunken) { pseudo3d = true; sunken = true; } else if(option->state & State_Raised) pseudo3d = true; renderPanel(p, r, pal, pseudo3d, sunken, (option->state & QStyle::State_HasFocus)); break; } case PE_PanelLineEdit: { //Comboboxes and spinboxes draws the panel for their own if (widget) { if (qobject_cast(widget->parentWidget())) break; if (qobject_cast(widget->parentWidget())) break; } bool isReadOnly = false; bool isEnabled = true; bool hasFrame = true; // panel is highlighted by default if it has focus, but if we have access to the // widget itself we can try to avoid highlighting in case it's readOnly or disabled. if (p->device() && dynamic_cast(p->device())) { QLineEdit* lineEdit = dynamic_cast(p->device()); isReadOnly = lineEdit->isReadOnly(); isEnabled = lineEdit->isEnabled(); hasFrame = lineEdit->hasFrame(); } //Render background QRect filledRect = r.adjusted(1, 1, -1, -1); p->fillRect(filledRect, pal.color(QPalette::Base) ); if( !hasFrame ) break; uint contourFlags = Draw_Left|Draw_Right|Draw_Top|Draw_Bottom| Round_UpperLeft|Round_UpperRight|Round_BottomLeft|Round_BottomRight; QColor shadowColor; if ( _inputFocusHighlight && hasFocus && !isReadOnly && isEnabled) { renderContour(p, r, pal.color(QPalette::Background), getColor(pal,FocusHighlight,enabled), contourFlags ); shadowColor = getColor(pal,FocusHighlight,enabled); } else { renderContour(p, r, pal.color(QPalette::Background), getColor(pal, ButtonContour, enabled), contourFlags ); shadowColor = Qt::black; } //shadow or contour lines if( _sunkenShadows ) { renderSunkenShadow(p, r.adjusted(1,1,-1,-1), shadowColor); } else { const QColor contentColor = enabled?pal.color(QPalette::Base):pal.color(QPalette::Background); if (_inputFocusHighlight && hasFocus && !isReadOnly && isEnabled) { p->setPen( getColor(pal,FocusHighlight).dark(130) ); } else { // deciding if the 3d effect should be done or not p->setPen(contentColor.dark(100+(_lightBorder?-30:30)) ); } p->drawLine(r.left()+1, r.top()+2, r.left()+1, r.bottom()-2 ); p->drawLine(r.left()+2, r.top()+1, r.right()-2, r.top()+1 ); if (_inputFocusHighlight && hasFocus && !isReadOnly && isEnabled) { p->setPen( getColor(pal,FocusHighlight).light(130) ); } else { p->setPen(contentColor.light(130) ); } p->drawLine(r.left()+2, r.bottom()-1, r.right()-2, r.bottom()-1 ); p->drawLine(r.right()-1, r.top()+2, r.right()-1, r.bottom()-2 ); } break; } case PE_FrameStatusBar: { if(_statusBarFrame) { renderContour(p, r, pal.color(QPalette::Background), pal.color(QPalette::Background).dark(160), Draw_Left|Draw_Right|Draw_Top|Draw_Bottom); } break; } case PE_FrameTabBarBase: { if( !dynamic_cast(widget->parent())) { p->setPen( getColor(pal, PanelContour) ); p->drawLine(r.left(), r.top(), r.right(), r.top()); } break; } case PE_FrameTabWidget: { renderPanel(p, r, pal, true, sunken); break; } case PE_FrameMenu: { /*TODO: is there a way tho check if we are a menubar popup or a normal popup? so in the menubar popup (QApplication::reverseLayout()?Sharp_UpperRight:Sharp_UpperLeft)| could be added */ renderContour(p, r, pal.color(QPalette::Background), pal.color(QPalette::Background).dark(200), Draw_Left|Draw_Right|Draw_Top|Draw_Bottom|Draw_AlphaBlend); break; } // MENU / TOOLBAR PANEL // -------------------- case PE_PanelMenuBar: case PE_FrameDockWidget: case PE_PanelToolBar: { // fix for toolbar lag (from Mosfet Liquid) QWidget* w = dynamic_cast(p->device()); if(w && w->backgroundRole() == QPalette::Button) w->setBackgroundRole(QPalette::Background); p->fillRect(r, pal.color(QPalette::Background)); if ( _drawToolBarSeparator && //don't draw the separator under the menubars if the emphasys with border is on !( pe==PE_PanelMenuBar && _menuBarEmphasis && _menuBarEmphasisBorder ) ) { if ( r.width() > r.height() ) { // avoid drawing a double light line if(!_lightBorder) { p->setPen( getColor(pal, PanelLight) ); p->drawLine( r.left(), r.top(), r.right(), r.top() ); p->setPen( getColor(pal, PanelDark) ); p->drawLine( r.left(), r.bottom(), r.right(), r.bottom() ); } else { p->setPen( pal.color(QPalette::Background).dark(100+_contrast*4) ); p->drawLine( r.left(), r.bottom(), r.right(), r.bottom() ); } } else { if(!_lightBorder) { p->setPen( getColor(pal, PanelLight) ); p->drawLine( r.left(), r.top(), r.left(), r.bottom() ); p->setPen( getColor(pal, PanelDark) ); p->drawLine( r.right(), r.top(), r.right(), r.bottom() ); } else { p->setPen( pal.color(QPalette::Background).dark(100+_contrast*4) ); p->drawLine( r.left(), r.top(), r.left(), r.bottom() ); } } } break; } // TOOLBAR/DOCK WINDOW HANDLE case PE_IndicatorDockWidgetResizeHandle: case PE_IndicatorToolBarHandle: { int counter = 1; //how far form the center we start to draw dots int fromCenter = 6; int hCenter = r.left()+r.width()/2; int vCenter = r.top()+r.height()/2; if( pe == PE_IndicatorDockWidgetResizeHandle ) { horiz = !horiz; fromCenter = 12; } qreal opacity = p->opacity(); /*handles*/ if(horiz) { for(int j = vCenter-fromCenter; j <= vCenter+fromCenter; j+=6) { //opacity from 0.5 (borders) to 1 (center) p->setOpacity( 1.5-((double)qAbs(j-vCenter)/(double)fromCenter) ); renderDot(p, QPoint(hCenter-1, j), pal.color(QPalette::Background), true, true); counter++; } } else { for(int j = hCenter-fromCenter; j <= hCenter+fromCenter; j+=6) { p->setOpacity( 1.5-((double)qAbs(j-hCenter)/(double)fromCenter) ); renderDot(p, QPoint(j, vCenter-1), pal.color(QPalette::Background), true, true); counter++; } } p->setOpacity( opacity); break; } // TOOLBAR SEPARATOR // ----------------- case PE_IndicatorToolBarSeparator: { p->fillRect(r, pal.color(QPalette::Background)); if(_drawToolBarItemSeparator) { if(horiz) { int center = r.left()+r.width()/2; if(!_lightBorder) { p->setPen( getColor(pal, PanelDark) ); p->drawLine( center-1, r.top()+3, center-1, r.bottom()-3 ); p->setPen( getColor(pal, PanelLight) ); p->drawLine( center, r.top()+3, center, r.bottom()-3 ); } else { p->setPen( pal.color(QPalette::Background).dark(100+_contrast*4) ); p->drawLine( center, r.top()+3, center, r.bottom()-3 ); } } else { int center = r.top()+r.height()/2; if(!_lightBorder) { p->setPen( getColor(pal, PanelDark) ); p->drawLine( r.x()+3, center-1, r.right()-3, center-1 ); p->setPen( getColor(pal, PanelLight) ); p->drawLine( r.x()+3, center, r.right()-3, center ); } else { p->setPen( pal.color(QPalette::Background).dark(100+_contrast*4) ); p->drawLine( r.x()+3, center, r.right()-3, center ); } } } break; } case PE_IndicatorMenuCheckMark: { if ( flags & State_Off ) break; const QColor contentColor = enabled?pal.color(QPalette::Base):pal.color(QPalette::Background); QColor checkmarkColor = enabled?getColor(pal,CheckMark):pal.color(QPalette::Background); if(flags & State_Sunken) checkmarkColor = alphaBlendColors(contentColor, checkmarkColor, 150); p->save(); p->setRenderHint(QPainter::Antialiasing); p->setPen(QPen(checkmarkColor, qRound((double)r.width()/5), Qt::SolidLine, Qt::RoundCap) ); p->drawLine(r.left()+4, r.top()+4, r.right()-3, r.bottom()-3); if( flags & State_On ) p->drawLine(r.left()+4, r.bottom()-3, r.right()-3, r.top()+4); p->restore(); break; } case PE_IndicatorSpinUp: case PE_IndicatorArrowUp: { renderArrow(p, r, pal.color(QPalette::ButtonText), Up); break; } case PE_IndicatorSpinDown: case PE_IndicatorArrowDown: { //HACK: otherwise the arrow is not positioned correctly in pushbuttons const QPushButton *b = dynamic_cast(widget); renderArrow(p, (b?r.translated(-3,0):r), pal.color(QPalette::ButtonText), Down); break; } case PE_IndicatorHeaderArrow: { const QStyleOptionHeader *headerOpt = qstyleoption_cast(option); if( !headerOpt ) break; if( headerOpt->sortIndicator == QStyleOptionHeader::SortUp) renderArrow(p, r, pal.color(QPalette::ButtonText), Up); else renderArrow(p, r, pal.color(QPalette::ButtonText), Down); break; } case PE_IndicatorArrowLeft: { renderArrow(p, r, pal.color(QPalette::ButtonText), Left); break; } case PE_IndicatorArrowRight: { renderArrow(p, r, pal.color(QPalette::ButtonText), Right); break; } // copied and slightly modified from QWindowsStyle. case PE_IndicatorBranch: { // Typical Windows style listview branch element (dotted line). int hCenter = r.center().x(); int vCenter = r.center().y(); QBrush brush(option->palette.dark().color(), Qt::Dense4Pattern); //p->setBrush(brush); if( option->state & (State_Open | State_Children | State_Item | State_Sibling) ) { int lineHeight; if( option->state & State_Sibling ) lineHeight = r.height(); else lineHeight = r.height()/2; p->fillRect(QRect(hCenter, r.y(), 1, lineHeight), brush); if(option->state & State_Item) if( !reverseLayout ) p->fillRect(QRect(hCenter, vCenter, r.width()/2, 1), brush); else p->fillRect(QRect(r.x(), vCenter, r.width()/2, 1), brush); } if (option->state & State_Children) { QRect expanderRect(hCenter - 4, r.center().y() - 4, 9, 9); if(!_drawTriangularExpander) { renderContour(p, expanderRect, pal.color(QPalette::Base), pal.color(QPalette::Dark), Draw_Left|Draw_Right|Draw_Top|Draw_Bottom| Round_UpperLeft|Round_UpperRight|Round_BottomLeft|Round_BottomRight ); renderSurface(p, expanderRect.adjusted(1,1,-1,-1), pal.color(QPalette::Base), pal.color(QPalette::Base).dark(120), pal.color(QPalette::Base) ); p->setPen( pal.color(QPalette::Text) ); // plus or minus p->drawLine( hCenter - 2, vCenter, hCenter + 2, vCenter ); if ( !(flags & State_Open) ) // Collapsed = On p->drawLine( hCenter, vCenter - 2, hCenter, vCenter + 2 ); } else { if( flags & State_Open ) renderArrow( p, expanderRect, pal.color(QPalette::Text), Down ); else renderArrow( p, expanderRect, pal.color(QPalette::Text), Right ); } } break; } default: { #ifdef NO_KDE return QWindowsStyle::drawPrimitive(pe, option, p, widget); #else return KStyle::drawPrimitive(pe, option, p, widget); #endif } } } /* void PolyesterStyle::drawControlMask(ControlElement element, QPainter *p, const QWidget *w, const QRect &r, const QStyleOption &opt) const { switch (element) { case CE_PushButton: { p->fillRect (r, color0); renderMask(p, r, color1, Round_UpperLeft|Round_UpperRight|Round_BottomLeft|Round_BottomRight); break; } default: { QWindowsStyle::drawControlMask (element, p, w, r, opt); } } } void PolyesterStyle::drawComplexControlMask(ComplexControl c, QPainter *p, const QWidget *w, const QRect &r, const QStyleOption &o) const { switch (c) { case CC_SpinBox: case CC_ListView: case CC_ComboBox: { p->fillRect (r, color0); renderMask(p, r, color1, Round_UpperLeft|Round_UpperRight|Round_BottomLeft|Round_BottomRight); break; } default: { QWindowsStyle::drawComplexControlMask (c, p, w, r, o); } } } */ void PolyesterStyle::drawComplexControl( ComplexControl control, const QStyleOptionComplex *opt, QPainter *p, const QWidget *widget) const { const bool reverseLayout = opt->direction == Qt::RightToLeft; const State &flags = opt->state; const QPalette &pal = opt->palette; const QRect &r = opt->rect; const bool enabled = (flags & State_Enabled); switch(control) { //TODO:probably i won't do this, it's too huge :) /*case CC_Q3ListView: { const QStyleOptionQ3ListView *lvOpt = qstyleoption_cast(opt); if( !lvOpt ) break; if( lvOpt->subControls & (SC_Q3ListViewBranch | SC_Q3ListViewExpand) ) { QStyleOption branchOpt; branchOpt.QStyleOption::operator=(*opt); branchOpt.rect = QRect( r.center().x(), r.y(), 1, r.height() ); branchOpt.state |= State_Children; drawPrimitive(PE_IndicatorBranch, &branchOpt, p, widget ); p->setPen(Qt::red); p->drawRect( r.adjusted(1,1,1,1) ); } break; }*/ // COMBOBOX // -------- case CC_ComboBox: { static const unsigned int handleWidth = 15; //const QComboBox *cb = dynamic_cast(widget); QComboBox *cb = (QComboBox *)(widget); // **hack**: cast away const-ness for animation support! // at the moment cb is only needed to check if the combo box is editable or not. // if cb doesn't exist, just assume false and the app (gideon! ;) ) at least doesn't crash. const QStyleOptionComboBox *comboOpt; comboOpt = qstyleoption_cast(opt); if (!comboOpt) break; bool editable = false; bool hasFocus = false; if (cb) { editable = cb->isEditable(); hasFocus = cb->hasFocus(); } int animFrame = 0; if( _animateButton && animWidgets.contains( cb )) animFrame = animWidgets[cb].animFrame; const QColor buttonColor = enabled?pal.color(QPalette::Button).light(100+animFrame):pal.color(QPalette::Background); QColor highlightColor = pal.color(QPalette::Highlight); if( _animateButton ) { highlightColor.setAlpha((int)(255*((double)animFrame/(double)ANIMATIONSTEPS))); } const QColor inputColor = enabled?(editable?pal.color(QPalette::Base):pal.color(QPalette::Button)) :pal.color(QPalette::Background); uint contourFlags = 0; if( khtmlWidgets.contains(cb) ) contourFlags |= Draw_AlphaBlend; if (_inputFocusHighlight && hasFocus && editable && enabled) { QRect editField = subControlRect(CC_ComboBox, comboOpt, SC_ComboBoxEditField, widget); QRect editFrame = r; QRect buttonFrame = r; uint editFlags = contourFlags; uint buttonFlags = contourFlags; // Hightlight only the part of the contour next to the control button if (reverseLayout) { // querySubControlMetrics doesn't work right for reverse Layout int dx = r.right() - editField.right(); editFrame.setLeft(editFrame.left() + dx); buttonFrame.setRight(editFrame.left() - 1); editFlags |= Draw_Right|Draw_Top|Draw_Bottom|Round_UpperRight|Round_BottomRight; buttonFlags |= Draw_Left|Draw_Top|Draw_Bottom|Round_UpperLeft|Round_BottomLeft; } else { editFrame.setRight(editField.right()); buttonFrame.setLeft(editField.right() + 1); editFlags |= Draw_Left|Draw_Top|Draw_Bottom|Round_UpperLeft|Round_BottomLeft; buttonFlags |= Draw_Right|Draw_Top|Draw_Bottom|Round_UpperRight|Round_BottomRight; } renderContour(p, editFrame, pal.color(QPalette::Background), getColor(pal,FocusHighlight,enabled), editFlags); renderContour(p, buttonFrame, pal.color(QPalette::Background), getColor(pal, ButtonContour, enabled), buttonFlags); } else { contourFlags |= Draw_Left|Draw_Right|Draw_Top|Draw_Bottom| Round_UpperLeft|Round_UpperRight|Round_BottomLeft|Round_BottomRight; renderContour(p, r, pal.color(QPalette::Background), getColor(pal, ButtonContour, enabled), contourFlags); } //extend the contour: between input and handler... p->setPen(alphaBlendColors(pal.color(QPalette::Background), getColor(pal, ButtonContour, enabled), 50) ); if(reverseLayout) { p->drawLine(r.left()+1+handleWidth, r.top()+1, r.left()+1+handleWidth, r.bottom()-1); } else { p->drawLine(r.right()-handleWidth-1, r.top()+1, r.right()-handleWidth-1, r.bottom()-1); } const QRect RbuttonSurface(reverseLayout?r.left()+1:r.right()-handleWidth, r.top()+1, handleWidth, r.height()-2); const QRect RcontentSurface(reverseLayout?r.left()+1+handleWidth+1:r.left()+1, r.top()+1, r.width()-handleWidth-3, r.height()-2); // handler uint surfaceFlags = Draw_Left|Draw_Right|Draw_Top|Draw_Bottom|Is_Horizontal; if(reverseLayout) { surfaceFlags |= Round_UpperLeft|Round_BottomLeft; } else { surfaceFlags |= Round_UpperRight|Round_BottomRight; } if ( (animFrame != 0) || (flags & State_MouseOver)) { surfaceFlags |= Is_Highlight; if(editable) surfaceFlags |= Highlight_Left|Highlight_Right; surfaceFlags |= Highlight_Top|Highlight_Bottom; } renderSurface(p, RbuttonSurface, pal.color(QPalette::Background), buttonColor, highlightColor, enabled?_contrast+3:(_contrast/2), surfaceFlags); if(!editable) { surfaceFlags = Draw_Left|Draw_Right|Draw_Top|Draw_Bottom|Is_Horizontal; if(reverseLayout) { surfaceFlags |= Round_UpperRight|Round_BottomRight; } else { surfaceFlags |= Round_UpperLeft|Round_BottomLeft; } if ( (animFrame != 0) || (flags & State_MouseOver)) { surfaceFlags |= Is_Highlight; surfaceFlags |= Highlight_Top|Highlight_Bottom; } renderSurface(p, RcontentSurface, pal.color(QPalette::Background), buttonColor, highlightColor, enabled?_contrast+3:(_contrast/2), surfaceFlags); if (hasFocus) { QStyleOptionFocusRect focusOpt; focusOpt.QStyleOption::operator=(*comboOpt); focusOpt.rect = subElementRect(SE_ComboBoxFocusRect, comboOpt, widget); drawPrimitive(PE_FrameFocusRect, &focusOpt, p, widget ); } } else { // input area QRect filledRect = RcontentSurface.adjusted(1, 1, -1, -1); p->fillRect(filledRect, inputColor ); //shadow or border if( _sunkenShadows ) { renderSunkenShadow(p, RcontentSurface, (_inputFocusHighlight && hasFocus && editable && enabled) ?getColor(pal,FocusHighlight):Qt::black, Draw_Top|Draw_Bottom|Draw_Left|Draw_Right| (reverseLayout?Sharp_UpperLeft|Sharp_BottomLeft :Sharp_UpperRight|Sharp_BottomRight)); } else { // thin frame around the input area if (_inputFocusHighlight && hasFocus && editable && enabled) { p->setPen( getColor(pal,FocusHighlight).dark(130) ); } else { p->setPen(inputColor.dark(100+(_lightBorder?-30:30)) ); } p->drawLine(RcontentSurface.x(), reverseLayout?RcontentSurface.y():RcontentSurface.y()+1, RcontentSurface.x(), reverseLayout?RcontentSurface.bottom():RcontentSurface.bottom()-1); p->drawLine(RcontentSurface.x()+1, RcontentSurface.y(), reverseLayout?RcontentSurface.right()-1:RcontentSurface.right(), RcontentSurface.y() ); if (_inputFocusHighlight && hasFocus && editable && enabled) { p->setPen( getColor(pal,FocusHighlight).light(130) ); } else { p->setPen(inputColor.light(130) ); } p->drawLine(reverseLayout?RcontentSurface.x():RcontentSurface.x()+1, RcontentSurface.bottom(), reverseLayout?RcontentSurface.right()-1:RcontentSurface.right(), RcontentSurface.bottom() ); p->drawLine(RcontentSurface.right(), RcontentSurface.top()+1, RcontentSurface.right(), RcontentSurface.bottom()-1 ); } } p->setPen(pal.color(QPalette::Foreground)); QStyleOption arrowOpt; arrowOpt.QStyleOption::operator=(*opt); arrowOpt.rect = RbuttonSurface; drawPrimitive(PE_IndicatorSpinDown, &arrowOpt, p, widget);/*p, RbuttonSurface, cg, Style_Default|Style_Enabled|State_Raised);*/ // QComboBox draws the text using pal.color(QPalette::Text), we can override this // from here TODO: shadow here? /*p->setPen( pal.color(QPalette::ButtonText) ); p->setBackgroundColor( pal.color(QPalette::Button) );*/ break; } case CC_Slider: //The slider: at the moment it has many fixed sizes, maybe this is going to change... { //const QSlider* slider = (const QSlider*)widget; const QStyleOptionSlider *slidOpt = qstyleoption_cast(opt); if(!slidOpt) break; bool horizontal = slidOpt->orientation == Qt::Horizontal; QRect handleRect = QCommonStyle::subControlRect(CC_Slider, slidOpt, SC_SliderHandle, widget); int vCenter = r.center().y(); int hCenter = r.center().x(); //Giving the handleRect a fixed size... if (horizontal) { handleRect.setHeight(16); handleRect.moveCenter(QPoint(handleRect.center().x(), vCenter)); } else { handleRect.setWidth(16); handleRect.moveCenter(QPoint(hCenter, handleRect.center().y())); } //SLIDER GROOVE if( (opt->subControls & SC_SliderGroove) ) { if (horizontal) { int coloredWidth = handleRect.center().x(); QRect coloredRect; QRect emptyRect; if(slidOpt->upsideDown) { emptyRect = QRect(r.left(), vCenter-3, handleRect.center().x(), 5); coloredRect = QRect(coloredWidth, vCenter-3, r.width()-coloredWidth, 5); } else { emptyRect = QRect(coloredWidth, vCenter-3, r.width()-coloredWidth, 5); coloredRect = QRect(r.left(), vCenter-3, handleRect.center().x(), 5); } //colored part renderContour(p, coloredRect, pal.color(QPalette::Background), enabled && _coloredScrollBar?getColor(pal, DragButtonContour, IsEnabled) :pal.color(QPalette::Background).dark(130), Draw_Left|Draw_Right|Draw_Top|Draw_Bottom); renderGradient(p, QRect(coloredRect.x()+1, vCenter-2, coloredRect.width()-2, 3), enabled && _coloredScrollBar?pal.color(QPalette::Highlight).light(100+_contrast*4) :pal.color(QPalette::Background).dark(120-_contrast), enabled && _coloredScrollBar?pal.color(QPalette::Highlight) :pal.color(QPalette::Background).dark(120), true); //empty part renderContour(p, emptyRect, pal.color(QPalette::Background), pal.color(QPalette::Background).dark(enabled?150:130), Draw_Left|Draw_Right|Draw_Top|Draw_Bottom); renderGradient(p, QRect(emptyRect.x()+1, vCenter-2, emptyRect.width()-2, 3), pal.color(QPalette::Background).dark(100+_contrast*4), pal.color(QPalette::Background).light(100+_contrast), true); } else { int nonColoredHeight = handleRect.center().y(); QRect coloredRect; QRect emptyRect; if(!slidOpt->upsideDown) { emptyRect = QRect(hCenter-3, nonColoredHeight, 5, r.height()-nonColoredHeight); coloredRect = QRect(hCenter-3, r.y(), 5, nonColoredHeight); } else { emptyRect = QRect(hCenter-3, r.y(), 5, nonColoredHeight); coloredRect = QRect(hCenter-3, nonColoredHeight, 5, r.height()-nonColoredHeight); } //colored part renderContour(p, coloredRect, pal.color(QPalette::Background), enabled && _coloredScrollBar?getColor(pal, DragButtonContour, IsEnabled) :pal.color(QPalette::Background).dark(130), Draw_Left|Draw_Right|Draw_Top|Draw_Bottom); renderGradient(p, QRect(hCenter-2, coloredRect.y()+1, 3, coloredRect.height()-2), enabled?pal.color(QPalette::Highlight).light(100+_contrast*4) :pal.color(QPalette::Background).dark(120-_contrast), enabled?pal.color(QPalette::Highlight) :pal.color(QPalette::Background).dark(120), false); //empty part renderContour(p, emptyRect, pal.color(QPalette::Background), pal.color(QPalette::Background).dark(enabled?150:130), Draw_Left|Draw_Right|Draw_Top|Draw_Bottom); renderGradient(p, QRect(hCenter-2, emptyRect.y()+1, 3, emptyRect.height()-2), pal.color(QPalette::Background).dark(100+_contrast*4), pal.color(QPalette::Background).light(100+_contrast), false); } } //SLIDER HANDLE if (slidOpt->subControls & SC_SliderHandle) { p->save(); if( opt->subControls & SC_SliderTickmarks ) { QRegion mask(handleRect); QBitmap bmp = QBitmap::fromData(QSize( 8, 13 ), slider_mask_bits); if(horizontal) { if(slidOpt->tickPosition == QSlider::TicksBelow || slidOpt->tickPosition == QSlider::TicksBothSides) bmp = bmp.transformed(QTransform().rotate(90)); else bmp = bmp.transformed(QTransform().rotate(-90)); } else if(slidOpt->tickPosition == QSlider::TicksLeft) bmp = bmp.transformed(QTransform().rotate(180)); QRegion triangle(bmp); if(horizontal && (slidOpt->tickPosition == QSlider::TicksBelow || slidOpt->tickPosition == QSlider::TicksBothSides)) triangle.translate(handleRect.x()-2, handleRect.bottom()-7); else if(!horizontal && (slidOpt->tickPosition == QSlider::TicksRight || slidOpt->tickPosition == QSlider::TicksBothSides)) triangle.translate(handleRect.right()-7, handleRect.top()-1); else if(horizontal && slidOpt->tickPosition == QSlider::TicksAbove) triangle.translate(handleRect.x()-1, handleRect.top()-1); else if(!horizontal && slidOpt->tickPosition == QSlider::TicksLeft) triangle.translate(handleRect.left()-1, handleRect.top()-2); mask -= triangle; p->setClipRegion(mask); } renderContour(p, handleRect, pal.color(QPalette::Background), enabled && _coloredScrollBar?getColor(pal, DragButtonContour, IsEnabled) :pal.color(QPalette::Background).dark(130), Draw_Left|Draw_Right|Draw_Top|Draw_Bottom); renderSurface(p, QRect(handleRect.x()+1, handleRect.y()+1, handleRect.width()-2, handleRect.height()-2), pal.color(QPalette::Background), enabled && _coloredScrollBar?getColor(pal, DragButtonSurface, IsEnabled) :pal.color(QPalette::Button), pal.color(QPalette::Highlight), 5, Draw_Left|Draw_Right| Draw_Top|Draw_Bottom|Is_Horizontal); //two of the dots may be useless because could be off mask, //but not painting them would make the code even more complicate :) renderDot(p, QPoint(handleRect.left()+2, handleRect.top()+2), enabled && _coloredScrollBar?getColor(pal, DragButtonSurface, IsEnabled) :pal.color(QPalette::Button), false, true); renderDot(p, QPoint(handleRect.right()-3, handleRect.top()+2), enabled && _coloredScrollBar?getColor(pal, DragButtonSurface, IsEnabled) :pal.color(QPalette::Button), false, true); renderDot(p, QPoint(handleRect.left()+2, handleRect.bottom()-3), enabled && _coloredScrollBar?getColor(pal, DragButtonSurface, IsEnabled) :pal.color(QPalette::Button), false, true); renderDot(p, QPoint(handleRect.right()-3, handleRect.bottom()-3), enabled && _coloredScrollBar?getColor(pal, DragButtonSurface, IsEnabled) :pal.color(QPalette::Button), false, true); p->restore(); if (opt->subControls & SC_SliderTickmarks) { p->setPen(enabled && _coloredScrollBar?getColor(pal, DragButtonContour, IsEnabled) :getColor(pal, ButtonContour, IsEnabled)); if(horizontal) { if( slidOpt->tickPosition != QSlider::TicksAbove ) { p->drawLine(handleRect.left(), handleRect.bottom()-5, handleRect.center().x(), handleRect.bottom()); p->drawLine(handleRect.right(), handleRect.bottom()-5, handleRect.center().x(), handleRect.bottom()); p->setPen((enabled && _coloredScrollBar?getColor(pal, DragButtonSurface, IsEnabled) :pal.color(QPalette::Button)).light(110+_contrast)); p->drawLine(handleRect.left()+1, handleRect.bottom()-5, handleRect.center().x(), handleRect.bottom()-1); if( !_lightBorder ) p->setPen((enabled && _coloredScrollBar?getColor(pal, DragButtonSurface, IsEnabled) :pal.color(QPalette::Button)).dark(110+_contrast)); p->drawLine(handleRect.right()-1, handleRect.bottom()-5, handleRect.center().x(), handleRect.bottom()-1); } else { p->drawLine(handleRect.left(), handleRect.top()+5, handleRect.center().x(), handleRect.top()); p->drawLine(handleRect.right(), handleRect.top()+5, handleRect.center().x(), handleRect.top()); p->setPen((enabled && _coloredScrollBar?getColor(pal, DragButtonSurface, IsEnabled) :pal.color(QPalette::Button)).light(110+_contrast)); p->drawLine(handleRect.left()+1, handleRect.top()+5, handleRect.center().x(), handleRect.top()+1); p->drawLine(handleRect.right()-1, handleRect.top()+5, handleRect.center().x(), handleRect.top()+1); } } else { if( slidOpt->tickPosition != QSlider::TicksLeft ) { p->drawLine(handleRect.right()-5, handleRect.top(), handleRect.right(), handleRect.center().y()); p->drawLine(handleRect.right()-5, handleRect.bottom(), handleRect.right(), handleRect.center().y()); p->setPen((enabled && _coloredScrollBar?getColor(pal, DragButtonSurface, IsEnabled) :pal.color(QPalette::Button)).light(110+_contrast)); p->drawLine(handleRect.right()-5, handleRect.top()+1, handleRect.right()-1, handleRect.center().y()); if( !_lightBorder ) p->setPen((enabled && _coloredScrollBar?getColor(pal, DragButtonSurface, IsEnabled) :pal.color(QPalette::Button)).dark(110+_contrast)); p->drawLine(handleRect.right()-5, handleRect.bottom()-1, handleRect.right()-1, handleRect.center().y()); } else { p->drawLine(handleRect.left()+5, handleRect.top(), handleRect.left(), handleRect.center().y()); p->drawLine(handleRect.left()+5, handleRect.bottom(), handleRect.left(), handleRect.center().y()); p->setPen((enabled && _coloredScrollBar?getColor(pal, DragButtonSurface, IsEnabled) :pal.color(QPalette::Button)).light(110+_contrast)); p->drawLine(handleRect.left()+5, handleRect.top()+1, handleRect.left()+1, handleRect.center().y()); p->drawLine(handleRect.left()+5, handleRect.bottom()-1, handleRect.left()+1, handleRect.center().y()); } } } } //THICKMARKS if (slidOpt->subControls & SC_SliderTickmarks) { QStyleOptionSlider tmpSlidOpt = *slidOpt; tmpSlidOpt.subControls = SC_SliderTickmarks; #ifdef NO_KDE QWindowsStyle::drawComplexControl(control, &tmpSlidOpt, p, widget); #else KStyle::drawComplexControl(control, &tmpSlidOpt, p, widget); #endif } break; } // TOOLBUTTON // ---------- case CC_ToolButton: { QToolButton *tb = (QToolButton *) widget;// **hack**: cast away const-ness for animation support! const QStyleOptionToolButton *buttonOpt = qstyleoption_cast(opt); if( !buttonOpt ) break; #ifndef NO_KDE //HACK: if we are in a qmenu we are a title bool menuTitle = false; if( ::qobject_cast(widget->parent()) ) { const bool top = (widget->pos().y() <= 2); renderSurface(p,r.adjusted(top?0:1,0,-1,-1), pal.color(QPalette::Background), pal.color(QPalette::Button), pal.color(QPalette::Highlight)); p->setPen(getColor(pal, ButtonContour, true)); if( !top ) p->drawLine(r.left(),r.top(), r.right(), r.top()); p->drawLine(r.left(),r.bottom(), r.right(), r.bottom()); // label in the toolbutton area QStyleOptionToolButton labelOpt = *buttonOpt; labelOpt.rect = r; labelOpt.state = QStyle::State_Active|QStyle::State_Enabled; drawControl(CE_ToolButtonLabel, &labelOpt, p, widget); break; } #endif //QColorGroup g2 = cg; int animFrame = 0; if( _animateButton && animWidgets.contains( tb )){ animFrame = animWidgets[tb].animFrame; /*g2.setColor( QColorGroup::Button, pal.color(QPalette::Button).light(100+animFrame) );*/ } QRect button, menuarea; button = subControlRect(control, buttonOpt, SC_ToolButton, widget); State bflags = buttonOpt->state, mflags = buttonOpt->state; /*uint borderFlags = Draw_Left|Draw_Right|Draw_Top|Draw_Bottom| Round_UpperLeft|Round_UpperRight|Round_BottomLeft|Round_BottomRight;*/ if ( animFrame == 0 && (bflags & State_AutoRaise) && !(bflags & State_MouseOver)) bflags &= ~State_Raised; bflags &= ~State_MouseOver; if (buttonOpt->activeSubControls & SC_ToolButton) bflags |= State_Sunken; if (buttonOpt->activeSubControls & SC_ToolButtonMenu) mflags |= State_Sunken; //FIXME: special case for Tabbar if( ::qobject_cast(widget->parent()) ) { drawPrimitive(PE_PanelButtonTool, opt, p, widget); } else if( (buttonOpt->subControls & SC_ToolButton) && (flags & State_Enabled) && ((bflags & (State_Sunken| State_On | State_Raised)) || flags & State_MouseOver )) { if( _animateButton && !(bflags & (State_Sunken| State_On )) ) { qreal opacity = p->opacity(); p->setOpacity((double)animFrame/(double)ANIMATIONSTEPS); drawPrimitive(PE_PanelButtonTool, opt, p, widget); p->setOpacity(opacity); } else drawPrimitive(PE_PanelButtonTool, opt, p, widget); } // Draw a toolbutton menu indicator if required if( buttonOpt->subControls & SC_ToolButtonMenu ) { QRect menuarea = subControlRect(control, buttonOpt, SC_ToolButtonMenu, widget); renderArrow(p, menuarea, pal.color(QPalette::ButtonText), Down); p->save(); if( _animateButton ) p->setOpacity((double)animFrame/(double)ANIMATIONSTEPS); p->setPen(getColor(pal,ButtonContour)); if(bflags & State_Raised ) p->drawLine(menuarea.x()-2, menuarea.y(), menuarea.x()-2, menuarea.bottom()); p->restore(); } if (tb->hasFocus() && !tb->focusProxy()) { QRect fr = tb->rect(); fr.adjusted(2, 2, -2, -2); drawPrimitive(PE_FrameFocusRect, opt, p, widget); } // label in the toolbutton area QStyleOptionToolButton labelOpt = *buttonOpt; labelOpt.rect = button; drawControl(CE_ToolButtonLabel, &labelOpt, p, widget); // Set the color for the ToolButton menu indicator //p->setPen(pal.color(QPalette::ButtonText) ); break; } //Dial //----------- case CC_Dial: { const QStyleOptionSlider *sbOpt; sbOpt = qstyleoption_cast(opt); if (!sbOpt) { #ifdef NO_KDE QWindowsStyle::drawComplexControl(QStyle::CC_Dial, opt, p, widget); #else KStyle::drawComplexControl(QStyle::CC_Dial, opt, p, widget); #endif break; } p->save(); p->setRenderHint(QPainter::Antialiasing, true); const int margin = 5; const int width = qMin(r.width(),r.height())-2*margin; QRect dialRect(r.x()+margin, r.y()+margin, width, width); dialRect.moveCenter(QPoint(r.center().x(),r.center().y())); const int pinMargin = dialRect.width()/4; QRect pinRect(dialRect.adjusted(pinMargin,pinMargin,-pinMargin,-pinMargin)); //border p->setPen(QPen(getColor(pal,ButtonContour),1)); p->drawEllipse(dialRect); //light border and surface if( _sunkenShadows ) { p->setPen(Qt::NoPen); QRadialGradient shadowGradient( dialRect.center().x()+1, dialRect.center().y()+3, (double)width/2.0 ); QColor shadowColor = pal.color(QPalette::Base).dark(120+_contrast); shadowGradient.setColorAt(0,shadowColor); shadowGradient.setColorAt(0.5,shadowColor); shadowGradient.setColorAt(0.55,pal.color(QPalette::Base)); shadowGradient.setColorAt(0.95,pal.color(QPalette::Base)); shadowGradient.setColorAt(1,shadowColor); p->setBrush(shadowGradient); } else { //light border p->setPen(getColor(pal,PanelLight).light(110+_contrast)); p->setBrush(getShadowBrush(dialRect, pal.color(QPalette::Button))); } p->drawEllipse(dialRect.adjusted(1,1,-1,-1)); //central pin p->setPen(getColor(pal,ButtonContour)); p->drawEllipse(pinRect); p->setPen(getColor(pal,PanelLight).light(110+_contrast)); p->setBrush(getSurfaceBrush(pinRect, pal.color(QPalette::Button))); p->drawEllipse(pinRect.adjusted(1,1,-1,-1)); if( _shadowedButtonsText ) { p->setPen(pal.color(QPalette::Button).dark(120+_contrast)); drawItemText(p, pinRect.adjusted(1,1,1,1), Qt::AlignCenter, pal, enabled, QString::number(sbOpt->sliderValue)); } p->setPen(pal.color(QPalette::ButtonText)); drawItemText(p, pinRect, Qt::AlignCenter, pal, enabled, QString::number(sbOpt->sliderValue)); //p->drawText(pinRect.x(), pinRect.y(), sbOpt->sliderValue); // angle calculation from qcommonstyle.cpp (c) Trolltech 1992-2007. qreal angle; int sliderPosition = sbOpt->upsideDown ? sbOpt->sliderPosition : (sbOpt->maximum - sbOpt->sliderPosition); int range = sbOpt->maximum - sbOpt->minimum; if (!range) angle = PI / 2; else if (sbOpt->dialWrapping) angle = PI * 1.5 - (sliderPosition - sbOpt->minimum) * 2 * PI / range; else angle = (PI * 8 - (sliderPosition - sbOpt->minimum) * 10 * PI / range) / 6; const int pinSliderRatio = pinRect.width()/3; QRect sliderRect(pinRect.adjusted(pinSliderRatio,pinSliderRatio,-pinSliderRatio,-pinSliderRatio)); const int r = (int)((double)dialRect.width()/2) - (int)((double)pinSliderRatio/1.4); sliderRect.translate(int(0.5 + r * cos(angle)), int(0.5 - r * sin(angle))); //p->setPen(QPen(Qt::NoBrush,0)); p->setPen(getColor(pal,ButtonContour)); p->drawEllipse(sliderRect); p->setBrush(getSurfaceBrush(sliderRect, sbOpt->state&QStyle::State_HasFocus ?pal.color(QPalette::Highlight) :pal.color(QPalette::Button))); p->setPen(getColor(pal,PanelLight).light(110+_contrast)); p->drawEllipse(sliderRect.adjusted(1,1,-1,-1)); p->restore(); break; } //Titlebar //------------ case CC_TitleBar: { const QStyleOptionTitleBar *titleBarOpt = qstyleoption_cast(opt); if( !titleBarOpt ) { #ifdef NO_KDE QWindowsStyle::drawComplexControl(QStyle::CC_TitleBar, opt, p, widget); #else KStyle::drawComplexControl(QStyle::CC_TitleBar, opt, p, widget); #endif break; } p->save(); //TODO: use kwin settings renderGradient(p,r,pal.color(QPalette::Highlight).light(110+_contrast), pal.color(QPalette::Highlight).dark(110+_contrast)); //Dark border p->setPen(pal.color(QPalette::Highlight).dark(130+_contrast)); p->drawLine(r.x(), r.y(), r.x(), r.bottom()); p->drawLine(r.right(), r.y(), r.right(), r.bottom()); p->drawLine(r.x(), r.y(), r.right(), r.y()); //Light Border p->setPen(pal.color(QPalette::Highlight).light(130+_contrast)); p->drawLine(r.x()+1, r.y()+1, r.right()-2, r.y()+1); renderGradient(p,QRect(r.x()+1, r.y()+1, 1, r.height()-1), pal.color(QPalette::Highlight).light(130+_contrast), pal.color(QPalette::Highlight).light(110+_contrast)); renderGradient(p,QRect(r.right()-1, r.y()+1, 1, r.height()-1), pal.color(QPalette::Highlight).light(130+_contrast), pal.color(QPalette::Highlight).light(110+_contrast)); //Text QFont font(p->font()); font.setBold(true); font.setPixelSize((int)((double)r.height()/2)); p->setFont(font); QRect textRect(subControlRect(CC_TitleBar, titleBarOpt, SC_TitleBarLabel, widget)); //some calculations borrowed from qtcurve (c) Craig Drummond 2007 bool tooWide((QFontMetrics(font).width(titleBarOpt->text) > textRect.width())); QTextOption textOpt((tooWide ? Qt::AlignLeft : Qt::AlignHCenter) | Qt::AlignVCenter); textOpt.setWrapMode(QTextOption::NoWrap); if( _shadowedButtonsText ) { p->setPen(pal.color(QPalette::Highlight).dark(130+_contrast)); p->drawText(textRect.adjusted(1,1,1,1), titleBarOpt->text, textOpt); } p->setPen(pal.color(QPalette::HighlightedText)); p->drawText(textRect, titleBarOpt->text, textOpt); QPen indicatorsPen(pal.color(QPalette::HighlightedText), 2, Qt::SolidLine, Qt::RoundCap); //Min Button also this part is similar to qtcurve :) if( (titleBarOpt->subControls & SC_TitleBarMinButton) && (titleBarOpt->titleBarFlags & Qt::WindowMinimizeButtonHint) &&!(titleBarOpt->titleBarState& Qt::WindowMinimized)) { QRect bRect(subControlRect(CC_TitleBar, titleBarOpt, SC_TitleBarMinButton, widget)); if( bRect.isValid() ) { bool sunken((titleBarOpt->activeSubControls & SC_TitleBarMinButton) && (titleBarOpt->state & State_Sunken)); renderSurface(p,bRect.adjusted(1,1,-1,-1),pal.color(QPalette::Highlight), pal.color(QPalette::Highlight), pal.color(QPalette::HighlightedText), _contrast*2, defaultFlags|(sunken?Is_Sunken:0)); renderContour(p,bRect,pal.color(QPalette::Highlight), pal.color(QPalette::Highlight).dark(130+_contrast)); if( sunken ) bRect.adjust(1,1,1,1); p->setPen(indicatorsPen); p->setRenderHint(QPainter::Antialiasing); p->drawLine(bRect.center().x()-3, bRect.bottom()-4, bRect.center().x()+4, bRect.bottom()-4); p->setRenderHint(QPainter::Antialiasing, false); } } //Max Button if( (titleBarOpt->subControls & SC_TitleBarMaxButton) && (titleBarOpt->titleBarFlags & Qt::WindowMaximizeButtonHint) &&!(titleBarOpt->titleBarState & Qt::WindowMaximized)) { QRect bRect(subControlRect(CC_TitleBar, titleBarOpt, SC_TitleBarMaxButton, widget)); if( bRect.isValid() ) { bool sunken((titleBarOpt->activeSubControls & SC_TitleBarMaxButton) && (titleBarOpt->state & State_Sunken)); renderSurface(p,bRect.adjusted(1,1,-1,-1),pal.color(QPalette::Highlight), pal.color(QPalette::Highlight), pal.color(QPalette::HighlightedText), _contrast*2, defaultFlags|(sunken?Is_Sunken:0)); renderContour(p,bRect,pal.color(QPalette::Highlight), pal.color(QPalette::Highlight).dark(130+_contrast)); if( sunken ) bRect.adjust(1,1,1,1); p->setPen(indicatorsPen); p->setRenderHint(QPainter::Antialiasing); p->drawRect(bRect.center().x()-2, bRect.center().y()-2, 6, 6); p->setRenderHint(QPainter::Antialiasing, false); } } //Close Button if( (titleBarOpt->subControls & SC_TitleBarCloseButton) && (titleBarOpt->titleBarFlags & Qt::WindowSystemMenuHint)) { QRect bRect(subControlRect(CC_TitleBar, titleBarOpt, SC_TitleBarCloseButton, widget)); if( bRect.isValid() ) { bool sunken((titleBarOpt->activeSubControls & SC_TitleBarCloseButton) && (titleBarOpt->state & State_Sunken)); renderSurface(p,bRect.adjusted(1,1,-1,-1),pal.color(QPalette::Highlight), pal.color(QPalette::Highlight), pal.color(QPalette::HighlightedText), _contrast*2, defaultFlags|(sunken?Is_Sunken:0)); renderContour(p,bRect,pal.color(QPalette::Highlight), pal.color(QPalette::Highlight).dark(130+_contrast)); if( sunken ) bRect.adjust(1,1,1,1); p->setPen(indicatorsPen); p->setRenderHint(QPainter::Antialiasing); p->drawLine(bRect.center().x()-2, bRect.center().y()-2, bRect.center().x()+4, bRect.center().y()+4); p->drawLine(bRect.center().x()+4, bRect.center().y()-2, bRect.center().x()-2, bRect.center().y()+4); p->setRenderHint(QPainter::Antialiasing, false); } } //Normalize Button if( (titleBarOpt->subControls & SC_TitleBarNormalButton) && (((titleBarOpt->titleBarFlags & Qt::WindowMinimizeButtonHint) && (titleBarOpt->titleBarState & Qt::WindowMinimized)) || ((titleBarOpt->titleBarFlags & Qt::WindowMaximizeButtonHint) && (titleBarOpt->titleBarState & Qt::WindowMaximized))) ) { QRect bRect(subControlRect(CC_TitleBar, titleBarOpt, SC_TitleBarNormalButton, widget)); if( bRect.isValid() ) { bool sunken((titleBarOpt->activeSubControls & SC_TitleBarNormalButton) && (titleBarOpt->state & State_Sunken)); renderSurface(p,bRect.adjusted(1,1,-1,-1),pal.color(QPalette::Highlight), pal.color(QPalette::Highlight), pal.color(QPalette::HighlightedText), _contrast*2, defaultFlags|(sunken?Is_Sunken:0)); renderContour(p,bRect,pal.color(QPalette::Highlight), pal.color(QPalette::Highlight).dark(130+_contrast)); if( sunken ) bRect.adjust(1,1,1,1); p->setPen(indicatorsPen); p->setRenderHint(QPainter::Antialiasing); p->drawRect(bRect.center().x()-3, bRect.center().y(), 6, 6); p->drawRect(bRect.center().x(), bRect.center().y()-3, 6, 6); p->setRenderHint(QPainter::Antialiasing, false); } } //Context help Button if( titleBarOpt->subControls & SC_TitleBarContextHelpButton && (titleBarOpt->titleBarFlags & Qt::WindowContextHelpButtonHint) ) { QRect bRect(subControlRect(CC_TitleBar, titleBarOpt, SC_TitleBarContextHelpButton, widget)); if( bRect.isValid() ) { bool sunken((titleBarOpt->activeSubControls & SC_TitleBarContextHelpButton) && (titleBarOpt->state & State_Sunken)); renderSurface(p,bRect.adjusted(1,1,-1,-1),pal.color(QPalette::Highlight), pal.color(QPalette::Highlight), pal.color(QPalette::HighlightedText), _contrast*2, defaultFlags|(sunken?Is_Sunken:0)); renderContour(p,bRect,pal.color(QPalette::Highlight), pal.color(QPalette::Highlight).dark(130+_contrast)); if( sunken ) bRect.adjust(1,1,1,1); p->setPen(indicatorsPen); p->drawText(bRect, Qt::AlignCenter, "?"); } } //Shade Button if( titleBarOpt->subControls & SC_TitleBarShadeButton && (titleBarOpt->titleBarFlags & Qt::WindowShadeButtonHint) ) { QRect bRect(subControlRect(CC_TitleBar, titleBarOpt, SC_TitleBarShadeButton, widget)); if( bRect.isValid() ) { bool sunken((titleBarOpt->activeSubControls & SC_TitleBarShadeButton) && (titleBarOpt->state & State_Sunken)); renderSurface(p,bRect.adjusted(1,1,-1,-1),pal.color(QPalette::Highlight), pal.color(QPalette::Highlight), pal.color(QPalette::HighlightedText), _contrast*2, defaultFlags|(sunken?Is_Sunken:0)); renderContour(p,bRect,pal.color(QPalette::Highlight), pal.color(QPalette::Highlight).dark(130+_contrast)); if( sunken ) bRect.adjust(1,1,1,1); renderArrow(p, bRect, pal.color(QPalette::HighlightedText), Up); } } //Unshade Button if( titleBarOpt->subControls & SC_TitleBarUnshadeButton && (titleBarOpt->titleBarFlags & Qt::WindowShadeButtonHint) ) { QRect bRect(subControlRect(CC_TitleBar, titleBarOpt, SC_TitleBarUnshadeButton, widget)); if( bRect.isValid() ) { bool sunken((titleBarOpt->activeSubControls & SC_TitleBarUnshadeButton) && (titleBarOpt->state & State_Sunken)); renderSurface(p,bRect.adjusted(1,1,-1,-1),pal.color(QPalette::Highlight), pal.color(QPalette::Highlight), pal.color(QPalette::HighlightedText), _contrast*2, defaultFlags|(sunken?Is_Sunken:0)); renderContour(p,bRect,pal.color(QPalette::Highlight), pal.color(QPalette::Highlight).dark(130+_contrast)); if( sunken ) bRect.adjust(1,1,1,1); renderArrow(p, bRect, pal.color(QPalette::HighlightedText), Down); } } //System menu if( (titleBarOpt->subControls & SC_TitleBarSysMenu) && (titleBarOpt->titleBarFlags & Qt::WindowSystemMenuHint) ) { QRect bRect(subControlRect(CC_TitleBar, titleBarOpt, SC_TitleBarSysMenu, widget)); if( bRect.isValid() ) { bool sunken((titleBarOpt->activeSubControls & SC_TitleBarSysMenu) && (titleBarOpt->state & State_Sunken)); if( titleBarOpt->icon.isNull() ) { renderSurface(p,bRect.adjusted(1,1,-1,-1),pal.color(QPalette::Highlight), pal.color(QPalette::Highlight), pal.color(QPalette::HighlightedText), _contrast*2, defaultFlags|(sunken?Is_Sunken:0)); renderContour(p,bRect,pal.color(QPalette::Highlight), pal.color(QPalette::Highlight).dark(130+_contrast)); } else { if( sunken ) bRect.adjust(1,1,1,1); titleBarOpt->icon.paint(p, bRect); } } } p->restore(); break; } // SpinBox // ----------- case CC_SpinBox: { static const unsigned int handleWidth = 15; const QStyleOptionSpinBox *spinOpt = qstyleoption_cast(opt); if( !spinOpt ) break; QSpinBox *sw = (QSpinBox *)(widget);// **hack**: cast away const-ness for animation support! State sflags = flags; PrimitiveElement pe; bool upSunken = (spinOpt->activeSubControls & SC_SpinBoxUp) && (spinOpt->state & (State_Sunken | State_On)); bool downSunken = (spinOpt->activeSubControls & SC_SpinBoxDown) && (spinOpt->state & (State_Sunken | State_On)); bool hasFocus = false; if (sw) hasFocus = sw->hasFocus(); int animFrame = 0; if( _animateButton && animWidgets.contains( sw )){ animFrame = animWidgets[sw].animFrame; } const QColor buttonColor = enabled?pal.color(QPalette::Button).light(100+animFrame) :pal.color(QPalette::Background); const QColor inputColor = enabled?pal.color(QPalette::Base):pal.color(QPalette::Background); QColor highlightColor = pal.color(QPalette::Highlight); if( _animateButton ) { highlightColor.setAlpha(qRound(255*((double)animFrame/(double)ANIMATIONSTEPS))); } // contour const bool heightDividable = ((r.height()%2) == 0); if (_inputFocusHighlight && hasFocus && enabled) { QRect editField = subControlRect(CC_SpinBox, qstyleoption_cast(opt), SC_SpinBoxEditField, widget); QRect editFrame = r; QRect buttonFrame = r; uint editFlags = 0; uint buttonFlags = 0; // Hightlight only the part of the contour next to the control buttons if (reverseLayout) { // querySubControlMetrics doesn't work right for reverse Layout int dx = r.right() - editField.right(); editFrame.setLeft(editFrame.left() + dx); buttonFrame.setRight(editFrame.left() - 1); editFlags |= Draw_Right|Draw_Top|Draw_Bottom|Round_UpperRight|Round_BottomRight; buttonFlags |= Draw_Left|Draw_Top|Draw_Bottom|Round_UpperLeft|Round_BottomLeft; } else { editFrame.setRight(editField.right()); buttonFrame.setLeft(editField.right() + 1); editFlags |= Draw_Left|Draw_Top|Draw_Bottom|Round_UpperLeft|Round_BottomLeft; buttonFlags |= Draw_Right|Draw_Top|Draw_Bottom|Round_UpperRight|Round_BottomRight; } renderContour(p, editFrame, pal.color(QPalette::Background), pal.color(QPalette::Highlight), editFlags); renderContour(p, buttonFrame, pal.color(QPalette::Background), getColor(pal, ButtonContour, enabled), buttonFlags); } else { renderContour(p, subControlRect(CC_SpinBox, qstyleoption_cast(opt), SC_SpinBoxFrame, widget), pal.color(QPalette::Background), getColor(pal, ButtonContour, enabled) ); } p->setPen(alphaBlendColors(pal.color(QPalette::Background), getColor(pal, ButtonContour, enabled), 50) ); p->drawLine(reverseLayout?r.left()+1+handleWidth:r.right()-handleWidth-1, r.top()+1, reverseLayout?r.left()+1+handleWidth:r.right()-handleWidth-1, r.bottom()-1); p->drawLine(reverseLayout?r.left()+1:r.right()-handleWidth, r.top()+1+(r.height()-2)/2, reverseLayout?r.left()+handleWidth:r.right()-1, r.top()+1+(r.height()-2)/2); //commented out because I always prefer that only one line is drawn /*if(heightDividable) p->drawLine(reverseLayout?r.left()+1:r.right()-handleWidth, r.top()+1+(r.height()-2)/2-1, reverseLayout?r.left()+handleWidth:r.right()-1, r.top()+1+(r.height()-2)/2-1);*/ // surface QRect upRect = QRect(reverseLayout?r.left()+1:r.right()-handleWidth, r.top()+1, handleWidth, (r.height()-2)/2); QRect downRect = QRect(reverseLayout?r.left()+1:r.right()-handleWidth, heightDividable?r.top()+1+((r.height()-2)/2):r.top()+1+((r.height()-2)/2)+1, handleWidth, ((r.height()-2)/2) ); if(heightDividable) { //upRect = QRect(upRect.left(), upRect.top(), upRect.width(), upRect.height()-1 ); downRect = QRect(downRect.left(), downRect.top()+1, downRect.width(), downRect.height()-1 ); } uint surfaceFlags = Draw_Left|Draw_Right|Draw_Top|Draw_Bottom|Is_Horizontal; if(reverseLayout) { surfaceFlags |= Round_UpperLeft; } else { surfaceFlags |= Round_UpperRight; } if ( (animFrame != 0) || (sflags & State_MouseOver)) { surfaceFlags |= Is_Highlight; surfaceFlags |= Highlight_Top|Highlight_Left|Highlight_Right; } if( upSunken ) surfaceFlags|=Is_Sunken; if(!enabled) surfaceFlags|=Is_Disabled; renderSurface(p, upRect, pal.color(QPalette::Background), buttonColor, highlightColor, _contrast, surfaceFlags); surfaceFlags = Draw_Left|Draw_Right|Draw_Top|Draw_Bottom|Is_Horizontal; if(reverseLayout) { surfaceFlags |= Round_BottomLeft; } else { surfaceFlags |= Round_BottomRight; } if ( (animFrame != 0) || (sflags & State_MouseOver)) { surfaceFlags |= Is_Highlight; surfaceFlags |= Highlight_Bottom|Highlight_Left|Highlight_Right; } if( downSunken ) surfaceFlags|=Is_Sunken; if(!enabled) surfaceFlags|=Is_Disabled; renderSurface(p, downRect, pal.color(QPalette::Background), buttonColor, highlightColor, _contrast, surfaceFlags); // icons... sflags = State_Enabled; if (upSunken) { sflags |= State_On; sflags |= State_Sunken; } else sflags |= State_Raised; if (sw->buttonSymbols() == QSpinBox::PlusMinus) pe = PE_IndicatorSpinPlus; else pe = PE_IndicatorSpinUp; p->setPen(pal.color(QPalette::Foreground)); QStyleOption upOpt; upOpt.QStyleOption::operator=(*opt); upOpt.rect = upRect; drawPrimitive(pe, &upOpt, p, widget); sflags = State_Enabled; if( downSunken ) { sflags |= State_On; sflags |= State_Sunken; } else sflags |= State_Raised; if (sw->buttonSymbols() == QSpinBox::PlusMinus) pe = PE_IndicatorSpinMinus; else pe = PE_IndicatorSpinDown; p->setPen(pal.color(QPalette::Foreground)); QStyleOption downOpt; downOpt.QStyleOption::operator=(*opt); downOpt.rect = downRect; drawPrimitive(pe, &downOpt, p, widget); // thin frame around the input area const QRect Rcontent = QRect(reverseLayout?r.left()+1+handleWidth+1:r.left()+1, r.top()+1, r.width()-1-2-handleWidth, r.height()-2); //text input surface QRect filledRect = Rcontent.adjusted(1, 1, -1, -1); p->fillRect(filledRect, pal.color(QPalette::Base) ); //shadows or border if( _sunkenShadows ) { renderSunkenShadow(p, Rcontent, (_inputFocusHighlight && hasFocus && enabled) ?getColor(pal,FocusHighlight):Qt::black, Draw_Top|Draw_Bottom|Draw_Left|Draw_Right| (reverseLayout?Sharp_UpperLeft|Sharp_BottomLeft :Sharp_UpperRight|Sharp_BottomRight)); } else { if (_inputFocusHighlight && hasFocus && enabled) { p->setPen( getColor(pal,FocusHighlight).dark(100+(_lightBorder?-30:30)) ); } else { p->setPen(inputColor.dark(100+(_lightBorder?-30:30)) ); } p->drawLine(Rcontent.left(), reverseLayout?Rcontent.top():Rcontent.top()+1, Rcontent.left(), reverseLayout?Rcontent.bottom():Rcontent.bottom()-1 ); p->drawLine(Rcontent.left()+1, Rcontent.top(), reverseLayout?Rcontent.right()-1:Rcontent.right(), Rcontent.top() ); if (_inputFocusHighlight && hasFocus && enabled) { p->setPen( getColor(pal,FocusHighlight).light(130) ); } else { p->setPen(inputColor.light(130) ); } p->drawLine(Rcontent.left()+1, Rcontent.bottom(), Rcontent.right()-1, Rcontent.bottom() ); p->drawLine(Rcontent.right(), Rcontent.top()+1, Rcontent.right(), reverseLayout?Rcontent.bottom()-1:Rcontent.bottom() ); } break; } default: #ifdef NO_KDE QWindowsStyle::drawComplexControl(control, opt, p, widget); #else KStyle::drawComplexControl(control, opt, p, widget); #endif break; } } QRect PolyesterStyle::subElementRect(SubElement se, const QStyleOption *option, const QWidget *widget) const { switch (se) { /*case SE_ComboBoxFocusRect: { return querySubControlMetrics( CC_ComboBox, widget, SC_ComboBoxEditField ); }*/ // Don't use QWindowsStyles progressbar subrect // TODO: case SE_ProgressBarGroove: { return QRect(option->rect); } case SE_ProgressBarContents: case SE_ProgressBarLabel: { QRect rw = option->rect; if( _sunkenShadows ) return rw; else return QRect(rw.left()+2, rw.top()+2, rw.width()-4, rw.height()-4 ); } /*case SE_PushButtonContents: return widget->rect().adjusted(3,3,-3,-3);*/ default: { #ifdef NO_KDE return QWindowsStyle::subElementRect(se, option, widget); #else return KStyle::subElementRect(se, option, widget); #endif } } } QRect PolyesterStyle::subControlRect(ComplexControl control, const QStyleOptionComplex *opt, SubControl subcontrol, const QWidget *widget) const { QRect r = opt->rect; QRect rect; int x, y, w, h, x2, y2; r.getRect(&x, &y, &w, &h); x2 = r.right(); y2 = r.bottom(); switch (control) { //Scrollbar, more or less ripped off from Phase (c)2007 David Johnson case CC_ScrollBar: { // three button scrollbar const QStyleOptionSlider *sbOpt; sbOpt = qstyleoption_cast(opt); if (!sbOpt) break; bool horizontal = (sbOpt->orientation == Qt::Horizontal); int extent = pixelMetric(PM_ScrollBarExtent, sbOpt, widget); int slidermax = ((horizontal) ? r.width() : r.height()) - (extent * 3); int slidermin = pixelMetric(PM_ScrollBarSliderMin, sbOpt, widget); int sliderlen, sliderstart; if( _scrollBarType == NoButtonsScrollBar ) slidermax += 3*extent; else if( _scrollBarType != ThreeButtonScrollBar ) slidermax += extent; // calculate slider length if (sbOpt->maximum != sbOpt->minimum) { int range = sbOpt->maximum - sbOpt->minimum; sliderlen = (int)((double)(sbOpt->pageStep * slidermax) / (double)(range + sbOpt->pageStep)); if ((sliderlen < slidermin) || (range > INT_MAX / 2)) sliderlen = slidermin; if (sliderlen > slidermax) sliderlen = slidermax; } else { sliderlen = slidermax; } sliderstart = extent + sliderPositionFromValue(sbOpt->minimum, sbOpt->maximum, sbOpt->sliderPosition, slidermax - sliderlen, sbOpt->upsideDown); if( _scrollBarType == PlatinumStyleScrollBar || _scrollBarType == NoButtonsScrollBar ) sliderstart -= extent; else if( _scrollBarType == NextStyleScrollBar ) sliderstart += extent; switch (subcontrol) { case SC_ScrollBarAddLine: { if( _scrollBarType != NextStyleScrollBar && _scrollBarType != NoButtonsScrollBar ) { if( horizontal ) rect.setRect(x2 - extent + 1, y, extent, extent); else rect.setRect(x, y2 - extent + 1, extent, extent); } else if( _scrollBarType == NextStyleScrollBar ) { if( horizontal ) rect.setRect(x + extent /*+ 1*/, y, extent, extent); else rect.setRect(x, y + extent /*+ 1*/, extent, extent); } else //NoButtonsScrollBar rect.setRect(0,0,0,0); break; } case SC_ScrollBarSubLine: { if( _scrollBarType == ThreeButtonScrollBar ) { // rect that covers *both* subline buttons if( horizontal ) rect.setRect(x, y, w - extent + 1, extent); else rect.setRect(x, y, extent, h - extent + 1); } else if( _scrollBarType == WindowsStyleScrollBar || _scrollBarType == NextStyleScrollBar ) { rect.setRect(x, y, extent, extent); } else if( _scrollBarType == PlatinumStyleScrollBar ) { if( horizontal ) rect.setRect(x2-2*extent+2, y, extent, extent); else rect.setRect(x, y2-2*extent+2, extent, extent); } else //NoButtonsScrollBar { rect.setRect(0,0,0,0); } break; } case SC_ScrollBarAddPage: { if( _scrollBarType == ThreeButtonScrollBar) { //3 buttons,platinum and windows the slider must not overwrite this sliderlen+=2; if (horizontal) rect.setRect(sliderstart + sliderlen, y, slidermax - sliderstart - sliderlen + extent + 1, extent); else rect.setRect(x, sliderstart + sliderlen, extent, slidermax - sliderstart - sliderlen + extent + 1); } else if( _scrollBarType == WindowsStyleScrollBar ) { sliderlen+=2; if (horizontal) rect.setRect(sliderstart + sliderlen, y, slidermax - sliderstart - sliderlen + extent, extent); else rect.setRect(x, sliderstart + sliderlen, extent, slidermax - sliderstart - sliderlen + extent); } else if( _scrollBarType == PlatinumStyleScrollBar ) { sliderlen+=2; if (horizontal) rect.setRect(sliderstart + sliderlen, y, slidermax - sliderstart - sliderlen + 1, extent); else rect.setRect(x, sliderstart + sliderlen, extent, slidermax - sliderstart - sliderlen + 1); } else if( _scrollBarType == NextStyleScrollBar ) { if (horizontal) rect.setRect(sliderstart + sliderlen, y, slidermax - sliderstart - sliderlen + 2*extent, extent); else rect.setRect(x, sliderstart + sliderlen, extent, slidermax - sliderstart - sliderlen + 2*extent); } //NoButtonsScrollBar else { if (horizontal) rect.setRect(sliderstart + sliderlen, y, slidermax - sliderstart - sliderlen, extent); else rect.setRect(x, sliderstart + sliderlen, extent, slidermax - sliderstart - sliderlen); } break; } case SC_ScrollBarSubPage: { if( _scrollBarType == ThreeButtonScrollBar || _scrollBarType == WindowsStyleScrollBar ) { //3 buttons,next and windows the slider must not overwrite this sliderstart-=1; if( horizontal ) rect.setRect(x + extent, y, sliderstart - (x + extent), extent); else rect.setRect(x, y + extent, extent, sliderstart - (x + extent)); } else if( _scrollBarType == PlatinumStyleScrollBar || _scrollBarType == NoButtonsScrollBar) { //platinum and nobuttons the slider must overwrite this sliderstart+=1; if( horizontal ) rect.setRect(x, y, sliderstart - x, extent); else rect.setRect(x, y, extent, sliderstart - x); } //NextStyleScrollBar else //if( _scrollBarType == NextStyleScrollBar ) { //3 buttons,next and windows the slider must not overwrite this sliderstart-=1; if( horizontal ) rect.setRect(x + 2*extent, y, sliderstart - (x + 2*extent), extent); else rect.setRect(x, y + 2*extent, extent, sliderstart - (x + 2*extent)); } break; } case SC_ScrollBarSlider: { if( horizontal ) rect.setRect(qMax(sliderstart - 1,r.x()), y, qMin(sliderlen + 2 + 1, r.width()-sliderstart+1), extent); else rect.setRect(x, qMax(sliderstart - 1, r.y()), extent, qMin(sliderlen + 2 + 1, r.height()-sliderstart+1)); break; } case SC_ScrollBarGroove: if (horizontal) { rect = r.adjusted(extent, 0, -(extent*2), 0); } else { rect = r.adjusted(0, extent, 0, -(extent*2)); } break; default: break; } rect = visualRect(sbOpt->direction, r, rect); break; } case CC_ToolButton: { #ifdef NO_KDE rect = QWindowsStyle::subControlRect(control, opt, subcontrol, widget); #else rect = KStyle::subControlRect(control, opt, subcontrol, widget); #endif if( subcontrol == SC_ToolButtonMenu ) rect.adjust(-2,0,-2,0); else if( subcontrol == SC_ToolButton ) rect.adjust(0,0,-2,0); break; } default: #ifdef NO_KDE rect = QWindowsStyle::subControlRect(control, opt, subcontrol, widget); #else rect = KStyle::subControlRect(control, opt, subcontrol, widget); #endif } return rect; } QStyle::SubControl PolyesterStyle::hitTestComplexControl(ComplexControl control, const QStyleOptionComplex *option, const QPoint &position, const QWidget *widget) const { SubControl subcontrol = SC_None; QRect rect; switch(control) { case CC_ScrollBar: { const QStyleOptionSlider *sb; sb = qstyleoption_cast(option); if (!sb) break; // these cases are order dependent rect = subControlRect(control, sb, SC_ScrollBarSlider, widget); if (rect.contains(position)) { subcontrol = SC_ScrollBarSlider; break; } rect = subControlRect(control, sb, SC_ScrollBarAddPage, widget); if (rect.contains(position)) { subcontrol = SC_ScrollBarAddPage; break; } rect = subControlRect(control, sb, SC_ScrollBarSubPage, widget); if (rect.contains(position)) { subcontrol = SC_ScrollBarSubPage; break; } rect = subControlRect(control, sb, SC_ScrollBarAddLine, widget); if (rect.contains(position)) { subcontrol = SC_ScrollBarAddLine; break; } rect = subControlRect(control, sb, SC_ScrollBarSubLine, widget); if (rect.contains(position)) { subcontrol = SC_ScrollBarSubLine; break; } break; } default: #ifdef NO_KDE subcontrol = QWindowsStyle::hitTestComplexControl(control, option, position, widget); #else subcontrol = KStyle::hitTestComplexControl(control, option, position, widget); #endif break; } return subcontrol; } #if 0 QRect PolyesterStyle::querySubControlMetrics(ComplexControl control, const QWidget *widget, SubControl subcontrol, const QStyleOption &opt) const { if (!widget) { return QRect(); } QRect r(widget->rect()); switch (control) { case CC_ComboBox: { switch (subcontrol) { case SC_ComboBoxEditField: { // TODO: is the handler width in pixelmetric? return QRect(r.left()+2, r.top()+2, r.width()-4-15-1, r.height()-4); } default: { return QWindowsStyle::querySubControlMetrics(control, widget, subcontrol, opt); } } break; } case CC_SpinBox: { const int fw = 2; // Frame width... const bool heightDividable = ((r.height()%2) == 0); QSize bs; if(heightDividable) { bs.setHeight(qMax(8, (r.height()-2)/2)); } else { bs.setHeight(qMax(8, (r.height()-2-1)/2)); } bs.setWidth(15); const int buttonsLeft = /*reverseLayout?r.left()+1:*/r.right()-bs.width(); switch (subcontrol) { case SC_SpinBoxUp: { return QRect(buttonsLeft, r.top()+1, bs.width(), bs.height() ); } case SC_SpinBoxDown: { if(heightDividable) { return QRect(buttonsLeft, r.top()+1+bs.height(), bs.width(), r.height()-(bs.height()+2) ); } else { return QRect(buttonsLeft, r.top()+1+bs.height()+1, bs.width(), r.height()-(bs.height()+2+1) ); } } case SC_SpinBoxFrame: { return QRect(r.left(), r.top(), r.width(), r.height() ); } case SC_SpinBoxEditField: { return QRect(r.left()+fw, r.top()+fw, r.width()-(bs.width()+1+2*fw), r.height()-2*fw); } case SC_SpinBoxButtonField: { return QRect(buttonsLeft, r.top()+1, bs.width(), r.height()-2); } default: { return QWindowsStyle::querySubControlMetrics(control, widget, subcontrol, opt); } } break; } default: { return QWindowsStyle::querySubControlMetrics(control, widget, subcontrol, opt); } } } #endif QIcon PolyesterStyle::standardIconImplementation ( StandardPixmap standardIcon, const QStyleOption *option, const QWidget *widget ) const { //Mostly from Oxygen // get button color (unfortunately option and widget might not be set) QColor iconColor; if (option) iconColor = option->palette.buttonText().color(); else if (widget) iconColor = widget->palette().buttonText().color(); else // black iconColor = Qt::black; switch (standardIcon) { case SP_TitleBarNormalButton: { QPixmap realpm(dockWidgetButtonSize, dockWidgetButtonSize); realpm.fill(QColor(0,0,0,0)); QPainter painter(&realpm); painter.setRenderHints(QPainter::Antialiasing); painter.setBrush(Qt::NoBrush); painter.setPen(QPen(iconColor,1.0)); painter.drawRect( QRectF(QPointF(4.5,3.5), QSizeF(5.0,5.0)) ); return QIcon(realpm); } case SP_TitleBarCloseButton: case SP_DockWidgetCloseButton: { QPixmap realpm(dockWidgetButtonSize, dockWidgetButtonSize); realpm.fill(QColor(0,0,0,0)); QPainter painter(&realpm); painter.setRenderHints(QPainter::Antialiasing); painter.setBrush(Qt::NoBrush); painter.setPen(QPen(iconColor,1.0)); painter.drawLine( QPointF(4.5,3.5), QPointF(9.5,8.5) ); painter.drawLine( QPointF(9.5,3.5), QPointF(4.5,8.5) ); return QIcon(realpm); } default: break; } #ifdef NO_KDE return QWindowsStyle::standardPixmap(standardIcon, option, widget); #else return KStyle::standardPixmap(standardIcon, option, widget); #endif } int PolyesterStyle::pixelMetric(PixelMetric m, const QStyleOption *opt, const QWidget *widget) const { int ex = qMax(QApplication::fontMetrics().xHeight(), 15); switch(m) { // TABS // ---- /*case PM_TabBarTabVSpace: { const QTabBar * tb = (const QTabBar *) widget; if (tb->shape() == QTabBar::RoundedNorth || tb->shape() == QTabBar::RoundedSouth || tb->shape() == QTabBar::RoundedEast || tb->shape() == QTabBar::RoundedWest) return 12; else return 4; }*/ case PM_TabBarTabOverlap: { return 2; } case PM_DefaultLayoutSpacing: { return 4; // qcommon is 6 } case PM_DefaultChildMargin: return 4; // qcommon is 9; case PM_DefaultTopLevelMargin: return 11; // extra space between menubar items #ifdef NO_KDE case PM_MenuBarItemSpacing: { return 5; } #endif case PM_MenuBarVMargin:{ if( _menuBarEmphasis ) return 2; else return 0; } case PM_MenuBarHMargin:{ if( _menuBarEmphasis ) return 2; else return 0; } // #if (QT_VERSION >= 0x030300) // requires Qt 3.3 // // extra space between toolbar items // case PM_ToolBarItemSpacing: { // return 4; // } // #endif // SCROLL BAR case PM_ScrollBarSliderMin: { return 21; } case PM_ScrollBarExtent: { return _scrollBarExtent; } // SPLITTERS // --------- case PM_SplitterWidth: { return 6; } // PROGRESSBARS // ------------ case PM_ProgressBarChunkWidth: return 10; // SLIDER // ------ case PM_SliderLength: return 11; // MENU INDICATOR // -------------- case PM_MenuButtonIndicator: return 8; // CHECKBOXES / RADIO BUTTONS // -------------------------- case PM_ExclusiveIndicatorWidth: // Radiobutton size case PM_ExclusiveIndicatorHeight: // 13x13 case PM_IndicatorWidth: // Checkbox size case PM_IndicatorHeight: // 13x13 //return 13; return ex & 0xfffe; // FRAMES // ------ case PM_SpinBoxFrameWidth: return 2; case PM_MenuBarPanelWidth: { if( _drawToolBarSeparator) return 1; else return 0; } case PM_DefaultFrameWidth: { if( const QAbstractScrollArea *area = ::qobject_cast(widget)) { if( area->frameShape() == QFrame::StyledPanel ) { return 1; } } return 2; } case PM_ButtonDefaultIndicator: { return 1; } case PM_MenuPanelWidth: //menu framewidth return 1; case PM_TitleBarHeight: return qMax((int)(1.5*(double)QApplication::fontMetrics().lineSpacing()), 24); case PM_DockWidgetTitleMargin: return 2; case PM_DockWidgetFrameWidth: return 3; default: #ifdef NO_KDE return QWindowsStyle::pixelMetric(m, opt, widget); #else return KStyle::pixelMetric(m, opt, widget); #endif } } QSize PolyesterStyle::sizeFromContents(ContentsType type, const QStyleOption* option, const QSize& contentsSize, const QWidget* widget) const { switch(type) { //from Oxygen case CT_ToolButton: { // We want to avoid super-skiny buttons, for things like "up" when icons + text // For this, we would like to make width >= height. // However, once we get here, QToolButton may have already put in the menu area // (PM_MenuButtonIndicator) into the width. So we may have to take it out, fix things // up, and add it back in. So much for class-independent rendering... QSize size = contentsSize; if (const QStyleOptionToolButton* tbOpt = qstyleoption_cast(option)) { if ((!tbOpt->icon.isNull()) && (!tbOpt->text.isEmpty()) && tbOpt->toolButtonStyle == Qt::ToolButtonTextUnderIcon) size.setHeight(size.height()-9); } break; } //for some items only add a fixed margin case CT_MenuItem: case CT_ComboBox: //case CT_MenuBarItem: { QSize size = contentsSize; size.setHeight(size.height()+4); size.setWidth(size.width()+4); break; } case CT_PushButton: { QSize size = contentsSize; size.setWidth(size.width()+16); break; } default: break; } #if NO_KDE return QWindowsStyle::sizeFromContents(type, option, contentsSize, widget); #else return KStyle::sizeFromContents(type, option, contentsSize, widget); #endif } /* int PolyesterStyle::kPixelMetric(QWindowsStylePixelMetric kpm, const QWidget *widget) const { switch(kpm) { case KPM_MenuItemSeparatorHeight: return 2; default: return QWindowsStyle::kPixelMetric(kpm, widget); } } QSize PolyesterStyle::sizeFromContents(ContentsType t, const QWidget *widget, const QSize &s, const QStyleOption &opt) const { switch (t) { case CT_PopupMenuItem: { if (!widget || opt.isDefault()) return s; const QPopupMenu *popup = dynamic_cast(widget); QMenuItem *mi = opt.menuItem(); int maxpmw = opt.maxIconWidth(); int w = s.width(), h = s.height(); bool checkable = popup->isCheckable(); if (mi->custom()) { w = mi->custom()->sizeHint().width(); h = mi->custom()->sizeHint().height(); if (!mi->custom()->fullSpan() ) h += 4; } else if (mi->widget()) { // don't change the size in this case. } else if (mi->isSeparator()) { w = 20; h = 3; } else { if (mi->pixmap()) { h = qMax(h, mi->pixmap()->height() + 2); } else { h = qMax(h, 16 + 2 ); h = qMax(h, popup->fontMetrics().height() + _menuItemSpacing ); } if (mi->iconSet()) { h = qMax(h, mi->iconSet()->pixmap(QIconSet::Small, QIconSet::Normal).height() + 2); } } if (!mi->text().isNull() && (mi->text().find('\t') >= 0)) { w += itemHMargin + itemFrame*2 + 7; } else if (mi->popup()) { w += 2 * arrowHMargin; } if (maxpmw) { w += maxpmw + 6; } if (checkable && maxpmw < 20) { w += 20 - maxpmw; } if (checkable || maxpmw > 0) { w += 12; } w += rightBorder; return QSize(w, h); } case CT_PushButton: { const QPushButton* btn = static_cast(widget); int w = s.width() + 2 * pixelMetric(PM_ButtonMargin, widget); int h = s.height() + 2 * pixelMetric(PM_ButtonMargin, widget); if ( btn->text().isEmpty() && s.width() < 32 ) return QSize(w, h); return QSize( w+25, h+5 ); } case CT_ToolButton: { if(widget->parent() && ::qobject_cast(widget->parent()) ) return QSize( s.width()+2*4, s.height()+2*4 ); else return QWindowsStyle::sizeFromContents (t, widget, s, opt); } default: return QWindowsStyle::sizeFromContents (t, widget, s, opt); } return QWindowsStyle::sizeFromContents (t, widget, s, opt); } */ int PolyesterStyle::styleHint(StyleHint stylehint, const QStyleOption * option, const QWidget * widget, QStyleHintReturn * returnData) const { switch (stylehint) { case SH_Menu_SubMenuPopupDelay: return 96; // Motif-like delay... case QStyle::SH_TabBar_Alignment: { if( _centeredTabBar ) return Qt::AlignCenter; else return Qt::AlignLeft; } case SH_ItemView_ShowDecorationSelected: #ifdef NO_KDE return true; #else return false; #endif case SH_TitleBar_NoBorder: return 1; case SH_DialogButtonLayout: return QDialogButtonBox::KdeLayout; //Suggestion by Daniel Molkentin, //algorithm from QT4 QWindowsXPStyle Copyright 2006 Trolltech case SH_LineEdit_PasswordCharacter: { if (widget) { const QFontMetrics &fm = widget->fontMetrics(); if (fm.inFont(QChar(0x25CF))) { return 0x25CF; } else if (fm.inFont(QChar(0x2022))) { return 0x2022; } } else { return '*'; } } case SH_ScrollView_FrameOnlyAroundContents: return false; case SH_MessageBox_CenterButtons: return true; default: #ifdef NO_KDE return QWindowsStyle::styleHint(stylehint, option, widget, returnData); #else return KStyle::styleHint(stylehint, option, widget, returnData); #endif } } bool PolyesterStyle::eventFilter(QObject *obj, QEvent *ev) { /*if (QWindowsStyle::eventFilter(obj, ev) ) return true;*/ if (!obj->isWidgetType() ) return false; //mostly from skandale (c)Christoph Feck QAbstractScrollArea *area; if( /*_sunkenShadows &&*/ ev->type() == QEvent::Paint && (area = qobject_cast(obj)) ) { int width = area->frameRect().width();//area->viewport()->rect().right()+3; int height = area->frameRect().height(); bool sunken = ( area->frameStyle() == (QFrame::StyledPanel | QFrame::Sunken) ); bool styled = ( area->frameShape() == QFrame::StyledPanel ); QList borders = area->children(); foreach (QObject *child, borders) { if(ScrollAreaBorder *border = qobject_cast(child)) { switch( border->orientation() ) { case ScrollAreaBorder::Left: border->setGeometry(1, 1, 3, height-2); break; case ScrollAreaBorder::Top: border->setGeometry(1, 1, width-2, (_sunkenShadows&&sunken?5:1) ); break; case ScrollAreaBorder::Right: border->setGeometry(width - 4, 1, 3, height-2); break; case ScrollAreaBorder::Bottom: border->setGeometry(1, height - (_sunkenShadows&&sunken?5:2), width-2, (_sunkenShadows&&sunken?4:1)); break; } } } return false; } else if( _sunkenShadows && (ev->type() == QEvent::FocusIn || ev->type() == QEvent::FocusOut) && (area = qobject_cast(obj)) ) { //repaint scrollbars for that one evil pixel on collapsed scrollbars if( area->verticalScrollBar() ) area->verticalScrollBar()->repaint(); if( area->horizontalScrollBar() ) area->horizontalScrollBar()->repaint(); QList borders = area->children(); foreach (QObject *child, borders) { if(ScrollAreaBorder *border = qobject_cast(child)) border->repaint(); } } //mostly from bespin... if( QFrame *frame = qobject_cast(obj) ) { if( ev->type() == QEvent::Paint && (frame->frameShape() == QFrame::HLine || frame->frameShape() == QFrame::VLine) ) { QRect r(frame->rect()); QPainter p(frame); QBrush brush = _lightBorder?frame->palette().color(QPalette::Background).dark(100+_contrast*4) :getColor(frame->palette(),PanelDark); //for some strange reasons VLine and HLine seems to be swapped... if( frame->frameShape() == QFrame::VLine ) { p.fillRect(QRect(r.top(), r.left(), 1, r.height()), brush); if( !_lightBorder ) p.fillRect(QRect(r.top()+1, r.left(), 1, r.height()), getColor(frame->palette(),PanelLight)); } else { p.fillRect(QRect(r.top(), r.left(), r.width(), 1), brush); if( !_lightBorder ) p.fillRect(QRect(r.top(), r.left()+1, r.width(), 1), getColor(frame->palette(),PanelLight)); } p.end(); return true; } } if( ::qobject_cast(obj) ) { QWidget* widget = static_cast(obj); if((ev->type() == QEvent::Leave || ev->type() == QEvent::HoverMove) && widget->isEnabled()) //widget->repaint(); //FIXME: This is butt-ugly, isn't it? QTimer::singleShot ( 20, widget, SLOT(repaint()) ); } //header mouse over if ( ::qobject_cast(obj) ) { QWidget* widget = static_cast(obj); if((ev->type() == QEvent::Leave) && widget->isEnabled()) { widget->repaint(); } /*else if ((ev->type() == QEvent::MouseMove) && static_cast(obj)->isEnabled()) { QMouseEvent * mEvent = ( QMouseEvent * ) ev; QHeaderView* header = static_cast(widget); }*/ } /*Scrollbar Mouse over*/ if ( ::qobject_cast(obj) ) { QWidget* widget = static_cast(obj); if ((ev->type() == QEvent::Enter) && static_cast(obj)->isEnabled()) { widget->repaint(); } else if ((ev->type() == QEvent::Leave) && static_cast(obj)->isEnabled()) { widget->repaint(); } } // focus highlight if ( ::qobject_cast(obj) ) { QWidget* widget = static_cast(obj); if ( ::qobject_cast(widget->parentWidget()) ) { QWidget* spinbox = widget->parentWidget(); if ((ev->type() == QEvent::FocusIn) || (ev->type() == QEvent::FocusOut)) { spinbox->repaint(); } return false; } if ((ev->type() == QEvent::FocusIn) || (ev->type() == QEvent::FocusOut)) { widget->repaint(); } return false; } //Hover highlight... use qobject_cast to check if the widget inheits one of the classes. if ( ::qobject_cast(obj) || ::qobject_cast(obj) || ::qobject_cast(obj) || ::qobject_cast(obj) || ::qobject_cast(obj) || ::qobject_cast(obj) || obj->inherits("QSplitterHandle") ) { if ((ev->type() == QEvent::Enter) && static_cast(obj)->isEnabled()) { QWidget* button = static_cast(obj); //only animate widgets that support animation :-) if(_animateButton && !::qobject_cast(obj) && !::qobject_cast(obj)){ animWidgets[button].active = true; // if timer isn't running, start it now for glow-in animation. if( !btnAnimTimer->isActive() ) btnAnimTimer->start( TIMERINTERVAL ); } button->repaint(); } else if ((ev->type() == QEvent::Leave) ) { QWidget* button = static_cast(obj); //only animate widgets that support animation :-) if(_animateButton && !::qobject_cast(obj) && !::qobject_cast(obj)){ animWidgets[button].active = false; // if timer isn't running, start it now for glow-out animation. if( !btnAnimTimer->isActive() ) btnAnimTimer->start( TIMERINTERVAL ); } button->repaint(); } return false; } // Track show events for progress bars if ( QProgressBar* pb = ::qobject_cast(obj) ) { if( !animationTimer->isActive() ) { if( pb->minimum() == 0 && pb->maximum() == 0) animationTimer->start( 25 ); else if( _animateProgressBar ) animationTimer->start( 50 ); } //return false; FIXME: it is needed? } #ifdef NO_KDE return QWindowsStyle::eventFilter(obj, ev); #else return KStyle::eventFilter(obj, ev); #endif } QColor PolyesterStyle::getColor(const QPalette &pal, const ColorType t, const bool enabled)const { return getColor(pal, t, enabled?IsEnabled:IsDisabled); } QColor PolyesterStyle::getColor(const QPalette &pal, const ColorType t, const WidgetState s)const { const bool enabled = (s != IsDisabled) && ((s == IsEnabled) || (s == IsPressed) || (s == IsHighlighted)); const bool pressed = (s == IsPressed); const bool highlighted = (s == IsHighlighted); switch(t) { case ButtonContour: return enabled ? pal.color(QPalette::Button).dark(130+_contrast*6) : pal.color(QPalette::Background).dark(120+_contrast*6); case DragButtonContour: { if(enabled) { if(pressed) return _coloredScrollBar?pal.color(QPalette::Highlight).dark(130+_contrast*5) :pal.color(QPalette::Background).dark(130+_contrast*5); // bright else if(highlighted) return _coloredScrollBar?pal.color(QPalette::Highlight).dark(130+_contrast*9) :pal.color(QPalette::Background).dark(130+_contrast*9); // dark else return _coloredScrollBar?pal.color(QPalette::Highlight).dark(130+_contrast*6) :pal.color(QPalette::Background).dark(130+_contrast*6); // normal } else { return pal.color(QPalette::Background).dark(120+_contrast*8); } } case DragButtonSurface: { if(enabled) { if(pressed) return _coloredScrollBar?pal.color(QPalette::Highlight).dark(100-_contrast):pal.color(QPalette::Button).dark(100-_contrast); // bright else if(highlighted) return _coloredScrollBar?pal.color(QPalette::Highlight).light(100+_contrast):pal.color(QPalette::Button).light(100+_contrast); // dark else return _coloredScrollBar?pal.color(QPalette::Highlight):pal.color(QPalette::Button); // normal } else { return pal.color(QPalette::Background); } } case PanelContour: return pal.color(QPalette::Background).dark(130+_contrast*6); case PanelDark: if( !_lightBorder ) return alphaBlendColors(pal.color(QPalette::Background), pal.color(QPalette::Background).dark(120+_contrast*5), 110); else return alphaBlendColors(pal.color(QPalette::Background), pal.color(QPalette::Background).light(120+_contrast*5), 110); case PanelDark2: if( !_lightBorder ) return alphaBlendColors(pal.color(QPalette::Background), pal.color(QPalette::Background).dark(110+_contrast*5), 110); else return alphaBlendColors(pal.color(QPalette::Background), pal.color(QPalette::Background).light(110+_contrast*5), 110); case PanelLight: return alphaBlendColors(pal.color(QPalette::Background), pal.color(QPalette::Background).light(120+_contrast*5), 110); case PanelLight2: return alphaBlendColors(pal.color(QPalette::Background), pal.color(QPalette::Background).light(110+_contrast*5), 110); case MouseOverHighlight: if( _customOverHighlightColor ) return _overHighlightColor; else return pal.color(QPalette::Highlight); case FocusHighlight: if( _customFocusHighlightColor ) return _focusHighlightColor; else return pal.color(QPalette::Highlight); case CheckMark: if( _customCheckMarkColor ) return _checkMarkColor; else return pal.color(QPalette::Foreground); case MenuBarEmphasis: if( _customMenuBarEmphasisColor ) return _menuBarEmphasisColor; else return pal.color(QPalette::Background); default: return pal.color(QPalette::Background); } } ////////////////////////////////////////////////////////////////////////////// // Plugin stuff // ////////////////////////////////////////////////////////////////////////////// class PolyesterStylePlugin : public QStylePlugin { public: PolyesterStylePlugin() { ; } QStringList keys() const { return QStringList() << "Polyester"; } QStyle *create(const QString &key) { if (key.toLower() == "polyester") { return new PolyesterStyle(); } return 0; } }; Q_EXPORT_PLUGIN2(PolyesterStyle, PolyesterStylePlugin) kde-style-polyester-2.0.0.orig/style/scrollareaborder.cpp0000755000175000001440000001422611146600215022456 0ustar pinousers/* Polyester widget style for KDE 4 Copyright (C) 2006 Marco Martin based on Plastik widget style for KDE 3 Copyright (C) 2003 Sandro Giessl based on the KDE style "dotNET": Copyright (C) 2001-2002, Chris Lee Carsten Pfeiffer Karol Szwed Drawing routines completely reimplemented from KDE3 HighColor, which was originally based on some stuff from the KDE2 HighColor. based on drawing routines of the style "Keramik": Copyright (c) 2002 Malte Starostik (c) 2002,2003 Maksim Orlovich based on the KDE3 HighColor Style Copyright (C) 2001-2002 Karol Szwed (C) 2001-2002 Fredrik Höglund Drawing routines adapted from the KDE2 HCStyle, Copyright (C) 2000 Daniel M. Duley (C) 2000 Dirk Mueller (C) 2001 Martijn Klingens Progressbar code based on KStyle, Copyright (C) 2001-2002 Karol Szwed This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License version 2 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "scrollareaborder.h" #include #include #include ScrollAreaBorder::ScrollAreaBorder( Orientation orient, const QColor &col, const QColor &highlightCol, const int contrast, const bool drawShadow, QWidget *parent ) : QWidget(parent) { o = orient; borderColor = col; highlightColor = highlightCol; //more the color is dark more is transparent alpha = contrast*5; shadow = drawShadow; highlightAlpha = highlightCol.value()/4 + contrast*5; } ScrollAreaBorder::~ScrollAreaBorder(){} void ScrollAreaBorder::paintEvent(QPaintEvent *) { QPainter painter(this); QLinearGradient gradient; QRect r(rect()); QRect portRect; QRegion mask(r); bool hasFocus = static_cast(parent())->hasFocus(); int frameWidth = 0, frameHeight = 0, portWidth = 0, portHeight = 0; bool drawShadow = shadow; if( QAbstractScrollArea *area = qobject_cast(parentWidget()) ) { if( area->testAttribute(Qt::WA_NoSystemBackground) ) { return; } frameWidth = area->frameRect().width(); frameHeight = area->frameRect().height(); portWidth =area->viewport()->rect().width()+2; portHeight = area->viewport()->rect().height()+2; portRect = area->viewport()->rect(); portRect = QRect(area->viewport()->pos().x()-1, area->viewport()->pos().y()-1, portRect.width(), portRect.height()); } switch(o) { case ScrollAreaBorder::Left: { gradient = QLinearGradient(r.left(), r.center().y(), r.right(), r.center().y()); int diff = frameHeight - portHeight; if( portRect.x()>0 ) drawShadow = false; else if( diff>0 ) r = QRect(portRect.x(), portRect.y(), r.width(), portRect.height()); mask -= QRegion(r.left(), r.top(), 1, 1); mask -= QRegion(r.left(), r.bottom(), 1, 1); break; } case ScrollAreaBorder::Right: { gradient = QLinearGradient(r.right(), r.center().y(), r.left(), r.center().y()); int diff = frameHeight - portHeight; if( diff>0 ) r = QRect(r.x(), portRect.y(), r.width(), portRect.height()); mask -= QRegion(r.left(), r.top(), 1, 1); mask -= QRegion(r.left(), r.bottom(), 1, 1); break; } case ScrollAreaBorder::Top: { painter.setPen(hasFocus?highlightColor:borderColor); painter.drawPoint(r.x(), r.y()); painter.drawPoint(r.right(), r.y()); gradient = QLinearGradient(r.center().x(), r.top(), r.center().x(), r.bottom()); int diff = frameWidth - portWidth; if( portRect.y() > 0 ) drawShadow = false; else if( diff>0 ) r = QRect(portRect.x(), portRect.y(), portRect.width(), r.height()); if( portRect.x() == 0 ) mask -= QRegion(r.left(), r.top(), 1, 1); if( portRect.right() == rect().right() ) mask -= QRegion(r.right(), r.top(), 1, 1); break; } case ScrollAreaBorder::Bottom: { painter.setPen(hasFocus?highlightColor:borderColor); painter.drawPoint(r.x(), r.bottom()); painter.drawPoint(r.right(), r.bottom()); gradient = QLinearGradient(r.center().x(), r.bottom(), r.center().x(), r.top()); int diff = frameWidth - portWidth; if( diff>0 ) r = QRect(portRect.x(), portRect.y(), portRect.width(), r.height()); if( portRect.x() == 0 ) mask -= QRegion(r.left(), r.bottom(), 1, 1); if( portRect.right() == rect().right() ) mask -= QRegion(r.right(), r.bottom(), 1, 1); break; } } if( drawShadow ) { if( o == ScrollAreaBorder::Bottom ) { gradient.setColorAt(0, QColor(255,255,255,128)); gradient.setColorAt(1, QColor(255,255,255,0)); } else if( hasFocus ) { QColor shadowCol = highlightColor; shadowCol.setAlpha(highlightAlpha); gradient.setColorAt(0, shadowCol); shadowCol.setAlpha(0); gradient.setColorAt(1, shadowCol); } else { gradient.setColorAt(0, QColor(0,0,0,alpha)); gradient.setColorAt(1, QColor(0,0,0,0)); } painter.setClipRegion(mask); painter.fillRect(r, gradient); } } kde-style-polyester-2.0.0.orig/style/misc.cpp0000755000175000001440000000266611146600215020071 0ustar pinousers/* * Copyright 2003, Sandro Giessl * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License version 2 as published by the Free Software Foundation. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public License * along with this library; see the file COPYING.LIB. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #include #include "misc.h" QColor alphaBlendColors(const QColor &bgColor, const QColor &fgColor, const int a) { // normal button... QRgb rgb = bgColor.rgb(); QRgb rgb_b = fgColor.rgb(); int alpha = a; if(alpha>255) alpha = 255; if(alpha<0) alpha = 0; int inv_alpha = 255 - alpha; QColor result = QColor( qRgb(qRed(rgb_b)*inv_alpha/255 + qRed(rgb)*alpha/255, qGreen(rgb_b)*inv_alpha/255 + qGreen(rgb)*alpha/255, qBlue(rgb_b)*inv_alpha/255 + qBlue(rgb)*alpha/255) ); result.setAlpha( bgColor.alpha()*inv_alpha/255 + fgColor.alpha()*alpha/255 ); return result; } kde-style-polyester-2.0.0.orig/style/config/0000755000175000001440000000000011146642105017666 5ustar pinouserskde-style-polyester-2.0.0.orig/style/config/configdialog.ui0000644000175000001440000040017511146600215022655 0ustar pinousers ConfigDialog 0 0 632 588 0 0 0 0 610 0 0 &General 75 true Buttons Qt::AlignBottom false 75 true Animations Qt::AlignBottom false Lighter &button borders true false Qt::Horizontal QSizePolicy::Minimum 30 20 Animate buttons to a &darker color &Use shadowed button text true Glass buttons Gradients Reverse gradients Flat Ani&mate buttons &Animate progress bars Qt::Horizontal QSizePolicy::Expanding 141 31 Qt::Horizontal QSizePolicy::Expanding 61 21 Button style: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter false Qt::Horizontal QSizePolicy::Expanding 80 21 Scrollbar size: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter false &Colored scrollbars true &Scrollbar handle lines KDE style Platinum style Next style Windows style No buttons Scrollbar Style: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter false 75 true Scrollbars Qt::AlignBottom false 0 0 Chec&kmark: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter false customCheckMarkColor Mouseo&ver highlight: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter false customOverHighlightColor 0 0 Te&xt input highlight: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter false customFocusHighlightColor 0 0 75 true Custom colors Qt::AlignBottom false pixels 8 48 16 Qt::Horizontal QSizePolicy::Expanding 141 20 &Lower case buttons text &Advanced 75 true Menus Qt::AlignBottom false Menu items spacing: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter false pixels 2 12 8 Qt::Horizontal QSizePolicy::Expanding 101 21 Qt::Horizontal QSizePolicy::Minimum 187 160 Button-li&ke menu items true false &Menu stripe true Qt::Horizontal QSizePolicy::Expanding 147 30 Sh&adowed menubar text true Men&ubar emphasis Qt::Horizontal QSizePolicy::Minimum 30 20 0 0 Menubar Empasis &border true QFrame::NoFrame QFrame::Plain 0 0 0 0 0 Qt::Horizontal QSizePolicy::Minimum 30 20 0 0 &Custom color: 75 true Toolbars Qt::AlignBottom false Qt::Horizontal QSizePolicy::Expanding 190 31 &Draw toolbar separator true Draw toolbar &item separator true 75 true Misc Qt::AlignBottom false Qt::Horizontal QSizePolicy::Expanding 187 170 &Draw statusbar frame true &Centered tabbars &Highlight selected tab true &Shadows for sunken widgets true Triangular tree e&xpander H&ighlight focused text input fields Colori&ze sorted header in listviews true Ab&out QTextEdit::AutoBulletList <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> <p style=" margin-top:18px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt; font-weight:600;"><span style=" font-size:xx-large;">Polyester 1.90</span></p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> Copyright © 2005-2006 Marco Martin <br /> notmart@gmail.com<br /> http://www.notmart.org</p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> based on Plastik widget style for KDE 3<br /> Copyright (C) 2003 Sandro Giessl</p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> Polyester window decoration derived from Smooth Blend Copyright (c) 2005 Ryan Nickell</p> <p style=" margin-top:16px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt; font-weight:600;"><span style=" font-size:x-large;">Additional thanks</span></p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">Some code and ideas from</p> <ul style="-qt-list-indent: 1;"><li style=" font-size:11pt;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Linspire Clear by Sandro Giessl </li> <li style=" font-size:11pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Lipstik by Patrice Tremblay </li> <li style=" font-size:11pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Baghira and Bespin by Thomas Luebking </li> <li style=" font-size:11pt;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Trolltech winXP style and Daniel Molkentin for the password dialog</li> <li style=" font-size:11pt;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Skandale by Christoph Feck</li></ul></body></html> Lice&nse agreement <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">GNU LIBRARY GENERAL PUBLIC LICENSE</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> Version 2, June 1991</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> Copyright (C) 1991 Free Software Foundation, Inc.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> 51 Franklin Street, Fifth Floor</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> Boston, MA 02110-1301, USA.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> Everyone is permitted to copy and distribute verbatim copies</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> of this license document, but changing it is not allowed.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">[This is the first released version of the library GPL. It is</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> numbered 2 because it goes with version 2 of the ordinary GPL.]</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> Preamble</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> The licenses for most software are designed to take away your</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">freedom to share and change it. By contrast, the GNU General Public</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">Licenses are intended to guarantee your freedom to share and change</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">free software--to make sure the software is free for all its users.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> This license, the Library General Public License, applies to some</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">specially designated Free Software Foundation software, and to any</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">other libraries whose authors decide to use it. You can use it for</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">your libraries, too.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> When we speak of free software, we are referring to freedom, not</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">price. Our General Public Licenses are designed to make sure that you</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">have the freedom to distribute copies of free software (and charge for</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">this service if you wish), that you receive source code or can get it</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">if you want it, that you can change the software or use pieces of it</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">in new free programs; and that you know you can do these things.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> To protect your rights, we need to make restrictions that forbid</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">anyone to deny you these rights or to ask you to surrender the rights.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">These restrictions translate to certain responsibilities for you if</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">you distribute copies of the library, or if you modify it.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> For example, if you distribute copies of the library, whether gratis</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">or for a fee, you must give the recipients all the rights that we gave</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">you. You must make sure that they, too, receive or can get the source</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">code. If you link a program with the library, you must provide</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">complete object files to the recipients so that they can relink them</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">with the library, after making changes to the library and recompiling</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">it. And you must show them these terms so they know their rights.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> Our method of protecting your rights has two steps: (1) copyright</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">the library, and (2) offer you this license which gives you legal</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">permission to copy, distribute and/or modify the library.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> Also, for each distributor's protection, we want to make certain</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">that everyone understands that there is no warranty for this free</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">library. If the library is modified by someone else and passed on, we</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">want its recipients to know that what they have is not the original</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">version, so that any problems introduced by others will not reflect on</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">the original authors' reputations.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> </p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> Finally, any free program is threatened constantly by software</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">patents. We wish to avoid the danger that companies distributing free</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">software will individually obtain patent licenses, thus in effect</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">transforming the program into proprietary software. To prevent this,</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">we have made it clear that any patent must be licensed for everyone's</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">free use or not licensed at all.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> Most GNU software, including some libraries, is covered by the ordinary</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">GNU General Public License, which was designed for utility programs. This</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">license, the GNU Library General Public License, applies to certain</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">designated libraries. This license is quite different from the ordinary</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">one; be sure to read it in full, and don't assume that anything in it is</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">the same as in the ordinary license.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> The reason we have a separate public license for some libraries is that</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">they blur the distinction we usually make between modifying or adding to a</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">program and simply using it. Linking a program with a library, without</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">changing the library, is in some sense simply using the library, and is</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">analogous to running a utility program or application program. However, in</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">a textual and legal sense, the linked executable is a combined work, a</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">derivative of the original library, and the ordinary General Public License</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">treats it as such.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> Because of this blurred distinction, using the ordinary General</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">Public License for libraries did not effectively promote software</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">sharing, because most developers did not use the libraries. We</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">concluded that weaker conditions might promote sharing better.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> However, unrestricted linking of non-free programs would deprive the</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">users of those programs of all benefit from the free status of the</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">libraries themselves. This Library General Public License is intended to</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">permit developers of non-free programs to use free libraries, while</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">preserving your freedom as a user of such programs to change the free</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">libraries that are incorporated in them. (We have not seen how to achieve</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">this as regards changes in header files, but we have achieved it as regards</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">changes in the actual functions of the Library.) The hope is that this</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">will lead to faster development of free libraries.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> The precise terms and conditions for copying, distribution and</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">modification follow. Pay close attention to the difference between a</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">"work based on the library" and a "work that uses the library". The</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">former contains code derived from the library, while the latter only</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">works together with the library.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> Note that it is possible for a library to be covered by the ordinary</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">General Public License rather than by this special one.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> </p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> GNU LIBRARY GENERAL PUBLIC LICENSE</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> 0. This License Agreement applies to any software library which</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">contains a notice placed by the copyright holder or other authorized</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">party saying it may be distributed under the terms of this Library</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">General Public License (also called "this License"). Each licensee is</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">addressed as "you".</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> A "library" means a collection of software functions and/or data</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">prepared so as to be conveniently linked with application programs</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">(which use some of those functions and data) to form executables.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> The "Library", below, refers to any such software library or work</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">which has been distributed under these terms. A "work based on the</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">Library" means either the Library or any derivative work under</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">copyright law: that is to say, a work containing the Library or a</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">portion of it, either verbatim or with modifications and/or translated</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">straightforwardly into another language. (Hereinafter, translation is</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">included without limitation in the term "modification".)</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> "Source code" for a work means the preferred form of the work for</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">making modifications to it. For a library, complete source code means</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">all the source code for all modules it contains, plus any associated</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">interface definition files, plus the scripts used to control compilation</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">and installation of the library.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> Activities other than copying, distribution and modification are not</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">covered by this License; they are outside its scope. The act of</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">running a program using the Library is not restricted, and output from</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">such a program is covered only if its contents constitute a work based</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">on the Library (independent of the use of the Library in a tool for</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">writing it). Whether that is true depends on what the Library does</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">and what the program that uses the Library does.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> </p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> 1. You may copy and distribute verbatim copies of the Library's</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">complete source code as you receive it, in any medium, provided that</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">you conspicuously and appropriately publish on each copy an</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">appropriate copyright notice and disclaimer of warranty; keep intact</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">all the notices that refer to this License and to the absence of any</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">warranty; and distribute a copy of this License along with the</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">Library.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> You may charge a fee for the physical act of transferring a copy,</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">and you may at your option offer warranty protection in exchange for a</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">fee.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> </p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> 2. You may modify your copy or copies of the Library or any portion</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">of it, thus forming a work based on the Library, and copy and</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">distribute such modifications or work under the terms of Section 1</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">above, provided that you also meet all of these conditions:</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> a) The modified work must itself be a software library.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> b) You must cause the files modified to carry prominent notices</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> stating that you changed the files and the date of any change.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> c) You must cause the whole of the work to be licensed at no</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> charge to all third parties under the terms of this License.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> d) If a facility in the modified Library refers to a function or a</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> table of data to be supplied by an application program that uses</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> the facility, other than as an argument passed when the facility</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> is invoked, then you must make a good faith effort to ensure that,</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> in the event an application does not supply such function or</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> table, the facility still operates, and performs whatever part of</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> its purpose remains meaningful.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> (For example, a function in a library to compute square roots has</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> a purpose that is entirely well-defined independent of the</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> application. Therefore, Subsection 2d requires that any</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> application-supplied function or table used by this function must</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> be optional: if the application does not supply it, the square</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> root function must still compute square roots.)</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">These requirements apply to the modified work as a whole. If</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">identifiable sections of that work are not derived from the Library,</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">and can be reasonably considered independent and separate works in</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">themselves, then this License, and its terms, do not apply to those</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">sections when you distribute them as separate works. But when you</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">distribute the same sections as part of a whole which is a work based</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">on the Library, the distribution of the whole must be on the terms of</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">this License, whose permissions for other licensees extend to the</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">entire whole, and thus to each and every part regardless of who wrote</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">it.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">Thus, it is not the intent of this section to claim rights or contest</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">your rights to work written entirely by you; rather, the intent is to</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">exercise the right to control the distribution of derivative or</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">collective works based on the Library.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">In addition, mere aggregation of another work not based on the Library</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">with the Library (or with a work based on the Library) on a volume of</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">a storage or distribution medium does not bring the other work under</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">the scope of this License.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> 3. You may opt to apply the terms of the ordinary GNU General Public</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">License instead of this License to a given copy of the Library. To do</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">this, you must alter all the notices that refer to this License, so</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">that they refer to the ordinary GNU General Public License, version 2,</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">instead of to this License. (If a newer version than version 2 of the</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">ordinary GNU General Public License has appeared, then you can specify</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">that version instead if you wish.) Do not make any other change in</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">these notices.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> </p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> Once this change is made in a given copy, it is irreversible for</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">that copy, so the ordinary GNU General Public License applies to all</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">subsequent copies and derivative works made from that copy.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> This option is useful when you wish to copy part of the code of</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">the Library into a program that is not a library.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> 4. You may copy and distribute the Library (or a portion or</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">derivative of it, under Section 2) in object code or executable form</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">under the terms of Sections 1 and 2 above provided that you accompany</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">it with the complete corresponding machine-readable source code, which</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">must be distributed under the terms of Sections 1 and 2 above on a</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">medium customarily used for software interchange.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> If distribution of object code is made by offering access to copy</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">from a designated place, then offering equivalent access to copy the</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">source code from the same place satisfies the requirement to</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">distribute the source code, even though third parties are not</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">compelled to copy the source along with the object code.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> 5. A program that contains no derivative of any portion of the</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">Library, but is designed to work with the Library by being compiled or</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">linked with it, is called a "work that uses the Library". Such a</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">work, in isolation, is not a derivative work of the Library, and</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">therefore falls outside the scope of this License.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> However, linking a "work that uses the Library" with the Library</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">creates an executable that is a derivative of the Library (because it</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">contains portions of the Library), rather than a "work that uses the</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">library". The executable is therefore covered by this License.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">Section 6 states terms for distribution of such executables.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> When a "work that uses the Library" uses material from a header file</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">that is part of the Library, the object code for the work may be a</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">derivative work of the Library even though the source code is not.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">Whether this is true is especially significant if the work can be</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">linked without the Library, or if the work is itself a library. The</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">threshold for this to be true is not precisely defined by law.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> If such an object file uses only numerical parameters, data</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">structure layouts and accessors, and small macros and small inline</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">functions (ten lines or less in length), then the use of the object</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">file is unrestricted, regardless of whether it is legally a derivative</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">work. (Executables containing this object code plus portions of the</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">Library will still fall under Section 6.)</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> Otherwise, if the work is a derivative of the Library, you may</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">distribute the object code for the work under the terms of Section 6.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">Any executables containing that work also fall under Section 6,</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">whether or not they are linked directly with the Library itself.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> </p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> 6. As an exception to the Sections above, you may also compile or</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">link a "work that uses the Library" with the Library to produce a</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">work containing portions of the Library, and distribute that work</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">under terms of your choice, provided that the terms permit</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">modification of the work for the customer's own use and reverse</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">engineering for debugging such modifications.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> You must give prominent notice with each copy of the work that the</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">Library is used in it and that the Library and its use are covered by</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">this License. You must supply a copy of this License. If the work</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">during execution displays copyright notices, you must include the</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">copyright notice for the Library among them, as well as a reference</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">directing the user to the copy of this License. Also, you must do one</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">of these things:</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> a) Accompany the work with the complete corresponding</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> machine-readable source code for the Library including whatever</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> changes were used in the work (which must be distributed under</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> Sections 1 and 2 above); and, if the work is an executable linked</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> with the Library, with the complete machine-readable "work that</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> uses the Library", as object code and/or source code, so that the</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> user can modify the Library and then relink to produce a modified</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> executable containing the modified Library. (It is understood</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> that the user who changes the contents of definitions files in the</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> Library will not necessarily be able to recompile the application</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> to use the modified definitions.)</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> b) Accompany the work with a written offer, valid for at</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> least three years, to give the same user the materials</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> specified in Subsection 6a, above, for a charge no more</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> than the cost of performing this distribution.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> c) If distribution of the work is made by offering access to copy</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> from a designated place, offer equivalent access to copy the above</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> specified materials from the same place.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> d) Verify that the user has already received a copy of these</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> materials or that you have already sent this user a copy.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> For an executable, the required form of the "work that uses the</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">Library" must include any data and utility programs needed for</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">reproducing the executable from it. However, as a special exception,</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">the source code distributed need not include anything that is normally</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">distributed (in either source or binary form) with the major</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">components (compiler, kernel, and so on) of the operating system on</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">which the executable runs, unless that component itself accompanies</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">the executable.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> It may happen that this requirement contradicts the license</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">restrictions of other proprietary libraries that do not normally</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">accompany the operating system. Such a contradiction means you cannot</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">use both them and the Library together in an executable that you</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">distribute.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> </p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> 7. You may place library facilities that are a work based on the</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">Library side-by-side in a single library together with other library</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">facilities not covered by this License, and distribute such a combined</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">library, provided that the separate distribution of the work based on</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">the Library and of the other library facilities is otherwise</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">permitted, and provided that you do these two things:</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> a) Accompany the combined library with a copy of the same work</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> based on the Library, uncombined with any other library</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> facilities. This must be distributed under the terms of the</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> Sections above.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> b) Give prominent notice with the combined library of the fact</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> that part of it is a work based on the Library, and explaining</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> where to find the accompanying uncombined form of the same work.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> 8. You may not copy, modify, sublicense, link with, or distribute</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">the Library except as expressly provided under this License. Any</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">attempt otherwise to copy, modify, sublicense, link with, or</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">distribute the Library is void, and will automatically terminate your</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">rights under this License. However, parties who have received copies,</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">or rights, from you under this License will not have their licenses</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">terminated so long as such parties remain in full compliance.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> 9. You are not required to accept this License, since you have not</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">signed it. However, nothing else grants you permission to modify or</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">distribute the Library or its derivative works. These actions are</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">prohibited by law if you do not accept this License. Therefore, by</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">modifying or distributing the Library (or any work based on the</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">Library), you indicate your acceptance of this License to do so, and</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">all its terms and conditions for copying, distributing or modifying</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">the Library or works based on it.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> 10. Each time you redistribute the Library (or any work based on the</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">Library), the recipient automatically receives a license from the</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">original licensor to copy, distribute, link with or modify the Library</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">subject to these terms and conditions. You may not impose any further</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">restrictions on the recipients' exercise of the rights granted herein.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">You are not responsible for enforcing compliance by third parties to</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">this License.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> </p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> 11. If, as a consequence of a court judgment or allegation of patent</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">infringement or for any other reason (not limited to patent issues),</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">conditions are imposed on you (whether by court order, agreement or</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">otherwise) that contradict the conditions of this License, they do not</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">excuse you from the conditions of this License. If you cannot</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">distribute so as to satisfy simultaneously your obligations under this</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">License and any other pertinent obligations, then as a consequence you</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">may not distribute the Library at all. For example, if a patent</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">license would not permit royalty-free redistribution of the Library by</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">all those who receive copies directly or indirectly through you, then</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">the only way you could satisfy both it and this License would be to</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">refrain entirely from distribution of the Library.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">If any portion of this section is held invalid or unenforceable under any</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">particular circumstance, the balance of the section is intended to apply,</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">and the section as a whole is intended to apply in other circumstances.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">It is not the purpose of this section to induce you to infringe any</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">patents or other property right claims or to contest validity of any</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">such claims; this section has the sole purpose of protecting the</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">integrity of the free software distribution system which is</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">implemented by public license practices. Many people have made</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">generous contributions to the wide range of software distributed</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">through that system in reliance on consistent application of that</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">system; it is up to the author/donor to decide if he or she is willing</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">to distribute software through any other system and a licensee cannot</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">impose that choice.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">This section is intended to make thoroughly clear what is believed to</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">be a consequence of the rest of this License.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> 12. If the distribution and/or use of the Library is restricted in</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">certain countries either by patents or by copyrighted interfaces, the</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">original copyright holder who places the Library under this License may add</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">an explicit geographical distribution limitation excluding those countries,</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">so that distribution is permitted only in or among countries not thus</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">excluded. In such case, this License incorporates the limitation as if</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">written in the body of this License.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> 13. The Free Software Foundation may publish revised and/or new</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">versions of the Library General Public License from time to time.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">Such new versions will be similar in spirit to the present version,</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">but may differ in detail to address new problems or concerns.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">Each version is given a distinguishing version number. If the Library</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">specifies a version number of this License which applies to it and</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">"any later version", you have the option of following the terms and</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">conditions either of that version or of any later version published by</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">the Free Software Foundation. If the Library does not specify a</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">license version number, you may choose any version ever published by</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">the Free Software Foundation.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> </p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> 14. If you wish to incorporate parts of the Library into other free</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">programs whose distribution conditions are incompatible with these,</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">write to the author to ask for permission. For software which is</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">copyrighted by the Free Software Foundation, write to the Free</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">Software Foundation; we sometimes make exceptions for this. Our</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">decision will be guided by the two goals of preserving the free status</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">of all derivatives of our free software and of promoting the sharing</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">and reuse of software generally.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> NO WARRANTY</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">DAMAGES.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> END OF TERMS AND CONDITIONS</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> How to Apply These Terms to Your New Libraries</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> If you develop a new library, and you want it to be of the greatest</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">possible use to the public, we recommend making it free software that</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">everyone can redistribute and change. You can do so by permitting</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">redistribution under these terms (or, alternatively, under the terms of the</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">ordinary General Public License).</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> To apply these terms, attach the following notices to the library. It is</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">safest to attach them to the start of each source file to most effectively</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">convey the exclusion of warranty; and each file should have at least the</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">"copyright" line and a pointer to where the full notice is found.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> &lt;one line to give the library's name and a brief idea of what it does.&gt;</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> Copyright (C) &lt;year&gt; &lt;name of author&gt;</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> This library is free software; you can redistribute it and/or</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> modify it under the terms of the GNU Lesser General Public</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> License as published by the Free Software Foundation; either</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> version 2 of the License, or (at your option) any later version.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> This library is distributed in the hope that it will be useful,</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> but WITHOUT ANY WARRANTY; without even the implied warranty of</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> Lesser General Public License for more details.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> You should have received a copy of the GNU Lesser General Public</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> License along with this library; if not, write to the Free Software</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">Also add information on how to contact you by electronic and paper mail.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">You should also get your employer (if you work as a programmer) or your</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">school, if any, to sign a "copyright disclaimer" for the library, if</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">necessary. Here is a sample; alter the names:</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> Yoyodyne, Inc., hereby disclaims all copyright interest in the</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> library `Frob' (a library for tweaking knobs) written by James Random Hacker.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> &lt;signature of Ty Coon&gt;, 1 April 1990</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"> Ty Coon, President of Vice</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;">That's all there is to it!</p></body></html> qPixmapFromMimeSource KColorButton QWidget
kcolorbutton.h
animateButton toggled(bool) animateButtonToDark setEnabled(bool) 20 20 20 20 customFocusHighlightColor toggled(bool) focusHighlightColor setEnabled(bool) 20 20 20 20 customOverHighlightColor toggled(bool) overHighlightColor setEnabled(bool) 20 20 20 20 customCheckMarkColor toggled(bool) checkMarkColor setEnabled(bool) 20 20 20 20 menuBarEmphasis toggled(bool) menuBarEmphasisBorder setEnabled(bool) 20 20 20 20 customMenuBarEmphasisColor toggled(bool) menuBarEmphasisColor setEnabled(bool) 20 20 20 20 menuBarEmphasis toggled(bool) frameCustomEmphColor setEnabled(bool) 20 20 20 20
kde-style-polyester-2.0.0.orig/style/config/CMakeLists.txt0000644000175000001440000000106411146600215022423 0ustar pinousersproject(libpolyester_config) FIND_PACKAGE(KDE4 REQUIRED) INCLUDE_DIRECTORIES( ${KDE4_INCLUDES} ) ########### next target ############### set( libpolyester_config_PART_SRCS polyesterconf.cpp ) #kde4_automoc( ${libpolyester_config_PART_SRCS} ) kde4_add_ui_files(libpolyester_config_PART_SRCS configdialog.ui) kde4_add_plugin(libpolyester_config ${libpolyester_config_PART_SRCS} ) target_link_libraries( libpolyester_config ${KDE4_KDEUI_LIBS} ) install( TARGETS libpolyester_config DESTINATION ${PLUGIN_INSTALL_DIR}) ########### install files ############### kde-style-polyester-2.0.0.orig/style/config/polyesterconf.cpp0000755000175000001440000004626411146600215023301 0ustar pinousers/* Polyester widget style for KDE 4 Copyright (C) 2006 Marco Martin based on the Keramik and Plastik configuration dialog: Plastik: Copyright (C) 2003 Sandro Giessl Keramik: Copyright (c) 2003 Maksim Orlovich Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include #include #include #include //#include #include #include #include #include #include #include #include //#include #include "polyesterconf.h" extern "C" { KDE_EXPORT QWidget* allocate_kstyle_config(QWidget* parent) { KGlobal::locale()->insertCatalog("kstyle_polyester_config"); return new PolyesterStyleConfig(parent); } } PolyesterStyleConfig::PolyesterStyleConfig(QWidget* parent): QWidget(parent) { dialog_ = new Ui_ConfigDialog(); dialog_->setupUi(this); KGlobal::locale()->insertCatalog("kstyle_polyester_config"); QSettings s("Polyester", "Style"); s.beginGroup("Style"); origScrollBarLines = s.value("scrollBarLines", false).toBool(); dialog_->scrollBarLines->setChecked(origScrollBarLines); origColoredScrollBar = s.value("coloredScrollBar", true).toBool(); dialog_->coloredScrollBar->setChecked(origColoredScrollBar); origScrollBarStyle = s.value("scrollBarStyle", "ThreeButtonScrollBar").toString(); dialog_->scrollBarStyle->setCurrentIndex(scrollBarItem(origScrollBarStyle)); origScrollBarSize = s.value("scrollBarSize", 16).toInt(); dialog_->scrollBarSize->setValue(origScrollBarSize); origCenteredTabBar = s.value("centeredTabBar", false).toBool(); dialog_->centeredTabBar->setChecked(origCenteredTabBar); origHighLightTab = s.value("highLightTab", true).toBool(); dialog_->highLightTab->setChecked(origHighLightTab); origStatusBarFrame = s.value("statusBarFrame", true).toBool(); dialog_->statusBarFrame->setChecked(origStatusBarFrame); //MENUS origMenuItemSpacing = s.value("menuItemSpacing", 8).toInt(); dialog_->menuItemSpacing->setValue(origMenuItemSpacing); origButtonMenuItem = s.value("buttonMenuItem", true).toBool(); dialog_->buttonMenuItem->setChecked(origButtonMenuItem); origMenuBarEmphasis = s.value("menuBarEmphasis", false).toBool(); dialog_->menuBarEmphasis->setChecked(origMenuBarEmphasis); origMenuBarEmphasisBorder = s.value("menuBarEmphasisBorder", true).toBool(); dialog_->menuBarEmphasisBorder->setChecked(origMenuBarEmphasisBorder); origCustomMenuBarEmphasisColor = s.value("customMenuBarEmphasisColor", false).toBool(); dialog_->customMenuBarEmphasisColor->setChecked(origCustomMenuBarEmphasisColor); origMenuBarEmphasisColor = s.value("menuBarEmphasisColor", "black").toString(); dialog_->menuBarEmphasisColor->setColor(origMenuBarEmphasisColor); origMenuStripe = s.value("menuStripe", true).toBool(); dialog_->menuStripe->setChecked(origMenuStripe); origShadowedButtonsText = s.value("shadowedButtonsText", true).toBool(); dialog_->shadowedButtonsText->setChecked(origShadowedButtonsText); origShadowedMenuBarText = s.value("shadowedMenuBarText", true).toBool(); dialog_->shadowedMenuBarText->setChecked(origShadowedMenuBarText); origSunkenShadows = s.value("sunkenShadows", true).toBool(); dialog_->sunkenShadows->setChecked(origSunkenShadows); //MISC origColorizeSortedHeader = s.value("colorizeSortedHeader", true).toBool(); dialog_->colorizeSortedHeader->setChecked(origColorizeSortedHeader); origUseLowerCaseText = s.value("useLowerCaseText", false).toBool(); dialog_->useLowerCaseText->setChecked(origUseLowerCaseText); origAnimProgressBar = s.value("animateProgressBar", false).toBool(); dialog_->animateProgressBar->setChecked(origAnimProgressBar); origLightBorder = s.value("lightBorder", true).toBool(); dialog_->lightBorder->setChecked(origLightBorder); origAnimButton = s.value("animateButton", false).toBool(); dialog_->animateButton->setChecked(origAnimButton); origAnimButtonToDark = s.value("animateButtonToDark", false).toBool(); dialog_->animateButtonToDark->setChecked(origAnimButtonToDark); origDrawToolBarSeparator = s.value("drawToolBarSeparator", true).toBool(); dialog_->drawToolBarSeparator->setChecked(origDrawToolBarSeparator); origDrawToolBarItemSeparator = s.value("drawToolBarItemSeparator", true).toBool(); dialog_->drawToolBarItemSeparator->setChecked(origDrawToolBarItemSeparator); // origDrawFocusRect = s.value("drawFocusRect", true).toBool(); // drawFocusRect->setChecked(origDrawFocusRect); origDrawTriangularExpander = s.value("drawTriangularExpander", false).toBool(); dialog_->drawTriangularExpander->setChecked(origDrawTriangularExpander); origInputFocusHighlight = s.value("inputFocusHighlight", true).toBool(); dialog_->inputFocusHighlight->setChecked(origInputFocusHighlight); origButtonStyle = s.value("buttonStyle", "glass").toString(); dialog_->buttonStyle->setCurrentIndex(buttonItem(origButtonStyle)); origCustomOverHighlightColor = s.value("customOverHighlightColor", false).toBool(); dialog_->customOverHighlightColor->setChecked(origCustomOverHighlightColor); origOverHighlightColor = s.value("overHighlightColor", "black").toString(); dialog_->overHighlightColor->setColor(origOverHighlightColor); origCustomFocusHighlightColor = s.value("customFocusHighlightColor", false).toBool(); dialog_->customFocusHighlightColor->setChecked(origCustomFocusHighlightColor); origFocusHighlightColor = s.value("focusHighlightColor", "black").toString(); dialog_->focusHighlightColor->setColor(origFocusHighlightColor); origCustomCheckMarkColor = s.value("customCheckMarkColor", false).toBool(); dialog_->customCheckMarkColor->setChecked(origCustomCheckMarkColor); origCheckMarkColor = s.value("checkMarkColor", "black").toString(); dialog_->checkMarkColor->setColor(origCheckMarkColor); connect(dialog_->useLowerCaseText, SIGNAL( toggled(bool) ), SLOT( updateChanged() ) ); connect(dialog_->scrollBarLines, SIGNAL( toggled(bool) ), SLOT( updateChanged() ) ); connect(dialog_->scrollBarStyle, SIGNAL( activated(int) ), SLOT( updateChanged() ) ); connect(dialog_->scrollBarSize, SIGNAL( valueChanged( int ) ), SLOT( updateChanged() ) ); connect(dialog_->coloredScrollBar, SIGNAL( toggled(bool) ), SLOT( updateChanged() ) ); connect(dialog_->centeredTabBar, SIGNAL( toggled(bool) ), SLOT( updateChanged() ) ); connect(dialog_->highLightTab, SIGNAL( toggled(bool) ), SLOT( updateChanged() ) ); connect(dialog_->statusBarFrame, SIGNAL( toggled(bool) ), SLOT( updateChanged() ) ); connect(dialog_->menuItemSpacing, SIGNAL( valueChanged(int) ), SLOT( updateChanged() ) ); connect(dialog_->buttonMenuItem, SIGNAL( toggled(bool) ), SLOT( updateChanged() ) ); connect(dialog_->menuBarEmphasis, SIGNAL( toggled(bool) ), SLOT( updateChanged() ) ); connect(dialog_->menuBarEmphasisBorder, SIGNAL( toggled(bool) ), SLOT( updateChanged() ) ); connect(dialog_->customMenuBarEmphasisColor, SIGNAL( toggled(bool) ), SLOT( updateChanged() ) ); connect(dialog_->menuBarEmphasisColor, SIGNAL( changed(const QColor&) ), SLOT( updateChanged() ) ); connect(dialog_->menuStripe, SIGNAL( toggled(bool) ), SLOT( updateChanged() ) ); connect(dialog_->shadowedButtonsText, SIGNAL( toggled(bool) ), SLOT( updateChanged() ) ); connect(dialog_->shadowedMenuBarText, SIGNAL( toggled(bool) ), SLOT( updateChanged() ) ); connect(dialog_->sunkenShadows, SIGNAL( toggled(bool) ), SLOT( updateChanged() ) ); connect(dialog_->animateProgressBar, SIGNAL( toggled(bool) ), SLOT( updateChanged() ) ); connect(dialog_->lightBorder, SIGNAL( toggled(bool) ), SLOT( updateChanged() ) ); connect(dialog_->animateButton, SIGNAL( toggled(bool) ), SLOT( updateChanged() ) ); connect(dialog_->animateButtonToDark, SIGNAL( toggled(bool) ), SLOT( updateChanged() ) ); connect(dialog_->drawToolBarSeparator, SIGNAL( toggled(bool) ), SLOT( updateChanged() ) ); connect(dialog_->drawToolBarItemSeparator, SIGNAL( toggled(bool) ), SLOT( updateChanged() ) ); connect(dialog_->drawTriangularExpander, SIGNAL( toggled(bool) ), SLOT( updateChanged() ) ); connect(dialog_->inputFocusHighlight, SIGNAL( toggled(bool) ), SLOT( updateChanged() ) ); connect(dialog_->colorizeSortedHeader, SIGNAL( toggled(bool) ), SLOT( updateChanged() ) ); connect(dialog_->buttonStyle, SIGNAL( activated(int) ), SLOT( updateChanged() ) ); connect(dialog_->customOverHighlightColor, SIGNAL( toggled(bool) ), SLOT( updateChanged() ) ); connect(dialog_->overHighlightColor, SIGNAL( changed(const QColor&) ), SLOT( updateChanged() ) ); connect(dialog_->customFocusHighlightColor, SIGNAL( toggled(bool) ), SLOT( updateChanged() ) ); connect(dialog_->focusHighlightColor, SIGNAL( changed(const QColor&) ), SLOT( updateChanged() ) ); connect(dialog_->customCheckMarkColor, SIGNAL( toggled(bool) ), SLOT( updateChanged() ) ); connect(dialog_->checkMarkColor, SIGNAL( changed(const QColor&) ), SLOT( updateChanged() ) ); if ( dialog_->animateButton->isChecked() ) dialog_->animateButtonToDark->setEnabled(true); else dialog_->animateButtonToDark->setEnabled(false); if ( dialog_->menuBarEmphasis->isChecked() ) { dialog_->menuBarEmphasisBorder->setEnabled(true); dialog_->customMenuBarEmphasisColor->setEnabled(true); if ( dialog_->customMenuBarEmphasisColor->isChecked() ) dialog_->menuBarEmphasisColor->setEnabled(true); else dialog_->menuBarEmphasisColor->setEnabled(false); } else { dialog_->menuBarEmphasisBorder->setEnabled(false); dialog_->customMenuBarEmphasisColor->setEnabled(false); dialog_->menuBarEmphasisColor->setEnabled(false); } if ( dialog_->customOverHighlightColor->isChecked() ) dialog_->overHighlightColor->setEnabled(true); else dialog_->overHighlightColor->setEnabled(false); if ( dialog_->customFocusHighlightColor->isChecked() ) dialog_->focusHighlightColor->setEnabled(true); else dialog_->focusHighlightColor->setEnabled(false); if ( dialog_->customCheckMarkColor->isChecked() ) dialog_->checkMarkColor->setEnabled(true); else dialog_->checkMarkColor->setEnabled(false); } PolyesterStyleConfig::~PolyesterStyleConfig() { } void PolyesterStyleConfig::save() { QSettings s("Polyester", "Style"); s.beginGroup("Style"); s.setValue("useLowerCaseText", dialog_->useLowerCaseText->isChecked()); s.setValue("scrollBarLines", dialog_->scrollBarLines->isChecked()); s.setValue("scrollBarStyle", scrollBarType(dialog_->scrollBarStyle->currentIndex())); s.setValue("scrollBarSize", dialog_->scrollBarSize->value()); s.setValue("coloredScrollBar", dialog_->coloredScrollBar->isChecked()); s.setValue("centeredTabBar", dialog_->centeredTabBar->isChecked()); s.setValue("highLightTab", dialog_->highLightTab->isChecked()); s.setValue("statusBarFrame", dialog_->statusBarFrame->isChecked()); s.setValue("menuItemSpacing", dialog_->menuItemSpacing->value()); s.setValue("buttonMenuItem", dialog_->buttonMenuItem->isChecked()); s.setValue("menuBarEmphasis", dialog_->menuBarEmphasis->isChecked()); s.setValue("colorizeSortedHeader", dialog_->colorizeSortedHeader->isChecked()); s.setValue("menuBarEmphasisBorder", dialog_->menuBarEmphasisBorder->isChecked()); s.setValue("customMenuBarEmphasisColor", dialog_->customMenuBarEmphasisColor->isChecked()); s.setValue("menuBarEmphasisColor", QColor(dialog_->menuBarEmphasisColor->color()).name()); s.setValue("menuStripe", dialog_->menuStripe->isChecked()); s.setValue("shadowedButtonsText", dialog_->shadowedButtonsText->isChecked()); s.setValue("shadowedMenuBarText", dialog_->shadowedMenuBarText->isChecked()); s.setValue("sunkenShadows", dialog_->sunkenShadows->isChecked()); s.setValue("animateProgressBar", dialog_->animateProgressBar->isChecked()); s.setValue("lightBorder", dialog_->lightBorder->isChecked()); s.setValue("animateButton", dialog_->animateButton->isChecked()); s.setValue("animateButtonToDark", dialog_->animateButtonToDark->isChecked()); s.setValue("drawToolBarSeparator", dialog_->drawToolBarSeparator->isChecked()); s.setValue("drawToolBarItemSeparator", dialog_->drawToolBarItemSeparator->isChecked()); s.setValue("drawTriangularExpander", dialog_->drawTriangularExpander->isChecked()); s.setValue("inputFocusHighlight", dialog_->inputFocusHighlight->isChecked()); s.setValue("buttonStyle", buttonType(dialog_->buttonStyle->currentIndex())); s.setValue("customOverHighlightColor", dialog_->customOverHighlightColor->isChecked()); s.setValue("overHighlightColor", QColor(dialog_->overHighlightColor->color()).name()); s.setValue("customFocusHighlightColor", dialog_->customFocusHighlightColor->isChecked()); s.setValue("focusHighlightColor", QColor(dialog_->focusHighlightColor->color()).name()); s.setValue("customCheckMarkColor", dialog_->customCheckMarkColor->isChecked()); s.setValue("checkMarkColor", QColor(dialog_->checkMarkColor->color()).name()); } void PolyesterStyleConfig::defaults() { dialog_->useLowerCaseText->setChecked(false); dialog_->scrollBarLines->setChecked(false); dialog_->scrollBarStyle->setCurrentIndex(0); dialog_->scrollBarSize->setValue(16); dialog_->coloredScrollBar->setChecked(true); dialog_->centeredTabBar->setChecked(false); dialog_->highLightTab->setChecked(true); dialog_->statusBarFrame->setChecked(true); dialog_->menuBarEmphasis->setChecked(false); dialog_->menuBarEmphasisBorder->setChecked(true); dialog_->customMenuBarEmphasisColor->setChecked(false); dialog_->menuBarEmphasisColor->setColor("black"); dialog_->menuStripe->setChecked(true); dialog_->animateProgressBar->setChecked(false); dialog_->colorizeSortedHeader->setChecked(true); dialog_->lightBorder->setChecked(true); dialog_->animateButton->setChecked(false); dialog_->animateButtonToDark->setChecked(false); dialog_->drawToolBarSeparator->setChecked(true); dialog_->drawToolBarItemSeparator->setChecked(true); dialog_->drawTriangularExpander->setChecked(false); dialog_->inputFocusHighlight->setChecked(true); dialog_->buttonStyle->setCurrentIndex(0); dialog_->customOverHighlightColor->setChecked(false); dialog_->overHighlightColor->setColor("black"); dialog_->customFocusHighlightColor->setChecked(false); dialog_->focusHighlightColor->setColor("black"); dialog_->customCheckMarkColor->setChecked(false); dialog_->checkMarkColor->setColor("black"); //updateChanged would be done by setChecked already } void PolyesterStyleConfig::updateChanged() { if ((dialog_->scrollBarLines->isChecked() == origScrollBarLines) && (dialog_->scrollBarStyle->currentText() == origScrollBarStyle) && (dialog_->scrollBarSize->value() == origScrollBarSize) && (dialog_->coloredScrollBar->isChecked() == origColoredScrollBar) && (dialog_->centeredTabBar->isChecked() == origCenteredTabBar) && (dialog_->highLightTab->isChecked() == origHighLightTab) && (dialog_->statusBarFrame->isChecked() == origStatusBarFrame) && (dialog_->menuItemSpacing->value() == origMenuItemSpacing) && (dialog_->buttonMenuItem->isChecked() == origButtonMenuItem) && (dialog_->menuBarEmphasis->isChecked() == origMenuBarEmphasis) && (dialog_->menuBarEmphasisBorder->isChecked() == origMenuBarEmphasisBorder) && (dialog_->customMenuBarEmphasisColor->isChecked() == origCustomMenuBarEmphasisColor) && (dialog_->menuBarEmphasisColor->color() == origMenuBarEmphasisColor) && (dialog_->menuStripe->isChecked() == origMenuStripe) && (dialog_->shadowedButtonsText->isChecked() == origShadowedButtonsText) && (dialog_->shadowedMenuBarText->isChecked() == origShadowedMenuBarText) && (dialog_->sunkenShadows->isChecked() == origSunkenShadows) && (dialog_->animateProgressBar->isChecked() == origAnimProgressBar) && (dialog_->lightBorder->isChecked() == origLightBorder) && (dialog_->colorizeSortedHeader->isChecked() == origColorizeSortedHeader) && (dialog_->animateButton->isChecked() == origAnimButton) && (dialog_->animateButtonToDark->isChecked() == origAnimButtonToDark) && (dialog_->drawToolBarSeparator->isChecked() == origDrawToolBarSeparator) && (dialog_->drawToolBarItemSeparator->isChecked() == origDrawToolBarItemSeparator) && (dialog_->drawTriangularExpander->isChecked() == origDrawTriangularExpander) && (dialog_->inputFocusHighlight->isChecked() == origInputFocusHighlight) && (dialog_->customOverHighlightColor->isChecked() == origCustomOverHighlightColor) && (dialog_->overHighlightColor->color() == origOverHighlightColor) && (dialog_->buttonStyle->currentText() == origButtonStyle) && (dialog_->customFocusHighlightColor->isChecked() == origCustomFocusHighlightColor) && (dialog_->focusHighlightColor->color() == origFocusHighlightColor) && (dialog_->customCheckMarkColor->isChecked() == origCustomCheckMarkColor) && (dialog_->checkMarkColor->color() == origCheckMarkColor) && (dialog_->useLowerCaseText->isChecked() == origUseLowerCaseText) ) emit changed(false); else emit changed(true); } //button types QString PolyesterStyleConfig::buttonType( int listnr ) { switch ( listnr ) { case 1: return QString("gradients"); case 2: return QString("reverseGradients"); case 3: return QString("flat"); default: return QString("glass"); } } int PolyesterStyleConfig::buttonItem( QString kBType ) { if( !kBType.compare("gradients") ) return 1; else if( !kBType.compare("reverseGradients") ) return 2; else if( !kBType.compare("flat") ) return 3; else return 0; } //scrollBar types QString PolyesterStyleConfig::scrollBarType( int listnr ) { switch ( listnr ) { case 1: return QString("PlatinumStyleScrollBar"); case 2: return QString("NextStyleScrollBar"); case 3: return QString("WindowsStyleScrollBar"); case 4: return QString("NoButtonsScrollBar"); default: return QString("ThreeButtonScrollBar"); } } int PolyesterStyleConfig::scrollBarItem( QString kSType ) { if( !kSType.compare("PlatinumStyleScrollBar") ) return 1; else if( !kSType.compare("NextStyleScrollBar") ) return 2; else if( !kSType.compare("WindowsStyleScrollBar") ) return 3; else if( !kSType.compare("NoButtonsScrollBar") ) return 4; else return 0; } #include "moc_polyesterconf.cpp" kde-style-polyester-2.0.0.orig/style/config/polyesterconf.h0000755000175000001440000000635311146600215022741 0ustar pinousers/* Polyester widget style for KDE 4 Copyright (C) 2006 Marco Martin based on the Keramik and Plastik configuration dialog: Plastik: Copyright (C) 2003 Sandro Giessl Keramik: Copyright (c) 2003 Maksim Orlovich Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef POLYESTER_CONF_H #define POLYESTER_CONF_H #include "ui_configdialog.h" class QCheckBox; class QComboBox; class ConfigDialog; class PolyesterStyleConfig: public QWidget { Q_OBJECT public: PolyesterStyleConfig(QWidget* parent); ~PolyesterStyleConfig(); //This signal and the next two slots are the plugin //page interface signals: void changed(bool); public slots: void save(); void defaults(); //Everything below this is internal. protected slots: void updateChanged(); protected: QString buttonType( int listnr ); int buttonItem( QString kBType ); QString scrollBarType( int listnr ); int scrollBarItem( QString kSType ); //Original settings, for accurate dirtiness tracking bool origUseLowerCaseText; bool origScrollBarLines; QString origScrollBarStyle; int origScrollBarSize; bool origColoredScrollBar; bool origCenteredTabBar; bool origHighLightTab; bool origStatusBarFrame; int origMenuItemSpacing; bool origButtonMenuItem; bool origMenuBarEmphasis; bool origMenuBarEmphasisBorder; bool origCustomMenuBarEmphasisColor; QColor origMenuBarEmphasisColor; bool origMenuStripe; bool origColorizeSortedHeader; bool origShadowedButtonsText; bool origSunkenShadows; bool origShadowedMenuBarText; bool origAnimProgressBar; bool origLightBorder; bool origAnimButton; bool origAnimButtonToDark; bool origDrawToolBarSeparator; bool origDrawToolBarItemSeparator; // bool origDrawFocusRect; bool origDrawTriangularExpander; bool origInputFocusHighlight; QString origButtonStyle; bool origCustomOverHighlightColor; QColor origOverHighlightColor; bool origCustomFocusHighlightColor; QColor origFocusHighlightColor; bool origCustomCheckMarkColor; QColor origCheckMarkColor; private: Ui_ConfigDialog *dialog_; }; #endif kde-style-polyester-2.0.0.orig/polyester.spec0000644000175000001440000000256211146600215020164 0ustar pinousers%define version 1.9.0 %define name polyester %define prefix %(kde4-config --prefix) Name: %{name} Version: %{version} Release: 1 Vendor: notmart@gmail.com Url: http://kdelook.org/content/show.php?content=27968 License: LGPL Summary: A glossy kde theme Group: System/GUI/KDE Packager: Marco Martin BuildRoot: %{_tmppath}/%{name}-root Source: %{name}-%{version}.tar.gz %description Tasty Menu is a KMenu replacement aiming to provide the maximum usability, or at least to be a testbed for usability concepts and ideas for a future KDE menu. %prep %setup %build cmake . -DCMAKE_INSTALL_PREFIX=%{prefix} -DCMAKE_BUILD_TYPE=release -DDATA_INSTALL_DIR=%{prefix}/share/kde4/apps -DKCFG_INSTALL_DIR=%{prefix}/share/kde4/config.kcfg -DTEMPLATES_INSTALL_DIR=%{prefix}/share/kde4/templates make %install make install DESTDIR=%{buildroot} cd %{buildroot} find . -type d | sed '1,2d;s,^\.,\%attr(-\,root\,root) \%dir ,' > /var/tmp/file.list.%{name} find . -type f | sed 's,^\.,\%attr(-\,root\,root) ,' >> /var/tmp/file.list.%{name} find . -type l | sed 's,^\.,\%attr(-\,root\,root) ,' >> /var/tmp/file.list.%{name} %clean rm -rf %{buildroot} rm -rf /var/tmp/file.list.%{name} %post -p /sbin/ldconfig %postun -p /sbin/ldconfig %files -f /var/tmp/file.list.%{name} %defattr(0644, root, root) %changelog *Wed Feb 6 2008 notmart@gmail.com 1.9.0 (2.0 beta1): -initial release kde-style-polyester-2.0.0.orig/color-schemes/0000755000175000001440000000000011146642105020024 5ustar pinouserskde-style-polyester-2.0.0.orig/color-schemes/COPYING0000644000175000001440000006133411146600215021062 0ustar pinousers GNU LIBRARY GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1991 Free Software Foundation, Inc. 59 Temple Place - Suite 330 Boston, MA 02111-1307, USA. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the library GPL. It is numbered 2 because it goes with version 2 of the ordinary GPL.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Library General Public License, applies to some specially designated Free Software Foundation software, and to any other libraries whose authors decide to use it. You can use it for your libraries, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library, or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link a program with the library, you must provide complete object files to the recipients so that they can relink them with the library, after making changes to the library and recompiling it. And you must show them these terms so they know their rights. Our method of protecting your rights has two steps: (1) copyright the library, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the library. Also, for each distributor's protection, we want to make certain that everyone understands that there is no warranty for this free library. If the library is modified by someone else and passed on, we want its recipients to know that what they have is not the original version, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that companies distributing free software will individually obtain patent licenses, thus in effect transforming the program into proprietary software. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License, which was designed for utility programs. This license, the GNU Library General Public License, applies to certain designated libraries. This license is quite different from the ordinary one; be sure to read it in full, and don't assume that anything in it is the same as in the ordinary license. The reason we have a separate public license for some libraries is that they blur the distinction we usually make between modifying or adding to a program and simply using it. Linking a program with a library, without changing the library, is in some sense simply using the library, and is analogous to running a utility program or application program. However, in a textual and legal sense, the linked executable is a combined work, a derivative of the original library, and the ordinary General Public License treats it as such. Because of this blurred distinction, using the ordinary General Public License for libraries did not effectively promote software sharing, because most developers did not use the libraries. We concluded that weaker conditions might promote sharing better. However, unrestricted linking of non-free programs would deprive the users of those programs of all benefit from the free status of the libraries themselves. This Library General Public License is intended to permit developers of non-free programs to use free libraries, while preserving your freedom as a user of such programs to change the free libraries that are incorporated in them. (We have not seen how to achieve this as regards changes in header files, but we have achieved it as regards changes in the actual functions of the Library.) The hope is that this will lead to faster development of free libraries. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, while the latter only works together with the library. Note that it is possible for a library to be covered by the ordinary General Public License rather than by this special one. GNU LIBRARY GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Library General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also compile or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. c) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. d) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Library General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! kde-style-polyester-2.0.0.orig/color-schemes/PolyesterEmerald.colors0000600000175000001440000000424211146600215024515 0ustar pinousers[ColorEffects:Disabled] Color=128,128,128 ColorAmount=0 ColorEffect=0 ContrastAmount=0.65 ContrastEffect=1 IntensityAmount=0 IntensityEffect=0 [ColorEffects:Inactive] Color=128,128,128 ColorAmount=0 ColorEffect=0 ContrastAmount=0 ContrastEffect=0 Enable=false IntensityAmount=0 IntensityEffect=0 [Colors:Button] BackgroundAlternate=218,221,215 BackgroundNormal=233,232,220 DecorationFocus=239,132,65 DecorationHover=111,204,101 ForegroundActive=255,0,0 ForegroundInactive=152,154,149 ForegroundLink=0,0,255 ForegroundNegative=107,0,0 ForegroundNeutral=0,90,95 ForegroundNormal=0,0,0 ForegroundPositive=0,95,0 ForegroundVisited=88,55,150 [Colors:Selection] BackgroundAlternate=135,202,91 BackgroundNormal=118,177,80 DecorationFocus=239,132,65 DecorationHover=111,204,101 ForegroundActive=255,0,0 ForegroundInactive=172,242,164 ForegroundLink=0,0,255 ForegroundNegative=107,0,0 ForegroundNeutral=0,90,95 ForegroundNormal=255,255,255 ForegroundPositive=0,95,0 ForegroundVisited=88,55,150 [Colors:Tooltip] BackgroundAlternate=255,248,209 BackgroundNormal=255,248,209 DecorationFocus=239,132,65 DecorationHover=111,204,101 ForegroundActive=255,0,0 ForegroundInactive=232,185,149 ForegroundLink=0,0,255 ForegroundNegative=107,0,0 ForegroundNeutral=0,90,95 ForegroundNormal=0,0,0 ForegroundPositive=0,95,0 ForegroundVisited=88,55,150 [Colors:View] BackgroundAlternate=241,241,239 BackgroundNormal=249,249,255 DecorationFocus=239,132,65 DecorationHover=111,204,101 ForegroundActive=255,0,0 ForegroundInactive=152,152,152 ForegroundLink=0,0,255 ForegroundNegative=107,0,0 ForegroundNeutral=0,90,95 ForegroundNormal=0,0,0 ForegroundPositive=0,95,0 ForegroundVisited=88,55,150 [Colors:Window] BackgroundAlternate=227,227,227 BackgroundNormal=233,232,220 DecorationFocus=239,132,65 DecorationHover=111,204,101 ForegroundActive=255,0,0 ForegroundInactive=152,152,152 ForegroundLink=0,0,255 ForegroundNegative=107,0,0 ForegroundNeutral=0,90,95 ForegroundNormal=0,0,0 ForegroundPositive=0,95,0 ForegroundVisited=88,55,150 [General] Name=Polyester Emerald shadeSortColumn=true [KDE] contrast=7 [WM] activeBackground=110,166,58 activeForeground=255,255,255 inactiveBackground=238,238,230 inactiveForeground=65,142,220 kde-style-polyester-2.0.0.orig/color-schemes/CMakeLists.txt0000644000175000001440000000032211146600215022555 0ustar pinousersproject(kstyle-polyester) install( FILES PolyesterEmerald.colors DESTINATION ${DATA_INSTALL_DIR}/color-schemes ) install( FILES PolyesterOrangeJuice.colors DESTINATION ${DATA_INSTALL_DIR}/color-schemes ) kde-style-polyester-2.0.0.orig/color-schemes/PolyesterOrangeJuice.colors0000600000175000001440000000423611146600215025342 0ustar pinousers[ColorEffects:Disabled] Color=128,128,128 ColorAmount=0 ColorEffect=0 ContrastAmount=0.65 ContrastEffect=1 IntensityAmount=0 IntensityEffect=0 [ColorEffects:Inactive] Color=128,128,128 ColorAmount=0 ColorEffect=0 ContrastAmount=0 ContrastEffect=0 Enable=false IntensityAmount=0 IntensityEffect=0 [Colors:Button] BackgroundAlternate=218,221,215 BackgroundNormal=227,227,227 DecorationFocus=239,132,65 DecorationHover=111,204,101 ForegroundActive=255,0,0 ForegroundInactive=152,154,149 ForegroundLink=0,0,255 ForegroundNegative=107,0,0 ForegroundNeutral=0,90,95 ForegroundNormal=0,0,0 ForegroundPositive=0,95,0 ForegroundVisited=88,55,150 [Colors:Selection] BackgroundAlternate=60,131,208 BackgroundNormal=231,139,0 DecorationFocus=239,132,65 DecorationHover=111,204,101 ForegroundActive=255,0,0 ForegroundInactive=231,139,0 ForegroundLink=0,0,255 ForegroundNegative=107,0,0 ForegroundNeutral=0,90,95 ForegroundNormal=255,255,255 ForegroundPositive=0,95,0 ForegroundVisited=88,55,150 [Colors:Tooltip] BackgroundAlternate=255,248,209 BackgroundNormal=255,248,209 DecorationFocus=239,132,65 DecorationHover=111,204,101 ForegroundActive=255,0,0 ForegroundInactive=232,185,149 ForegroundLink=0,0,255 ForegroundNegative=107,0,0 ForegroundNeutral=0,90,95 ForegroundNormal=0,0,0 ForegroundPositive=0,95,0 ForegroundVisited=88,55,150 [Colors:View] BackgroundAlternate=241,241,239 BackgroundNormal=249,249,255 DecorationFocus=239,132,65 DecorationHover=111,204,101 ForegroundActive=255,0,0 ForegroundInactive=152,152,152 ForegroundLink=0,0,255 ForegroundNegative=107,0,0 ForegroundNeutral=0,90,95 ForegroundNormal=0,0,0 ForegroundPositive=0,95,0 ForegroundVisited=88,55,150 [Colors:Window] BackgroundAlternate=227,227,227 BackgroundNormal=227,227,227 DecorationFocus=239,132,65 DecorationHover=111,204,101 ForegroundActive=255,0,0 ForegroundInactive=152,152,152 ForegroundLink=0,0,255 ForegroundNegative=107,0,0 ForegroundNeutral=0,90,95 ForegroundNormal=0,0,0 ForegroundPositive=0,95,0 ForegroundVisited=88,55,150 [General] Name=Polyester Orange Juice shadeSortColumn=true [KDE] contrast=7 [WM] activeBackground=225,145,5 activeForeground=255,255,255 inactiveBackground=238,238,230 inactiveForeground=0,0,0 kde-style-polyester-2.0.0.orig/ChangeLog0000644000175000001440000000053711146600215017034 0ustar pinousers2.0 -some fixes in build files, links less stuff -fixed icons on tabbars -fixed a bug in kcalc 2.0 beta2 -built with cmake is a kstyle, built with qmake is a plain qt style -some fixes here and there -corrected a crash with qt webkit -corrected a graphical glitch with textboxes in Plasma 2.0 beta1: -various visual fixes -support for translations kde-style-polyester-2.0.0.orig/makedist.sh0000755000175000001440000000031011146600215017407 0ustar pinousers#!/bin/sh mkdir build cd build make package_source cp *.tar.bz2 /usr/src/packages/SOURCES rpmbuild -bb ../polyester.spec mv /usr/src/packages/RPMS/i586/*.rpm . rm /usr/src/packages/SOURCES/*.tar.bz2 kde-style-polyester-2.0.0.orig/COPYING0000644000175000001440000006133411146600215016317 0ustar pinousers GNU LIBRARY GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1991 Free Software Foundation, Inc. 59 Temple Place - Suite 330 Boston, MA 02111-1307, USA. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the library GPL. It is numbered 2 because it goes with version 2 of the ordinary GPL.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Library General Public License, applies to some specially designated Free Software Foundation software, and to any other libraries whose authors decide to use it. You can use it for your libraries, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library, or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link a program with the library, you must provide complete object files to the recipients so that they can relink them with the library, after making changes to the library and recompiling it. And you must show them these terms so they know their rights. Our method of protecting your rights has two steps: (1) copyright the library, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the library. Also, for each distributor's protection, we want to make certain that everyone understands that there is no warranty for this free library. If the library is modified by someone else and passed on, we want its recipients to know that what they have is not the original version, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that companies distributing free software will individually obtain patent licenses, thus in effect transforming the program into proprietary software. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License, which was designed for utility programs. This license, the GNU Library General Public License, applies to certain designated libraries. This license is quite different from the ordinary one; be sure to read it in full, and don't assume that anything in it is the same as in the ordinary license. The reason we have a separate public license for some libraries is that they blur the distinction we usually make between modifying or adding to a program and simply using it. Linking a program with a library, without changing the library, is in some sense simply using the library, and is analogous to running a utility program or application program. However, in a textual and legal sense, the linked executable is a combined work, a derivative of the original library, and the ordinary General Public License treats it as such. Because of this blurred distinction, using the ordinary General Public License for libraries did not effectively promote software sharing, because most developers did not use the libraries. We concluded that weaker conditions might promote sharing better. However, unrestricted linking of non-free programs would deprive the users of those programs of all benefit from the free status of the libraries themselves. This Library General Public License is intended to permit developers of non-free programs to use free libraries, while preserving your freedom as a user of such programs to change the free libraries that are incorporated in them. (We have not seen how to achieve this as regards changes in header files, but we have achieved it as regards changes in the actual functions of the Library.) The hope is that this will lead to faster development of free libraries. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, while the latter only works together with the library. Note that it is possible for a library to be covered by the ordinary General Public License rather than by this special one. GNU LIBRARY GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Library General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also compile or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. c) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. d) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Library General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! kde-style-polyester-2.0.0.orig/po/0000755000175000001440000000000011146642105015677 5ustar pinouserskde-style-polyester-2.0.0.orig/po/pl/0000755000175000001440000000000011146642105016312 5ustar pinouserskde-style-polyester-2.0.0.orig/po/pl/kstyle_polyester_config.po0000644000175000001440000051655311146600215023633 0ustar pinousers# translation of pl.po to Polish # Copyright (C) 2007 # This file is distributed under the same license as the package. # # Tomasz Argasiński , 2007, 2008. msgid "" msgstr "" "Project-Id-Version: pl\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-17 18:08+0100\n" "PO-Revision-Date: 2008-01-13 20:28+0100\n" "Last-Translator: Tomasz Argasiński \n" "Language-Team: Polish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.4\n" #: style/config/ui_configdialog.h:604 msgid "Form1" msgstr "" #: style/config/ui_configdialog.h:605 msgid "Buttons" msgstr "Przyciski" #: style/config/ui_configdialog.h:606 msgid "Animations" msgstr "Animacje" #: style/config/ui_configdialog.h:607 msgid "Lighter &button borders" msgstr "Cieńsze &brzegi przycisków" #: style/config/ui_configdialog.h:608 style/config/ui_configdialog.h:667 msgid "Alt+B" msgstr "Alt+B" #: style/config/ui_configdialog.h:609 msgid "Animate buttons to a &darker color" msgstr "Animuj przyciski do &ciemniejszego koloru" #: style/config/ui_configdialog.h:610 style/config/ui_configdialog.h:674 #: style/config/ui_configdialog.h:679 msgid "Alt+D" msgstr "Alt+C" #: style/config/ui_configdialog.h:611 msgid "&Use shadowed button text" msgstr "&Używaj cieniowanego tekstu przycisków" #: style/config/ui_configdialog.h:612 style/config/ui_configdialog.h:665 msgid "Alt+U" msgstr "Alt+U" #: style/config/ui_configdialog.h:614 msgid "Glass buttons" msgstr "Szklane przyciski" #: style/config/ui_configdialog.h:615 msgid "Gradients" msgstr "Gradienty" #: style/config/ui_configdialog.h:616 msgid "Reverse gradients" msgstr "Odwrócone gradienty" #: style/config/ui_configdialog.h:617 msgid "Flat" msgstr "Płaski" #: style/config/ui_configdialog.h:619 msgid "Ani&mate buttons" msgstr "Ani&mowane przyciski" #: style/config/ui_configdialog.h:620 style/config/ui_configdialog.h:661 msgid "Alt+M" msgstr "Alt+M" #: style/config/ui_configdialog.h:621 msgid "&Animate progress bars" msgstr "&Animowany pasek postępu" #: style/config/ui_configdialog.h:622 style/config/ui_configdialog.h:663 msgid "Alt+A" msgstr "Alt+A" #: style/config/ui_configdialog.h:623 msgid "Button style:" msgstr "Styl przycisków:" #: style/config/ui_configdialog.h:624 msgid "Scrollbar size:" msgstr "Rozmiar paska przewijania:" #: style/config/ui_configdialog.h:625 msgid "&Colored scrollbars" msgstr "&Kolorowe paski przewijania" #: style/config/ui_configdialog.h:626 style/config/ui_configdialog.h:669 #: style/config/ui_configdialog.h:681 msgid "Alt+C" msgstr "Alt+K" #: style/config/ui_configdialog.h:627 msgid "&Scrollbar handle lines" msgstr "Linie uchwytów pa&sków przewijania" #: style/config/ui_configdialog.h:628 msgid "Alt+S" msgstr "Alt+S" #: style/config/ui_configdialog.h:630 msgid "KDE style" msgstr "Styl KDE" #: style/config/ui_configdialog.h:631 msgid "Platinum style" msgstr "Styl Platinum" #: style/config/ui_configdialog.h:632 msgid "Next style" msgstr "Styl Next" #: style/config/ui_configdialog.h:633 msgid "Windows style" msgstr "Styl Windows" #: style/config/ui_configdialog.h:634 #, fuzzy msgid "No buttons" msgstr "Przyciski" #: style/config/ui_configdialog.h:636 msgid "Scrollbar Style:" msgstr "Styl paska przewijania:" #: style/config/ui_configdialog.h:637 msgid "Scrollbars" msgstr "Paski przewijania" #: style/config/ui_configdialog.h:641 msgid "Chec&kmark:" msgstr "Znacze&k wyboru:" #: style/config/ui_configdialog.h:642 msgid "Mouseo&ver highlight:" msgstr "Po&dświetlenie elementów pod kursorem:" #: style/config/ui_configdialog.h:646 msgid "Te&xt input highlight:" msgstr "Podświe&tlenie pola wprowadzania tekstu" #: style/config/ui_configdialog.h:650 msgid "Custom colors" msgstr "Kolory użytkownika" #: style/config/ui_configdialog.h:651 style/config/ui_configdialog.h:657 msgid " pixels" msgstr "pikseli" #: style/config/ui_configdialog.h:652 msgid "&Lower case buttons text" msgstr "&Tekst przycisków małymi literami" #: style/config/ui_configdialog.h:653 msgid "Alt+L" msgstr "Alt+T" #: style/config/ui_configdialog.h:654 msgid "&General" msgstr "O&gólne" #: style/config/ui_configdialog.h:655 msgid "Menus" msgstr "Menu" #: style/config/ui_configdialog.h:656 msgid "Menu items spacing:" msgstr "Odstępy elementów menu:" #: style/config/ui_configdialog.h:658 msgid "Button-li&ke menu items" msgstr "Elementy menu jak &przyciski" #: style/config/ui_configdialog.h:659 msgid "Alt+K" msgstr "Alt+P" #: style/config/ui_configdialog.h:660 msgid "&Menu stripe" msgstr "&Pasek w menu" #: style/config/ui_configdialog.h:662 msgid "Sh&adowed menubar text" msgstr "&Cieniowany tekst paska menu" #: style/config/ui_configdialog.h:664 msgid "Men&ubar emphasis" msgstr "&Emfaza paska menu" #: style/config/ui_configdialog.h:666 msgid "Menubar Empasis &border" msgstr "&Krawędź emfazy paska menu" #: style/config/ui_configdialog.h:668 msgid "&Custom color:" msgstr "&Kolor użytkownika:" #: style/config/ui_configdialog.h:672 msgid "Toolbars" msgstr "Paski narzędzi" #: style/config/ui_configdialog.h:673 msgid "&Draw toolbar separator" msgstr "Rysuj separatory o&ddzielające paski narzędzi" #: style/config/ui_configdialog.h:675 msgid "Draw toolbar &item separator" msgstr "&Rysuj separatory oddzielające elementy paska narzędzi" #: style/config/ui_configdialog.h:676 style/config/ui_configdialog.h:688 msgid "Alt+I" msgstr "Alt+I" #: style/config/ui_configdialog.h:677 msgid "Misc" msgstr "Różne" #: style/config/ui_configdialog.h:678 msgid "&Draw statusbar frame" msgstr "&Rysuj ramkę paska statusu" #: style/config/ui_configdialog.h:680 msgid "&Centered tabbars" msgstr "&Wyśrodkowane paski kart" #: style/config/ui_configdialog.h:682 msgid "&Highlight selected tab" msgstr "&Podświetlaj wybraną kartę" #: style/config/ui_configdialog.h:683 msgid "Alt+H" msgstr "Alt+P" #: style/config/ui_configdialog.h:684 msgid "&Shadows for sunken widgets" msgstr "" #: style/config/ui_configdialog.h:685 msgid "Triangular tree e&xpander" msgstr "Trójkątne elementy &rozwijające drzewo" #: style/config/ui_configdialog.h:686 msgid "Alt+X" msgstr "Alt+R" #: style/config/ui_configdialog.h:687 msgid "H&ighlight focused text input fields" msgstr "Podśw&ietlaj zaznaczone pola wprowadzania tekstu" #: style/config/ui_configdialog.h:689 msgid "Colori&ze sorted header in listviews" msgstr "Koloruj &posortowanie nagłówki w widoku listy" #: style/config/ui_configdialog.h:690 msgid "Alt+Z" msgstr "Alt+P" #: style/config/ui_configdialog.h:691 msgid "&Advanced" msgstr "Z&aawansowane" #: style/config/ui_configdialog.h:692 msgid "" "\n" "

Polyester 1.90\n" "

Copyright " "© 2005-2006 Marco Martin
notmart@gmail.com
http://www.notmart." "org

\n" "

based on " "Plastik widget style for KDE 3
Copyright (C) 2003 Sandro Giessl

\n" "

Polyester " "window decoration derived from Smooth Blend Copyright (c) 2005 Ryan Nickell\n" "

Additional thanks\n" "

Some code " "and ideas from

\n" "
  • Linspire Clear by Sandro Giessl
  • \n" "
  • Lipstik by Patrice Tremblay
  • \n" "
  • Baghira and Bespin by Thomas Luebking
  • \n" "
  • Trolltech winXP style and Daniel Molkentin for the password dialog
  • \n" "
  • Skandale by Christoph Feck
" msgstr "" #: style/config/ui_configdialog.h:708 msgid "Ab&out" msgstr "&O stylu Polyester" #: style/config/ui_configdialog.h:709 msgid "" "\n" "

GNU " "LIBRARY GENERAL PUBLIC LICENSE

\n" "

\t\t " "Version 2, June 1991

\n" "

\n" "

Copyright " "(C) 1991 Free Software Foundation, Inc.

\n" "

51 Franklin Street, Fifth Floor

\n" "

Boston, MA 02110-1301, USA.

\n" "

Everyone " "is permitted to copy and distribute verbatim copies

\n" "

of this " "license document, but changing it is not allowed.

\n" "

\n" "

[This is " "the first released version of the library GPL. It is

\n" "

numbered " "2 because it goes with version 2 of the ordinary GPL.]

\n" "

\n" "

\t\t\t " "Preamble

\n" "

\n" "

The " "licenses for most software are designed to take away your

\n" "

freedom to " "share and change it. By contrast, the GNU General Public

\n" "

Licenses " "are intended to guarantee your freedom to share and change

\n" "

free " "software--to make sure the software is free for all its users.

\n" "

\n" "

This " "license, the Library General Public License, applies to some

\n" "

specially " "designated Free Software Foundation software, and to any

\n" "

other " "libraries whose authors decide to use it. You can use it for

\n" "

your " "libraries, too.

\n" "

\n" "

When we " "speak of free software, we are referring to freedom, not

\n" "

price. " "Our General Public Licenses are designed to make sure that you

\n" "

have the " "freedom to distribute copies of free software (and charge for

\n" "

this " "service if you wish), that you receive source code or can get it

\n" "

if you " "want it, that you can change the software or use pieces of it

\n" "

in new " "free programs; and that you know you can do these things.

\n" "

\n" "

To " "protect your rights, we need to make restrictions that forbid

\n" "

anyone to " "deny you these rights or to ask you to surrender the rights.

\n" "

These " "restrictions translate to certain responsibilities for you if

\n" "

you " "distribute copies of the library, or if you modify it.

\n" "

\n" "

For " "example, if you distribute copies of the library, whether gratis

\n" "

or for a " "fee, you must give the recipients all the rights that we gave

\n" "

you. You " "must make sure that they, too, receive or can get the source

\n" "

code. If " "you link a program with the library, you must provide

\n" "

complete " "object files to the recipients so that they can relink them

\n" "

with the " "library, after making changes to the library and recompiling

\n" "

it. And " "you must show them these terms so they know their rights.

\n" "

\n" "

Our " "method of protecting your rights has two steps: (1) copyright

\n" "

the " "library, and (2) offer you this license which gives you legal

\n" "

permission " "to copy, distribute and/or modify the library.

\n" "

\n" "

Also, " "for each distributor's protection, we want to make certain

\n" "

that " "everyone understands that there is no warranty for this free

\n" "

library. " "If the library is modified by someone else and passed on, we

\n" "

want its " "recipients to know that what they have is not the original

\n" "

version, " "so that any problems introduced by others will not reflect on

\n" "

the " "original authors' reputations.

\n" "

\n" "

Finally, " "any free program is threatened constantly by software

\n" "

patents. " "We wish to avoid the danger that companies distributing free

\n" "

software " "will individually obtain patent licenses, thus in effect

\n" "

transforming the program into proprietary software. To prevent this,\n" "

we have " "made it clear that any patent must be licensed for everyone's

\n" "

free use " "or not licensed at all.

\n" "

\n" "

Most GNU " "software, including some libraries, is covered by the ordinary

\n" "

GNU " "General Public License, which was designed for utility programs. This

\n" "

license, " "the GNU Library General Public License, applies to certain

\n" "

designated " "libraries. This license is quite different from the ordinary

\n" "

one; be " "sure to read it in full, and don't assume that anything in it is

\n" "

the same " "as in the ordinary license.

\n" "

\n" "

The " "reason we have a separate public license for some libraries is that

\n" "

they blur " "the distinction we usually make between modifying or adding to a

\n" "

program " "and simply using it. Linking a program with a library, without

\n" "

changing " "the library, is in some sense simply using the library, and is

\n" "

analogous " "to running a utility program or application program. However, in

\n" "

a textual " "and legal sense, the linked executable is a combined work, a

\n" "

derivative " "of the original library, and the ordinary General Public License

\n" "

treats it " "as such.

\n" "

\n" "

Because " "of this blurred distinction, using the ordinary General

\n" "

Public " "License for libraries did not effectively promote software

\n" "

sharing, " "because most developers did not use the libraries. We

\n" "

concluded " "that weaker conditions might promote sharing better.

\n" "

\n" "

However, " "unrestricted linking of non-free programs would deprive the

\n" "

users of " "those programs of all benefit from the free status of the

\n" "

libraries " "themselves. This Library General Public License is intended to

\n" "

permit " "developers of non-free programs to use free libraries, while

\n" "

preserving " "your freedom as a user of such programs to change the free

\n" "

libraries " "that are incorporated in them. (We have not seen how to achieve

\n" "

this as " "regards changes in header files, but we have achieved it as regards

\n" "

changes in " "the actual functions of the Library.) The hope is that this

\n" "

will lead " "to faster development of free libraries.

\n" "

\n" "

The " "precise terms and conditions for copying, distribution and

\n" "

modification follow. Pay close attention to the difference between a\n" "

\"work " "based on the library\" and a \"work that uses the library\". The

\n" "

former " "contains code derived from the library, while the latter only

\n" "

works " "together with the library.

\n" "

\n" "

Note " "that it is possible for a library to be covered by the ordinary

\n" "

General " "Public License rather than by this special one.

\n" "

\n" "

\t\t GNU " "LIBRARY GENERAL PUBLIC LICENSE

\n" "

TERMS " "AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

\n" "

\n" "

0. This " "License Agreement applies to any software library which

\n" "

contains a " "notice placed by the copyright holder or other authorized

\n" "

party " "saying it may be distributed under the terms of this Library

\n" "

General " "Public License (also called \"this License\"). Each licensee is

\n" "

addressed " "as \"you\".

\n" "

\n" "

A " "\"library\" means a collection of software functions and/or data

\n" "

prepared " "so as to be conveniently linked with application programs

\n" "

(which use " "some of those functions and data) to form executables.

\n" "

\n" "

The " "\"Library\", below, refers to any such software library or work

\n" "

which has " "been distributed under these terms. A \"work based on the

\n" "

Library\" " "means either the Library or any derivative work under

\n" "

copyright " "law: that is to say, a work containing the Library or a

\n" "

portion of " "it, either verbatim or with modifications and/or translated

\n" "

straightforwardly into another language. (Hereinafter, translation is\n" "

included " "without limitation in the term \"modification\".)

\n" "

\n" "

\"Source " "code\" for a work means the preferred form of the work for

\n" "

making " "modifications to it. For a library, complete source code means

\n" "

all the " "source code for all modules it contains, plus any associated

\n" "

interface " "definition files, plus the scripts used to control compilation

\n" "

and " "installation of the library.

\n" "

\n" "

" "Activities other than copying, distribution and modification are not

\n" "

covered by " "this License; they are outside its scope. The act of

\n" "

running a " "program using the Library is not restricted, and output from

\n" "

such a " "program is covered only if its contents constitute a work based

\n" "

on the " "Library (independent of the use of the Library in a tool for

\n" "

writing " "it). Whether that is true depends on what the Library does

\n" "

and what " "the program that uses the Library does.

\n" "

\n" "

1. You " "may copy and distribute verbatim copies of the Library's

\n" "

complete " "source code as you receive it, in any medium, provided that

\n" "

you " "conspicuously and appropriately publish on each copy an

\n" "

appropriate copyright notice and disclaimer of warranty; keep intact

\n" "

all the " "notices that refer to this License and to the absence of any

\n" "

warranty; " "and distribute a copy of this License along with the

\n" "

Library.\n" "

\n" "

You may " "charge a fee for the physical act of transferring a copy,

\n" "

and you " "may at your option offer warranty protection in exchange for a

\n" "

fee.

\n" "

\n" "

2. You " "may modify your copy or copies of the Library or any portion

\n" "

of it, " "thus forming a work based on the Library, and copy and

\n" "

distribute " "such modifications or work under the terms of Section 1

\n" "

above, " "provided that you also meet all of these conditions:

\n" "

\n" "

a) The " "modified work must itself be a software library.

\n" "

\n" "

b) You " "must cause the files modified to carry prominent notices

\n" "

" "stating that you changed the files and the date of any change.

\n" "

\n" "

c) You " "must cause the whole of the work to be licensed at no

\n" "

charge " "to all third parties under the terms of this License.

\n" "

\n" "

d) If " "a facility in the modified Library refers to a function or a

\n" "

table " "of data to be supplied by an application program that uses

\n" "

the " "facility, other than as an argument passed when the facility

\n" "

is " "invoked, then you must make a good faith effort to ensure that,

\n" "

in the " "event an application does not supply such function or

\n" "

table, " "the facility still operates, and performs whatever part of

\n" "

its " "purpose remains meaningful.

\n" "

\n" "

(For " "example, a function in a library to compute square roots has

\n" "

a " "purpose that is entirely well-defined independent of the

\n" "

" "application. Therefore, Subsection 2d requires that any

\n" "

" "application-supplied function or table used by this function must

\n" "

be " "optional: if the application does not supply it, the square

\n" "

root " "function must still compute square roots.)

\n" "

\n" "

These " "requirements apply to the modified work as a whole. If

\n" "

identifiable sections of that work are not derived from the Library,

\n" "

and can be " "reasonably considered independent and separate works in

\n" "

themselves, then this License, and its terms, do not apply to those

\n" "

sections " "when you distribute them as separate works. But when you

\n" "

distribute " "the same sections as part of a whole which is a work based

\n" "

on the " "Library, the distribution of the whole must be on the terms of

\n" "

this " "License, whose permissions for other licensees extend to the

\n" "

entire " "whole, and thus to each and every part regardless of who wrote

\n" "

it.

\n" "

\n" "

Thus, it " "is not the intent of this section to claim rights or contest

\n" "

your " "rights to work written entirely by you; rather, the intent is to

\n" "

exercise " "the right to control the distribution of derivative or

\n" "

collective " "works based on the Library.

\n" "

\n" "

In " "addition, mere aggregation of another work not based on the Library

\n" "

with the " "Library (or with a work based on the Library) on a volume of

\n" "

a storage " "or distribution medium does not bring the other work under

\n" "

the scope " "of this License.

\n" "

\n" "

3. You " "may opt to apply the terms of the ordinary GNU General Public

\n" "

License " "instead of this License to a given copy of the Library. To do

\n" "

this, you " "must alter all the notices that refer to this License, so

\n" "

that they " "refer to the ordinary GNU General Public License, version 2,

\n" "

instead of " "to this License. (If a newer version than version 2 of the

\n" "

ordinary " "GNU General Public License has appeared, then you can specify

\n" "

that " "version instead if you wish.) Do not make any other change in

\n" "

these " "notices.

\n" "

\n" "

Once " "this change is made in a given copy, it is irreversible for

\n" "

that copy, " "so the ordinary GNU General Public License applies to all

\n" "

subsequent " "copies and derivative works made from that copy.

\n" "

\n" "

This " "option is useful when you wish to copy part of the code of

\n" "

the " "Library into a program that is not a library.

\n" "

\n" "

4. You " "may copy and distribute the Library (or a portion or

\n" "

derivative " "of it, under Section 2) in object code or executable form

\n" "

under the " "terms of Sections 1 and 2 above provided that you accompany

\n" "

it with " "the complete corresponding machine-readable source code, which

\n" "

must be " "distributed under the terms of Sections 1 and 2 above on a

\n" "

medium " "customarily used for software interchange.

\n" "

\n" "

If " "distribution of object code is made by offering access to copy

\n" "

from a " "designated place, then offering equivalent access to copy the

\n" "

source " "code from the same place satisfies the requirement to

\n" "

distribute " "the source code, even though third parties are not

\n" "

compelled " "to copy the source along with the object code.

\n" "

\n" "

5. A " "program that contains no derivative of any portion of the

\n" "

Library, " "but is designed to work with the Library by being compiled or

\n" "

linked " "with it, is called a \"work that uses the Library\". Such a

\n" "

work, in " "isolation, is not a derivative work of the Library, and

\n" "

therefore " "falls outside the scope of this License.

\n" "

\n" "

However, " "linking a \"work that uses the Library\" with the Library

\n" "

creates an " "executable that is a derivative of the Library (because it

\n" "

contains " "portions of the Library), rather than a \"work that uses the

\n" "

library" "\". The executable is therefore covered by this License.

\n" "

Section 6 " "states terms for distribution of such executables.

\n" "

\n" "

When a " "\"work that uses the Library\" uses material from a header file

\n" "

that is " "part of the Library, the object code for the work may be a

\n" "

derivative " "work of the Library even though the source code is not.

\n" "

Whether " "this is true is especially significant if the work can be

\n" "

linked " "without the Library, or if the work is itself a library. The

\n" "

threshold " "for this to be true is not precisely defined by law.

\n" "

\n" "

If such " "an object file uses only numerical parameters, data

\n" "

structure " "layouts and accessors, and small macros and small inline

\n" "

functions " "(ten lines or less in length), then the use of the object

\n" "

file is " "unrestricted, regardless of whether it is legally a derivative

\n" "

work. " "(Executables containing this object code plus portions of the

\n" "

Library " "will still fall under Section 6.)

\n" "

\n" "

" "Otherwise, if the work is a derivative of the Library, you may

\n" "

distribute " "the object code for the work under the terms of Section 6.

\n" "

Any " "executables containing that work also fall under Section 6,

\n" "

whether or " "not they are linked directly with the Library itself.

\n" "

\n" "

6. As an " "exception to the Sections above, you may also compile or

\n" "

link a " "\"work that uses the Library\" with the Library to produce a

\n" "

work " "containing portions of the Library, and distribute that work

\n" "

under " "terms of your choice, provided that the terms permit

\n" "

modification of the work for the customer's own use and reverse

\n" "

engineering for debugging such modifications.

\n" "

\n" "

You must " "give prominent notice with each copy of the work that the

\n" "

Library is " "used in it and that the Library and its use are covered by

\n" "

this " "License. You must supply a copy of this License. If the work

\n" "

during " "execution displays copyright notices, you must include the

\n" "

copyright " "notice for the Library among them, as well as a reference

\n" "

directing " "the user to the copy of this License. Also, you must do one

\n" "

of these " "things:

\n" "

\n" "

a) " "Accompany the work with the complete corresponding

\n" "

" "machine-readable source code for the Library including whatever

\n" "

" "changes were used in the work (which must be distributed under

\n" "

" "Sections 1 and 2 above); and, if the work is an executable linked

\n" "

with " "the Library, with the complete machine-readable \"work that

\n" "

uses " "the Library\", as object code and/or source code, so that the

\n" "

user " "can modify the Library and then relink to produce a modified

\n" "

" "executable containing the modified Library. (It is understood

\n" "

that " "the user who changes the contents of definitions files in the

\n" "

" "Library will not necessarily be able to recompile the application

\n" "

to use " "the modified definitions.)

\n" "

\n" "

b) " "Accompany the work with a written offer, valid for at

\n" "

least " "three years, to give the same user the materials

\n" "

" "specified in Subsection 6a, above, for a charge no more

\n" "

than " "the cost of performing this distribution.

\n" "

\n" "

c) If " "distribution of the work is made by offering access to copy

\n" "

from a " "designated place, offer equivalent access to copy the above

\n" "

" "specified materials from the same place.

\n" "

\n" "

d) " "Verify that the user has already received a copy of these

\n" "

" "materials or that you have already sent this user a copy.

\n" "

\n" "

For an " "executable, the required form of the \"work that uses the

\n" "

Library\" " "must include any data and utility programs needed for

\n" "

reproducing the executable from it. However, as a special exception,\n" "

the source " "code distributed need not include anything that is normally

\n" "

distributed (in either source or binary form) with the major

\n" "

components " "(compiler, kernel, and so on) of the operating system on

\n" "

which the " "executable runs, unless that component itself accompanies

\n" "

the " "executable.

\n" "

\n" "

It may " "happen that this requirement contradicts the license

\n" "

restrictions of other proprietary libraries that do not normally

\n" "

accompany " "the operating system. Such a contradiction means you cannot

\n" "

use both " "them and the Library together in an executable that you

\n" "

distribute." "

\n" "

\n" "

7. You " "may place library facilities that are a work based on the

\n" "

Library " "side-by-side in a single library together with other library

\n" "

facilities " "not covered by this License, and distribute such a combined

\n" "

library, " "provided that the separate distribution of the work based on

\n" "

the " "Library and of the other library facilities is otherwise

\n" "

permitted, " "and provided that you do these two things:

\n" "

\n" "

a) " "Accompany the combined library with a copy of the same work

\n" "

based " "on the Library, uncombined with any other library

\n" "

" "facilities. This must be distributed under the terms of the

\n" "

" "Sections above.

\n" "

\n" "

b) " "Give prominent notice with the combined library of the fact

\n" "

that " "part of it is a work based on the Library, and explaining

\n" "

where " "to find the accompanying uncombined form of the same work.

\n" "

\n" "

8. You " "may not copy, modify, sublicense, link with, or distribute

\n" "

the " "Library except as expressly provided under this License. Any

\n" "

attempt " "otherwise to copy, modify, sublicense, link with, or

\n" "

distribute " "the Library is void, and will automatically terminate your

\n" "

rights " "under this License. However, parties who have received copies,

\n" "

or rights, " "from you under this License will not have their licenses

\n" "

terminated " "so long as such parties remain in full compliance.

\n" "

\n" "

9. You " "are not required to accept this License, since you have not

\n" "

signed " "it. However, nothing else grants you permission to modify or

\n" "

distribute " "the Library or its derivative works. These actions are

\n" "

prohibited " "by law if you do not accept this License. Therefore, by

\n" "

modifying " "or distributing the Library (or any work based on the

\n" "

Library), " "you indicate your acceptance of this License to do so, and

\n" "

all its " "terms and conditions for copying, distributing or modifying

\n" "

the " "Library or works based on it.

\n" "

\n" "

10. Each " "time you redistribute the Library (or any work based on the

\n" "

Library), " "the recipient automatically receives a license from the

\n" "

original " "licensor to copy, distribute, link with or modify the Library

\n" "

subject to " "these terms and conditions. You may not impose any further

\n" "

restrictions on the recipients' exercise of the rights granted herein.\n" "

You are " "not responsible for enforcing compliance by third parties to

\n" "

this " "License.

\n" "

\n" "

11. If, " "as a consequence of a court judgment or allegation of patent

\n" "

infringement or for any other reason (not limited to patent issues),

\n" "

conditions " "are imposed on you (whether by court order, agreement or

\n" "

otherwise) " "that contradict the conditions of this License, they do not

\n" "

excuse you " "from the conditions of this License. If you cannot

\n" "

distribute " "so as to satisfy simultaneously your obligations under this

\n" "

License " "and any other pertinent obligations, then as a consequence you

\n" "

may not " "distribute the Library at all. For example, if a patent

\n" "

license " "would not permit royalty-free redistribution of the Library by

\n" "

all those " "who receive copies directly or indirectly through you, then

\n" "

the only " "way you could satisfy both it and this License would be to

\n" "

refrain " "entirely from distribution of the Library.

\n" "

\n" "

If any " "portion of this section is held invalid or unenforceable under any

\n" "

particular " "circumstance, the balance of the section is intended to apply,

\n" "

and the " "section as a whole is intended to apply in other circumstances.

\n" "

\n" "

It is not " "the purpose of this section to induce you to infringe any

\n" "

patents or " "other property right claims or to contest validity of any

\n" "

such " "claims; this section has the sole purpose of protecting the

\n" "

integrity " "of the free software distribution system which is

\n" "

implemented by public license practices. Many people have made

\n" "

generous " "contributions to the wide range of software distributed

\n" "

through " "that system in reliance on consistent application of that

\n" "

system; it " "is up to the author/donor to decide if he or she is willing

\n" "

to " "distribute software through any other system and a licensee cannot

\n" "

impose " "that choice.

\n" "

\n" "

This " "section is intended to make thoroughly clear what is believed to

\n" "

be a " "consequence of the rest of this License.

\n" "

\n" "

12. If " "the distribution and/or use of the Library is restricted in

\n" "

certain " "countries either by patents or by copyrighted interfaces, the

\n" "

original " "copyright holder who places the Library under this License may add

\n" "

an " "explicit geographical distribution limitation excluding those countries,\n" "

so that " "distribution is permitted only in or among countries not thus

\n" "

excluded. " "In such case, this License incorporates the limitation as if

\n" "

written in " "the body of this License.

\n" "

\n" "

13. The " "Free Software Foundation may publish revised and/or new

\n" "

versions " "of the Library General Public License from time to time.

\n" "

Such new " "versions will be similar in spirit to the present version,

\n" "

but may " "differ in detail to address new problems or concerns.

\n" "

\n" "

Each " "version is given a distinguishing version number. If the Library

\n" "

specifies " "a version number of this License which applies to it and

\n" "

\"any " "later version\", you have the option of following the terms and

\n" "

conditions " "either of that version or of any later version published by

\n" "

the Free " "Software Foundation. If the Library does not specify a

\n" "

license " "version number, you may choose any version ever published by

\n" "

the Free " "Software Foundation.

\n" "

\n" "

14. If " "you wish to incorporate parts of the Library into other free

\n" "

programs " "whose distribution conditions are incompatible with these,

\n" "

write to " "the author to ask for permission. For software which is

\n" "

copyrighted by the Free Software Foundation, write to the Free

\n" "

Software " "Foundation; we sometimes make exceptions for this. Our

\n" "

decision " "will be guided by the two goals of preserving the free status

\n" "

of all " "derivatives of our free software and of promoting the sharing

\n" "

and reuse " "of software generally.

\n" "

\n" "

\t\t\t " "NO WARRANTY

\n" "

\n" "

15. " "BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO

\n" "

WARRANTY " "FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.

\n" "

EXCEPT " "WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR

\n" "

OTHER " "PARTIES PROVIDE THE LIBRARY \"AS IS\" WITHOUT WARRANTY OF ANY

\n" "

KIND, " "EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE

\n" "

IMPLIED " "WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR

\n" "

PURPOSE. " "THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE

\n" "

LIBRARY IS " "WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME

\n" "

THE COST " "OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

\n" "

\n" "

16. IN " "NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN

\n" "

WRITING " "WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY

\n" "

AND/OR " "REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU

\n" "

FOR " "DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR

\n" "

CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE

\n" "

LIBRARY " "(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING

\n" "

RENDERED " "INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A

\n" "

FAILURE OF " "THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF

\n" "

SUCH " "HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH

\n" "

DAMAGES.\n" "

\n" "

\t\t " "END OF TERMS AND CONDITIONS

\n" "

\n" "

" "How to Apply These Terms to Your New Libraries

\n" "

\n" "

If you " "develop a new library, and you want it to be of the greatest

\n" "

possible " "use to the public, we recommend making it free software that

\n" "

everyone " "can redistribute and change. You can do so by permitting

\n" "

redistribution under these terms (or, alternatively, under the terms of " "the

\n" "

ordinary " "General Public License).

\n" "

\n" "

To apply " "these terms, attach the following notices to the library. It is

\n" "

safest to " "attach them to the start of each source file to most effectively

\n" "

convey the " "exclusion of warranty; and each file should have at least the

\n" "

\"copyright" "\" line and a pointer to where the full notice is found.

\n" "

\n" "

<" "one line to give the library's name and a brief idea of what it does.>\n" "

" "Copyright (C) <year> <name of author>

\n" "

\n" "

This " "library is free software; you can redistribute it and/or

\n" "

modify " "it under the terms of the GNU Lesser General Public

\n" "

" "License as published by the Free Software Foundation; either

\n" "

" "version 2 of the License, or (at your option) any later version.

\n" "

\n" "

This " "library is distributed in the hope that it will be useful,

\n" "

but " "WITHOUT ANY WARRANTY; without even the implied warranty of

\n" "

" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU

\n" "

Lesser " "General Public License for more details.

\n" "

\n" "

You " "should have received a copy of the GNU Lesser General Public

\n" "

" "License along with this library; if not, write to the Free Software

\n" "

" "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 " "USA

\n" "

\n" "

Also add " "information on how to contact you by electronic and paper mail.

\n" "

\n" "

You should " "also get your employer (if you work as a programmer) or your

\n" "

school, if " "any, to sign a \"copyright disclaimer\" for the library, if

\n" "

necessary. Here is a sample; alter the names:

\n" "

\n" "

" "Yoyodyne, Inc., hereby disclaims all copyright interest in the

\n" "

library " "`Frob' (a library for tweaking knobs) written by James Random Hacker.

\n" "

\n" "

<" "signature of Ty Coon>, 1 April 1990

\n" "

Ty Coon, " "President of Vice

\n" "

\n" "

That's all " "there is to it!

" msgstr "" #: style/config/ui_configdialog.h:1288 msgid "Lice&nse agreement" msgstr "U&mowa licencyjna" #~ msgid "Config Dialog" #~ msgstr "Okno konfiguracji" #~ msgid "Titleb&ar" #~ msgstr "P&asek tytułu" #~ msgid "1 pixel" #~ msgstr "1 piksel" #~ msgid "&Use shadowed text" #~ msgstr "&Używaj cieniowanego tekstu" #~ msgid "" #~ "Check this option if you want the titlebar text to have a 3D look with a " #~ "shadow behind it." #~ msgstr "" #~ "Zaznacz ŧę opcję jeśli chcesz aby tekst paska tytułu miał wygląd 3D z " #~ "cieniem." #~ msgid "R&ound top corners" #~ msgstr "Za&okrąglone górne krawędzie" #~ msgid "Alt+O" #~ msgstr "Alt+O" #~ msgid "Glass" #~ msgstr "Szkło" #~ msgid "Titlebar style:" #~ msgstr "Styl paska tytułu:" #~ msgid "Frame width:" #~ msgstr "Szerokość ramki:" #~ msgid "Title height:" #~ msgstr "Wysokość tytułu:" #~ msgid "Text alignment:" #~ msgstr "Wyrównanie tekstu:" #~ msgid "L&eft" #~ msgstr "L&ewo" #~ msgid "Alt+E" #~ msgstr "Alt+E" #~ msgid "Ce&nter" #~ msgstr "Śro&dek" #~ msgid "Alt+N" #~ msgstr "Alt+D" #~ msgid "Ri&ght" #~ msgstr "P&rawo" #~ msgid "Alt+G" #~ msgstr "Alt+R" #~ msgid "&Buttons appearance" #~ msgstr "Wygląd &przycisków" #~ msgid "Button Style:" #~ msgstr "Styl przycisków:" #~ msgid "Reverse Gradients" #~ msgstr "Odwróć gradienty" #~ msgid "Button size:" #~ msgstr "Rozmiar przycisku:" #~ msgid "&Animate buttons" #~ msgstr "&Animowane przyciski" #~ msgid "" #~ "Check this option if you want to use button animations when hovering with " #~ "the mouse." #~ msgstr "" #~ "Zaznacz tę opcję jeśli chcesz używać animacji przycisków podczas " #~ "umieszczania nad nimi myszy" #~ msgid "Animation style:" #~ msgstr "Styl animacji:" #~ msgid "Colorize" #~ msgstr "Koloruj:" #~ msgid "Fade" #~ msgstr "Ściemnianie" #~ msgid "S&quare buttons" #~ msgstr "&Kwadratowe przyciski" #~ msgid "Alt+Q" #~ msgstr "Alt+K" #~ msgid "Li&ghter button borders" #~ msgstr "Cieńsze &brzegi przycisków" #~ msgid "&No buttons on modal windows" #~ msgstr "Brak przycisków w &oknach modalnych" #~ msgid "Close window when &menu double clicked" #~ msgstr "Zamknij okno dwukrotnie klikając na &menu" #~ msgid "" #~ "

Polyester 1.0.2

\n" #~ "

\n" #~ " Copyright © 2005-2006 Marco Martin
\n" #~ " notmart@gmail.com
\n" #~ " http://www.notmart.org\n" #~ "

\n" #~ "

\n" #~ " based on Plastik widget style for KDE 3
\n" #~ " Copyright (C) 2003 Sandro Giessl\n" #~ "

\n" #~ "

\n" #~ " Polyester window decoration derived from Smooth Blend\n" #~ " Copyright (c) 2005 Ryan Nickell\n" #~ "

\n" #~ "

Additional thanks

\n" #~ "

Some code and ideas from

\n" #~ "
    \n" #~ "
  • Linspire Clear by Sandro Giessl
  • \n" #~ "
  • Lipstik by Patrice Tremblay
  • \n" #~ "
  • Baghira by Thomas Lbking
  • \n" #~ "
  • Trolltech winXP style and Daniel Molkentin for the password dialog\n" #~ "
" #~ msgstr "" #~ "

Polyester 1.0.2

\n" #~ "

\n" #~ " Copyright © 2005-2006 Marco Martin
\n" #~ " notmart@gmail.com
\n" #~ " http://www.notmart.org\n" #~ "

\n" #~ "

\n" #~ " Oparty na stylu Plastik dla KDE3
\n" #~ " Copyright (C) 2003 Sandro Giessl\n" #~ "

\n" #~ "

\n" #~ " Dekoracja okien Polyester jest oparta na kodzie Smooth Blend\n" #~ " Copyright (c) 2005 Ryan Nickell\n" #~ "

\n" #~ "

Dodatkowe podziękowania

\n" #~ "

Część kodu i pomysły

\n" #~ "
    \n" #~ "
  • Linspire Clear, autor Sandro Giessl
  • \n" #~ "
  • Lipstik, autor Patrice Tremblay
  • \n" #~ "
  • Baghira, autor Thomas Lbking
  • \n" #~ "
  • Styl Trolltech winXP oraz Daniel Molkentin za okno hasła
  • \n" #~ "
" #~ msgid "" #~ "GNU LIBRARY GENERAL PUBLIC LICENSE\n" #~ "\t\t Version 2, June 1991\n" #~ "\n" #~ " Copyright (C) 1991 Free Software Foundation, Inc.\n" #~ " 51 Franklin Street, Fifth Floor\n" #~ " Boston, MA 02110-1301, USA.\n" #~ " Everyone is permitted to copy and distribute verbatim copies\n" #~ " of this license document, but changing it is not allowed.\n" #~ "\n" #~ "[This is the first released version of the library GPL. It is\n" #~ " numbered 2 because it goes with version 2 of the ordinary GPL.]\n" #~ "\n" #~ "\t\t\t Preamble\n" #~ "\n" #~ " The licenses for most software are designed to take away your\n" #~ "freedom to share and change it. By contrast, the GNU General Public\n" #~ "Licenses are intended to guarantee your freedom to share and change\n" #~ "free software--to make sure the software is free for all its users.\n" #~ "\n" #~ " This license, the Library General Public License, applies to some\n" #~ "specially designated Free Software Foundation software, and to any\n" #~ "other libraries whose authors decide to use it. You can use it for\n" #~ "your libraries, too.\n" #~ "\n" #~ " When we speak of free software, we are referring to freedom, not\n" #~ "price. Our General Public Licenses are designed to make sure that you\n" #~ "have the freedom to distribute copies of free software (and charge for\n" #~ "this service if you wish), that you receive source code or can get it\n" #~ "if you want it, that you can change the software or use pieces of it\n" #~ "in new free programs; and that you know you can do these things.\n" #~ "\n" #~ " To protect your rights, we need to make restrictions that forbid\n" #~ "anyone to deny you these rights or to ask you to surrender the rights.\n" #~ "These restrictions translate to certain responsibilities for you if\n" #~ "you distribute copies of the library, or if you modify it.\n" #~ "\n" #~ " For example, if you distribute copies of the library, whether gratis\n" #~ "or for a fee, you must give the recipients all the rights that we gave\n" #~ "you. You must make sure that they, too, receive or can get the source\n" #~ "code. If you link a program with the library, you must provide\n" #~ "complete object files to the recipients so that they can relink them\n" #~ "with the library, after making changes to the library and recompiling\n" #~ "it. And you must show them these terms so they know their rights.\n" #~ "\n" #~ " Our method of protecting your rights has two steps: (1) copyright\n" #~ "the library, and (2) offer you this license which gives you legal\n" #~ "permission to copy, distribute and/or modify the library.\n" #~ "\n" #~ " Also, for each distributor's protection, we want to make certain\n" #~ "that everyone understands that there is no warranty for this free\n" #~ "library. If the library is modified by someone else and passed on, we\n" #~ "want its recipients to know that what they have is not the original\n" #~ "version, so that any problems introduced by others will not reflect on\n" #~ "the original authors' reputations.\n" #~ " \n" #~ " Finally, any free program is threatened constantly by software\n" #~ "patents. We wish to avoid the danger that companies distributing free\n" #~ "software will individually obtain patent licenses, thus in effect\n" #~ "transforming the program into proprietary software. To prevent this,\n" #~ "we have made it clear that any patent must be licensed for everyone's\n" #~ "free use or not licensed at all.\n" #~ "\n" #~ " Most GNU software, including some libraries, is covered by the " #~ "ordinary\n" #~ "GNU General Public License, which was designed for utility programs. " #~ "This\n" #~ "license, the GNU Library General Public License, applies to certain\n" #~ "designated libraries. This license is quite different from the ordinary\n" #~ "one; be sure to read it in full, and don't assume that anything in it is\n" #~ "the same as in the ordinary license.\n" #~ "\n" #~ " The reason we have a separate public license for some libraries is " #~ "that\n" #~ "they blur the distinction we usually make between modifying or adding to " #~ "a\n" #~ "program and simply using it. Linking a program with a library, without\n" #~ "changing the library, is in some sense simply using the library, and is\n" #~ "analogous to running a utility program or application program. However, " #~ "in\n" #~ "a textual and legal sense, the linked executable is a combined work, a\n" #~ "derivative of the original library, and the ordinary General Public " #~ "License\n" #~ "treats it as such.\n" #~ "\n" #~ " Because of this blurred distinction, using the ordinary General\n" #~ "Public License for libraries did not effectively promote software\n" #~ "sharing, because most developers did not use the libraries. We\n" #~ "concluded that weaker conditions might promote sharing better.\n" #~ "\n" #~ " However, unrestricted linking of non-free programs would deprive the\n" #~ "users of those programs of all benefit from the free status of the\n" #~ "libraries themselves. This Library General Public License is intended " #~ "to\n" #~ "permit developers of non-free programs to use free libraries, while\n" #~ "preserving your freedom as a user of such programs to change the free\n" #~ "libraries that are incorporated in them. (We have not seen how to " #~ "achieve\n" #~ "this as regards changes in header files, but we have achieved it as " #~ "regards\n" #~ "changes in the actual functions of the Library.) The hope is that this\n" #~ "will lead to faster development of free libraries.\n" #~ "\n" #~ " The precise terms and conditions for copying, distribution and\n" #~ "modification follow. Pay close attention to the difference between a\n" #~ "\"work based on the library\" and a \"work that uses the library\". The\n" #~ "former contains code derived from the library, while the latter only\n" #~ "works together with the library.\n" #~ "\n" #~ " Note that it is possible for a library to be covered by the ordinary\n" #~ "General Public License rather than by this special one.\n" #~ " \n" #~ "\t\t GNU LIBRARY GENERAL PUBLIC LICENSE\n" #~ " TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n" #~ "\n" #~ " 0. This License Agreement applies to any software library which\n" #~ "contains a notice placed by the copyright holder or other authorized\n" #~ "party saying it may be distributed under the terms of this Library\n" #~ "General Public License (also called \"this License\"). Each licensee is\n" #~ "addressed as \"you\".\n" #~ "\n" #~ " A \"library\" means a collection of software functions and/or data\n" #~ "prepared so as to be conveniently linked with application programs\n" #~ "(which use some of those functions and data) to form executables.\n" #~ "\n" #~ " The \"Library\", below, refers to any such software library or work\n" #~ "which has been distributed under these terms. A \"work based on the\n" #~ "Library\" means either the Library or any derivative work under\n" #~ "copyright law: that is to say, a work containing the Library or a\n" #~ "portion of it, either verbatim or with modifications and/or translated\n" #~ "straightforwardly into another language. (Hereinafter, translation is\n" #~ "included without limitation in the term \"modification\".)\n" #~ "\n" #~ " \"Source code\" for a work means the preferred form of the work for\n" #~ "making modifications to it. For a library, complete source code means\n" #~ "all the source code for all modules it contains, plus any associated\n" #~ "interface definition files, plus the scripts used to control compilation\n" #~ "and installation of the library.\n" #~ "\n" #~ " Activities other than copying, distribution and modification are not\n" #~ "covered by this License; they are outside its scope. The act of\n" #~ "running a program using the Library is not restricted, and output from\n" #~ "such a program is covered only if its contents constitute a work based\n" #~ "on the Library (independent of the use of the Library in a tool for\n" #~ "writing it). Whether that is true depends on what the Library does\n" #~ "and what the program that uses the Library does.\n" #~ " \n" #~ " 1. You may copy and distribute verbatim copies of the Library's\n" #~ "complete source code as you receive it, in any medium, provided that\n" #~ "you conspicuously and appropriately publish on each copy an\n" #~ "appropriate copyright notice and disclaimer of warranty; keep intact\n" #~ "all the notices that refer to this License and to the absence of any\n" #~ "warranty; and distribute a copy of this License along with the\n" #~ "Library.\n" #~ "\n" #~ " You may charge a fee for the physical act of transferring a copy,\n" #~ "and you may at your option offer warranty protection in exchange for a\n" #~ "fee.\n" #~ " \n" #~ " 2. You may modify your copy or copies of the Library or any portion\n" #~ "of it, thus forming a work based on the Library, and copy and\n" #~ "distribute such modifications or work under the terms of Section 1\n" #~ "above, provided that you also meet all of these conditions:\n" #~ "\n" #~ " a) The modified work must itself be a software library.\n" #~ "\n" #~ " b) You must cause the files modified to carry prominent notices\n" #~ " stating that you changed the files and the date of any change.\n" #~ "\n" #~ " c) You must cause the whole of the work to be licensed at no\n" #~ " charge to all third parties under the terms of this License.\n" #~ "\n" #~ " d) If a facility in the modified Library refers to a function or a\n" #~ " table of data to be supplied by an application program that uses\n" #~ " the facility, other than as an argument passed when the facility\n" #~ " is invoked, then you must make a good faith effort to ensure that,\n" #~ " in the event an application does not supply such function or\n" #~ " table, the facility still operates, and performs whatever part of\n" #~ " its purpose remains meaningful.\n" #~ "\n" #~ " (For example, a function in a library to compute square roots has\n" #~ " a purpose that is entirely well-defined independent of the\n" #~ " application. Therefore, Subsection 2d requires that any\n" #~ " application-supplied function or table used by this function must\n" #~ " be optional: if the application does not supply it, the square\n" #~ " root function must still compute square roots.)\n" #~ "\n" #~ "These requirements apply to the modified work as a whole. If\n" #~ "identifiable sections of that work are not derived from the Library,\n" #~ "and can be reasonably considered independent and separate works in\n" #~ "themselves, then this License, and its terms, do not apply to those\n" #~ "sections when you distribute them as separate works. But when you\n" #~ "distribute the same sections as part of a whole which is a work based\n" #~ "on the Library, the distribution of the whole must be on the terms of\n" #~ "this License, whose permissions for other licensees extend to the\n" #~ "entire whole, and thus to each and every part regardless of who wrote\n" #~ "it.\n" #~ "\n" #~ "Thus, it is not the intent of this section to claim rights or contest\n" #~ "your rights to work written entirely by you; rather, the intent is to\n" #~ "exercise the right to control the distribution of derivative or\n" #~ "collective works based on the Library.\n" #~ "\n" #~ "In addition, mere aggregation of another work not based on the Library\n" #~ "with the Library (or with a work based on the Library) on a volume of\n" #~ "a storage or distribution medium does not bring the other work under\n" #~ "the scope of this License.\n" #~ "\n" #~ " 3. You may opt to apply the terms of the ordinary GNU General Public\n" #~ "License instead of this License to a given copy of the Library. To do\n" #~ "this, you must alter all the notices that refer to this License, so\n" #~ "that they refer to the ordinary GNU General Public License, version 2,\n" #~ "instead of to this License. (If a newer version than version 2 of the\n" #~ "ordinary GNU General Public License has appeared, then you can specify\n" #~ "that version instead if you wish.) Do not make any other change in\n" #~ "these notices.\n" #~ " \n" #~ " Once this change is made in a given copy, it is irreversible for\n" #~ "that copy, so the ordinary GNU General Public License applies to all\n" #~ "subsequent copies and derivative works made from that copy.\n" #~ "\n" #~ " This option is useful when you wish to copy part of the code of\n" #~ "the Library into a program that is not a library.\n" #~ "\n" #~ " 4. You may copy and distribute the Library (or a portion or\n" #~ "derivative of it, under Section 2) in object code or executable form\n" #~ "under the terms of Sections 1 and 2 above provided that you accompany\n" #~ "it with the complete corresponding machine-readable source code, which\n" #~ "must be distributed under the terms of Sections 1 and 2 above on a\n" #~ "medium customarily used for software interchange.\n" #~ "\n" #~ " If distribution of object code is made by offering access to copy\n" #~ "from a designated place, then offering equivalent access to copy the\n" #~ "source code from the same place satisfies the requirement to\n" #~ "distribute the source code, even though third parties are not\n" #~ "compelled to copy the source along with the object code.\n" #~ "\n" #~ " 5. A program that contains no derivative of any portion of the\n" #~ "Library, but is designed to work with the Library by being compiled or\n" #~ "linked with it, is called a \"work that uses the Library\". Such a\n" #~ "work, in isolation, is not a derivative work of the Library, and\n" #~ "therefore falls outside the scope of this License.\n" #~ "\n" #~ " However, linking a \"work that uses the Library\" with the Library\n" #~ "creates an executable that is a derivative of the Library (because it\n" #~ "contains portions of the Library), rather than a \"work that uses the\n" #~ "library\". The executable is therefore covered by this License.\n" #~ "Section 6 states terms for distribution of such executables.\n" #~ "\n" #~ " When a \"work that uses the Library\" uses material from a header file\n" #~ "that is part of the Library, the object code for the work may be a\n" #~ "derivative work of the Library even though the source code is not.\n" #~ "Whether this is true is especially significant if the work can be\n" #~ "linked without the Library, or if the work is itself a library. The\n" #~ "threshold for this to be true is not precisely defined by law.\n" #~ "\n" #~ " If such an object file uses only numerical parameters, data\n" #~ "structure layouts and accessors, and small macros and small inline\n" #~ "functions (ten lines or less in length), then the use of the object\n" #~ "file is unrestricted, regardless of whether it is legally a derivative\n" #~ "work. (Executables containing this object code plus portions of the\n" #~ "Library will still fall under Section 6.)\n" #~ "\n" #~ " Otherwise, if the work is a derivative of the Library, you may\n" #~ "distribute the object code for the work under the terms of Section 6.\n" #~ "Any executables containing that work also fall under Section 6,\n" #~ "whether or not they are linked directly with the Library itself.\n" #~ " \n" #~ " 6. As an exception to the Sections above, you may also compile or\n" #~ "link a \"work that uses the Library\" with the Library to produce a\n" #~ "work containing portions of the Library, and distribute that work\n" #~ "under terms of your choice, provided that the terms permit\n" #~ "modification of the work for the customer's own use and reverse\n" #~ "engineering for debugging such modifications.\n" #~ "\n" #~ " You must give prominent notice with each copy of the work that the\n" #~ "Library is used in it and that the Library and its use are covered by\n" #~ "this License. You must supply a copy of this License. If the work\n" #~ "during execution displays copyright notices, you must include the\n" #~ "copyright notice for the Library among them, as well as a reference\n" #~ "directing the user to the copy of this License. Also, you must do one\n" #~ "of these things:\n" #~ "\n" #~ " a) Accompany the work with the complete corresponding\n" #~ " machine-readable source code for the Library including whatever\n" #~ " changes were used in the work (which must be distributed under\n" #~ " Sections 1 and 2 above); and, if the work is an executable linked\n" #~ " with the Library, with the complete machine-readable \"work that\n" #~ " uses the Library\", as object code and/or source code, so that the\n" #~ " user can modify the Library and then relink to produce a modified\n" #~ " executable containing the modified Library. (It is understood\n" #~ " that the user who changes the contents of definitions files in the\n" #~ " Library will not necessarily be able to recompile the application\n" #~ " to use the modified definitions.)\n" #~ "\n" #~ " b) Accompany the work with a written offer, valid for at\n" #~ " least three years, to give the same user the materials\n" #~ " specified in Subsection 6a, above, for a charge no more\n" #~ " than the cost of performing this distribution.\n" #~ "\n" #~ " c) If distribution of the work is made by offering access to copy\n" #~ " from a designated place, offer equivalent access to copy the above\n" #~ " specified materials from the same place.\n" #~ "\n" #~ " d) Verify that the user has already received a copy of these\n" #~ " materials or that you have already sent this user a copy.\n" #~ "\n" #~ " For an executable, the required form of the \"work that uses the\n" #~ "Library\" must include any data and utility programs needed for\n" #~ "reproducing the executable from it. However, as a special exception,\n" #~ "the source code distributed need not include anything that is normally\n" #~ "distributed (in either source or binary form) with the major\n" #~ "components (compiler, kernel, and so on) of the operating system on\n" #~ "which the executable runs, unless that component itself accompanies\n" #~ "the executable.\n" #~ "\n" #~ " It may happen that this requirement contradicts the license\n" #~ "restrictions of other proprietary libraries that do not normally\n" #~ "accompany the operating system. Such a contradiction means you cannot\n" #~ "use both them and the Library together in an executable that you\n" #~ "distribute.\n" #~ " \n" #~ " 7. You may place library facilities that are a work based on the\n" #~ "Library side-by-side in a single library together with other library\n" #~ "facilities not covered by this License, and distribute such a combined\n" #~ "library, provided that the separate distribution of the work based on\n" #~ "the Library and of the other library facilities is otherwise\n" #~ "permitted, and provided that you do these two things:\n" #~ "\n" #~ " a) Accompany the combined library with a copy of the same work\n" #~ " based on the Library, uncombined with any other library\n" #~ " facilities. This must be distributed under the terms of the\n" #~ " Sections above.\n" #~ "\n" #~ " b) Give prominent notice with the combined library of the fact\n" #~ " that part of it is a work based on the Library, and explaining\n" #~ " where to find the accompanying uncombined form of the same work.\n" #~ "\n" #~ " 8. You may not copy, modify, sublicense, link with, or distribute\n" #~ "the Library except as expressly provided under this License. Any\n" #~ "attempt otherwise to copy, modify, sublicense, link with, or\n" #~ "distribute the Library is void, and will automatically terminate your\n" #~ "rights under this License. However, parties who have received copies,\n" #~ "or rights, from you under this License will not have their licenses\n" #~ "terminated so long as such parties remain in full compliance.\n" #~ "\n" #~ " 9. You are not required to accept this License, since you have not\n" #~ "signed it. However, nothing else grants you permission to modify or\n" #~ "distribute the Library or its derivative works. These actions are\n" #~ "prohibited by law if you do not accept this License. Therefore, by\n" #~ "modifying or distributing the Library (or any work based on the\n" #~ "Library), you indicate your acceptance of this License to do so, and\n" #~ "all its terms and conditions for copying, distributing or modifying\n" #~ "the Library or works based on it.\n" #~ "\n" #~ " 10. Each time you redistribute the Library (or any work based on the\n" #~ "Library), the recipient automatically receives a license from the\n" #~ "original licensor to copy, distribute, link with or modify the Library\n" #~ "subject to these terms and conditions. You may not impose any further\n" #~ "restrictions on the recipients' exercise of the rights granted herein.\n" #~ "You are not responsible for enforcing compliance by third parties to\n" #~ "this License.\n" #~ " \n" #~ " 11. If, as a consequence of a court judgment or allegation of patent\n" #~ "infringement or for any other reason (not limited to patent issues),\n" #~ "conditions are imposed on you (whether by court order, agreement or\n" #~ "otherwise) that contradict the conditions of this License, they do not\n" #~ "excuse you from the conditions of this License. If you cannot\n" #~ "distribute so as to satisfy simultaneously your obligations under this\n" #~ "License and any other pertinent obligations, then as a consequence you\n" #~ "may not distribute the Library at all. For example, if a patent\n" #~ "license would not permit royalty-free redistribution of the Library by\n" #~ "all those who receive copies directly or indirectly through you, then\n" #~ "the only way you could satisfy both it and this License would be to\n" #~ "refrain entirely from distribution of the Library.\n" #~ "\n" #~ "If any portion of this section is held invalid or unenforceable under " #~ "any\n" #~ "particular circumstance, the balance of the section is intended to " #~ "apply,\n" #~ "and the section as a whole is intended to apply in other circumstances.\n" #~ "\n" #~ "It is not the purpose of this section to induce you to infringe any\n" #~ "patents or other property right claims or to contest validity of any\n" #~ "such claims; this section has the sole purpose of protecting the\n" #~ "integrity of the free software distribution system which is\n" #~ "implemented by public license practices. Many people have made\n" #~ "generous contributions to the wide range of software distributed\n" #~ "through that system in reliance on consistent application of that\n" #~ "system; it is up to the author/donor to decide if he or she is willing\n" #~ "to distribute software through any other system and a licensee cannot\n" #~ "impose that choice.\n" #~ "\n" #~ "This section is intended to make thoroughly clear what is believed to\n" #~ "be a consequence of the rest of this License.\n" #~ "\n" #~ " 12. If the distribution and/or use of the Library is restricted in\n" #~ "certain countries either by patents or by copyrighted interfaces, the\n" #~ "original copyright holder who places the Library under this License may " #~ "add\n" #~ "an explicit geographical distribution limitation excluding those " #~ "countries,\n" #~ "so that distribution is permitted only in or among countries not thus\n" #~ "excluded. In such case, this License incorporates the limitation as if\n" #~ "written in the body of this License.\n" #~ "\n" #~ " 13. The Free Software Foundation may publish revised and/or new\n" #~ "versions of the Library General Public License from time to time.\n" #~ "Such new versions will be similar in spirit to the present version,\n" #~ "but may differ in detail to address new problems or concerns.\n" #~ "\n" #~ "Each version is given a distinguishing version number. If the Library\n" #~ "specifies a version number of this License which applies to it and\n" #~ "\"any later version\", you have the option of following the terms and\n" #~ "conditions either of that version or of any later version published by\n" #~ "the Free Software Foundation. If the Library does not specify a\n" #~ "license version number, you may choose any version ever published by\n" #~ "the Free Software Foundation.\n" #~ " \n" #~ " 14. If you wish to incorporate parts of the Library into other free\n" #~ "programs whose distribution conditions are incompatible with these,\n" #~ "write to the author to ask for permission. For software which is\n" #~ "copyrighted by the Free Software Foundation, write to the Free\n" #~ "Software Foundation; we sometimes make exceptions for this. Our\n" #~ "decision will be guided by the two goals of preserving the free status\n" #~ "of all derivatives of our free software and of promoting the sharing\n" #~ "and reuse of software generally.\n" #~ "\n" #~ "\t\t\t NO WARRANTY\n" #~ "\n" #~ " 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO\n" #~ "WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.\n" #~ "EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR\n" #~ "OTHER PARTIES PROVIDE THE LIBRARY \"AS IS\" WITHOUT WARRANTY OF ANY\n" #~ "KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE\n" #~ "IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n" #~ "PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE\n" #~ "LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME\n" #~ "THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n" #~ "\n" #~ " 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN\n" #~ "WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY\n" #~ "AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU\n" #~ "FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR\n" #~ "CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE\n" #~ "LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING\n" #~ "RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A\n" #~ "FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF\n" #~ "SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\n" #~ "DAMAGES.\n" #~ "\n" #~ "\t\t END OF TERMS AND CONDITIONS\n" #~ "\n" #~ " How to Apply These Terms to Your New Libraries\n" #~ "\n" #~ " If you develop a new library, and you want it to be of the greatest\n" #~ "possible use to the public, we recommend making it free software that\n" #~ "everyone can redistribute and change. You can do so by permitting\n" #~ "redistribution under these terms (or, alternatively, under the terms of " #~ "the\n" #~ "ordinary General Public License).\n" #~ "\n" #~ " To apply these terms, attach the following notices to the library. It " #~ "is\n" #~ "safest to attach them to the start of each source file to most " #~ "effectively\n" #~ "convey the exclusion of warranty; and each file should have at least the\n" #~ "\"copyright\" line and a pointer to where the full notice is found.\n" #~ "\n" #~ " \n" #~ " Copyright (C) \n" #~ "\n" #~ " This library is free software; you can redistribute it and/or\n" #~ " modify it under the terms of the GNU Lesser General Public\n" #~ " License as published by the Free Software Foundation; either\n" #~ " version 2 of the License, or (at your option) any later version.\n" #~ "\n" #~ " This library is distributed in the hope that it will be useful,\n" #~ " but WITHOUT ANY WARRANTY; without even the implied warranty of\n" #~ " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n" #~ " Lesser General Public License for more details.\n" #~ "\n" #~ " You should have received a copy of the GNU Lesser General Public\n" #~ " License along with this library; if not, write to the Free Software\n" #~ " Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-" #~ "1301 USA\n" #~ "\n" #~ "Also add information on how to contact you by electronic and paper mail.\n" #~ "\n" #~ "You should also get your employer (if you work as a programmer) or your\n" #~ "school, if any, to sign a \"copyright disclaimer\" for the library, if\n" #~ "necessary. Here is a sample; alter the names:\n" #~ "\n" #~ " Yoyodyne, Inc., hereby disclaims all copyright interest in the\n" #~ " library `Frob' (a library for tweaking knobs) written by James Random " #~ "Hacker.\n" #~ "\n" #~ " , 1 April 1990\n" #~ " Ty Coon, President of Vice\n" #~ "\n" #~ "That's all there is to it!" #~ msgstr "" #~ "GNU LIBRARY GENERAL PUBLIC LICENSE\n" #~ "\t\t Version 2, June 1991\n" #~ "\n" #~ " Copyright (C) 1991 Free Software Foundation, Inc.\n" #~ " 51 Franklin Street, Fifth Floor\n" #~ " Boston, MA 02110-1301, USA.\n" #~ " Everyone is permitted to copy and distribute verbatim copies\n" #~ " of this license document, but changing it is not allowed.\n" #~ "\n" #~ "[This is the first released version of the library GPL. It is\n" #~ " numbered 2 because it goes with version 2 of the ordinary GPL.]\n" #~ "\n" #~ "\t\t\t Preamble\n" #~ "\n" #~ " The licenses for most software are designed to take away your\n" #~ "freedom to share and change it. By contrast, the GNU General Public\n" #~ "Licenses are intended to guarantee your freedom to share and change\n" #~ "free software--to make sure the software is free for all its users.\n" #~ "\n" #~ " This license, the Library General Public License, applies to some\n" #~ "specially designated Free Software Foundation software, and to any\n" #~ "other libraries whose authors decide to use it. You can use it for\n" #~ "your libraries, too.\n" #~ "\n" #~ " When we speak of free software, we are referring to freedom, not\n" #~ "price. Our General Public Licenses are designed to make sure that you\n" #~ "have the freedom to distribute copies of free software (and charge for\n" #~ "this service if you wish), that you receive source code or can get it\n" #~ "if you want it, that you can change the software or use pieces of it\n" #~ "in new free programs; and that you know you can do these things.\n" #~ "\n" #~ " To protect your rights, we need to make restrictions that forbid\n" #~ "anyone to deny you these rights or to ask you to surrender the rights.\n" #~ "These restrictions translate to certain responsibilities for you if\n" #~ "you distribute copies of the library, or if you modify it.\n" #~ "\n" #~ " For example, if you distribute copies of the library, whether gratis\n" #~ "or for a fee, you must give the recipients all the rights that we gave\n" #~ "you. You must make sure that they, too, receive or can get the source\n" #~ "code. If you link a program with the library, you must provide\n" #~ "complete object files to the recipients so that they can relink them\n" #~ "with the library, after making changes to the library and recompiling\n" #~ "it. And you must show them these terms so they know their rights.\n" #~ "\n" #~ " Our method of protecting your rights has two steps: (1) copyright\n" #~ "the library, and (2) offer you this license which gives you legal\n" #~ "permission to copy, distribute and/or modify the library.\n" #~ "\n" #~ " Also, for each distributor's protection, we want to make certain\n" #~ "that everyone understands that there is no warranty for this free\n" #~ "library. If the library is modified by someone else and passed on, we\n" #~ "want its recipients to know that what they have is not the original\n" #~ "version, so that any problems introduced by others will not reflect on\n" #~ "the original authors' reputations.\n" #~ " \n" #~ " Finally, any free program is threatened constantly by software\n" #~ "patents. We wish to avoid the danger that companies distributing free\n" #~ "software will individually obtain patent licenses, thus in effect\n" #~ "transforming the program into proprietary software. To prevent this,\n" #~ "we have made it clear that any patent must be licensed for everyone's\n" #~ "free use or not licensed at all.\n" #~ "\n" #~ " Most GNU software, including some libraries, is covered by the " #~ "ordinary\n" #~ "GNU General Public License, which was designed for utility programs. " #~ "This\n" #~ "license, the GNU Library General Public License, applies to certain\n" #~ "designated libraries. This license is quite different from the ordinary\n" #~ "one; be sure to read it in full, and don't assume that anything in it is\n" #~ "the same as in the ordinary license.\n" #~ "\n" #~ " The reason we have a separate public license for some libraries is " #~ "that\n" #~ "they blur the distinction we usually make between modifying or adding to " #~ "a\n" #~ "program and simply using it. Linking a program with a library, without\n" #~ "changing the library, is in some sense simply using the library, and is\n" #~ "analogous to running a utility program or application program. However, " #~ "in\n" #~ "a textual and legal sense, the linked executable is a combined work, a\n" #~ "derivative of the original library, and the ordinary General Public " #~ "License\n" #~ "treats it as such.\n" #~ "\n" #~ " Because of this blurred distinction, using the ordinary General\n" #~ "Public License for libraries did not effectively promote software\n" #~ "sharing, because most developers did not use the libraries. We\n" #~ "concluded that weaker conditions might promote sharing better.\n" #~ "\n" #~ " However, unrestricted linking of non-free programs would deprive the\n" #~ "users of those programs of all benefit from the free status of the\n" #~ "libraries themselves. This Library General Public License is intended " #~ "to\n" #~ "permit developers of non-free programs to use free libraries, while\n" #~ "preserving your freedom as a user of such programs to change the free\n" #~ "libraries that are incorporated in them. (We have not seen how to " #~ "achieve\n" #~ "this as regards changes in header files, but we have achieved it as " #~ "regards\n" #~ "changes in the actual functions of the Library.) The hope is that this\n" #~ "will lead to faster development of free libraries.\n" #~ "\n" #~ " The precise terms and conditions for copying, distribution and\n" #~ "modification follow. Pay close attention to the difference between a\n" #~ "\"work based on the library\" and a \"work that uses the library\". The\n" #~ "former contains code derived from the library, while the latter only\n" #~ "works together with the library.\n" #~ "\n" #~ " Note that it is possible for a library to be covered by the ordinary\n" #~ "General Public License rather than by this special one.\n" #~ " \n" #~ "\t\t GNU LIBRARY GENERAL PUBLIC LICENSE\n" #~ " TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n" #~ "\n" #~ " 0. This License Agreement applies to any software library which\n" #~ "contains a notice placed by the copyright holder or other authorized\n" #~ "party saying it may be distributed under the terms of this Library\n" #~ "General Public License (also called \"this License\"). Each licensee is\n" #~ "addressed as \"you\".\n" #~ "\n" #~ " A \"library\" means a collection of software functions and/or data\n" #~ "prepared so as to be conveniently linked with application programs\n" #~ "(which use some of those functions and data) to form executables.\n" #~ "\n" #~ " The \"Library\", below, refers to any such software library or work\n" #~ "which has been distributed under these terms. A \"work based on the\n" #~ "Library\" means either the Library or any derivative work under\n" #~ "copyright law: that is to say, a work containing the Library or a\n" #~ "portion of it, either verbatim or with modifications and/or translated\n" #~ "straightforwardly into another language. (Hereinafter, translation is\n" #~ "included without limitation in the term \"modification\".)\n" #~ "\n" #~ " \"Source code\" for a work means the preferred form of the work for\n" #~ "making modifications to it. For a library, complete source code means\n" #~ "all the source code for all modules it contains, plus any associated\n" #~ "interface definition files, plus the scripts used to control compilation\n" #~ "and installation of the library.\n" #~ "\n" #~ " Activities other than copying, distribution and modification are not\n" #~ "covered by this License; they are outside its scope. The act of\n" #~ "running a program using the Library is not restricted, and output from\n" #~ "such a program is covered only if its contents constitute a work based\n" #~ "on the Library (independent of the use of the Library in a tool for\n" #~ "writing it). Whether that is true depends on what the Library does\n" #~ "and what the program that uses the Library does.\n" #~ " \n" #~ " 1. You may copy and distribute verbatim copies of the Library's\n" #~ "complete source code as you receive it, in any medium, provided that\n" #~ "you conspicuously and appropriately publish on each copy an\n" #~ "appropriate copyright notice and disclaimer of warranty; keep intact\n" #~ "all the notices that refer to this License and to the absence of any\n" #~ "warranty; and distribute a copy of this License along with the\n" #~ "Library.\n" #~ "\n" #~ " You may charge a fee for the physical act of transferring a copy,\n" #~ "and you may at your option offer warranty protection in exchange for a\n" #~ "fee.\n" #~ " \n" #~ " 2. You may modify your copy or copies of the Library or any portion\n" #~ "of it, thus forming a work based on the Library, and copy and\n" #~ "distribute such modifications or work under the terms of Section 1\n" #~ "above, provided that you also meet all of these conditions:\n" #~ "\n" #~ " a) The modified work must itself be a software library.\n" #~ "\n" #~ " b) You must cause the files modified to carry prominent notices\n" #~ " stating that you changed the files and the date of any change.\n" #~ "\n" #~ " c) You must cause the whole of the work to be licensed at no\n" #~ " charge to all third parties under the terms of this License.\n" #~ "\n" #~ " d) If a facility in the modified Library refers to a function or a\n" #~ " table of data to be supplied by an application program that uses\n" #~ " the facility, other than as an argument passed when the facility\n" #~ " is invoked, then you must make a good faith effort to ensure that,\n" #~ " in the event an application does not supply such function or\n" #~ " table, the facility still operates, and performs whatever part of\n" #~ " its purpose remains meaningful.\n" #~ "\n" #~ " (For example, a function in a library to compute square roots has\n" #~ " a purpose that is entirely well-defined independent of the\n" #~ " application. Therefore, Subsection 2d requires that any\n" #~ " application-supplied function or table used by this function must\n" #~ " be optional: if the application does not supply it, the square\n" #~ " root function must still compute square roots.)\n" #~ "\n" #~ "These requirements apply to the modified work as a whole. If\n" #~ "identifiable sections of that work are not derived from the Library,\n" #~ "and can be reasonably considered independent and separate works in\n" #~ "themselves, then this License, and its terms, do not apply to those\n" #~ "sections when you distribute them as separate works. But when you\n" #~ "distribute the same sections as part of a whole which is a work based\n" #~ "on the Library, the distribution of the whole must be on the terms of\n" #~ "this License, whose permissions for other licensees extend to the\n" #~ "entire whole, and thus to each and every part regardless of who wrote\n" #~ "it.\n" #~ "\n" #~ "Thus, it is not the intent of this section to claim rights or contest\n" #~ "your rights to work written entirely by you; rather, the intent is to\n" #~ "exercise the right to control the distribution of derivative or\n" #~ "collective works based on the Library.\n" #~ "\n" #~ "In addition, mere aggregation of another work not based on the Library\n" #~ "with the Library (or with a work based on the Library) on a volume of\n" #~ "a storage or distribution medium does not bring the other work under\n" #~ "the scope of this License.\n" #~ "\n" #~ " 3. You may opt to apply the terms of the ordinary GNU General Public\n" #~ "License instead of this License to a given copy of the Library. To do\n" #~ "this, you must alter all the notices that refer to this License, so\n" #~ "that they refer to the ordinary GNU General Public License, version 2,\n" #~ "instead of to this License. (If a newer version than version 2 of the\n" #~ "ordinary GNU General Public License has appeared, then you can specify\n" #~ "that version instead if you wish.) Do not make any other change in\n" #~ "these notices.\n" #~ " \n" #~ " Once this change is made in a given copy, it is irreversible for\n" #~ "that copy, so the ordinary GNU General Public License applies to all\n" #~ "subsequent copies and derivative works made from that copy.\n" #~ "\n" #~ " This option is useful when you wish to copy part of the code of\n" #~ "the Library into a program that is not a library.\n" #~ "\n" #~ " 4. You may copy and distribute the Library (or a portion or\n" #~ "derivative of it, under Section 2) in object code or executable form\n" #~ "under the terms of Sections 1 and 2 above provided that you accompany\n" #~ "it with the complete corresponding machine-readable source code, which\n" #~ "must be distributed under the terms of Sections 1 and 2 above on a\n" #~ "medium customarily used for software interchange.\n" #~ "\n" #~ " If distribution of object code is made by offering access to copy\n" #~ "from a designated place, then offering equivalent access to copy the\n" #~ "source code from the same place satisfies the requirement to\n" #~ "distribute the source code, even though third parties are not\n" #~ "compelled to copy the source along with the object code.\n" #~ "\n" #~ " 5. A program that contains no derivative of any portion of the\n" #~ "Library, but is designed to work with the Library by being compiled or\n" #~ "linked with it, is called a \"work that uses the Library\". Such a\n" #~ "work, in isolation, is not a derivative work of the Library, and\n" #~ "therefore falls outside the scope of this License.\n" #~ "\n" #~ " However, linking a \"work that uses the Library\" with the Library\n" #~ "creates an executable that is a derivative of the Library (because it\n" #~ "contains portions of the Library), rather than a \"work that uses the\n" #~ "library\". The executable is therefore covered by this License.\n" #~ "Section 6 states terms for distribution of such executables.\n" #~ "\n" #~ " When a \"work that uses the Library\" uses material from a header file\n" #~ "that is part of the Library, the object code for the work may be a\n" #~ "derivative work of the Library even though the source code is not.\n" #~ "Whether this is true is especially significant if the work can be\n" #~ "linked without the Library, or if the work is itself a library. The\n" #~ "threshold for this to be true is not precisely defined by law.\n" #~ "\n" #~ " If such an object file uses only numerical parameters, data\n" #~ "structure layouts and accessors, and small macros and small inline\n" #~ "functions (ten lines or less in length), then the use of the object\n" #~ "file is unrestricted, regardless of whether it is legally a derivative\n" #~ "work. (Executables containing this object code plus portions of the\n" #~ "Library will still fall under Section 6.)\n" #~ "\n" #~ " Otherwise, if the work is a derivative of the Library, you may\n" #~ "distribute the object code for the work under the terms of Section 6.\n" #~ "Any executables containing that work also fall under Section 6,\n" #~ "whether or not they are linked directly with the Library itself.\n" #~ " \n" #~ " 6. As an exception to the Sections above, you may also compile or\n" #~ "link a \"work that uses the Library\" with the Library to produce a\n" #~ "work containing portions of the Library, and distribute that work\n" #~ "under terms of your choice, provided that the terms permit\n" #~ "modification of the work for the customer's own use and reverse\n" #~ "engineering for debugging such modifications.\n" #~ "\n" #~ " You must give prominent notice with each copy of the work that the\n" #~ "Library is used in it and that the Library and its use are covered by\n" #~ "this License. You must supply a copy of this License. If the work\n" #~ "during execution displays copyright notices, you must include the\n" #~ "copyright notice for the Library among them, as well as a reference\n" #~ "directing the user to the copy of this License. Also, you must do one\n" #~ "of these things:\n" #~ "\n" #~ " a) Accompany the work with the complete corresponding\n" #~ " machine-readable source code for the Library including whatever\n" #~ " changes were used in the work (which must be distributed under\n" #~ " Sections 1 and 2 above); and, if the work is an executable linked\n" #~ " with the Library, with the complete machine-readable \"work that\n" #~ " uses the Library\", as object code and/or source code, so that the\n" #~ " user can modify the Library and then relink to produce a modified\n" #~ " executable containing the modified Library. (It is understood\n" #~ " that the user who changes the contents of definitions files in the\n" #~ " Library will not necessarily be able to recompile the application\n" #~ " to use the modified definitions.)\n" #~ "\n" #~ " b) Accompany the work with a written offer, valid for at\n" #~ " least three years, to give the same user the materials\n" #~ " specified in Subsection 6a, above, for a charge no more\n" #~ " than the cost of performing this distribution.\n" #~ "\n" #~ " c) If distribution of the work is made by offering access to copy\n" #~ " from a designated place, offer equivalent access to copy the above\n" #~ " specified materials from the same place.\n" #~ "\n" #~ " d) Verify that the user has already received a copy of these\n" #~ " materials or that you have already sent this user a copy.\n" #~ "\n" #~ " For an executable, the required form of the \"work that uses the\n" #~ "Library\" must include any data and utility programs needed for\n" #~ "reproducing the executable from it. However, as a special exception,\n" #~ "the source code distributed need not include anything that is normally\n" #~ "distributed (in either source or binary form) with the major\n" #~ "components (compiler, kernel, and so on) of the operating system on\n" #~ "which the executable runs, unless that component itself accompanies\n" #~ "the executable.\n" #~ "\n" #~ " It may happen that this requirement contradicts the license\n" #~ "restrictions of other proprietary libraries that do not normally\n" #~ "accompany the operating system. Such a contradiction means you cannot\n" #~ "use both them and the Library together in an executable that you\n" #~ "distribute.\n" #~ " \n" #~ " 7. You may place library facilities that are a work based on the\n" #~ "Library side-by-side in a single library together with other library\n" #~ "facilities not covered by this License, and distribute such a combined\n" #~ "library, provided that the separate distribution of the work based on\n" #~ "the Library and of the other library facilities is otherwise\n" #~ "permitted, and provided that you do these two things:\n" #~ "\n" #~ " a) Accompany the combined library with a copy of the same work\n" #~ " based on the Library, uncombined with any other library\n" #~ " facilities. This must be distributed under the terms of the\n" #~ " Sections above.\n" #~ "\n" #~ " b) Give prominent notice with the combined library of the fact\n" #~ " that part of it is a work based on the Library, and explaining\n" #~ " where to find the accompanying uncombined form of the same work.\n" #~ "\n" #~ " 8. You may not copy, modify, sublicense, link with, or distribute\n" #~ "the Library except as expressly provided under this License. Any\n" #~ "attempt otherwise to copy, modify, sublicense, link with, or\n" #~ "distribute the Library is void, and will automatically terminate your\n" #~ "rights under this License. However, parties who have received copies,\n" #~ "or rights, from you under this License will not have their licenses\n" #~ "terminated so long as such parties remain in full compliance.\n" #~ "\n" #~ " 9. You are not required to accept this License, since you have not\n" #~ "signed it. However, nothing else grants you permission to modify or\n" #~ "distribute the Library or its derivative works. These actions are\n" #~ "prohibited by law if you do not accept this License. Therefore, by\n" #~ "modifying or distributing the Library (or any work based on the\n" #~ "Library), you indicate your acceptance of this License to do so, and\n" #~ "all its terms and conditions for copying, distributing or modifying\n" #~ "the Library or works based on it.\n" #~ "\n" #~ " 10. Each time you redistribute the Library (or any work based on the\n" #~ "Library), the recipient automatically receives a license from the\n" #~ "original licensor to copy, distribute, link with or modify the Library\n" #~ "subject to these terms and conditions. You may not impose any further\n" #~ "restrictions on the recipients' exercise of the rights granted herein.\n" #~ "You are not responsible for enforcing compliance by third parties to\n" #~ "this License.\n" #~ " \n" #~ " 11. If, as a consequence of a court judgment or allegation of patent\n" #~ "infringement or for any other reason (not limited to patent issues),\n" #~ "conditions are imposed on you (whether by court order, agreement or\n" #~ "otherwise) that contradict the conditions of this License, they do not\n" #~ "excuse you from the conditions of this License. If you cannot\n" #~ "distribute so as to satisfy simultaneously your obligations under this\n" #~ "License and any other pertinent obligations, then as a consequence you\n" #~ "may not distribute the Library at all. For example, if a patent\n" #~ "license would not permit royalty-free redistribution of the Library by\n" #~ "all those who receive copies directly or indirectly through you, then\n" #~ "the only way you could satisfy both it and this License would be to\n" #~ "refrain entirely from distribution of the Library.\n" #~ "\n" #~ "If any portion of this section is held invalid or unenforceable under " #~ "any\n" #~ "particular circumstance, the balance of the section is intended to " #~ "apply,\n" #~ "and the section as a whole is intended to apply in other circumstances.\n" #~ "\n" #~ "It is not the purpose of this section to induce you to infringe any\n" #~ "patents or other property right claims or to contest validity of any\n" #~ "such claims; this section has the sole purpose of protecting the\n" #~ "integrity of the free software distribution system which is\n" #~ "implemented by public license practices. Many people have made\n" #~ "generous contributions to the wide range of software distributed\n" #~ "through that system in reliance on consistent application of that\n" #~ "system; it is up to the author/donor to decide if he or she is willing\n" #~ "to distribute software through any other system and a licensee cannot\n" #~ "impose that choice.\n" #~ "\n" #~ "This section is intended to make thoroughly clear what is believed to\n" #~ "be a consequence of the rest of this License.\n" #~ "\n" #~ " 12. If the distribution and/or use of the Library is restricted in\n" #~ "certain countries either by patents or by copyrighted interfaces, the\n" #~ "original copyright holder who places the Library under this License may " #~ "add\n" #~ "an explicit geographical distribution limitation excluding those " #~ "countries,\n" #~ "so that distribution is permitted only in or among countries not thus\n" #~ "excluded. In such case, this License incorporates the limitation as if\n" #~ "written in the body of this License.\n" #~ "\n" #~ " 13. The Free Software Foundation may publish revised and/or new\n" #~ "versions of the Library General Public License from time to time.\n" #~ "Such new versions will be similar in spirit to the present version,\n" #~ "but may differ in detail to address new problems or concerns.\n" #~ "\n" #~ "Each version is given a distinguishing version number. If the Library\n" #~ "specifies a version number of this License which applies to it and\n" #~ "\"any later version\", you have the option of following the terms and\n" #~ "conditions either of that version or of any later version published by\n" #~ "the Free Software Foundation. If the Library does not specify a\n" #~ "license version number, you may choose any version ever published by\n" #~ "the Free Software Foundation.\n" #~ " \n" #~ " 14. If you wish to incorporate parts of the Library into other free\n" #~ "programs whose distribution conditions are incompatible with these,\n" #~ "write to the author to ask for permission. For software which is\n" #~ "copyrighted by the Free Software Foundation, write to the Free\n" #~ "Software Foundation; we sometimes make exceptions for this. Our\n" #~ "decision will be guided by the two goals of preserving the free status\n" #~ "of all derivatives of our free software and of promoting the sharing\n" #~ "and reuse of software generally.\n" #~ "\n" #~ "\t\t\t NO WARRANTY\n" #~ "\n" #~ " 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO\n" #~ "WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.\n" #~ "EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR\n" #~ "OTHER PARTIES PROVIDE THE LIBRARY \"AS IS\" WITHOUT WARRANTY OF ANY\n" #~ "KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE\n" #~ "IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n" #~ "PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE\n" #~ "LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME\n" #~ "THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n" #~ "\n" #~ " 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN\n" #~ "WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY\n" #~ "AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU\n" #~ "FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR\n" #~ "CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE\n" #~ "LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING\n" #~ "RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A\n" #~ "FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF\n" #~ "SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\n" #~ "DAMAGES.\n" #~ "\n" #~ "\t\t END OF TERMS AND CONDITIONS\n" #~ "\n" #~ " How to Apply These Terms to Your New Libraries\n" #~ "\n" #~ " If you develop a new library, and you want it to be of the greatest\n" #~ "possible use to the public, we recommend making it free software that\n" #~ "everyone can redistribute and change. You can do so by permitting\n" #~ "redistribution under these terms (or, alternatively, under the terms of " #~ "the\n" #~ "ordinary General Public License).\n" #~ "\n" #~ " To apply these terms, attach the following notices to the library. It " #~ "is\n" #~ "safest to attach them to the start of each source file to most " #~ "effectively\n" #~ "convey the exclusion of warranty; and each file should have at least the\n" #~ "\"copyright\" line and a pointer to where the full notice is found.\n" #~ "\n" #~ " \n" #~ " Copyright (C) \n" #~ "\n" #~ " This library is free software; you can redistribute it and/or\n" #~ " modify it under the terms of the GNU Lesser General Public\n" #~ " License as published by the Free Software Foundation; either\n" #~ " version 2 of the License, or (at your option) any later version.\n" #~ "\n" #~ " This library is distributed in the hope that it will be useful,\n" #~ " but WITHOUT ANY WARRANTY; without even the implied warranty of\n" #~ " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n" #~ " Lesser General Public License for more details.\n" #~ "\n" #~ " You should have received a copy of the GNU Lesser General Public\n" #~ " License along with this library; if not, write to the Free Software\n" #~ " Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-" #~ "1301 USA\n" #~ "\n" #~ "Also add information on how to contact you by electronic and paper mail.\n" #~ "\n" #~ "You should also get your employer (if you work as a programmer) or your\n" #~ "school, if any, to sign a \"copyright disclaimer\" for the library, if\n" #~ "necessary. Here is a sample; alter the names:\n" #~ "\n" #~ " Yoyodyne, Inc., hereby disclaims all copyright interest in the\n" #~ " library `Frob' (a library for tweaking knobs) written by James Random " #~ "Hacker.\n" #~ "\n" #~ " , 1 April 1990\n" #~ " Ty Coon, President of Vice\n" #~ "\n" #~ "That's all there is to it!" #~ msgctxt "NAME OF TRANSLATORS" #~ msgid "Your names" #~ msgstr "Tomasz Argasiński" #~ msgctxt "EMAIL OF TRANSLATORS" #~ msgid "Your emails" #~ msgstr "targasinski@o2.pl" kde-style-polyester-2.0.0.orig/po/pl/CMakeLists.txt0000644000175000001440000000016411146600215021047 0ustar pinousersfile(GLOB _po_files *.po) GETTEXT_PROCESS_PO_FILES( pl ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} ) kde-style-polyester-2.0.0.orig/po/CMakeLists.txt0000644000175000001440000000074511146600215020441 0ustar pinousersproject(polyester-i18n) # Search KDE installation find_package(KDE4 REQUIRED) find_package(Gettext REQUIRED) include (KDE4Defaults) include(MacroOptionalAddSubdirectory) if (NOT GETTEXT_MSGMERGE_EXECUTABLE) MESSAGE(FATAL_ERROR "Please install the msgmerge binary") endif (NOT GETTEXT_MSGMERGE_EXECUTABLE) IF(NOT GETTEXT_MSGFMT_EXECUTABLE) MESSAGE(FATAL_ERROR "Please install the msgfmt binary") endif (NOT GETTEXT_MSGFMT_EXECUTABLE) add_subdirectory(it) add_subdirectory(pl) kde-style-polyester-2.0.0.orig/po/kstyle_polyester_config.pot0000644000175000001440000032402711146600215023375 0ustar pinousers# SOME DESCRIPTIVE TITLE. # This file is put in the public domain. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-17 18:08+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: style/config/ui_configdialog.h:604 msgid "Form1" msgstr "" #: style/config/ui_configdialog.h:605 msgid "Buttons" msgstr "" #: style/config/ui_configdialog.h:606 msgid "Animations" msgstr "" #: style/config/ui_configdialog.h:607 msgid "Lighter &button borders" msgstr "" #: style/config/ui_configdialog.h:608 style/config/ui_configdialog.h:667 msgid "Alt+B" msgstr "" #: style/config/ui_configdialog.h:609 msgid "Animate buttons to a &darker color" msgstr "" #: style/config/ui_configdialog.h:610 style/config/ui_configdialog.h:674 #: style/config/ui_configdialog.h:679 msgid "Alt+D" msgstr "" #: style/config/ui_configdialog.h:611 msgid "&Use shadowed button text" msgstr "" #: style/config/ui_configdialog.h:612 style/config/ui_configdialog.h:665 msgid "Alt+U" msgstr "" #: style/config/ui_configdialog.h:614 msgid "Glass buttons" msgstr "" #: style/config/ui_configdialog.h:615 msgid "Gradients" msgstr "" #: style/config/ui_configdialog.h:616 msgid "Reverse gradients" msgstr "" #: style/config/ui_configdialog.h:617 msgid "Flat" msgstr "" #: style/config/ui_configdialog.h:619 msgid "Ani&mate buttons" msgstr "" #: style/config/ui_configdialog.h:620 style/config/ui_configdialog.h:661 msgid "Alt+M" msgstr "" #: style/config/ui_configdialog.h:621 msgid "&Animate progress bars" msgstr "" #: style/config/ui_configdialog.h:622 style/config/ui_configdialog.h:663 msgid "Alt+A" msgstr "" #: style/config/ui_configdialog.h:623 msgid "Button style:" msgstr "" #: style/config/ui_configdialog.h:624 msgid "Scrollbar size:" msgstr "" #: style/config/ui_configdialog.h:625 msgid "&Colored scrollbars" msgstr "" #: style/config/ui_configdialog.h:626 style/config/ui_configdialog.h:669 #: style/config/ui_configdialog.h:681 msgid "Alt+C" msgstr "" #: style/config/ui_configdialog.h:627 msgid "&Scrollbar handle lines" msgstr "" #: style/config/ui_configdialog.h:628 msgid "Alt+S" msgstr "" #: style/config/ui_configdialog.h:630 msgid "KDE style" msgstr "" #: style/config/ui_configdialog.h:631 msgid "Platinum style" msgstr "" #: style/config/ui_configdialog.h:632 msgid "Next style" msgstr "" #: style/config/ui_configdialog.h:633 msgid "Windows style" msgstr "" #: style/config/ui_configdialog.h:634 msgid "No buttons" msgstr "" #: style/config/ui_configdialog.h:636 msgid "Scrollbar Style:" msgstr "" #: style/config/ui_configdialog.h:637 msgid "Scrollbars" msgstr "" #: style/config/ui_configdialog.h:641 msgid "Chec&kmark:" msgstr "" #: style/config/ui_configdialog.h:642 msgid "Mouseo&ver highlight:" msgstr "" #: style/config/ui_configdialog.h:646 msgid "Te&xt input highlight:" msgstr "" #: style/config/ui_configdialog.h:650 msgid "Custom colors" msgstr "" #: style/config/ui_configdialog.h:651 style/config/ui_configdialog.h:657 msgid " pixels" msgstr "" #: style/config/ui_configdialog.h:652 msgid "&Lower case buttons text" msgstr "" #: style/config/ui_configdialog.h:653 msgid "Alt+L" msgstr "" #: style/config/ui_configdialog.h:654 msgid "&General" msgstr "" #: style/config/ui_configdialog.h:655 msgid "Menus" msgstr "" #: style/config/ui_configdialog.h:656 msgid "Menu items spacing:" msgstr "" #: style/config/ui_configdialog.h:658 msgid "Button-li&ke menu items" msgstr "" #: style/config/ui_configdialog.h:659 msgid "Alt+K" msgstr "" #: style/config/ui_configdialog.h:660 msgid "&Menu stripe" msgstr "" #: style/config/ui_configdialog.h:662 msgid "Sh&adowed menubar text" msgstr "" #: style/config/ui_configdialog.h:664 msgid "Men&ubar emphasis" msgstr "" #: style/config/ui_configdialog.h:666 msgid "Menubar Empasis &border" msgstr "" #: style/config/ui_configdialog.h:668 msgid "&Custom color:" msgstr "" #: style/config/ui_configdialog.h:672 msgid "Toolbars" msgstr "" #: style/config/ui_configdialog.h:673 msgid "&Draw toolbar separator" msgstr "" #: style/config/ui_configdialog.h:675 msgid "Draw toolbar &item separator" msgstr "" #: style/config/ui_configdialog.h:676 style/config/ui_configdialog.h:688 msgid "Alt+I" msgstr "" #: style/config/ui_configdialog.h:677 msgid "Misc" msgstr "" #: style/config/ui_configdialog.h:678 msgid "&Draw statusbar frame" msgstr "" #: style/config/ui_configdialog.h:680 msgid "&Centered tabbars" msgstr "" #: style/config/ui_configdialog.h:682 msgid "&Highlight selected tab" msgstr "" #: style/config/ui_configdialog.h:683 msgid "Alt+H" msgstr "" #: style/config/ui_configdialog.h:684 msgid "&Shadows for sunken widgets" msgstr "" #: style/config/ui_configdialog.h:685 msgid "Triangular tree e&xpander" msgstr "" #: style/config/ui_configdialog.h:686 msgid "Alt+X" msgstr "" #: style/config/ui_configdialog.h:687 msgid "H&ighlight focused text input fields" msgstr "" #: style/config/ui_configdialog.h:689 msgid "Colori&ze sorted header in listviews" msgstr "" #: style/config/ui_configdialog.h:690 msgid "Alt+Z" msgstr "" #: style/config/ui_configdialog.h:691 msgid "&Advanced" msgstr "" #: style/config/ui_configdialog.h:692 msgid "" "\n" "

Polyester 1.90\n" "

Copyright " "© 2005-2006 Marco Martin
notmart@gmail.com
http://www.notmart." "org

\n" "

based on " "Plastik widget style for KDE 3
Copyright (C) 2003 Sandro Giessl

\n" "

Polyester " "window decoration derived from Smooth Blend Copyright (c) 2005 Ryan Nickell\n" "

Additional thanks\n" "

Some code " "and ideas from

\n" "
  • Linspire Clear by Sandro Giessl
  • \n" "
  • Lipstik by Patrice Tremblay
  • \n" "
  • Baghira and Bespin by Thomas Luebking
  • \n" "
  • Trolltech winXP style and Daniel Molkentin for the password dialog
  • \n" "
  • Skandale by Christoph Feck
" msgstr "" #: style/config/ui_configdialog.h:708 msgid "Ab&out" msgstr "" #: style/config/ui_configdialog.h:709 msgid "" "\n" "

GNU " "LIBRARY GENERAL PUBLIC LICENSE

\n" "

\t\t " "Version 2, June 1991

\n" "

\n" "

Copyright " "(C) 1991 Free Software Foundation, Inc.

\n" "

51 Franklin Street, Fifth Floor

\n" "

Boston, MA 02110-1301, USA.

\n" "

Everyone " "is permitted to copy and distribute verbatim copies

\n" "

of this " "license document, but changing it is not allowed.

\n" "

\n" "

[This is " "the first released version of the library GPL. It is

\n" "

numbered " "2 because it goes with version 2 of the ordinary GPL.]

\n" "

\n" "

\t\t\t " "Preamble

\n" "

\n" "

The " "licenses for most software are designed to take away your

\n" "

freedom to " "share and change it. By contrast, the GNU General Public

\n" "

Licenses " "are intended to guarantee your freedom to share and change

\n" "

free " "software--to make sure the software is free for all its users.

\n" "

\n" "

This " "license, the Library General Public License, applies to some

\n" "

specially " "designated Free Software Foundation software, and to any

\n" "

other " "libraries whose authors decide to use it. You can use it for

\n" "

your " "libraries, too.

\n" "

\n" "

When we " "speak of free software, we are referring to freedom, not

\n" "

price. " "Our General Public Licenses are designed to make sure that you

\n" "

have the " "freedom to distribute copies of free software (and charge for

\n" "

this " "service if you wish), that you receive source code or can get it

\n" "

if you " "want it, that you can change the software or use pieces of it

\n" "

in new " "free programs; and that you know you can do these things.

\n" "

\n" "

To " "protect your rights, we need to make restrictions that forbid

\n" "

anyone to " "deny you these rights or to ask you to surrender the rights.

\n" "

These " "restrictions translate to certain responsibilities for you if

\n" "

you " "distribute copies of the library, or if you modify it.

\n" "

\n" "

For " "example, if you distribute copies of the library, whether gratis

\n" "

or for a " "fee, you must give the recipients all the rights that we gave

\n" "

you. You " "must make sure that they, too, receive or can get the source

\n" "

code. If " "you link a program with the library, you must provide

\n" "

complete " "object files to the recipients so that they can relink them

\n" "

with the " "library, after making changes to the library and recompiling

\n" "

it. And " "you must show them these terms so they know their rights.

\n" "

\n" "

Our " "method of protecting your rights has two steps: (1) copyright

\n" "

the " "library, and (2) offer you this license which gives you legal

\n" "

permission " "to copy, distribute and/or modify the library.

\n" "

\n" "

Also, " "for each distributor's protection, we want to make certain

\n" "

that " "everyone understands that there is no warranty for this free

\n" "

library. " "If the library is modified by someone else and passed on, we

\n" "

want its " "recipients to know that what they have is not the original

\n" "

version, " "so that any problems introduced by others will not reflect on

\n" "

the " "original authors' reputations.

\n" "

\n" "

Finally, " "any free program is threatened constantly by software

\n" "

patents. " "We wish to avoid the danger that companies distributing free

\n" "

software " "will individually obtain patent licenses, thus in effect

\n" "

transforming the program into proprietary software. To prevent this,\n" "

we have " "made it clear that any patent must be licensed for everyone's

\n" "

free use " "or not licensed at all.

\n" "

\n" "

Most GNU " "software, including some libraries, is covered by the ordinary

\n" "

GNU " "General Public License, which was designed for utility programs. This

\n" "

license, " "the GNU Library General Public License, applies to certain

\n" "

designated " "libraries. This license is quite different from the ordinary

\n" "

one; be " "sure to read it in full, and don't assume that anything in it is

\n" "

the same " "as in the ordinary license.

\n" "

\n" "

The " "reason we have a separate public license for some libraries is that

\n" "

they blur " "the distinction we usually make between modifying or adding to a

\n" "

program " "and simply using it. Linking a program with a library, without

\n" "

changing " "the library, is in some sense simply using the library, and is

\n" "

analogous " "to running a utility program or application program. However, in

\n" "

a textual " "and legal sense, the linked executable is a combined work, a

\n" "

derivative " "of the original library, and the ordinary General Public License

\n" "

treats it " "as such.

\n" "

\n" "

Because " "of this blurred distinction, using the ordinary General

\n" "

Public " "License for libraries did not effectively promote software

\n" "

sharing, " "because most developers did not use the libraries. We

\n" "

concluded " "that weaker conditions might promote sharing better.

\n" "

\n" "

However, " "unrestricted linking of non-free programs would deprive the

\n" "

users of " "those programs of all benefit from the free status of the

\n" "

libraries " "themselves. This Library General Public License is intended to

\n" "

permit " "developers of non-free programs to use free libraries, while

\n" "

preserving " "your freedom as a user of such programs to change the free

\n" "

libraries " "that are incorporated in them. (We have not seen how to achieve

\n" "

this as " "regards changes in header files, but we have achieved it as regards

\n" "

changes in " "the actual functions of the Library.) The hope is that this

\n" "

will lead " "to faster development of free libraries.

\n" "

\n" "

The " "precise terms and conditions for copying, distribution and

\n" "

modification follow. Pay close attention to the difference between a\n" "

\"work " "based on the library\" and a \"work that uses the library\". The

\n" "

former " "contains code derived from the library, while the latter only

\n" "

works " "together with the library.

\n" "

\n" "

Note " "that it is possible for a library to be covered by the ordinary

\n" "

General " "Public License rather than by this special one.

\n" "

\n" "

\t\t GNU " "LIBRARY GENERAL PUBLIC LICENSE

\n" "

TERMS " "AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

\n" "

\n" "

0. This " "License Agreement applies to any software library which

\n" "

contains a " "notice placed by the copyright holder or other authorized

\n" "

party " "saying it may be distributed under the terms of this Library

\n" "

General " "Public License (also called \"this License\"). Each licensee is

\n" "

addressed " "as \"you\".

\n" "

\n" "

A " "\"library\" means a collection of software functions and/or data

\n" "

prepared " "so as to be conveniently linked with application programs

\n" "

(which use " "some of those functions and data) to form executables.

\n" "

\n" "

The " "\"Library\", below, refers to any such software library or work

\n" "

which has " "been distributed under these terms. A \"work based on the

\n" "

Library\" " "means either the Library or any derivative work under

\n" "

copyright " "law: that is to say, a work containing the Library or a

\n" "

portion of " "it, either verbatim or with modifications and/or translated

\n" "

straightforwardly into another language. (Hereinafter, translation is\n" "

included " "without limitation in the term \"modification\".)

\n" "

\n" "

\"Source " "code\" for a work means the preferred form of the work for

\n" "

making " "modifications to it. For a library, complete source code means

\n" "

all the " "source code for all modules it contains, plus any associated

\n" "

interface " "definition files, plus the scripts used to control compilation

\n" "

and " "installation of the library.

\n" "

\n" "

" "Activities other than copying, distribution and modification are not

\n" "

covered by " "this License; they are outside its scope. The act of

\n" "

running a " "program using the Library is not restricted, and output from

\n" "

such a " "program is covered only if its contents constitute a work based

\n" "

on the " "Library (independent of the use of the Library in a tool for

\n" "

writing " "it). Whether that is true depends on what the Library does

\n" "

and what " "the program that uses the Library does.

\n" "

\n" "

1. You " "may copy and distribute verbatim copies of the Library's

\n" "

complete " "source code as you receive it, in any medium, provided that

\n" "

you " "conspicuously and appropriately publish on each copy an

\n" "

appropriate copyright notice and disclaimer of warranty; keep intact

\n" "

all the " "notices that refer to this License and to the absence of any

\n" "

warranty; " "and distribute a copy of this License along with the

\n" "

Library.\n" "

\n" "

You may " "charge a fee for the physical act of transferring a copy,

\n" "

and you " "may at your option offer warranty protection in exchange for a

\n" "

fee.

\n" "

\n" "

2. You " "may modify your copy or copies of the Library or any portion

\n" "

of it, " "thus forming a work based on the Library, and copy and

\n" "

distribute " "such modifications or work under the terms of Section 1

\n" "

above, " "provided that you also meet all of these conditions:

\n" "

\n" "

a) The " "modified work must itself be a software library.

\n" "

\n" "

b) You " "must cause the files modified to carry prominent notices

\n" "

" "stating that you changed the files and the date of any change.

\n" "

\n" "

c) You " "must cause the whole of the work to be licensed at no

\n" "

charge " "to all third parties under the terms of this License.

\n" "

\n" "

d) If " "a facility in the modified Library refers to a function or a

\n" "

table " "of data to be supplied by an application program that uses

\n" "

the " "facility, other than as an argument passed when the facility

\n" "

is " "invoked, then you must make a good faith effort to ensure that,

\n" "

in the " "event an application does not supply such function or

\n" "

table, " "the facility still operates, and performs whatever part of

\n" "

its " "purpose remains meaningful.

\n" "

\n" "

(For " "example, a function in a library to compute square roots has

\n" "

a " "purpose that is entirely well-defined independent of the

\n" "

" "application. Therefore, Subsection 2d requires that any

\n" "

" "application-supplied function or table used by this function must

\n" "

be " "optional: if the application does not supply it, the square

\n" "

root " "function must still compute square roots.)

\n" "

\n" "

These " "requirements apply to the modified work as a whole. If

\n" "

identifiable sections of that work are not derived from the Library,

\n" "

and can be " "reasonably considered independent and separate works in

\n" "

themselves, then this License, and its terms, do not apply to those

\n" "

sections " "when you distribute them as separate works. But when you

\n" "

distribute " "the same sections as part of a whole which is a work based

\n" "

on the " "Library, the distribution of the whole must be on the terms of

\n" "

this " "License, whose permissions for other licensees extend to the

\n" "

entire " "whole, and thus to each and every part regardless of who wrote

\n" "

it.

\n" "

\n" "

Thus, it " "is not the intent of this section to claim rights or contest

\n" "

your " "rights to work written entirely by you; rather, the intent is to

\n" "

exercise " "the right to control the distribution of derivative or

\n" "

collective " "works based on the Library.

\n" "

\n" "

In " "addition, mere aggregation of another work not based on the Library

\n" "

with the " "Library (or with a work based on the Library) on a volume of

\n" "

a storage " "or distribution medium does not bring the other work under

\n" "

the scope " "of this License.

\n" "

\n" "

3. You " "may opt to apply the terms of the ordinary GNU General Public

\n" "

License " "instead of this License to a given copy of the Library. To do

\n" "

this, you " "must alter all the notices that refer to this License, so

\n" "

that they " "refer to the ordinary GNU General Public License, version 2,

\n" "

instead of " "to this License. (If a newer version than version 2 of the

\n" "

ordinary " "GNU General Public License has appeared, then you can specify

\n" "

that " "version instead if you wish.) Do not make any other change in

\n" "

these " "notices.

\n" "

\n" "

Once " "this change is made in a given copy, it is irreversible for

\n" "

that copy, " "so the ordinary GNU General Public License applies to all

\n" "

subsequent " "copies and derivative works made from that copy.

\n" "

\n" "

This " "option is useful when you wish to copy part of the code of

\n" "

the " "Library into a program that is not a library.

\n" "

\n" "

4. You " "may copy and distribute the Library (or a portion or

\n" "

derivative " "of it, under Section 2) in object code or executable form

\n" "

under the " "terms of Sections 1 and 2 above provided that you accompany

\n" "

it with " "the complete corresponding machine-readable source code, which

\n" "

must be " "distributed under the terms of Sections 1 and 2 above on a

\n" "

medium " "customarily used for software interchange.

\n" "

\n" "

If " "distribution of object code is made by offering access to copy

\n" "

from a " "designated place, then offering equivalent access to copy the

\n" "

source " "code from the same place satisfies the requirement to

\n" "

distribute " "the source code, even though third parties are not

\n" "

compelled " "to copy the source along with the object code.

\n" "

\n" "

5. A " "program that contains no derivative of any portion of the

\n" "

Library, " "but is designed to work with the Library by being compiled or

\n" "

linked " "with it, is called a \"work that uses the Library\". Such a

\n" "

work, in " "isolation, is not a derivative work of the Library, and

\n" "

therefore " "falls outside the scope of this License.

\n" "

\n" "

However, " "linking a \"work that uses the Library\" with the Library

\n" "

creates an " "executable that is a derivative of the Library (because it

\n" "

contains " "portions of the Library), rather than a \"work that uses the

\n" "

library" "\". The executable is therefore covered by this License.

\n" "

Section 6 " "states terms for distribution of such executables.

\n" "

\n" "

When a " "\"work that uses the Library\" uses material from a header file

\n" "

that is " "part of the Library, the object code for the work may be a

\n" "

derivative " "work of the Library even though the source code is not.

\n" "

Whether " "this is true is especially significant if the work can be

\n" "

linked " "without the Library, or if the work is itself a library. The

\n" "

threshold " "for this to be true is not precisely defined by law.

\n" "

\n" "

If such " "an object file uses only numerical parameters, data

\n" "

structure " "layouts and accessors, and small macros and small inline

\n" "

functions " "(ten lines or less in length), then the use of the object

\n" "

file is " "unrestricted, regardless of whether it is legally a derivative

\n" "

work. " "(Executables containing this object code plus portions of the

\n" "

Library " "will still fall under Section 6.)

\n" "

\n" "

" "Otherwise, if the work is a derivative of the Library, you may

\n" "

distribute " "the object code for the work under the terms of Section 6.

\n" "

Any " "executables containing that work also fall under Section 6,

\n" "

whether or " "not they are linked directly with the Library itself.

\n" "

\n" "

6. As an " "exception to the Sections above, you may also compile or

\n" "

link a " "\"work that uses the Library\" with the Library to produce a

\n" "

work " "containing portions of the Library, and distribute that work

\n" "

under " "terms of your choice, provided that the terms permit

\n" "

modification of the work for the customer's own use and reverse

\n" "

engineering for debugging such modifications.

\n" "

\n" "

You must " "give prominent notice with each copy of the work that the

\n" "

Library is " "used in it and that the Library and its use are covered by

\n" "

this " "License. You must supply a copy of this License. If the work

\n" "

during " "execution displays copyright notices, you must include the

\n" "

copyright " "notice for the Library among them, as well as a reference

\n" "

directing " "the user to the copy of this License. Also, you must do one

\n" "

of these " "things:

\n" "

\n" "

a) " "Accompany the work with the complete corresponding

\n" "

" "machine-readable source code for the Library including whatever

\n" "

" "changes were used in the work (which must be distributed under

\n" "

" "Sections 1 and 2 above); and, if the work is an executable linked

\n" "

with " "the Library, with the complete machine-readable \"work that

\n" "

uses " "the Library\", as object code and/or source code, so that the

\n" "

user " "can modify the Library and then relink to produce a modified

\n" "

" "executable containing the modified Library. (It is understood

\n" "

that " "the user who changes the contents of definitions files in the

\n" "

" "Library will not necessarily be able to recompile the application

\n" "

to use " "the modified definitions.)

\n" "

\n" "

b) " "Accompany the work with a written offer, valid for at

\n" "

least " "three years, to give the same user the materials

\n" "

" "specified in Subsection 6a, above, for a charge no more

\n" "

than " "the cost of performing this distribution.

\n" "

\n" "

c) If " "distribution of the work is made by offering access to copy

\n" "

from a " "designated place, offer equivalent access to copy the above

\n" "

" "specified materials from the same place.

\n" "

\n" "

d) " "Verify that the user has already received a copy of these

\n" "

" "materials or that you have already sent this user a copy.

\n" "

\n" "

For an " "executable, the required form of the \"work that uses the

\n" "

Library\" " "must include any data and utility programs needed for

\n" "

reproducing the executable from it. However, as a special exception,\n" "

the source " "code distributed need not include anything that is normally

\n" "

distributed (in either source or binary form) with the major

\n" "

components " "(compiler, kernel, and so on) of the operating system on

\n" "

which the " "executable runs, unless that component itself accompanies

\n" "

the " "executable.

\n" "

\n" "

It may " "happen that this requirement contradicts the license

\n" "

restrictions of other proprietary libraries that do not normally

\n" "

accompany " "the operating system. Such a contradiction means you cannot

\n" "

use both " "them and the Library together in an executable that you

\n" "

distribute." "

\n" "

\n" "

7. You " "may place library facilities that are a work based on the

\n" "

Library " "side-by-side in a single library together with other library

\n" "

facilities " "not covered by this License, and distribute such a combined

\n" "

library, " "provided that the separate distribution of the work based on

\n" "

the " "Library and of the other library facilities is otherwise

\n" "

permitted, " "and provided that you do these two things:

\n" "

\n" "

a) " "Accompany the combined library with a copy of the same work

\n" "

based " "on the Library, uncombined with any other library

\n" "

" "facilities. This must be distributed under the terms of the

\n" "

" "Sections above.

\n" "

\n" "

b) " "Give prominent notice with the combined library of the fact

\n" "

that " "part of it is a work based on the Library, and explaining

\n" "

where " "to find the accompanying uncombined form of the same work.

\n" "

\n" "

8. You " "may not copy, modify, sublicense, link with, or distribute

\n" "

the " "Library except as expressly provided under this License. Any

\n" "

attempt " "otherwise to copy, modify, sublicense, link with, or

\n" "

distribute " "the Library is void, and will automatically terminate your

\n" "

rights " "under this License. However, parties who have received copies,

\n" "

or rights, " "from you under this License will not have their licenses

\n" "

terminated " "so long as such parties remain in full compliance.

\n" "

\n" "

9. You " "are not required to accept this License, since you have not

\n" "

signed " "it. However, nothing else grants you permission to modify or

\n" "

distribute " "the Library or its derivative works. These actions are

\n" "

prohibited " "by law if you do not accept this License. Therefore, by

\n" "

modifying " "or distributing the Library (or any work based on the

\n" "

Library), " "you indicate your acceptance of this License to do so, and

\n" "

all its " "terms and conditions for copying, distributing or modifying

\n" "

the " "Library or works based on it.

\n" "

\n" "

10. Each " "time you redistribute the Library (or any work based on the

\n" "

Library), " "the recipient automatically receives a license from the

\n" "

original " "licensor to copy, distribute, link with or modify the Library

\n" "

subject to " "these terms and conditions. You may not impose any further

\n" "

restrictions on the recipients' exercise of the rights granted herein.\n" "

You are " "not responsible for enforcing compliance by third parties to

\n" "

this " "License.

\n" "

\n" "

11. If, " "as a consequence of a court judgment or allegation of patent

\n" "

infringement or for any other reason (not limited to patent issues),

\n" "

conditions " "are imposed on you (whether by court order, agreement or

\n" "

otherwise) " "that contradict the conditions of this License, they do not

\n" "

excuse you " "from the conditions of this License. If you cannot

\n" "

distribute " "so as to satisfy simultaneously your obligations under this

\n" "

License " "and any other pertinent obligations, then as a consequence you

\n" "

may not " "distribute the Library at all. For example, if a patent

\n" "

license " "would not permit royalty-free redistribution of the Library by

\n" "

all those " "who receive copies directly or indirectly through you, then

\n" "

the only " "way you could satisfy both it and this License would be to

\n" "

refrain " "entirely from distribution of the Library.

\n" "

\n" "

If any " "portion of this section is held invalid or unenforceable under any

\n" "

particular " "circumstance, the balance of the section is intended to apply,

\n" "

and the " "section as a whole is intended to apply in other circumstances.

\n" "

\n" "

It is not " "the purpose of this section to induce you to infringe any

\n" "

patents or " "other property right claims or to contest validity of any

\n" "

such " "claims; this section has the sole purpose of protecting the

\n" "

integrity " "of the free software distribution system which is

\n" "

implemented by public license practices. Many people have made

\n" "

generous " "contributions to the wide range of software distributed

\n" "

through " "that system in reliance on consistent application of that

\n" "

system; it " "is up to the author/donor to decide if he or she is willing

\n" "

to " "distribute software through any other system and a licensee cannot

\n" "

impose " "that choice.

\n" "

\n" "

This " "section is intended to make thoroughly clear what is believed to

\n" "

be a " "consequence of the rest of this License.

\n" "

\n" "

12. If " "the distribution and/or use of the Library is restricted in

\n" "

certain " "countries either by patents or by copyrighted interfaces, the

\n" "

original " "copyright holder who places the Library under this License may add

\n" "

an " "explicit geographical distribution limitation excluding those countries,\n" "

so that " "distribution is permitted only in or among countries not thus

\n" "

excluded. " "In such case, this License incorporates the limitation as if

\n" "

written in " "the body of this License.

\n" "

\n" "

13. The " "Free Software Foundation may publish revised and/or new

\n" "

versions " "of the Library General Public License from time to time.

\n" "

Such new " "versions will be similar in spirit to the present version,

\n" "

but may " "differ in detail to address new problems or concerns.

\n" "

\n" "

Each " "version is given a distinguishing version number. If the Library

\n" "

specifies " "a version number of this License which applies to it and

\n" "

\"any " "later version\", you have the option of following the terms and

\n" "

conditions " "either of that version or of any later version published by

\n" "

the Free " "Software Foundation. If the Library does not specify a

\n" "

license " "version number, you may choose any version ever published by

\n" "

the Free " "Software Foundation.

\n" "

\n" "

14. If " "you wish to incorporate parts of the Library into other free

\n" "

programs " "whose distribution conditions are incompatible with these,

\n" "

write to " "the author to ask for permission. For software which is

\n" "

copyrighted by the Free Software Foundation, write to the Free

\n" "

Software " "Foundation; we sometimes make exceptions for this. Our

\n" "

decision " "will be guided by the two goals of preserving the free status

\n" "

of all " "derivatives of our free software and of promoting the sharing

\n" "

and reuse " "of software generally.

\n" "

\n" "

\t\t\t " "NO WARRANTY

\n" "

\n" "

15. " "BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO

\n" "

WARRANTY " "FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.

\n" "

EXCEPT " "WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR

\n" "

OTHER " "PARTIES PROVIDE THE LIBRARY \"AS IS\" WITHOUT WARRANTY OF ANY

\n" "

KIND, " "EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE

\n" "

IMPLIED " "WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR

\n" "

PURPOSE. " "THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE

\n" "

LIBRARY IS " "WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME

\n" "

THE COST " "OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

\n" "

\n" "

16. IN " "NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN

\n" "

WRITING " "WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY

\n" "

AND/OR " "REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU

\n" "

FOR " "DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR

\n" "

CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE

\n" "

LIBRARY " "(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING

\n" "

RENDERED " "INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A

\n" "

FAILURE OF " "THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF

\n" "

SUCH " "HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH

\n" "

DAMAGES.\n" "

\n" "

\t\t " "END OF TERMS AND CONDITIONS

\n" "

\n" "

" "How to Apply These Terms to Your New Libraries

\n" "

\n" "

If you " "develop a new library, and you want it to be of the greatest

\n" "

possible " "use to the public, we recommend making it free software that

\n" "

everyone " "can redistribute and change. You can do so by permitting

\n" "

redistribution under these terms (or, alternatively, under the terms of " "the

\n" "

ordinary " "General Public License).

\n" "

\n" "

To apply " "these terms, attach the following notices to the library. It is

\n" "

safest to " "attach them to the start of each source file to most effectively

\n" "

convey the " "exclusion of warranty; and each file should have at least the

\n" "

\"copyright" "\" line and a pointer to where the full notice is found.

\n" "

\n" "

<" "one line to give the library's name and a brief idea of what it does.>\n" "

" "Copyright (C) <year> <name of author>

\n" "

\n" "

This " "library is free software; you can redistribute it and/or

\n" "

modify " "it under the terms of the GNU Lesser General Public

\n" "

" "License as published by the Free Software Foundation; either

\n" "

" "version 2 of the License, or (at your option) any later version.

\n" "

\n" "

This " "library is distributed in the hope that it will be useful,

\n" "

but " "WITHOUT ANY WARRANTY; without even the implied warranty of

\n" "

" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU

\n" "

Lesser " "General Public License for more details.

\n" "

\n" "

You " "should have received a copy of the GNU Lesser General Public

\n" "

" "License along with this library; if not, write to the Free Software

\n" "

" "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 " "USA

\n" "

\n" "

Also add " "information on how to contact you by electronic and paper mail.

\n" "

\n" "

You should " "also get your employer (if you work as a programmer) or your

\n" "

school, if " "any, to sign a \"copyright disclaimer\" for the library, if

\n" "

necessary. Here is a sample; alter the names:

\n" "

\n" "

" "Yoyodyne, Inc., hereby disclaims all copyright interest in the

\n" "

library " "`Frob' (a library for tweaking knobs) written by James Random Hacker.

\n" "

\n" "

<" "signature of Ty Coon>, 1 April 1990

\n" "

Ty Coon, " "President of Vice

\n" "

\n" "

That's all " "there is to it!

" msgstr "" #: style/config/ui_configdialog.h:1288 msgid "Lice&nse agreement" msgstr "" kde-style-polyester-2.0.0.orig/po/it/0000755000175000001440000000000011146642105016313 5ustar pinouserskde-style-polyester-2.0.0.orig/po/it/kstyle_polyester_config.po0000644000175000001440000032610311146600215023622 0ustar pinousers# translation of it.po to italian # Copyright (C) 2008 # This file is distributed under the same license as the package. # # Marco Martin , 2008. msgid "" msgstr "" "Project-Id-Version: it\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-17 18:08+0100\n" "PO-Revision-Date: 2008-01-14 18:11+0100\n" "Last-Translator: Marco Martin \n" "Language-Team: italian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.4\n" #: style/config/ui_configdialog.h:604 msgid "Form1" msgstr "" #: style/config/ui_configdialog.h:605 msgid "Buttons" msgstr "Pulsanti" #: style/config/ui_configdialog.h:606 msgid "Animations" msgstr "Animazioni" #: style/config/ui_configdialog.h:607 msgid "Lighter &button borders" msgstr "Bordi dei pulsanti più&leggeri" #: style/config/ui_configdialog.h:608 style/config/ui_configdialog.h:667 msgid "Alt+B" msgstr "" #: style/config/ui_configdialog.h:609 msgid "Animate buttons to a &darker color" msgstr "Anima i pulsanti verso un colore &scuro" #: style/config/ui_configdialog.h:610 style/config/ui_configdialog.h:674 #: style/config/ui_configdialog.h:679 msgid "Alt+D" msgstr "" #: style/config/ui_configdialog.h:611 msgid "&Use shadowed button text" msgstr "&Ombreggia il testo dei pulsanti" #: style/config/ui_configdialog.h:612 style/config/ui_configdialog.h:665 msgid "Alt+U" msgstr "" #: style/config/ui_configdialog.h:614 msgid "Glass buttons" msgstr "Pulsanti di vetro" #: style/config/ui_configdialog.h:615 msgid "Gradients" msgstr "Gradienti" #: style/config/ui_configdialog.h:616 msgid "Reverse gradients" msgstr "Gradienti inversi" #: style/config/ui_configdialog.h:617 msgid "Flat" msgstr "Piatto" #: style/config/ui_configdialog.h:619 msgid "Ani&mate buttons" msgstr "Ani&ma i pulsanti" #: style/config/ui_configdialog.h:620 style/config/ui_configdialog.h:661 msgid "Alt+M" msgstr "" #: style/config/ui_configdialog.h:621 msgid "&Animate progress bars" msgstr "&Anima le progress bar" #: style/config/ui_configdialog.h:622 style/config/ui_configdialog.h:663 msgid "Alt+A" msgstr "" #: style/config/ui_configdialog.h:623 msgid "Button style:" msgstr "Stile dei pulsanti:" #: style/config/ui_configdialog.h:624 msgid "Scrollbar size:" msgstr "Dimensioi della scrollbar:" #: style/config/ui_configdialog.h:625 msgid "&Colored scrollbars" msgstr "Scrollbar &colorate" #: style/config/ui_configdialog.h:626 style/config/ui_configdialog.h:669 #: style/config/ui_configdialog.h:681 msgid "Alt+C" msgstr "" #: style/config/ui_configdialog.h:627 msgid "&Scrollbar handle lines" msgstr "Linee nell'handle della scrollbar" #: style/config/ui_configdialog.h:628 msgid "Alt+S" msgstr "" #: style/config/ui_configdialog.h:630 msgid "KDE style" msgstr "stile KDE" #: style/config/ui_configdialog.h:631 msgid "Platinum style" msgstr "Platinum" #: style/config/ui_configdialog.h:632 msgid "Next style" msgstr "Next" #: style/config/ui_configdialog.h:633 msgid "Windows style" msgstr "Windows" #: style/config/ui_configdialog.h:634 #, fuzzy msgid "No buttons" msgstr "Pulsanti" #: style/config/ui_configdialog.h:636 msgid "Scrollbar Style:" msgstr "Stile Scrollbar:" #: style/config/ui_configdialog.h:637 msgid "Scrollbars" msgstr "Scrollbar" #: style/config/ui_configdialog.h:641 msgid "Chec&kmark:" msgstr "" #: style/config/ui_configdialog.h:642 msgid "Mouseo&ver highlight:" msgstr "E&videnziatura sotto il mouse" #: style/config/ui_configdialog.h:646 msgid "Te&xt input highlight:" msgstr "Ev&idenziatura caselle di testo:" #: style/config/ui_configdialog.h:650 msgid "Custom colors" msgstr "Colori personalizzati" #: style/config/ui_configdialog.h:651 style/config/ui_configdialog.h:657 msgid " pixels" msgstr "pixel" #: style/config/ui_configdialog.h:652 msgid "&Lower case buttons text" msgstr "T&esto dei pulsanti minuscolo" #: style/config/ui_configdialog.h:653 msgid "Alt+L" msgstr "" #: style/config/ui_configdialog.h:654 msgid "&General" msgstr "&Generale" #: style/config/ui_configdialog.h:655 msgid "Menus" msgstr "Menu" #: style/config/ui_configdialog.h:656 msgid "Menu items spacing:" msgstr "Spaziatura degli elementi del menu" #: style/config/ui_configdialog.h:658 msgid "Button-li&ke menu items" msgstr "Ele&menti dei menu simili a pulsanti" #: style/config/ui_configdialog.h:659 msgid "Alt+K" msgstr "" #: style/config/ui_configdialog.h:660 msgid "&Menu stripe" msgstr "Striscia nei &manu" #: style/config/ui_configdialog.h:662 msgid "Sh&adowed menubar text" msgstr "Testo dell&a menubar ombreggiato" #: style/config/ui_configdialog.h:664 msgid "Men&ubar emphasis" msgstr "Enfasi sulla men&ubar" #: style/config/ui_configdialog.h:666 msgid "Menubar Empasis &border" msgstr "&Bordo dell'enfasi della menubar" #: style/config/ui_configdialog.h:668 msgid "&Custom color:" msgstr "&Colore personalizzato" #: style/config/ui_configdialog.h:672 msgid "Toolbars" msgstr "Toolbar" #: style/config/ui_configdialog.h:673 msgid "&Draw toolbar separator" msgstr "&Disegna i separatori delle toolbar" #: style/config/ui_configdialog.h:675 msgid "Draw toolbar &item separator" msgstr "Disegna separatori per gl&i elementi delle toolbar" #: style/config/ui_configdialog.h:676 style/config/ui_configdialog.h:688 msgid "Alt+I" msgstr "" #: style/config/ui_configdialog.h:677 msgid "Misc" msgstr "Vari" #: style/config/ui_configdialog.h:678 msgid "&Draw statusbar frame" msgstr "&Disegna bordi nella statusbar" #: style/config/ui_configdialog.h:680 msgid "&Centered tabbars" msgstr "Tabbar ¢rate" #: style/config/ui_configdialog.h:682 msgid "&Highlight selected tab" msgstr "&Evidenzia il tab selezionato" #: style/config/ui_configdialog.h:683 msgid "Alt+H" msgstr "" #: style/config/ui_configdialog.h:684 msgid "&Shadows for sunken widgets" msgstr "" #: style/config/ui_configdialog.h:685 msgid "Triangular tree e&xpander" msgstr "E&xpander dei menu ad albero triangolare" #: style/config/ui_configdialog.h:686 msgid "Alt+X" msgstr "" #: style/config/ui_configdialog.h:687 msgid "H&ighlight focused text input fields" msgstr "Ev&idenzia le caselle di testo con focus" #: style/config/ui_configdialog.h:689 msgid "Colori&ze sorted header in listviews" msgstr "Header delle liste &colorati" #: style/config/ui_configdialog.h:690 msgid "Alt+Z" msgstr "" #: style/config/ui_configdialog.h:691 msgid "&Advanced" msgstr "&Avanzate" #: style/config/ui_configdialog.h:692 msgid "" "\n" "

Polyester 1.90\n" "

Copyright " "© 2005-2006 Marco Martin
notmart@gmail.com
http://www.notmart." "org

\n" "

based on " "Plastik widget style for KDE 3
Copyright (C) 2003 Sandro Giessl

\n" "

Polyester " "window decoration derived from Smooth Blend Copyright (c) 2005 Ryan Nickell\n" "

Additional thanks\n" "

Some code " "and ideas from

\n" "
  • Linspire Clear by Sandro Giessl
  • \n" "
  • Lipstik by Patrice Tremblay
  • \n" "
  • Baghira and Bespin by Thomas Luebking
  • \n" "
  • Trolltech winXP style and Daniel Molkentin for the password dialog
  • \n" "
  • Skandale by Christoph Feck
" msgstr "" #: style/config/ui_configdialog.h:708 msgid "Ab&out" msgstr "" #: style/config/ui_configdialog.h:709 msgid "" "\n" "

GNU " "LIBRARY GENERAL PUBLIC LICENSE

\n" "

\t\t " "Version 2, June 1991

\n" "

\n" "

Copyright " "(C) 1991 Free Software Foundation, Inc.

\n" "

51 Franklin Street, Fifth Floor

\n" "

Boston, MA 02110-1301, USA.

\n" "

Everyone " "is permitted to copy and distribute verbatim copies

\n" "

of this " "license document, but changing it is not allowed.

\n" "

\n" "

[This is " "the first released version of the library GPL. It is

\n" "

numbered " "2 because it goes with version 2 of the ordinary GPL.]

\n" "

\n" "

\t\t\t " "Preamble

\n" "

\n" "

The " "licenses for most software are designed to take away your

\n" "

freedom to " "share and change it. By contrast, the GNU General Public

\n" "

Licenses " "are intended to guarantee your freedom to share and change

\n" "

free " "software--to make sure the software is free for all its users.

\n" "

\n" "

This " "license, the Library General Public License, applies to some

\n" "

specially " "designated Free Software Foundation software, and to any

\n" "

other " "libraries whose authors decide to use it. You can use it for

\n" "

your " "libraries, too.

\n" "

\n" "

When we " "speak of free software, we are referring to freedom, not

\n" "

price. " "Our General Public Licenses are designed to make sure that you

\n" "

have the " "freedom to distribute copies of free software (and charge for

\n" "

this " "service if you wish), that you receive source code or can get it

\n" "

if you " "want it, that you can change the software or use pieces of it

\n" "

in new " "free programs; and that you know you can do these things.

\n" "

\n" "

To " "protect your rights, we need to make restrictions that forbid

\n" "

anyone to " "deny you these rights or to ask you to surrender the rights.

\n" "

These " "restrictions translate to certain responsibilities for you if

\n" "

you " "distribute copies of the library, or if you modify it.

\n" "

\n" "

For " "example, if you distribute copies of the library, whether gratis

\n" "

or for a " "fee, you must give the recipients all the rights that we gave

\n" "

you. You " "must make sure that they, too, receive or can get the source

\n" "

code. If " "you link a program with the library, you must provide

\n" "

complete " "object files to the recipients so that they can relink them

\n" "

with the " "library, after making changes to the library and recompiling

\n" "

it. And " "you must show them these terms so they know their rights.

\n" "

\n" "

Our " "method of protecting your rights has two steps: (1) copyright

\n" "

the " "library, and (2) offer you this license which gives you legal

\n" "

permission " "to copy, distribute and/or modify the library.

\n" "

\n" "

Also, " "for each distributor's protection, we want to make certain

\n" "

that " "everyone understands that there is no warranty for this free

\n" "

library. " "If the library is modified by someone else and passed on, we

\n" "

want its " "recipients to know that what they have is not the original

\n" "

version, " "so that any problems introduced by others will not reflect on

\n" "

the " "original authors' reputations.

\n" "

\n" "

Finally, " "any free program is threatened constantly by software

\n" "

patents. " "We wish to avoid the danger that companies distributing free

\n" "

software " "will individually obtain patent licenses, thus in effect

\n" "

transforming the program into proprietary software. To prevent this,\n" "

we have " "made it clear that any patent must be licensed for everyone's

\n" "

free use " "or not licensed at all.

\n" "

\n" "

Most GNU " "software, including some libraries, is covered by the ordinary

\n" "

GNU " "General Public License, which was designed for utility programs. This

\n" "

license, " "the GNU Library General Public License, applies to certain

\n" "

designated " "libraries. This license is quite different from the ordinary

\n" "

one; be " "sure to read it in full, and don't assume that anything in it is

\n" "

the same " "as in the ordinary license.

\n" "

\n" "

The " "reason we have a separate public license for some libraries is that

\n" "

they blur " "the distinction we usually make between modifying or adding to a

\n" "

program " "and simply using it. Linking a program with a library, without

\n" "

changing " "the library, is in some sense simply using the library, and is

\n" "

analogous " "to running a utility program or application program. However, in

\n" "

a textual " "and legal sense, the linked executable is a combined work, a

\n" "

derivative " "of the original library, and the ordinary General Public License

\n" "

treats it " "as such.

\n" "

\n" "

Because " "of this blurred distinction, using the ordinary General

\n" "

Public " "License for libraries did not effectively promote software

\n" "

sharing, " "because most developers did not use the libraries. We

\n" "

concluded " "that weaker conditions might promote sharing better.

\n" "

\n" "

However, " "unrestricted linking of non-free programs would deprive the

\n" "

users of " "those programs of all benefit from the free status of the

\n" "

libraries " "themselves. This Library General Public License is intended to

\n" "

permit " "developers of non-free programs to use free libraries, while

\n" "

preserving " "your freedom as a user of such programs to change the free

\n" "

libraries " "that are incorporated in them. (We have not seen how to achieve

\n" "

this as " "regards changes in header files, but we have achieved it as regards

\n" "

changes in " "the actual functions of the Library.) The hope is that this

\n" "

will lead " "to faster development of free libraries.

\n" "

\n" "

The " "precise terms and conditions for copying, distribution and

\n" "

modification follow. Pay close attention to the difference between a\n" "

\"work " "based on the library\" and a \"work that uses the library\". The

\n" "

former " "contains code derived from the library, while the latter only

\n" "

works " "together with the library.

\n" "

\n" "

Note " "that it is possible for a library to be covered by the ordinary

\n" "

General " "Public License rather than by this special one.

\n" "

\n" "

\t\t GNU " "LIBRARY GENERAL PUBLIC LICENSE

\n" "

TERMS " "AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

\n" "

\n" "

0. This " "License Agreement applies to any software library which

\n" "

contains a " "notice placed by the copyright holder or other authorized

\n" "

party " "saying it may be distributed under the terms of this Library

\n" "

General " "Public License (also called \"this License\"). Each licensee is

\n" "

addressed " "as \"you\".

\n" "

\n" "

A " "\"library\" means a collection of software functions and/or data

\n" "

prepared " "so as to be conveniently linked with application programs

\n" "

(which use " "some of those functions and data) to form executables.

\n" "

\n" "

The " "\"Library\", below, refers to any such software library or work

\n" "

which has " "been distributed under these terms. A \"work based on the

\n" "

Library\" " "means either the Library or any derivative work under

\n" "

copyright " "law: that is to say, a work containing the Library or a

\n" "

portion of " "it, either verbatim or with modifications and/or translated

\n" "

straightforwardly into another language. (Hereinafter, translation is\n" "

included " "without limitation in the term \"modification\".)

\n" "

\n" "

\"Source " "code\" for a work means the preferred form of the work for

\n" "

making " "modifications to it. For a library, complete source code means

\n" "

all the " "source code for all modules it contains, plus any associated

\n" "

interface " "definition files, plus the scripts used to control compilation

\n" "

and " "installation of the library.

\n" "

\n" "

" "Activities other than copying, distribution and modification are not

\n" "

covered by " "this License; they are outside its scope. The act of

\n" "

running a " "program using the Library is not restricted, and output from

\n" "

such a " "program is covered only if its contents constitute a work based

\n" "

on the " "Library (independent of the use of the Library in a tool for

\n" "

writing " "it). Whether that is true depends on what the Library does

\n" "

and what " "the program that uses the Library does.

\n" "

\n" "

1. You " "may copy and distribute verbatim copies of the Library's

\n" "

complete " "source code as you receive it, in any medium, provided that

\n" "

you " "conspicuously and appropriately publish on each copy an

\n" "

appropriate copyright notice and disclaimer of warranty; keep intact

\n" "

all the " "notices that refer to this License and to the absence of any

\n" "

warranty; " "and distribute a copy of this License along with the

\n" "

Library.\n" "

\n" "

You may " "charge a fee for the physical act of transferring a copy,

\n" "

and you " "may at your option offer warranty protection in exchange for a

\n" "

fee.

\n" "

\n" "

2. You " "may modify your copy or copies of the Library or any portion

\n" "

of it, " "thus forming a work based on the Library, and copy and

\n" "

distribute " "such modifications or work under the terms of Section 1

\n" "

above, " "provided that you also meet all of these conditions:

\n" "

\n" "

a) The " "modified work must itself be a software library.

\n" "

\n" "

b) You " "must cause the files modified to carry prominent notices

\n" "

" "stating that you changed the files and the date of any change.

\n" "

\n" "

c) You " "must cause the whole of the work to be licensed at no

\n" "

charge " "to all third parties under the terms of this License.

\n" "

\n" "

d) If " "a facility in the modified Library refers to a function or a

\n" "

table " "of data to be supplied by an application program that uses

\n" "

the " "facility, other than as an argument passed when the facility

\n" "

is " "invoked, then you must make a good faith effort to ensure that,

\n" "

in the " "event an application does not supply such function or

\n" "

table, " "the facility still operates, and performs whatever part of

\n" "

its " "purpose remains meaningful.

\n" "

\n" "

(For " "example, a function in a library to compute square roots has

\n" "

a " "purpose that is entirely well-defined independent of the

\n" "

" "application. Therefore, Subsection 2d requires that any

\n" "

" "application-supplied function or table used by this function must

\n" "

be " "optional: if the application does not supply it, the square

\n" "

root " "function must still compute square roots.)

\n" "

\n" "

These " "requirements apply to the modified work as a whole. If

\n" "

identifiable sections of that work are not derived from the Library,

\n" "

and can be " "reasonably considered independent and separate works in

\n" "

themselves, then this License, and its terms, do not apply to those

\n" "

sections " "when you distribute them as separate works. But when you

\n" "

distribute " "the same sections as part of a whole which is a work based

\n" "

on the " "Library, the distribution of the whole must be on the terms of

\n" "

this " "License, whose permissions for other licensees extend to the

\n" "

entire " "whole, and thus to each and every part regardless of who wrote

\n" "

it.

\n" "

\n" "

Thus, it " "is not the intent of this section to claim rights or contest

\n" "

your " "rights to work written entirely by you; rather, the intent is to

\n" "

exercise " "the right to control the distribution of derivative or

\n" "

collective " "works based on the Library.

\n" "

\n" "

In " "addition, mere aggregation of another work not based on the Library

\n" "

with the " "Library (or with a work based on the Library) on a volume of

\n" "

a storage " "or distribution medium does not bring the other work under

\n" "

the scope " "of this License.

\n" "

\n" "

3. You " "may opt to apply the terms of the ordinary GNU General Public

\n" "

License " "instead of this License to a given copy of the Library. To do

\n" "

this, you " "must alter all the notices that refer to this License, so

\n" "

that they " "refer to the ordinary GNU General Public License, version 2,

\n" "

instead of " "to this License. (If a newer version than version 2 of the

\n" "

ordinary " "GNU General Public License has appeared, then you can specify

\n" "

that " "version instead if you wish.) Do not make any other change in

\n" "

these " "notices.

\n" "

\n" "

Once " "this change is made in a given copy, it is irreversible for

\n" "

that copy, " "so the ordinary GNU General Public License applies to all

\n" "

subsequent " "copies and derivative works made from that copy.

\n" "

\n" "

This " "option is useful when you wish to copy part of the code of

\n" "

the " "Library into a program that is not a library.

\n" "

\n" "

4. You " "may copy and distribute the Library (or a portion or

\n" "

derivative " "of it, under Section 2) in object code or executable form

\n" "

under the " "terms of Sections 1 and 2 above provided that you accompany

\n" "

it with " "the complete corresponding machine-readable source code, which

\n" "

must be " "distributed under the terms of Sections 1 and 2 above on a

\n" "

medium " "customarily used for software interchange.

\n" "

\n" "

If " "distribution of object code is made by offering access to copy

\n" "

from a " "designated place, then offering equivalent access to copy the

\n" "

source " "code from the same place satisfies the requirement to

\n" "

distribute " "the source code, even though third parties are not

\n" "

compelled " "to copy the source along with the object code.

\n" "

\n" "

5. A " "program that contains no derivative of any portion of the

\n" "

Library, " "but is designed to work with the Library by being compiled or

\n" "

linked " "with it, is called a \"work that uses the Library\". Such a

\n" "

work, in " "isolation, is not a derivative work of the Library, and

\n" "

therefore " "falls outside the scope of this License.

\n" "

\n" "

However, " "linking a \"work that uses the Library\" with the Library

\n" "

creates an " "executable that is a derivative of the Library (because it

\n" "

contains " "portions of the Library), rather than a \"work that uses the

\n" "

library" "\". The executable is therefore covered by this License.

\n" "

Section 6 " "states terms for distribution of such executables.

\n" "

\n" "

When a " "\"work that uses the Library\" uses material from a header file

\n" "

that is " "part of the Library, the object code for the work may be a

\n" "

derivative " "work of the Library even though the source code is not.

\n" "

Whether " "this is true is especially significant if the work can be

\n" "

linked " "without the Library, or if the work is itself a library. The

\n" "

threshold " "for this to be true is not precisely defined by law.

\n" "

\n" "

If such " "an object file uses only numerical parameters, data

\n" "

structure " "layouts and accessors, and small macros and small inline

\n" "

functions " "(ten lines or less in length), then the use of the object

\n" "

file is " "unrestricted, regardless of whether it is legally a derivative

\n" "

work. " "(Executables containing this object code plus portions of the

\n" "

Library " "will still fall under Section 6.)

\n" "

\n" "

" "Otherwise, if the work is a derivative of the Library, you may

\n" "

distribute " "the object code for the work under the terms of Section 6.

\n" "

Any " "executables containing that work also fall under Section 6,

\n" "

whether or " "not they are linked directly with the Library itself.

\n" "

\n" "

6. As an " "exception to the Sections above, you may also compile or

\n" "

link a " "\"work that uses the Library\" with the Library to produce a

\n" "

work " "containing portions of the Library, and distribute that work

\n" "

under " "terms of your choice, provided that the terms permit

\n" "

modification of the work for the customer's own use and reverse

\n" "

engineering for debugging such modifications.

\n" "

\n" "

You must " "give prominent notice with each copy of the work that the

\n" "

Library is " "used in it and that the Library and its use are covered by

\n" "

this " "License. You must supply a copy of this License. If the work

\n" "

during " "execution displays copyright notices, you must include the

\n" "

copyright " "notice for the Library among them, as well as a reference

\n" "

directing " "the user to the copy of this License. Also, you must do one

\n" "

of these " "things:

\n" "

\n" "

a) " "Accompany the work with the complete corresponding

\n" "

" "machine-readable source code for the Library including whatever

\n" "

" "changes were used in the work (which must be distributed under

\n" "

" "Sections 1 and 2 above); and, if the work is an executable linked

\n" "

with " "the Library, with the complete machine-readable \"work that

\n" "

uses " "the Library\", as object code and/or source code, so that the

\n" "

user " "can modify the Library and then relink to produce a modified

\n" "

" "executable containing the modified Library. (It is understood

\n" "

that " "the user who changes the contents of definitions files in the

\n" "

" "Library will not necessarily be able to recompile the application

\n" "

to use " "the modified definitions.)

\n" "

\n" "

b) " "Accompany the work with a written offer, valid for at

\n" "

least " "three years, to give the same user the materials

\n" "

" "specified in Subsection 6a, above, for a charge no more

\n" "

than " "the cost of performing this distribution.

\n" "

\n" "

c) If " "distribution of the work is made by offering access to copy

\n" "

from a " "designated place, offer equivalent access to copy the above

\n" "

" "specified materials from the same place.

\n" "

\n" "

d) " "Verify that the user has already received a copy of these

\n" "

" "materials or that you have already sent this user a copy.

\n" "

\n" "

For an " "executable, the required form of the \"work that uses the

\n" "

Library\" " "must include any data and utility programs needed for

\n" "

reproducing the executable from it. However, as a special exception,\n" "

the source " "code distributed need not include anything that is normally

\n" "

distributed (in either source or binary form) with the major

\n" "

components " "(compiler, kernel, and so on) of the operating system on

\n" "

which the " "executable runs, unless that component itself accompanies

\n" "

the " "executable.

\n" "

\n" "

It may " "happen that this requirement contradicts the license

\n" "

restrictions of other proprietary libraries that do not normally

\n" "

accompany " "the operating system. Such a contradiction means you cannot

\n" "

use both " "them and the Library together in an executable that you

\n" "

distribute." "

\n" "

\n" "

7. You " "may place library facilities that are a work based on the

\n" "

Library " "side-by-side in a single library together with other library

\n" "

facilities " "not covered by this License, and distribute such a combined

\n" "

library, " "provided that the separate distribution of the work based on

\n" "

the " "Library and of the other library facilities is otherwise

\n" "

permitted, " "and provided that you do these two things:

\n" "

\n" "

a) " "Accompany the combined library with a copy of the same work

\n" "

based " "on the Library, uncombined with any other library

\n" "

" "facilities. This must be distributed under the terms of the

\n" "

" "Sections above.

\n" "

\n" "

b) " "Give prominent notice with the combined library of the fact

\n" "

that " "part of it is a work based on the Library, and explaining

\n" "

where " "to find the accompanying uncombined form of the same work.

\n" "

\n" "

8. You " "may not copy, modify, sublicense, link with, or distribute

\n" "

the " "Library except as expressly provided under this License. Any

\n" "

attempt " "otherwise to copy, modify, sublicense, link with, or

\n" "

distribute " "the Library is void, and will automatically terminate your

\n" "

rights " "under this License. However, parties who have received copies,

\n" "

or rights, " "from you under this License will not have their licenses

\n" "

terminated " "so long as such parties remain in full compliance.

\n" "

\n" "

9. You " "are not required to accept this License, since you have not

\n" "

signed " "it. However, nothing else grants you permission to modify or

\n" "

distribute " "the Library or its derivative works. These actions are

\n" "

prohibited " "by law if you do not accept this License. Therefore, by

\n" "

modifying " "or distributing the Library (or any work based on the

\n" "

Library), " "you indicate your acceptance of this License to do so, and

\n" "

all its " "terms and conditions for copying, distributing or modifying

\n" "

the " "Library or works based on it.

\n" "

\n" "

10. Each " "time you redistribute the Library (or any work based on the

\n" "

Library), " "the recipient automatically receives a license from the

\n" "

original " "licensor to copy, distribute, link with or modify the Library

\n" "

subject to " "these terms and conditions. You may not impose any further

\n" "

restrictions on the recipients' exercise of the rights granted herein.\n" "

You are " "not responsible for enforcing compliance by third parties to

\n" "

this " "License.

\n" "

\n" "

11. If, " "as a consequence of a court judgment or allegation of patent

\n" "

infringement or for any other reason (not limited to patent issues),

\n" "

conditions " "are imposed on you (whether by court order, agreement or

\n" "

otherwise) " "that contradict the conditions of this License, they do not

\n" "

excuse you " "from the conditions of this License. If you cannot

\n" "

distribute " "so as to satisfy simultaneously your obligations under this

\n" "

License " "and any other pertinent obligations, then as a consequence you

\n" "

may not " "distribute the Library at all. For example, if a patent

\n" "

license " "would not permit royalty-free redistribution of the Library by

\n" "

all those " "who receive copies directly or indirectly through you, then

\n" "

the only " "way you could satisfy both it and this License would be to

\n" "

refrain " "entirely from distribution of the Library.

\n" "

\n" "

If any " "portion of this section is held invalid or unenforceable under any

\n" "

particular " "circumstance, the balance of the section is intended to apply,

\n" "

and the " "section as a whole is intended to apply in other circumstances.

\n" "

\n" "

It is not " "the purpose of this section to induce you to infringe any

\n" "

patents or " "other property right claims or to contest validity of any

\n" "

such " "claims; this section has the sole purpose of protecting the

\n" "

integrity " "of the free software distribution system which is

\n" "

implemented by public license practices. Many people have made

\n" "

generous " "contributions to the wide range of software distributed

\n" "

through " "that system in reliance on consistent application of that

\n" "

system; it " "is up to the author/donor to decide if he or she is willing

\n" "

to " "distribute software through any other system and a licensee cannot

\n" "

impose " "that choice.

\n" "

\n" "

This " "section is intended to make thoroughly clear what is believed to

\n" "

be a " "consequence of the rest of this License.

\n" "

\n" "

12. If " "the distribution and/or use of the Library is restricted in

\n" "

certain " "countries either by patents or by copyrighted interfaces, the

\n" "

original " "copyright holder who places the Library under this License may add

\n" "

an " "explicit geographical distribution limitation excluding those countries,\n" "

so that " "distribution is permitted only in or among countries not thus

\n" "

excluded. " "In such case, this License incorporates the limitation as if

\n" "

written in " "the body of this License.

\n" "

\n" "

13. The " "Free Software Foundation may publish revised and/or new

\n" "

versions " "of the Library General Public License from time to time.

\n" "

Such new " "versions will be similar in spirit to the present version,

\n" "

but may " "differ in detail to address new problems or concerns.

\n" "

\n" "

Each " "version is given a distinguishing version number. If the Library

\n" "

specifies " "a version number of this License which applies to it and

\n" "

\"any " "later version\", you have the option of following the terms and

\n" "

conditions " "either of that version or of any later version published by

\n" "

the Free " "Software Foundation. If the Library does not specify a

\n" "

license " "version number, you may choose any version ever published by

\n" "

the Free " "Software Foundation.

\n" "

\n" "

14. If " "you wish to incorporate parts of the Library into other free

\n" "

programs " "whose distribution conditions are incompatible with these,

\n" "

write to " "the author to ask for permission. For software which is

\n" "

copyrighted by the Free Software Foundation, write to the Free

\n" "

Software " "Foundation; we sometimes make exceptions for this. Our

\n" "

decision " "will be guided by the two goals of preserving the free status

\n" "

of all " "derivatives of our free software and of promoting the sharing

\n" "

and reuse " "of software generally.

\n" "

\n" "

\t\t\t " "NO WARRANTY

\n" "

\n" "

15. " "BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO

\n" "

WARRANTY " "FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.

\n" "

EXCEPT " "WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR

\n" "

OTHER " "PARTIES PROVIDE THE LIBRARY \"AS IS\" WITHOUT WARRANTY OF ANY

\n" "

KIND, " "EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE

\n" "

IMPLIED " "WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR

\n" "

PURPOSE. " "THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE

\n" "

LIBRARY IS " "WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME

\n" "

THE COST " "OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

\n" "

\n" "

16. IN " "NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN

\n" "

WRITING " "WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY

\n" "

AND/OR " "REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU

\n" "

FOR " "DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR

\n" "

CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE

\n" "

LIBRARY " "(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING

\n" "

RENDERED " "INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A

\n" "

FAILURE OF " "THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF

\n" "

SUCH " "HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH

\n" "

DAMAGES.\n" "

\n" "

\t\t " "END OF TERMS AND CONDITIONS

\n" "

\n" "

" "How to Apply These Terms to Your New Libraries

\n" "

\n" "

If you " "develop a new library, and you want it to be of the greatest

\n" "

possible " "use to the public, we recommend making it free software that

\n" "

everyone " "can redistribute and change. You can do so by permitting

\n" "

redistribution under these terms (or, alternatively, under the terms of " "the

\n" "

ordinary " "General Public License).

\n" "

\n" "

To apply " "these terms, attach the following notices to the library. It is

\n" "

safest to " "attach them to the start of each source file to most effectively

\n" "

convey the " "exclusion of warranty; and each file should have at least the

\n" "

\"copyright" "\" line and a pointer to where the full notice is found.

\n" "

\n" "

<" "one line to give the library's name and a brief idea of what it does.>\n" "

" "Copyright (C) <year> <name of author>

\n" "

\n" "

This " "library is free software; you can redistribute it and/or

\n" "

modify " "it under the terms of the GNU Lesser General Public

\n" "

" "License as published by the Free Software Foundation; either

\n" "

" "version 2 of the License, or (at your option) any later version.

\n" "

\n" "

This " "library is distributed in the hope that it will be useful,

\n" "

but " "WITHOUT ANY WARRANTY; without even the implied warranty of

\n" "

" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU

\n" "

Lesser " "General Public License for more details.

\n" "

\n" "

You " "should have received a copy of the GNU Lesser General Public

\n" "

" "License along with this library; if not, write to the Free Software

\n" "

" "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 " "USA

\n" "

\n" "

Also add " "information on how to contact you by electronic and paper mail.

\n" "

\n" "

You should " "also get your employer (if you work as a programmer) or your

\n" "

school, if " "any, to sign a \"copyright disclaimer\" for the library, if

\n" "

necessary. Here is a sample; alter the names:

\n" "

\n" "

" "Yoyodyne, Inc., hereby disclaims all copyright interest in the

\n" "

library " "`Frob' (a library for tweaking knobs) written by James Random Hacker.

\n" "

\n" "

<" "signature of Ty Coon>, 1 April 1990

\n" "

Ty Coon, " "President of Vice

\n" "

\n" "

That's all " "there is to it!

" msgstr "" #: style/config/ui_configdialog.h:1288 msgid "Lice&nse agreement" msgstr "Accordo di lice&nza" kde-style-polyester-2.0.0.orig/po/it/CMakeLists.txt0000644000175000001440000000016411146600215021050 0ustar pinousersfile(GLOB _po_files *.po) GETTEXT_PROCESS_PO_FILES( it ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} ) kde-style-polyester-2.0.0.orig/README0000755000175000001440000000017011146600215016136 0ustar pinousersPolyester is a kde widget style and a kwin decoration both aimed to be a good balance between eye candy and simplicity. kde-style-polyester-2.0.0.orig/Messages.sh0000755000175000001440000000044411146600215017365 0ustar pinousers#! /usr/bin/env bash xgettext --foreign-user --from-code=UTF-8 -C -ktr2i18n ./style/config/ui_configdialog.h -o ./po/kstyle_polyester_config.pot for lang in it pl do msgmerge po/$lang/kstyle_polyester_config.po po/kstyle_polyester_config.pot -o po/$lang/kstyle_polyester_config.po donekde-style-polyester-2.0.0.orig/CMakeLists.txt0000644000175000001440000000221311146600215020013 0ustar pinousersproject(polyester) set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules ) # search packages used by KDE find_package(Qt4 REQUIRED) find_package(KDE4 REQUIRED) include(KDE4Defaults) SET(CPACK_PACKAGE_VERSION_MAJOR "2") SET(CPACK_PACKAGE_VERSION_MINOR "0") SET(CPACK_PACKAGE_VERSION_PATCH "0") SET(CPACK_SOURCE_PACKAGE_FILE_NAME "polyester-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") SET(CPACK_SOURCE_GENERATOR TBZ2) #SET(CPACK_SOURCE_IGNORE_FILES build deco bzrpush.sh .bzr .directory ".*kndx" ".*knit" ".bzr.*") SET(CPACK_SOURCE_IGNORE_FILES CMakeCache.txt build CMakeFiles CMakeTmp lib deco cmake_install.cmake cmake_uninstall.cmake DartTestfile.txt Makefile CPackConfig.cmake .bzr .directory CPackSourceConfig.cmake "*.cmake" install_manifest.txt bzrpush.sh ".*bzr.*" ".*~" ".*automoc.*" "moc_.*" ".*knit" ".*kndx" "drawprimitive.cpp" "CTestTestfile*" "*.cmake" "*deps") include(CPack) add_definitions(${QT_DEFINITIONS} ${KDE4_DEFINITIONS}) include_directories(${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${KDE4_INCLUDES}) add_subdirectory( style ) add_subdirectory( color-schemes ) add_subdirectory( po ) kde-style-polyester-2.0.0.orig/Polyester.kdev40000644000175000001440000000006211146600215020200 0ustar pinousers[Project] Name=Polyester Manager=KDevCMakeManager kde-style-polyester-2.0.0.orig/COPYING.LIB0000644000175000001440000006133411146600215016724 0ustar pinousers GNU LIBRARY GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1991 Free Software Foundation, Inc. 59 Temple Place - Suite 330 Boston, MA 02111-1307, USA. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the library GPL. It is numbered 2 because it goes with version 2 of the ordinary GPL.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Library General Public License, applies to some specially designated Free Software Foundation software, and to any other libraries whose authors decide to use it. You can use it for your libraries, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library, or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link a program with the library, you must provide complete object files to the recipients so that they can relink them with the library, after making changes to the library and recompiling it. And you must show them these terms so they know their rights. Our method of protecting your rights has two steps: (1) copyright the library, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the library. Also, for each distributor's protection, we want to make certain that everyone understands that there is no warranty for this free library. If the library is modified by someone else and passed on, we want its recipients to know that what they have is not the original version, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that companies distributing free software will individually obtain patent licenses, thus in effect transforming the program into proprietary software. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License, which was designed for utility programs. This license, the GNU Library General Public License, applies to certain designated libraries. This license is quite different from the ordinary one; be sure to read it in full, and don't assume that anything in it is the same as in the ordinary license. The reason we have a separate public license for some libraries is that they blur the distinction we usually make between modifying or adding to a program and simply using it. Linking a program with a library, without changing the library, is in some sense simply using the library, and is analogous to running a utility program or application program. However, in a textual and legal sense, the linked executable is a combined work, a derivative of the original library, and the ordinary General Public License treats it as such. Because of this blurred distinction, using the ordinary General Public License for libraries did not effectively promote software sharing, because most developers did not use the libraries. We concluded that weaker conditions might promote sharing better. However, unrestricted linking of non-free programs would deprive the users of those programs of all benefit from the free status of the libraries themselves. This Library General Public License is intended to permit developers of non-free programs to use free libraries, while preserving your freedom as a user of such programs to change the free libraries that are incorporated in them. (We have not seen how to achieve this as regards changes in header files, but we have achieved it as regards changes in the actual functions of the Library.) The hope is that this will lead to faster development of free libraries. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, while the latter only works together with the library. Note that it is possible for a library to be covered by the ordinary General Public License rather than by this special one. GNU LIBRARY GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Library General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also compile or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. c) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. d) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Library General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it!