From 4201046b9be1f683d3805e3a91651b8f23d0cd25 Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Thu, 11 Nov 2010 10:50:06 +0100 Subject: [PATCH] QmlObserver: Remove breadcrumb widget in observer mode I wasn't able to get it working on Mac OS X: Putting it on top of the QGraphicsView doesn't work because Cocoa doesn't allow a widget to be on top of OpenGL viewport. Embedding it as a QGraphicsProxyWidget produces lots of Cocoa warnings (raster engine related). Anyhow, the same widget shows up in the Debugger/Observer tab of Qt Creator. Reviewed-by: Lasse Holmstedt --- .../qtcreator/qml/qmlobserver/crumblepath.cpp | 389 ------------------ share/qtcreator/qml/qmlobserver/crumblepath.h | 70 ---- .../qtcreator/qml/qmlobserver/crumblepath.qrc | 10 - .../images/crumblepath-segment-end.png | Bin 2957 -> 0 bytes .../images/crumblepath-segment-hover-end.png | Bin 2970 -> 0 bytes .../images/crumblepath-segment-hover.png | Bin 3384 -> 0 bytes .../crumblepath-segment-selected-end.png | Bin 2944 -> 0 bytes .../images/crumblepath-segment-selected.png | Bin 3356 -> 0 bytes .../images/crumblepath-segment.png | Bin 3379 -> 0 bytes share/qtcreator/qml/qmlobserver/qml.pri | 9 +- .../qtcreator/qml/qmlobserver/qmlruntime.cpp | 47 --- share/qtcreator/qml/qmlobserver/qmlruntime.h | 3 - .../qt4projectmanager/qmlobservertool.cpp | 7 +- 13 files changed, 4 insertions(+), 531 deletions(-) delete mode 100644 share/qtcreator/qml/qmlobserver/crumblepath.cpp delete mode 100644 share/qtcreator/qml/qmlobserver/crumblepath.h delete mode 100644 share/qtcreator/qml/qmlobserver/crumblepath.qrc delete mode 100644 share/qtcreator/qml/qmlobserver/images/crumblepath-segment-end.png delete mode 100644 share/qtcreator/qml/qmlobserver/images/crumblepath-segment-hover-end.png delete mode 100644 share/qtcreator/qml/qmlobserver/images/crumblepath-segment-hover.png delete mode 100644 share/qtcreator/qml/qmlobserver/images/crumblepath-segment-selected-end.png delete mode 100644 share/qtcreator/qml/qmlobserver/images/crumblepath-segment-selected.png delete mode 100644 share/qtcreator/qml/qmlobserver/images/crumblepath-segment.png diff --git a/share/qtcreator/qml/qmlobserver/crumblepath.cpp b/share/qtcreator/qml/qmlobserver/crumblepath.cpp deleted file mode 100644 index 47f471f3c11..00000000000 --- a/share/qtcreator/qml/qmlobserver/crumblepath.cpp +++ /dev/null @@ -1,389 +0,0 @@ -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** Commercial Usage -** -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Commercial License Agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Nokia. -** -** GNU Lesser General Public License Usage -** -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at http://qt.nokia.com/contact. -** -**************************************************************************/ - -#include "crumblepath.h" - -#include -#include -#include -#include -#include -#include -#include - -static const int ArrowBorderSize = 12; - -// Draws a CSS-like border image where the defined borders are not stretched -static void drawCornerImage(const QImage &img, QPainter *painter, QRect rect, - int left, int top, int right, int bottom) -{ - QSize size = img.size(); - if (top > 0) { //top - painter->drawImage(QRect(rect.left() + left, rect.top(), rect.width() -right - left, top), img, - QRect(left, 0, size.width() -right - left, top)); - if (left > 0) //top-left - painter->drawImage(QRect(rect.left(), rect.top(), left, top), img, - QRect(0, 0, left, top)); - if (right > 0) //top-right - painter->drawImage(QRect(rect.left() + rect.width() - right, rect.top(), right, top), img, - QRect(size.width() - right, 0, right, top)); - } - //left - if (left > 0) - painter->drawImage(QRect(rect.left(), rect.top()+top, left, rect.height() - top - bottom), img, - QRect(0, top, left, size.height() - bottom - top)); - //center - painter->drawImage(QRect(rect.left() + left, rect.top()+top, rect.width() -right - left, - rect.height() - bottom - top), img, - QRect(left, top, size.width() -right -left, - size.height() - bottom - top)); - if (right > 0) //right - painter->drawImage(QRect(rect.left() +rect.width() - right, rect.top()+top, right, rect.height() - top - bottom), img, - QRect(size.width() - right, top, right, size.height() - bottom - top)); - if (bottom > 0) { //bottom - painter->drawImage(QRect(rect.left() +left, rect.top() + rect.height() - bottom, - rect.width() - right - left, bottom), img, - QRect(left, size.height() - bottom, - size.width() - right - left, bottom)); - if (left > 0) //bottom-left - painter->drawImage(QRect(rect.left(), rect.top() + rect.height() - bottom, left, bottom), img, - QRect(0, size.height() - bottom, left, bottom)); - if (right > 0) //bottom-right - painter->drawImage(QRect(rect.left() + rect.width() - right, rect.top() + rect.height() - bottom, right, bottom), img, - QRect(size.width() - right, size.height() - bottom, right, bottom)); - } -} - -// Tints an image with tintColor, while preserving alpha and lightness -static void tintImage(QImage &img, const QColor &tintColor) -{ - QPainter p(&img); - p.setCompositionMode(QPainter::CompositionMode_Screen); - - for (int x = 0; x < img.width(); ++x) { - for (int y = 0; y < img.height(); ++y) { - QRgb rgbColor = img.pixel(x, y); - int alpha = qAlpha(rgbColor); - QColor c = QColor(rgbColor); - - if (alpha > 0) { - c.toHsl(); - qreal l = c.lightnessF(); - QColor newColor = QColor::fromHslF(tintColor.hslHueF(), tintColor.hslSaturationF(), l); - newColor.setAlpha(alpha); - img.setPixel(x, y, newColor.rgba()); - } - } - } -} - -class CrumblePathButton : public QPushButton -{ -public: - enum SegmentType { - LastSegment = 1, - MiddleSegment = 2, - FirstSegment = 4 - }; - - explicit CrumblePathButton(const QString &title, QWidget *parent = 0); - void setSegmentType(int type); -protected: - void paintEvent(QPaintEvent *); - void mouseMoveEvent(QMouseEvent *e); - void leaveEvent(QEvent *); - void mousePressEvent(QMouseEvent *e); - void mouseReleaseEvent(QMouseEvent *e); - -private: - void tintImages(); - -private: - bool m_isHovering; - bool m_isPressed; - bool m_isEnd; - QColor m_baseColor; - QImage m_segment; - QImage m_segmentEnd; - QImage m_segmentSelected; - QImage m_segmentSelectedEnd; - QImage m_segmentHover; - QImage m_segmentHoverEnd; - QPoint m_textPos; -}; - -CrumblePathButton::CrumblePathButton(const QString &title, QWidget *parent) - : QPushButton(title, parent), m_isHovering(false), m_isPressed(false), m_isEnd(true) -{ - setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed); - setToolTip(title); - setMinimumHeight(24); - setMaximumHeight(24); - setMouseTracking(true); - m_textPos.setX(18); - m_textPos.setY(height()); - m_baseColor = QColor(0x666666); - - m_segment = QImage(":/crumblepath/images/crumblepath-segment.png"); - m_segmentSelected = QImage(":/crumblepath/images/crumblepath-segment-selected.png"); - m_segmentHover = QImage(":/crumblepath/images/crumblepath-segment-hover.png"); - m_segmentEnd = QImage(":/crumblepath/images/crumblepath-segment-end.png"); - m_segmentSelectedEnd = QImage(":/crumblepath/images/crumblepath-segment-selected-end.png"); - m_segmentHoverEnd = QImage(":/crumblepath/images/crumblepath-segment-hover-end.png"); - - tintImages(); -} - -void CrumblePathButton::paintEvent(QPaintEvent *) -{ - QPainter p(this); - QRect geom(0, 0, geometry().width(), geometry().height()); - - if (m_isEnd) { - if (m_isPressed) { - drawCornerImage(m_segmentSelectedEnd, &p, geom, 2, 0, 2, 0); - } else if (m_isHovering) { - drawCornerImage(m_segmentHoverEnd, &p, geom, 2, 0, 2, 0); - } else { - drawCornerImage(m_segmentEnd, &p, geom, 2, 0, 2, 0); - } - } else { - if (m_isPressed) { - drawCornerImage(m_segmentSelected, &p, geom, 2, 0, 12, 0); - } else if (m_isHovering) { - drawCornerImage(m_segmentHover, &p, geom, 2, 0, 12, 0); - } else { - drawCornerImage(m_segment, &p, geom, 2, 0, 12, 0); - } - } - p.setPen(QColor(Qt::white)); - QFontMetrics fm(p.font()); - QString textToDraw = fm.elidedText(text(), Qt::ElideRight, geom.width() - m_textPos.x()); - - p.drawText(QRectF(m_textPos.x(), 4, geom.width(), geom.height()), textToDraw); -} - -void CrumblePathButton::tintImages() -{ - tintImage(m_segmentEnd, m_baseColor); - tintImage(m_segmentSelectedEnd, m_baseColor); - tintImage(m_segmentHoverEnd, m_baseColor); - tintImage(m_segmentSelected, m_baseColor); - tintImage(m_segmentHover, m_baseColor); - tintImage(m_segment, m_baseColor); -} - -void CrumblePathButton::leaveEvent(QEvent *e) -{ - QPushButton::leaveEvent(e); - m_isHovering = false; - update(); -} - -void CrumblePathButton::mouseMoveEvent(QMouseEvent *e) -{ - QPushButton::mouseMoveEvent(e); - m_isHovering = true; - update(); -} - -void CrumblePathButton::mousePressEvent(QMouseEvent *e) -{ - QPushButton::mousePressEvent(e); - m_isPressed = true; - update(); -} - -void CrumblePathButton::mouseReleaseEvent(QMouseEvent *e) -{ - QPushButton::mouseReleaseEvent(e); - m_isPressed = false; - update(); -} - -void CrumblePathButton::setSegmentType(int type) -{ - bool useLeftPadding = !(type & FirstSegment); - m_isEnd = (type & LastSegment); - m_textPos.setX(useLeftPadding ? 18 : 4); -} - -struct CrumblePathPrivate { - explicit CrumblePathPrivate(CrumblePath *q); - - QColor m_baseColor; - QList m_buttons; - QWidget *m_background; -}; - -CrumblePathPrivate::CrumblePathPrivate(CrumblePath *q) : - m_baseColor(0x666666), - m_background(new QWidget(q)) -{ -} - -// -// CrumblePath -// -CrumblePath::CrumblePath(QWidget *parent) : - QWidget(parent), d(new CrumblePathPrivate(this)) -{ - setMinimumHeight(25); - setMaximumHeight(25); - setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Minimum); - - setBackgroundStyle(); - d->m_background->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred); -} - -CrumblePath::~CrumblePath() -{ - qDeleteAll(d->m_buttons); - d->m_buttons.clear(); -} - -void CrumblePath::setBackgroundStyle() -{ - d->m_background->setStyleSheet("QWidget { background-color:" + d->m_baseColor.name() + ";}"); -} - -void CrumblePath::pushElement(const QString &title) -{ - CrumblePathButton *newButton = new CrumblePathButton(title, this); - newButton->hide(); - connect(newButton, SIGNAL(clicked()), SLOT(mapClickToIndex())); - connect(newButton, SIGNAL(customContextMenuRequested(QPoint)), SLOT(mapContextMenuRequestToIndex())); - - int segType = CrumblePathButton::MiddleSegment; - if (!d->m_buttons.isEmpty()) { - if (d->m_buttons.length() == 1) - segType = segType | CrumblePathButton::FirstSegment; - d->m_buttons.last()->setSegmentType(segType); - } else { - segType = CrumblePathButton::FirstSegment | CrumblePathButton::LastSegment; - newButton->setSegmentType(segType); - } - d->m_buttons.append(newButton); - - resizeButtons(); -} - -void CrumblePath::popElement() -{ - QWidget *last = d->m_buttons.last(); - d->m_buttons.removeLast(); - last->setParent(0); - last->deleteLater(); - - int segType = CrumblePathButton::MiddleSegment | CrumblePathButton::LastSegment; - if (!d->m_buttons.isEmpty()) { - if (d->m_buttons.length() == 1) - segType = CrumblePathButton::FirstSegment | CrumblePathButton::LastSegment; - d->m_buttons.last()->setSegmentType(segType); - } - resizeButtons(); -} - -void CrumblePath::clear() -{ - while (!d->m_buttons.isEmpty()) { - popElement(); - } -} - -void CrumblePath::resizeEvent(QResizeEvent *) -{ - resizeButtons(); -} - -void CrumblePath::resizeButtons() -{ - int buttonMinWidth = 0; - int buttonMaxWidth = 0; - int totalWidthLeft = width(); - - if (d->m_buttons.length() >= 1) { - QPoint nextElementPosition(0,0); - - d->m_buttons[0]->raise(); - // rearrange all items so that the first item is on top (added last). - for(int i = 0; i < d->m_buttons.length() ; ++i) { - CrumblePathButton *button = d->m_buttons[i]; - - QFontMetrics fm(button->font()); - buttonMinWidth = ArrowBorderSize + fm.width(button->text()) + ArrowBorderSize * 2 ; - buttonMaxWidth = (totalWidthLeft + ArrowBorderSize * (d->m_buttons.length() - i)) / (d->m_buttons.length() - i); - - if (buttonMinWidth > buttonMaxWidth && i < d->m_buttons.length() - 1) { - buttonMinWidth = buttonMaxWidth; - } else if (i > 3 && (i == d->m_buttons.length() - 1)) { - buttonMinWidth = width() - nextElementPosition.x(); - buttonMaxWidth = buttonMinWidth; - } - - button->setMinimumWidth(buttonMinWidth); - button->setMaximumWidth(buttonMaxWidth); - button->move(nextElementPosition); - - nextElementPosition.rx() += button->width() - ArrowBorderSize; - totalWidthLeft -= button->width(); - - button->show(); - if (i > 0) - button->stackUnder(d->m_buttons[i - 1]); - } - - } - - d->m_background->setGeometry(0,0, width(), height()); - d->m_background->update(); -} - -void CrumblePath::mapClickToIndex() -{ - QObject *element = sender(); - for (int i = 0; i < d->m_buttons.length(); ++i) { - if (d->m_buttons[i] == element) { - emit elementClicked(i); - return; - } - } -} - -void CrumblePath::mapContextMenuRequestToIndex() -{ - QObject *element = sender(); - for (int i = 0; i < d->m_buttons.length(); ++i) { - if (d->m_buttons[i] == element) { - emit elementContextMenuRequested(i); - return; - } - } -} - diff --git a/share/qtcreator/qml/qmlobserver/crumblepath.h b/share/qtcreator/qml/qmlobserver/crumblepath.h deleted file mode 100644 index 188992db352..00000000000 --- a/share/qtcreator/qml/qmlobserver/crumblepath.h +++ /dev/null @@ -1,70 +0,0 @@ -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** Commercial Usage -** -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Commercial License Agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Nokia. -** -** GNU Lesser General Public License Usage -** -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at http://qt.nokia.com/contact. -** -**************************************************************************/ - -#ifndef CRUMBLEPATH_H -#define CRUMBLEPATH_H - -#include - -QT_FORWARD_DECLARE_CLASS(QResizeEvent); - -struct CrumblePathPrivate; - -class CrumblePath : public QWidget -{ - Q_OBJECT -public: - explicit CrumblePath(QWidget *parent = 0); - ~CrumblePath(); - -public slots: - void pushElement(const QString &title); - void popElement(); - void clear(); - -signals: - void elementClicked(int index); - void elementContextMenuRequested(int index); - -protected: - void resizeEvent(QResizeEvent *); - -private slots: - void mapClickToIndex(); - void mapContextMenuRequestToIndex(); - -private: - void resizeButtons(); - void setBackgroundStyle(); - -private: - QScopedPointer d; -}; - -#endif // CRUMBLEPATH_H diff --git a/share/qtcreator/qml/qmlobserver/crumblepath.qrc b/share/qtcreator/qml/qmlobserver/crumblepath.qrc deleted file mode 100644 index 1c0897973c1..00000000000 --- a/share/qtcreator/qml/qmlobserver/crumblepath.qrc +++ /dev/null @@ -1,10 +0,0 @@ - - - images/crumblepath-segment-end.png - images/crumblepath-segment-hover-end.png - images/crumblepath-segment-hover.png - images/crumblepath-segment-selected-end.png - images/crumblepath-segment-selected.png - images/crumblepath-segment.png - - diff --git a/share/qtcreator/qml/qmlobserver/images/crumblepath-segment-end.png b/share/qtcreator/qml/qmlobserver/images/crumblepath-segment-end.png deleted file mode 100644 index 1fc371cfec1a632e8ae5a20a19f5412f7c74cb09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2957 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 HDWM4fRF{ND diff --git a/share/qtcreator/qml/qmlobserver/images/crumblepath-segment-hover.png b/share/qtcreator/qml/qmlobserver/images/crumblepath-segment-hover.png deleted file mode 100644 index 741f0575dd7467301e491839628317a648a8b64a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3384 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 b#&E&wD95^2yU#K(Ffe$!`njxgN@xNA;N(yv diff --git a/share/qtcreator/qml/qmlobserver/images/crumblepath-segment-selected-end.png b/share/qtcreator/qml/qmlobserver/images/crumblepath-segment-selected-end.png deleted file mode 100644 index 6ef4e05b45f29c3db82c14b01a8fcb82612b0f93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2944 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnV36QoV_;w~Qa4|~z`(#+;1OBOz`!jG!i)^F z=14FwaQSCCI|l@0&Ql|}l*f)3`szJ?yrKpmbgt{d!66c_b1 zFYf3%_4{G<;_PdCzCSzrZ|ilt=W9OC-F%+?00+-B592`72A-8pa)J+TGPZl@74)V_>Yf%+0}Yz<2fm1DW>!{I8s5#xORtFditG zXyMJ#Aj05K)#tQ~!NHBOVeSmIV1@-O3<;-`lO8h!=rSaz*FU?=&@lJM%xXr4=qZY# zj0+|*C}b_wV5w$EIH9au!O$|3LB#D-xXnlHbpp?|7#J#MZnD{_V(Ho#&7oV!9v-eIr*Y0x zTwBB}ktuPOgWjRanUY40Cj1XRpJ8BFFi}+SLG$Oo73cWYojYgNw~a4e_tk#3|4Ky-n{wr$&(viN1UP)Pleb1OFtBUApCF6&pMkw-@iWC_eiDDD7Mj^<;R0VXTJC> zl{r6&vnA=yvwrtK+qwV$k-e;R#4~AUgqFzTK%v4umsvfZjg~5PI!)3%s(R^v%A@-_ zznSgsn=)+3vSX~CsJkLInfaTyx= zXh`#%RLH;(=c1w)a%!{vaSjFsmj#Vl8yuy-9F)*Gz$SB$_0B==KM7_nPAW$ZISDv% zr8LMCC1|c`a?)r!yFpefLH~+_tjU4EjJC-Ie0qmMcktO3@c&BWn0HWPPa`Lb;|UJo zM8#Vjj7eP)%6%N-Gh2Ts9`s-l>Q+%W*&!0B3~!Vz->4qo94F z^~u~Pho2Zfk$$51DVl3;l0)H=AHk0_f=*?5Nj?>LYVwpVb%v2+=;B#HcULS75j5?O za$37^ThRKz_7%b=rL!#0Hj8Sd`6@r>`8>tB@Y61+QA&TsmK@Jpv(y1$tI zg85514{w`j^YM;!4awOO>=Nmc>_$-sW+%0)L#K7F}^^E5;`Df;bMrdu*su7)d zifgLZRJEznTKXX?S1nt0Zxwgw=g`w3{VU^wYuCAj8V5gK$$4ek>d;kl16~J92dA&J zUeUfPeMNqV{gS%KznyH6hkXwFJ1+@burdDeo?{B!$&#BZbQH6BSGScmnjTTxc=l#Z znbz(Ze`R-f+pb!<(9+r1%Q$><(B~;>_Uw;m6#ke~;>Y=1WBK&YbzS#F-fKS6lwM}y zv(qp&CVSPi>C+-sd#nyz?f!bN*}AvO=Pujpx;yfBBcJ1OFZCF8_w@dAtaG0S-weLH zoNKw5udUVBb$Y9^mr5_(?NYu!Z~40!^Y+Cx%=5`#ey?)x^ItNx`hP?I=Kfm#)tx7T zZ8MJw+ijk65;jLo3-fJc^^f2F80Z{(*ui;e;?%_H4_hYgylAuds#~uce^2JIn8zxQ zbC2a7Tdc;Wrl{ua`^xv-tRUZ=%QTl+`&j!NKYQlvqO;d#n$EU0yl(V-_Vd}-XW!qR z5LFSSvu(w;9jTt1o9x1HR!a=YY)r#IMcuiKWptu`?|Nj!b~(RGL4P2M}Xc2{lhUt4zG_M3dGWus*4 zinkPrScO^Ln{{r^JNw$BU#7j(Pmee+aQ=qz<88vHHIHP@4W513JzYF~XL0lAj_ywH zrqg=U?eu0#AG>>E?-Q?*uZ6J>t1f+=JA3o&LvL5yUjNSQUFN&?JM+(&%-5V3X`jY`Ks@U@5SxD*%i%yZ1>p4 z{GQRh$oMnn2ezNse%k+V{=E3s`_A>s|5N@~{lCbtyg`*Qow>8ou`!zI_m8R?#r=Ku zR<~2XZMyl^v1h?fM^VTArnOB^53W_rIPqq}TE*|rXPldOE|ae{pzg)B3+#!{61xxA z@u;`9w}!Xb_Z4(RNL@6XZd!ivj&t#SmtQW^T<*d|8{wJbEn}&twazRrXW#ulZ$Gy`n)`_Rakcmi{S&bTl?%@u`qH{wY^9!% zj@2{=pAJ8ZDIXjKv{s1qsD2VISMB4fJS2N4T}l6<*~N|<&M{hYexE$Fe5)qCnYhQa zQst=eQk|zeThv!h*yF?Nb9c7YJh5423b{tMR(lPbCrzAC=(I}Fck;IMSLx5v%1*CI zZQb5r%eBpE*^7`Ujq6(Mo6=Lm)Apb3JY_j;^*rsfZ_jK# zb$f#OocHtpzZE(p^l;L)rET8fy0Q_^_O8jY++CTJho3?8Dv*~h0(~-~Za3+;=;aG1T{J+SSzGp1(JLw_n$}>gA7VzjI^P`sEhBJf0yI6x>eRw zz2+hNW%)AMbXol@r&*t7xy=rq^*cH#dYAthyNlOe-K+ZJep{Y@j)_fVrPt?>lbN?( zHeH^a{^@+r+^KVG>-2u!Nw~deTlMqgbN93O^WX0hD0z6v^?&zs>pj-zVm|FC`LyZw zQ{nI(;j`9T#pk{%d1do&@@40-a6iNzT1A)KKkFC8}IMb zXB{YC@cH5$_wQ`2&FBA3{Myg&%-TP*|8yH~+v|B2c9xcp?2G=s{IlHoe9C#XdE);T z{X4x*Tui_2$JN)@&t05xapCk&(u(=BbWCpF$qHk`xG!P9-yST# zQ!e{{@qK>(Cp8N78viqXZu}a2VfpXLl9MO@XJMZ4`A@R3?rjDJ28CpgAYTTCDpdxC zhGqtapZ^&c8eTFmlo~KFyh>nTu$sZZAf7)d{-_%R1H)=h7srr_TO|P(xsE9CbeI0x zAb)rL`$U5~w>S8{Pt>T|&CQ|eJL}el+}X))f|EQn6Jx`l%yASFa%$*!VB>#8f>D9P zb4FynilU04nTOLEo>f*Wmx^w^c5lkWj3-HHJKjrQFI8OHBJo&h6<2xt@6YXd@)s}9 zK6O_YW;PTIOb`A*0$S=t+&d4uN@N{-oC@9KL%gjk-V5qn?H#j{c_@$Wb_j_NQygM4E zc;^R+awr5jbvKAiRMS%A6!7X$TzFG7@SvcpD~t4r1s%+NeGNULfjT^0TsPRCC@$)2 zUfj`j>i5Iy#o5>Pe1CTK-`4AP&)0mOyZJo(0S=yN9>#&D4LmEI8^l^Gd+)Y;f*D;;3p$G})|nVW;*fbZ-B1~Tpc`CmEBjA3kOVLVVW z(ZZXfL4?7fs?TW|gM%Am!`vBa!3+yn7!pn=Cp~5e&}B$auYY!#p<(WinbnL8(Nh#f z85c}sP!LY-aAC->W>|ARtjm=l!hk^}&HIQY!wp>q1JCd@4~7lf84jEi;NHZ*!NXt> z*wL!Vz*5bSa6(zRf}v$5gNWOwaGQ_X>ja)_F)&oj++?#;#nQDgnnSmcJv>}bPUD=X zxVDH{B2(fl2fag;GbN20P52*tKEuGUV4|qtgXYhFE6(w)J9o~kZyR5{?yLQ5|CN%G z9{+oKeszHZ1H;3Tx{LpG^fya2ShF?c{#&H_jwK_GdqL^z#w#e-g}EoK%h+auRUj zN@d<#}gdF ziHf&67?Zjpl>0cuXSV)OJm|q9)UBd$vO^?L$$O%yhhb1xh(f4`>?hkICd>91w_Ovh zPcRrY{b}3dZaAfJQ=sh?o~_P1SC~t+xGmzokWyket6yxv>5WQjcvc^i+7Pyed3Wd6i_@Hwxh3$By3*to-dogm3I04Hkz{1p9^s**d`+ld zSYM#J!}*B0icqJsk^0UFOr9H;gj^E3yx=p4nHw|BK<`1Q#9AyB!|K!KY|}=1f9zAl6)%g)Z{5!>I@^t(8aTY?yguEB52wl z<+OI;wxIQa?JI;$N@rP~Z5H$NUb=SC)XP#C;u+sF*S{#)C3ttLoZs{d;g?Robbm4Z z1@o739^N+5=Hngd8j`am*d@{>%O%#&@L48#xm)shh=IA`>lx2y^3Ti>SC5BnVUcU}^>U}OB_J;xNdlO;D-=qP6Mu5K%BG(DoW@$Ai- zGOgV+{>tv|wq3Pyp{292mvQ*!pwCm%?AagBDEu*}#E$>iVyw`lBDZR|Z zXQyFmO!lg2)2BtO_E;Ub+WqxjvvqHm&t10Hb$8_NMn1>mUg|OG?&-1J-FO^=n+ogPe-tu=d=Ix7XnCFwf{9fhW=f7lX_5X(a&Hc6ft2<8w z+h!gWw%a`CBy5hF7UtW?>L0)TG0-{ou!Hl`#HoqXAGS=~dC_L^RkvO@{+`TZF^^Rq z=N`*Fwpfi#O;OF;_m%IvSwX%#muW7u_ObRke)i1SMQ5+gG@Wg0c-`pv?B}zu&%VDs zA*v!uXWNQxJ5oJ2J&9Tt`EJ{uyw)ho$fXgXQL&rd*3Mn4dTsaG-OB}+@ARAOw|d^S z^urrIZacYc<#x#pPj9f@UbiiGTWw-`l6d;|qw5a8o4j{&?XKG1zqahW?Kk;W%SOr8 z6>ljLu?n-gH|yM-clNbMzf60npB`~u;QS5a$J>NYYaYp*8$A26d%Ae~&f@0J9o?PY zO{evy+v&}gK6dxS-X~rqUkhU&R$cl!clPGlhu*HZz5boqyUcg(cjlilnXfr7(zy7- z;SSmx-;3LQvn!ha*zU27 z`8}h1k@08D4{SfN{j~q#{CV-M_nqsN|EK(~`hSsOd4norI&){EV`DVa?;lk)iu?QQ zt!}4&+jR4-W6y$}j-rnJO>3K;9$c%KapKK{wTj=L&p0>nTqa*@K;4UL7uXY@C3YXK z<56#IZw+s=?2hUf0W1%Wjokmd!2mT_(Hi zkLjgFp1B$^H^MW=TgFmPYn@qM&c6G9-hOU>H1`qr<7)94`X^!wDi@wR^rdyV*h)Pi z9jj>$J{^7*Q$9EfXsrIbBr|m!6dCGFy>Ur8{-=5ig z>h=WlIq&EHe=BrI=;5SoOWVA|b!8)-?Ol^)xyh!m@;29FQC97?Ft#-|JG!=MuGE4>pR!q#`;I-N8aC>_^WNMw4G>Y*E*5g z;?qUzZ)n`9cq-kVe`^2CJ5#o-TzzC`%K5ZQX)mAM)14R1H*MAQXVdxecyHd?!h1h# z%iFKtTyN`7KdW(jck?#qos0L|?AVjK{N%Z_*7hMwLcWCj3Nd?k>F(CV>p$`?zLT!r z^UdVV)!Wf~zW=p5x$kx;W2o=dw5zGVJ%4ZhZojT`)yp5#e&@!n^~)`Mdz|?a^Ivvl zzHQfcUb!lJ$u=aY|C;t|cfRBD`~J;+U#`n*#v9r@=h!3V0+-4sFTZo%|1QUCb*rqW zdd)-j%kpKi>9YD+PP0DEa+@7I>vwcg^e+E1b{DU`x>xnb{kA;+921+!O0Ul$Co^xo zY`Q!-{nPoLxl`xX*6IDclW=>{w(94}=k90m=fB@2Q1bAS>;LZO)_bha#eCXP@@doU zr^4Yo!e_0wiqCyj^2+AlO4!^yL&%Z<$pi={p)?PyLCnCf6txXeY0Hs-P%3=d*Z)1ymh?ke7F6oee}OOH{Rc= z&pJ@P;Pb^h?%&y3o6rB7__d$knYDjr|LHc~w%7A4>?|!G*%$qN`DeNF`IPf&^Thux z`geMrxR`$3kE^e*pSw8Y;=<{lrcd6VTeI}abLoIzdcxf zr(E{^;`{vmPihqEHU4M(-1s&4!t&pfB_~h*&%!+8^Pgm6-P;Td3<}8}LB0$ORjLdO z4b2P;KmRi@G`wVBC^cYUc$L7wU^Rn*K|Fs_{82Xs1}1k;7srr_TT>=&%oj?OI5uDT zzGL5Giw)CU=Dc&0l!@t`eetNH)6oeNCU~8CW&hyWt4BwYWMqAIg|>C&GBpRXIX7*% zU~sT=iD$H3)%TBgYyAW=7s}*+>U;mbcK-9qr9mrIKE%J=WoKb+y*plS`u{`jtTyMH zGiP}$4FVyx$>rO&Z?Av<_U+xTtP@l?oj6RScuk~uw?yf_*i~1ZoxM6zM~pXKyx`n( zUrpEDciYyz-u~$0kM(!&-mT7NT=!bfWU0tpKlWYg+>pUda5%sBb7#Hzz>v6qU_&uOQh%IUM}NblpiXyO|d`qkTP zc5NN6fn2|%X6()7%a>=E&7P1tQ=@Cs{>__%=P_G6uY1(?*uuin($PYuZPlu!K5Cyi z89H9?5^!?h*eI5C+icfeJ)g@g$!}7v=Jv6tG3+%XUN$LJa#`k~ zZMi*ei}|N|Ew$(`oc!=%!H+z%H>a5+rzJ|T>FMhm%JAKnk(1jOJK<^Ny;Bbp3^)!O zB;4M%LFaYp)~MS0v(rQC4Q|`a^l3?rT;JE%XQyX+?em_gvox0;+O+1($B!TXol03( z<-pOHD6wP5jt9*LA7ri#TYXPr?eofno<>79h7K2{4Y}2~-hY?B`ugkp?D}TIwz&1} t5jt!P9Ia0E3^uE;zqbEd^K3sOgXFG7Nws4Al?)6F44$rjF6*2UngANMI}!i@ diff --git a/share/qtcreator/qml/qmlobserver/images/crumblepath-segment.png b/share/qtcreator/qml/qmlobserver/images/crumblepath-segment.png deleted file mode 100644 index ad6e7165f6c1025fbbfe918fd104821b430c7634..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3379 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 X?f*NbH_90p7#KWV{an^LB{Ts5SGrMh diff --git a/share/qtcreator/qml/qmlobserver/qml.pri b/share/qtcreator/qml/qmlobserver/qml.pri index 08da6e4cfe9..7e485d3984c 100644 --- a/share/qtcreator/qml/qmlobserver/qml.pri +++ b/share/qtcreator/qml/qmlobserver/qml.pri @@ -15,18 +15,15 @@ HEADERS += $$PWD/qmlruntime.h \ $$PWD/proxysettings.h \ $$PWD/qdeclarativetester.h \ $$PWD/deviceorientation.h \ - $$PWD/loggerwidget.h \ - $$PWD/crumblepath.h + $$PWD/loggerwidget.h SOURCES += $$PWD/qmlruntime.cpp \ $$PWD/proxysettings.cpp \ $$PWD/qdeclarativetester.cpp \ - $$PWD/loggerwidget.cpp \ - $$PWD/crumblepath.cpp + $$PWD/loggerwidget.cpp -RESOURCES += $$PWD/qmlruntime.qrc \ - crumblepath.qrc +RESOURCES += $$PWD/qmlruntime.qrc OTHER_FILES += toolbarstyle.css diff --git a/share/qtcreator/qml/qmlobserver/qmlruntime.cpp b/share/qtcreator/qml/qmlobserver/qmlruntime.cpp index 36d83d9a009..d35c18d4a96 100644 --- a/share/qtcreator/qml/qmlobserver/qmlruntime.cpp +++ b/share/qtcreator/qml/qmlobserver/qmlruntime.cpp @@ -57,7 +57,6 @@ #include #include -#include "crumblepath.h" #include "qmlruntime.h" #include #include @@ -534,32 +533,6 @@ QNetworkAccessManager *NetworkAccessManagerFactory::create(QObject *parent) return manager; } -// -// Event filter that ensures the crumble path width is always the canvas width -// -class CrumblePathResizer : public QObject -{ - Q_OBJECT -public: - CrumblePathResizer(CrumblePath *crumblePathWidget, QObject *parent = 0) : - QObject(parent), - m_crumblePathWidget(crumblePathWidget) - { - } - - bool eventFilter(QObject *obj, QEvent *event) - { - if (event->type() == QEvent::Resize) { - QResizeEvent *resizeEvent = static_cast(event); - m_crumblePathWidget->resize(resizeEvent->size().width(), m_crumblePathWidget->height()); - } - return QObject::eventFilter(obj, event); - } - -private: - QWidget *m_crumblePathWidget; -}; - QString QDeclarativeViewer::getVideoFileName() { QString title = convertAvailable || ffmpegAvailable ? tr("Save Video File") : tr("Save PNG Frames"); @@ -582,7 +555,6 @@ QDeclarativeViewer::QDeclarativeViewer(QWidget *parent, Qt::WindowFlags flags) , tester(0) , useQmlFileBrowser(true) , m_centralWidget(0) - , m_crumblePathWidget(0) , translator(0) { QDeclarativeViewer::registerTypes(); @@ -620,18 +592,6 @@ QDeclarativeViewer::QDeclarativeViewer(QWidget *parent, Qt::WindowFlags flags) canvas = new QDeclarativeView(this); observer = new QmlJSDebugger::QDeclarativeViewObserver(canvas, this); new QmlJSDebugger::JSDebuggerAgent(canvas->engine()); - if (!(flags & Qt::FramelessWindowHint)) { - m_crumblePathWidget = new CrumblePath(canvas); -#ifndef Q_WS_MAC - m_crumblePathWidget->setStyleSheet("QWidget { border-bottom: 1px solid black; }"); -#endif - m_crumblePathWidget->setVisible(observer->designModeBehavior()); - - // CrumblePath is not in a layout, so that it overlays the central widget - // The event filter ensures that its width stays in sync nevertheless - CrumblePathResizer *resizer = new CrumblePathResizer(m_crumblePathWidget, m_crumblePathWidget); - canvas->installEventFilter(resizer); - } m_centralWidget = new QWidget(this); QVBoxLayout *layout = new QVBoxLayout(m_centralWidget); @@ -650,13 +610,6 @@ QDeclarativeViewer::QDeclarativeViewer(QWidget *parent, Qt::WindowFlags flags) QObject::connect(observer, SIGNAL(reloadRequested()), this, SLOT(reload())); QObject::connect(canvas, SIGNAL(sceneResized(QSize)), this, SLOT(sceneResized(QSize))); QObject::connect(canvas, SIGNAL(statusChanged(QDeclarativeView::Status)), this, SLOT(statusChanged())); - if (m_crumblePathWidget) { - QObject::connect(observer, SIGNAL(inspectorContextCleared()), m_crumblePathWidget, SLOT(clear())); - QObject::connect(observer, SIGNAL(inspectorContextPushed(QString)), m_crumblePathWidget, SLOT(pushElement(QString))); - QObject::connect(observer, SIGNAL(inspectorContextPopped()), m_crumblePathWidget, SLOT(popElement())); - QObject::connect(m_crumblePathWidget, SIGNAL(elementClicked(int)), observer, SLOT(setObserverContext(int))); - QObject::connect(observer, SIGNAL(designModeBehaviorChanged(bool)), m_crumblePathWidget, SLOT(setVisible(bool))); - } QObject::connect(canvas->engine(), SIGNAL(quit()), QCoreApplication::instance (), SLOT(quit())); QObject::connect(warningsWidget(), SIGNAL(opened()), this, SLOT(warningsWidgetOpened())); diff --git a/share/qtcreator/qml/qmlobserver/qmlruntime.h b/share/qtcreator/qml/qmlobserver/qmlruntime.h index 630c30c324b..7c30998dfc1 100644 --- a/share/qtcreator/qml/qmlobserver/qmlruntime.h +++ b/share/qtcreator/qml/qmlobserver/qmlruntime.h @@ -53,8 +53,6 @@ namespace QmlJSDebugger { class QDeclarativeViewObserver; } -class CrumblePath; - QT_BEGIN_NAMESPACE class QDeclarativeView; @@ -215,7 +213,6 @@ private: bool useQmlFileBrowser; QWidget *m_centralWidget; - CrumblePath *m_crumblePathWidget; QTranslator *translator; void loadTranslationFile(const QString& directory); diff --git a/src/plugins/qt4projectmanager/qmlobservertool.cpp b/src/plugins/qt4projectmanager/qmlobservertool.cpp index 623e527d190..5d5bbdf8fb7 100644 --- a/src/plugins/qt4projectmanager/qmlobservertool.cpp +++ b/src/plugins/qt4projectmanager/qmlobservertool.cpp @@ -125,7 +125,6 @@ QString QmlObserverTool::copy(const QString &qtInstallData, QString *errorMessag QStringList files; files << QLatin1String("main.cpp") << QLatin1String("qmlobserver.pro") - << QLatin1String("crumblepath.cpp") << QLatin1String("crumblepath.h") << QLatin1String("deviceorientation.cpp") << QLatin1String("deviceorientation.h") << QLatin1String("deviceorientation_maemo5.cpp") << QLatin1String("Info_mac.plist") << QLatin1String("loggerwidget.cpp") << QLatin1String("loggerwidget.h") @@ -140,11 +139,7 @@ QString QmlObserverTool::copy(const QString &qtInstallData, QString *errorMessag << QLatin1String("content/Browser.qml") << QLatin1String("content/images/folder.png") << QLatin1String("content/images/titlebar.png") << QLatin1String("content/images/titlebar.sci") << QLatin1String("content/images/up.png") - << QLatin1String("LICENSE.LGPL") << QLatin1String("LGPL_EXCEPTION.TXT") - << QLatin1String("crumblepath.qrc") << QLatin1String("images/crumblepath-segment-end.png") - << QLatin1String("images/crumblepath-segment-hover-end.png") << QLatin1String("images/crumblepath-segment-hover.png") - << QLatin1String("images/crumblepath-segment-selected-end.png") << QLatin1String("images/crumblepath-segment-selected.png") - << QLatin1String("images/crumblepath-segment.png"); + << QLatin1String("LICENSE.LGPL") << QLatin1String("LGPL_EXCEPTION.TXT"); QStringList debuggerLibFiles; debuggerLibFiles << QLatin1String("jsdebuggeragent.cpp")