From 9c897b4411477675447b109a41816e93bb8e196c Mon Sep 17 00:00:00 2001 From: Jens Bache-Wiig Date: Mon, 26 Jan 2009 15:46:11 +0100 Subject: [PATCH] Fixes: Polish toolbar buttons, fix invisible extension Details: I used vector graphics for icons, to give them a smoother appearance and added an improved extension button that is visible on a dark background. Down arrows are now painted with AA enabled. --- src/plugins/coreplugin/core.qrc | 1 + src/plugins/coreplugin/images/extension.png | Bin 0 -> 345 bytes src/plugins/coreplugin/images/linkicon.png | Bin 230 -> 592 bytes .../images/splitbutton_horizontal.png | Bin 147 -> 435 bytes src/plugins/coreplugin/mainwindow.cpp | 35 +++--- src/plugins/coreplugin/manhattanstyle.cpp | 102 ++++++++++++++++-- .../projectexplorer/images/filtericon.png | Bin 194 -> 494 bytes 7 files changed, 113 insertions(+), 25 deletions(-) create mode 100644 src/plugins/coreplugin/images/extension.png diff --git a/src/plugins/coreplugin/core.qrc b/src/plugins/coreplugin/core.qrc index c2a38452dcf..a7271ec6beb 100644 --- a/src/plugins/coreplugin/core.qrc +++ b/src/plugins/coreplugin/core.qrc @@ -67,5 +67,6 @@ images/undo.png images/unknownfile.png images/unlocked.png + images/extension.png diff --git a/src/plugins/coreplugin/images/extension.png b/src/plugins/coreplugin/images/extension.png new file mode 100644 index 0000000000000000000000000000000000000000..6bdfc07b83043b3443064d61e4dc74fe97ea8f95 GIT binary patch literal 345 zcmeAS@N?(olHy`uVBq!ia0y~yVBi2@4mJh`h9ms@x)~T4Sc;uILpV4%IBGajIv5xj zI14-?iy0W$-heQpT&aaA0|SF(iEBhjaDG}zd16s2LwR|*US?i)adKios$PCk`s{Z$ zQVa|X*F0SuLnNlw_A6!|4q#|`AIfryEpTCgm#`X}qFz9Btea%$WaHo5zZuv1b>4_c zFj%%MC^*o35tHIi#zyteIY*TB9^Un_+G$+QK7WU>%E$R?i}M-p^!=1O@P=Q&NoQ)1 zHA8-(jJ0c^&BQ+p8+JHtdu-9~wQ~Kw_x8;S6)RS~x+_tvw)4P_gMO1z?w7`1H94!r zb2#_*wpPPup%Yvpr%7Kg?Jtd$-*Qd-{`dXui5H??r!#C=I>o+n-hPG|DUoGUg63T^ snHwj6PWSXK>C?T>D_?7LEmLt6+P~Nzopr0JzkF=Kufz literal 0 HcmV?d00001 diff --git a/src/plugins/coreplugin/images/linkicon.png b/src/plugins/coreplugin/images/linkicon.png index 864f36f174708b92f2d7bcbb1ba459273510215d..4e4d4f7b7fbac77c23076501afd79910395a5fce 100644 GIT binary patch delta 567 zcmaFHc!6btNAX(xXQ4*Y= zR#Ki=l*&+EUaps!mtCBkSdglhUz9%kosAR&1LIjw7sn8b-nEnMGok`Tj_v=wXphGd zK`W7V1-^q5{BoylyU8Tv(Xm5R{rI&Y4n5Z7_Jo%~R`n$tWt~n=*~@!ULBoIYg@Ybi zT94vB__uz4v-Qrt=ZDL!LSA-9L~UT-_jJzhzZP?f^^}#)2wn1d_n)!A=j2)Dh#4nl zGW@vDV9wrrP?#ZlazguIM$buI4ELCK>~d335)jmydTMpn)?bQJy={zlHlKd~{k=xl zr$d|8Br8oiCa3g^wVvU@%d*{1-4<_5((ik+^7`xTO$Q&O?Z1Cs@FJVw$;k~<o|RX#wx(^4oRa!8Q$wWc`pXg~2Dv`#8J~aF+`gGpR^MOzZ(?zr zInQG477Y$Xu2rk%J^%c(*+)%SV()&z{^Roe?T07dKg=+P;Sa;LNhhD=?YiPih;S=-*1?cU7b$JmkWo;d6D+OXFkU7r b|Kgk(B5Qh;S>zQ10|SGntDnm{r-UW|y5a=g delta 202 zcmcb>@{DnUNGZx^prw85kJYlDyqr82*Fcg1yTpGcYi47I;J!Gca%qgD@k* ztT_@43=Hfgp1!W^H`t{4g*eSIc9XRuRu%Xq>xv zaM!V~hp&a0*zNmsVfKUxG7p&2_TLlNoj66dd&47HcIQRy3;8`GFKL<^OV7R5xYbYHL!w=C1lake!~celF{r5}E*E CaZYCd diff --git a/src/plugins/coreplugin/images/splitbutton_horizontal.png b/src/plugins/coreplugin/images/splitbutton_horizontal.png index 7b5f493758724b41d38d2288e0749b3bc841e1c2..a71fdfdb6244f23a5994f418cacfc39cede918b5 100644 GIT binary patch delta 409 zcmbQtxS4r^NAX(xXQ4*Y= zR#Ki=l*&+EUaps!mtCBkSdglhUz9%kosAR&1EYbbi(`mI@6yTkUPl}xj^01hmU>tr zx|4Gwzv7{Jhb~7%EIY${MEVV{%|WxwBWfHgb%Ip{MCt_v+isrxvoSK&*i+}u`kI>e z$A8~5I1<$z+&1qC+XLT>=L|Q_{8Mk}k93&#e0tafc zNh;>+D)+|4Pf4wO|NGw`&N;=qqt>R}-lngo;Cq=>v1P}v1ukp1s>lX(2Sc7HMB?YCu>I~tfSOm6sFm)|O2()ajwr*=f_ z_40bADM1N6o$FrDiz%0Ad#U(q!3jsrImK`FERq>?`dR~ZVy+!sr_KBkFZH!>b7O3VtQ&&YGO)d;mK4R1_lOGPZ!6K zid#v4{{OdUR&D5PbTatBwjn|Ac8~jBeM7c{(2mm&4ob4M97;6dxxn!F!g(JCMmC0b Yf4Mpt&qSPLU|?YIboFyt=akR{0ASuN2LJ#7 diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp index 262b70b2145..97648813d01 100644 --- a/src/plugins/coreplugin/mainwindow.cpp +++ b/src/plugins/coreplugin/mainwindow.cpp @@ -152,6 +152,24 @@ MainWindow::MainWindow() : setWindowTitle(tr("Qt Creator")); qApp->setWindowIcon(QIcon(":/core/images/qtcreator_logo_128.png")); + QCoreApplication::setApplicationName(QLatin1String("QtCreator")); + QCoreApplication::setApplicationVersion(QLatin1String(Core::Constants::IDE_VERSION_LONG)); + QCoreApplication::setOrganizationName(QLatin1String("Nokia")); + QSettings::setDefaultFormat(QSettings::IniFormat); + QString baseName = qApp->style()->objectName(); +#ifdef Q_WS_X11 + if (baseName == "windows") { + // Sometimes we get the standard windows 95 style as a fallback + // e.g. if we are running on a KDE4 desktop + QByteArray desktopEnvironment = qgetenv("DESKTOP_SESSION"); + if (desktopEnvironment == "kde") + baseName = "plastique"; + else + baseName = "cleanlooks"; + } +#endif + qApp->setStyle(new ManhattanStyle(baseName)); + setDockNestingEnabled(true); setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea); @@ -183,23 +201,6 @@ MainWindow::MainWindow() : //signal(SIGINT, handleSigInt); #endif - QCoreApplication::setApplicationName(QLatin1String("QtCreator")); - QCoreApplication::setApplicationVersion(QLatin1String(Core::Constants::IDE_VERSION_LONG)); - QCoreApplication::setOrganizationName(QLatin1String("Nokia")); - QSettings::setDefaultFormat(QSettings::IniFormat); - QString baseName = qApp->style()->objectName(); -#ifdef Q_WS_X11 - if (baseName == "windows") { - // Sometimes we get the standard windows 95 style as a fallback - // e.g. if we are running on a KDE4 desktop - QByteArray desktopEnvironment = qgetenv("DESKTOP_SESSION"); - if (desktopEnvironment == "kde") - baseName = "plastique"; - else - baseName = "cleanlooks"; - } -#endif - qApp->setStyle(new ManhattanStyle(baseName)); statusBar()->setProperty("p_styled", true); } diff --git a/src/plugins/coreplugin/manhattanstyle.cpp b/src/plugins/coreplugin/manhattanstyle.cpp index a38a6c9774b..ee3ca2f62d1 100644 --- a/src/plugins/coreplugin/manhattanstyle.cpp +++ b/src/plugins/coreplugin/manhattanstyle.cpp @@ -345,12 +345,11 @@ void ManhattanStyle::polish(QPalette &pal) QIcon ManhattanStyle::standardIconImplementation(StandardPixmap standardIcon, const QStyleOption *option, const QWidget *widget) const { - static const QIcon closeButton(":/core/images/closebutton.png"); QIcon icon; switch (standardIcon) { case QStyle::SP_TitleBarCloseButton: - icon = closeButton; - break; + case QStyle::SP_ToolBarHorizontalExtensionButton: + return QIcon(standardPixmap(standardIcon, option, widget)); default: icon = d->style->standardIcon(standardIcon, option, widget); } @@ -360,11 +359,20 @@ QIcon ManhattanStyle::standardIconImplementation(StandardPixmap standardIcon, co QPixmap ManhattanStyle::standardPixmap(StandardPixmap standardPixmap, const QStyleOption *opt, const QWidget *widget) const { - static const QPixmap closeButton(":/core/images/closebutton.png"); + if (widget && !panelWidget(widget)) + return d->style->standardPixmap(standardPixmap, opt, widget); + QPixmap pixmap; switch (standardPixmap) { - case QStyle::SP_TitleBarCloseButton: - pixmap = closeButton; + case QStyle::SP_ToolBarHorizontalExtensionButton: { + static const QPixmap extButton(":/core/images/extension.png"); + pixmap = extButton; + } + break; + case QStyle::SP_TitleBarCloseButton: { + static const QPixmap closeButton(":/core/images/closebutton.png"); + pixmap = closeButton; + } break; default: pixmap = d->style->standardPixmap(standardPixmap, opt, widget); @@ -593,6 +601,84 @@ void ManhattanStyle::drawPrimitive(PrimitiveElement element, const QStyleOption painter->restore(); } break; + case PE_IndicatorArrowUp: + case PE_IndicatorArrowDown: + case PE_IndicatorArrowRight: + case PE_IndicatorArrowLeft: + { + // From windowsstyle but modified to enable AA + if (option->rect.width() <= 1 || option->rect.height() <= 1) + break; + + QRect r = option->rect; + int size = qMin(r.height(), r.width()); + QPixmap pixmap; + QString pixmapName; + pixmapName.sprintf("%s-%s-%d-%d-%d-%lld", + "$qt_ia", metaObject()->className(), + uint(option->state), element, + size, option->palette.cacheKey()); + if (!QPixmapCache::find(pixmapName, pixmap)) { + int border = size/5; + int sqsize = 2*(size/2); + QImage image(sqsize, sqsize, QImage::Format_ARGB32); + image.fill(Qt::transparent); + QPainter imagePainter(&image); + imagePainter.setRenderHint(QPainter::Antialiasing, true); + imagePainter.translate(0.5, 0.5); + QPolygon a; + switch (element) { + case PE_IndicatorArrowUp: + a.setPoints(3, border, sqsize/2, sqsize/2, border, sqsize - border, sqsize/2); + break; + case PE_IndicatorArrowDown: + a.setPoints(3, border, sqsize/2, sqsize/2, sqsize - border, sqsize - border, sqsize/2); + break; + case PE_IndicatorArrowRight: + a.setPoints(3, sqsize - border, sqsize/2, sqsize/2, border, sqsize/2, sqsize - border); + break; + case PE_IndicatorArrowLeft: + a.setPoints(3, border, sqsize/2, sqsize/2, border, sqsize/2, sqsize - border); + break; + default: + break; + } + + int bsx = 0; + int bsy = 0; + + if (option->state & State_Sunken) { + bsx = pixelMetric(PM_ButtonShiftHorizontal); + bsy = pixelMetric(PM_ButtonShiftVertical); + } + + QRect bounds = a.boundingRect(); + int sx = sqsize / 2 - bounds.center().x() - 1; + int sy = sqsize / 2 - bounds.center().y() - 1; + imagePainter.translate(sx + bsx, sy + bsy); + imagePainter.setPen(option->palette.buttonText().color()); + imagePainter.setBrush(option->palette.buttonText()); + + if (!(option->state & State_Enabled)) { + imagePainter.translate(1, 1); + imagePainter.setBrush(option->palette.light().color()); + imagePainter.setPen(option->palette.light().color()); + imagePainter.drawPolygon(a); + imagePainter.translate(-1, -1); + imagePainter.setBrush(option->palette.mid().color()); + imagePainter.setPen(option->palette.mid().color()); + } + + imagePainter.drawPolygon(a); + imagePainter.end(); + pixmap = QPixmap::fromImage(image); + QPixmapCache::insert(pixmapName, pixmap); + } + int xOffset = r.x() + (r.width() - size)/2; + int yOffset = r.y() + (r.height() - size)/2; + painter->drawPixmap(xOffset, yOffset, pixmap); + } + break; default: d->style->drawPrimitive(element, option, painter, widget); @@ -902,7 +988,7 @@ void ManhattanStyle::drawComplexControl(ComplexControl control, const QStyleOpti newBtn.palette = panelPalette(option->palette); newBtn.rect = QRect(ir.right() - arrowSize - 1, ir.height() - arrowSize - 2, arrowSize, arrowSize); - QWindowsStyle::drawPrimitive(PE_IndicatorArrowDown, &newBtn, painter, widget); + drawPrimitive(PE_IndicatorArrowDown, &newBtn, painter, widget); } } break; @@ -929,7 +1015,7 @@ void ManhattanStyle::drawComplexControl(ComplexControl control, const QStyleOpti pal.setBrush(QPalette::All, QPalette::ButtonText, StyleHelper::panelTextColor()); arrowOpt.palette = pal; - QWindowsStyle::drawPrimitive(PE_IndicatorArrowDown, &arrowOpt, painter, widget); + drawPrimitive(PE_IndicatorArrowDown, &arrowOpt, painter, widget); painter->restore(); } diff --git a/src/plugins/projectexplorer/images/filtericon.png b/src/plugins/projectexplorer/images/filtericon.png index 0915b5e5f6167dfb71799f637ac2ba67f3be7deb..de7ee4b5f54f0db14e3137c0d9d97283f388a9f1 100644 GIT binary patch delta 468 zcmX@a_>OskNAX(xXQ4*Y= zR#Ki=l*&+EUaps!mtCBkSdglhUz9%kosAR&17o(Qi(`mI@6upH@52rvb=PGy4_drX z3G33h>ALbt*FP5P7njz`mSkPb^J}Vi($Z_~%kz_6Qm>GwG?lH>_4S2?Dgw83UQP)3 zyi>yGc7pET2M>O{+xvd+?{{*{4x1H>g3SaA>nHoDg=cNOb$1C%pvdnzpZ6Lzx-DLK zW82<D^_P*-!~{nsj~2H*M8u}70W-r4qcx`OzZ1G#3i z^Ib~B-kfo_nmg}&{nH}$yLsOWUnpE?6zM39j2|SD+n!hUbet%?yF$aaOHZ)2)%NX@ z`8%e0s7(9Em5{jkfW+;$C06E>R4V%(yQD_GJH2U-VebJe!J|x9*ctxbXS$s5Eb|W= YzlDO;trY_C3=9kmp00i_>zopr091t0VgLXD delta 166 zcmaFIe28&^NGZx^prw85kJYlDyqr82*Fcg1yTpGcYi47I;J!Gca%qgD@k* ztT_@43=Hfgp1!W^HyPP^6?o3>;GM$2z~JQR;uvCaIypgtwdcf~|Ns9#H!v`$co4Y1 zdE&%Et~lZU|NrlA6)9ZAb8z|0&a_76%~K~_)+{^tK;A5Y{mOsqw#qmL2BX~y!3TsY SS{WD^7(8A5T-G@yGywoZT08y#