From 4cec3bd5701f7863fcfe8dc23aba23049f4b6607 Mon Sep 17 00:00:00 2001 From: Jens Bache-Wiig Date: Mon, 26 Jan 2009 16:57:58 +0100 Subject: [PATCH 01/15] Fixes: More toolbar polish Details: Minor shadow tweaks for bjorn. Added shadow to arrows. Added subtle indentation for combo box. --- src/plugins/coreplugin/images/extension.png | Bin 345 -> 345 bytes .../images/splitbutton_horizontal.png | Bin 435 -> 408 bytes src/plugins/coreplugin/manhattanstyle.cpp | 24 +++++++++++++++--- .../projectexplorer/images/filtericon.png | Bin 494 -> 473 bytes 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/plugins/coreplugin/images/extension.png b/src/plugins/coreplugin/images/extension.png index 6bdfc07b83043b3443064d61e4dc74fe97ea8f95..40c2ee30d6c6e11ba9c50f9c4551663a55b58c39 100644 GIT binary patch delta 235 zcmcb~bdza9S$*HetmXg)*Z15)8cT{5S delta 235 zcmcb~bdza9S$)4^_Td1AmiM77r`Q4)26zdpu_@{WM8~>GhE6vA&HbBktzYMjm;{4m z%YuRf%@;8#{$y-a|D1C~S?}RpAFG|l2HH&g!?0n8)3(PJ{a!2A?|X0GtWdFH)vLP_#cDeb>^PX>H!0?`N(XPA)^SvDnT-X)W{ taq{PMPw$dG-TS=qwMN%66-S}{i@nlYBjP=R7#J8BJYD@<);T3K0RTHNXx0D# diff --git a/src/plugins/coreplugin/images/splitbutton_horizontal.png b/src/plugins/coreplugin/images/splitbutton_horizontal.png index a71fdfdb6244f23a5994f418cacfc39cede918b5..c85a093f2c3250786c13994bef3910d19824d650 100644 GIT binary patch delta 307 zcmdnYJcD^cUcIQNi(`mI@6yYLeyt7yY!B)yI+S*pcrdy*OtP+E_Io7gV{+`+=@q)Y zcN(|_6c#$1ag&ZYc1%M2=5+_l#C<>0nU0*f@i}7mF2)j|VQvtlIsKr|H1DRj=$$Z~D9~*WR}w>6vr={qN_cFY^bTvOZoY z!?6FruMVCDo{y3ZroO+*UbAouMl$H}aI^^AYN&5WjWjdfpYuhJVS>uZ!h}dM(c>S_ zUi-3Zo%~^gE7#(feOyv3l$K24U-vqT(`2pA>DCh^&J8myyOfHX5+#1Hm-;k3e<{C` zO~mzJ?Dbx!j_bM!^PcxF)5)A7$Z()?UcC0wbK4k{etoKq&)T|o|7Y{bNvU7>7V%AC QU|?YIboFyt=akR{01xVkTmS$7 delta 334 zcmbQiyqS4IUcG^*i(`mI@6yTkUPl}xj^01hmU>trx|4Gwzv7{Jhb~7%EIY${MEVV{ z%|WxwBWfHgb%Ip{L<9xfZl3(JF*4QIQ|He5nws~=f8R4W64f2tHtz}B1K*723^&gF zQ*Y>xbeQ*idgL_QjJ5lh-RUuO*4#UfH6(PZ#?p*QD(34d_r}H7Pf4wO|NGw`&N;=q zqt>R}-lngo;Cq=>v1P}v1ukp1sKL~e=+0jw`G+(8kjCjZunc5-zs3z_xN_Fc0}y;@_MEzK?yyb>t4@`DVJz_srYNb z2}jL2#c%a2k{NXRS_7My6Wm`~E!K$gQZVy+!sr_KBkFZH!>b7OmdKI;Vst08Cq%mjD0& diff --git a/src/plugins/coreplugin/manhattanstyle.cpp b/src/plugins/coreplugin/manhattanstyle.cpp index ee3ca2f62d1..0b64541ae4a 100644 --- a/src/plugins/coreplugin/manhattanstyle.cpp +++ b/src/plugins/coreplugin/manhattanstyle.cpp @@ -656,8 +656,6 @@ void ManhattanStyle::drawPrimitive(PrimitiveElement element, const QStyleOption 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); @@ -667,8 +665,17 @@ void ManhattanStyle::drawPrimitive(PrimitiveElement element, const QStyleOption imagePainter.translate(-1, -1); imagePainter.setBrush(option->palette.mid().color()); imagePainter.setPen(option->palette.mid().color()); + } else { + QColor shadow(0, 0, 0, 50); + imagePainter.translate(0, 1); + imagePainter.setPen(shadow); + imagePainter.setBrush(shadow); + QColor foreGround(255, 255, 255, 220); + imagePainter.drawPolygon(a); + imagePainter.translate(0, -1); + imagePainter.setPen(foreGround); + imagePainter.setBrush(foreGround); } - imagePainter.drawPolygon(a); imagePainter.end(); pixmap = QPixmap::fromImage(image); @@ -998,6 +1005,17 @@ void ManhattanStyle::drawComplexControl(ComplexControl control, const QStyleOpti painter->save(); // Draw tool button + QLinearGradient grad(option->rect.topRight(), option->rect.bottomRight()); + grad.setColorAt(0, Qt::transparent); + grad.setColorAt(0.4, QColor(255, 255, 255, 30)); + grad.setColorAt(1, Qt::transparent); + painter->setPen(QPen(grad, 0)); + painter->drawLine(rect.topRight(), rect.bottomRight()); + grad.setColorAt(0, Qt::transparent); + grad.setColorAt(0.4, QColor(0, 0, 0, 30)); + grad.setColorAt(1, Qt::transparent); + painter->setPen(QPen(grad, 0)); + painter->drawLine(rect.topRight() - QPoint(1,0), rect.bottomRight() - QPoint(1,0)); drawPrimitive(PE_PanelButtonTool, option, painter, widget); // Draw arrow diff --git a/src/plugins/projectexplorer/images/filtericon.png b/src/plugins/projectexplorer/images/filtericon.png index de7ee4b5f54f0db14e3137c0d9d97283f388a9f1..3fae2defdecc62af31371f25c2e94ff7e509163e 100644 GIT binary patch delta 372 zcmaFIe3N-XUVWISi(`mI@7l>5y$?Hx9E*Q+v1=`x$iamt)6~5e&Tei};M?_+y+kXL zMeyMMWrZ4fjd^W;ku2Nw_)aG2iEuSKToTwNGwDw8N~y0(t-l^LKi>WR_rYdsPQk>f z6T`Fqvp0yGo2qkq-n18c1fBX^8+5uB?XBCNzjK{*_pG&H+1qc|zny0))vGToXfMjb zXzKf!iNVZ8s@LuL<(E^$tnV{y%Z)CS;TN1J^0(Dvl8W=`O>*9hZ_9qS1X-o^-2KO5 zaBQ9C(#L6=E2Fp=7$UEKovqOo<6@(8r!;Nz%*(I8zGFyOE3%;>N3yMOzRF2sr99=N zT)X+Vn-4xALbt*FP5P7njz`mSkPb z^J}Vi($Z_~%kz_6qL8OFm95kD^@W8h0=INtP6+tCQ^MzVg6`i34}QGc`+o25cXG@Q zn-z?L%>)bUC;O;{XKlT8cL__N$nQCy_Zl|3EnawI+unecA$g|tzQ%_qiMmGWig0P3 z`>D^_P*-!~{nsj~2H*M8u}70W-r4qcx`OzZ1G#3i^Ib~B-kfo_nmh0O(<1h}dEX0P zC|qb1=|Ar8bGe40z$$8Q)Y`bMx8JHCHh9+bCqO{(sL{+bOCMXDX9%*3*P7Z_68nG6 z_1D&m4<&zBS@gDOXN|1{&%1g?ooAnaJ`G#Fbk(XV!Drqx99#rioKJ6xW6Vk2d^7p< zrhAMWiA>39j2|SD+n!hUbet%?yF#N&Pq4Pt_U)4SJEnQ4O#8=`khuAP#O=2wR_2pb zD*GP0q(;6wy=jkO?*S{pqfA%W8UEg9x}5MV^A8)pg@V Date: Mon, 26 Jan 2009 17:42:29 +0100 Subject: [PATCH 02/15] Fixes: Fix incorrect text elliding on combo box Task: Reported by b_lindeijer Details: We incorrectly reduced the text rect for combos. --- src/plugins/coreplugin/manhattanstyle.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/coreplugin/manhattanstyle.cpp b/src/plugins/coreplugin/manhattanstyle.cpp index 0b64541ae4a..cafbe068563 100644 --- a/src/plugins/coreplugin/manhattanstyle.cpp +++ b/src/plugins/coreplugin/manhattanstyle.cpp @@ -773,7 +773,7 @@ void ManhattanStyle::drawControl(ControlElement element, const QStyleOption *opt customPal.setBrush(QPalette::All, QPalette::ButtonText, QColor(0, 0, 0, 70)); - QRect rect = editRect.adjusted(1, 0, -8, 0); + QRect rect = editRect.adjusted(1, 0, 0, 0); QString text = option->fontMetrics.elidedText(cb->currentText, Qt::ElideRight, rect.width()); drawItemText(painter, rect.translated(0, 1), visualAlignment(option->direction, Qt::AlignLeft | Qt::AlignVCenter), From 61c11b0edf1bdbfbb2f54d9f7a7b866c6acddb89 Mon Sep 17 00:00:00 2001 From: con Date: Mon, 26 Jan 2009 17:54:22 +0100 Subject: [PATCH 03/15] Fixes: - Correctly build on Mac Details: - Somehow CONFIG+=plugin requires a CONFIG+=plugin_with_soname to correctly link on runtime on Mac. --- src/qworkbenchplugin.pri | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qworkbenchplugin.pri b/src/qworkbenchplugin.pri index 25e02ae4747..bdf17469aa8 100644 --- a/src/qworkbenchplugin.pri +++ b/src/qworkbenchplugin.pri @@ -51,7 +51,7 @@ macx { contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols -CONFIG += plugin +CONFIG += plugin plugin_with_soname linux-* { target.path = /lib/qtcreator/plugins/$$PROVIDER From fc5c249e55c836768064351c549174cf60d07ceb Mon Sep 17 00:00:00 2001 From: Jens Bache-Wiig Date: Mon, 26 Jan 2009 18:10:53 +0100 Subject: [PATCH 04/15] Fixes: A few more improvements to the combo box Details: Reduced the size used by the arrow with 4 pixels and increased the size hint. --- src/plugins/coreplugin/manhattanstyle.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/plugins/coreplugin/manhattanstyle.cpp b/src/plugins/coreplugin/manhattanstyle.cpp index cafbe068563..4227dec213b 100644 --- a/src/plugins/coreplugin/manhattanstyle.cpp +++ b/src/plugins/coreplugin/manhattanstyle.cpp @@ -200,9 +200,13 @@ int ManhattanStyle::layoutSpacingImplementation(QSizePolicy::ControlType control QSize ManhattanStyle::sizeFromContents(ContentsType type, const QStyleOption *option, const QSize &size, const QWidget *widget) const { + QSize newSize = d->style->sizeFromContents(type, option, size, widget); + if (type == CT_Splitter && widget && widget->property("minisplitter").toBool()) return QSize(1, 1); - return d->style->sizeFromContents(type, option, size, widget); + else if (type == CT_ComboBox && panelWidget(widget)) + newSize += QSize(10, 0); + return newSize; } QRect ManhattanStyle::subElementRect(SubElement element, const QStyleOption *option, const QWidget *widget) const @@ -773,7 +777,8 @@ void ManhattanStyle::drawControl(ControlElement element, const QStyleOption *opt customPal.setBrush(QPalette::All, QPalette::ButtonText, QColor(0, 0, 0, 70)); - QRect rect = editRect.adjusted(1, 0, 0, 0); + // Reserve some space for the down-arrow + QRect rect = editRect.adjusted(0, 0, -8, 0); QString text = option->fontMetrics.elidedText(cb->currentText, Qt::ElideRight, rect.width()); drawItemText(painter, rect.translated(0, 1), visualAlignment(option->direction, Qt::AlignLeft | Qt::AlignVCenter), @@ -1019,7 +1024,7 @@ void ManhattanStyle::drawComplexControl(ComplexControl control, const QStyleOpti drawPrimitive(PE_PanelButtonTool, option, painter, widget); // Draw arrow - int menuButtonWidth = 16; + int menuButtonWidth = 12; bool reverse = option->direction == Qt::RightToLeft; int left = !reverse ? rect.right() - menuButtonWidth : rect.left(); int right = !reverse ? rect.right() : rect.left() + menuButtonWidth; From 530f0fc2da14bff5a4db0427dcb405d210994d2a Mon Sep 17 00:00:00 2001 From: Jens Bache-Wiig Date: Mon, 26 Jan 2009 18:42:25 +0100 Subject: [PATCH 05/15] Fixes: Reduced hover glow Details: I think the animations are a bit too much at the moment. It looks a bit more refined when they are subtle... --- src/plugins/coreplugin/fancytabwidget.cpp | 2 +- src/plugins/coreplugin/manhattanstyle.cpp | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/plugins/coreplugin/fancytabwidget.cpp b/src/plugins/coreplugin/fancytabwidget.cpp index 1302dc71d67..f5b646ba6be 100644 --- a/src/plugins/coreplugin/fancytabwidget.cpp +++ b/src/plugins/coreplugin/fancytabwidget.cpp @@ -158,7 +158,7 @@ void FancyTabBar::paintTab(QPainter *painter, int tabIndex) const QColor hoverColor; if (hover) { - hoverColor = QColor(255, 255, 255, m_hoverControl.currentFrame()*2); + hoverColor = QColor(255, 255, 255, m_hoverControl.currentFrame()); } QColor light = QColor(255, 255, 255, 40); diff --git a/src/plugins/coreplugin/manhattanstyle.cpp b/src/plugins/coreplugin/manhattanstyle.cpp index 4227dec213b..47e13dec297 100644 --- a/src/plugins/coreplugin/manhattanstyle.cpp +++ b/src/plugins/coreplugin/manhattanstyle.cpp @@ -495,10 +495,10 @@ void ManhattanStyle::drawPrimitive(PrimitiveElement element, const QStyleOption if (pressed) { QColor shade(0, 0, 0, 50); if (option->state & State_Sunken) - shade = QColor(0, 0, 0, 70); + shade = QColor(0, 0, 0, 50); #ifndef Q_WS_MAC else if (option->state & State_MouseOver) - shade = QColor(255, 255, 255, 40); + shade = QColor(255, 255, 255, 10); #endif else if (option->state & State_On) shade = QColor(0, 0, 0, 50); @@ -514,7 +514,7 @@ void ManhattanStyle::drawPrimitive(PrimitiveElement element, const QStyleOption } #ifndef Q_WS_MAC else if (option->state & State_MouseOver) { - QColor lighter(255, 255, 255, 100); + QColor lighter(255, 255, 255, 35); painter->fillRect(rect, lighter); painter->drawLine(rect.topRight(), rect.bottomRight()); } From 114363677505011b3dd5a8cb5b64ea927f3cebf2 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 27 Jan 2009 09:18:14 +0100 Subject: [PATCH 06/15] Fixes: Reduce dependencies to Designer headers/Kick out the unused "Generate Code" action --- src/plugins/designer/formeditorw.cpp | 50 +---------------------- src/plugins/designer/formeditorw.h | 2 - src/plugins/designer/formwindoweditor.cpp | 27 ------------ src/plugins/designer/formwindoweditor.h | 2 - 4 files changed, 1 insertion(+), 80 deletions(-) diff --git a/src/plugins/designer/formeditorw.cpp b/src/plugins/designer/formeditorw.cpp index 58de33f2753..54a14350313 100644 --- a/src/plugins/designer/formeditorw.cpp +++ b/src/plugins/designer/formeditorw.cpp @@ -84,8 +84,6 @@ #include #include -enum { wantCodeGenerationAction = 0 }; - static const char *editorWidgetStateKeyC = "editorWidgetState"; static const char *settingsGroup = "Designer"; @@ -166,8 +164,7 @@ FormEditorW::FormEditorW() : m_core(Core::ICore::instance()), m_initStage(RegisterPlugins), m_actionGroupEditMode(0), - m_actionPrint(0), - m_actionGenerateCode(0) + m_actionPrint(0) { if (Designer::Constants::Internal::debug) qDebug() << Q_FUNC_INFO; @@ -420,13 +417,6 @@ void FormEditorW::setupActions() m_actionGroupPreviewInStyle = m_fwm->actionGroupPreviewInStyle(); mformtools->addMenu(createPreviewStyleMenu(am, m_actionGroupPreviewInStyle)); - // Disabled since we cannot reliably locate uic. - if (wantCodeGenerationAction) { - m_actionGenerateCode = new QAction(tr("View &code"), this); - addToolAction(m_actionGenerateCode, am, m_context, - QLatin1String("FormEditor.ViewCode"), mformtools); - connect(m_actionGenerateCode, SIGNAL(triggered()), this, SLOT(generateCode())); - } // Form settings createSeparator(this, am, m_context, medit, QLatin1String("FormEditor.Edit.Separator2"), Core::Constants::G_EDIT_OTHER); @@ -513,42 +503,6 @@ void FormEditorW::restoreSettings(const QSettings *s) } } -void FormEditorW::generateCode() -{ - const FormWindowEditor *fww = activeFormWindow(); - if (!fww) - return; - - bool ok = false; - QString errorMessage; - - do { - QByteArray header; - if (!fww->generateCode(header, errorMessage)) - break; - - QString tempPattern = QDir::tempPath(); - if (!tempPattern.endsWith(QDir::separator())) // platform-dependant - tempPattern += QDir::separator(); - tempPattern += QLatin1String("ui_headerXXXXXX.h"); - QTemporaryFile headerFile(tempPattern); - headerFile.setAutoRemove (false); - if (!headerFile.open() || !headerFile.write(header)) { - errorMessage = tr("Unable to write to a temporary file."); - break; - } - const QString headerFileName = headerFile.fileName(); - headerFile.close(); - Core::IEditor *eif = m_core->editorManager()->openEditor(headerFileName); - if (!eif) { - errorMessage = tr("Unable open %1.").arg(headerFileName); - break; - } - ok = true; - } while (false); - if (!ok) - critical(errorMessage); -} void FormEditorW::critical(const QString &errorMessage) { @@ -621,8 +575,6 @@ void FormEditorW::activeFormWindowChanged(QDesignerFormWindowInterface *afw) } m_actionPreview->setEnabled(foundFormWindow); - if (m_actionGenerateCode) - m_actionGenerateCode->setEnabled(foundFormWindow); m_actionGroupPreviewInStyle->setEnabled(foundFormWindow); } diff --git a/src/plugins/designer/formeditorw.h b/src/plugins/designer/formeditorw.h index f41d3554e25..89da92443ce 100644 --- a/src/plugins/designer/formeditorw.h +++ b/src/plugins/designer/formeditorw.h @@ -120,7 +120,6 @@ public: FormWindowEditor *activeFormWindow(); private slots: - void generateCode(); void activateEditMode(int id); void activateEditMode(QAction*); void activeFormWindowChanged(QDesignerFormWindowInterface *); @@ -160,7 +159,6 @@ private: QList m_settingsPages; QActionGroup *m_actionGroupEditMode; QAction *m_actionPrint; - QAction *m_actionGenerateCode; QAction *m_actionPreview; QActionGroup *m_actionGroupPreviewInStyle; diff --git a/src/plugins/designer/formwindoweditor.cpp b/src/plugins/designer/formwindoweditor.cpp index be6b763e61c..22a848321b7 100644 --- a/src/plugins/designer/formwindoweditor.cpp +++ b/src/plugins/designer/formwindoweditor.cpp @@ -300,33 +300,6 @@ QWidget *FormWindowEditor::widget() return m_editorWidget; } -bool FormWindowEditor::generateCode(QByteArray &header, QString &errorMessage) const -{ - if (Designer::Constants::Internal::debug) - qDebug() << Q_FUNC_INFO; - - QString tempPattern = QDir::tempPath(); - if (!tempPattern.endsWith(QDir::separator())) // platform-dependant - tempPattern += QDir::separator(); - tempPattern += QLatin1String("formXXXXXX.ui"); - QTemporaryFile uiFile(tempPattern); - uiFile.setAutoRemove(true); - if (!uiFile.open()) { - errorMessage = tr("Unable to write to a temporary file."); - return false; - } - if (!m_file->writeFile(uiFile, errorMessage)) { - errorMessage = tr("Unable to write to a temporary file."); - return false; - } - const QString uiFileName = uiFile.fileName(); - uiFile.close(); - - if (!qdesigner_internal::runUIC(uiFileName, qdesigner_internal::UIC_GenerateCode, header, errorMessage)) - return false; - - return true; -} QDesignerFormWindowInterface *FormWindowEditor::formWindow() const { diff --git a/src/plugins/designer/formwindoweditor.h b/src/plugins/designer/formwindoweditor.h index 6a449aeb96f..e854ccac915 100644 --- a/src/plugins/designer/formwindoweditor.h +++ b/src/plugins/designer/formwindoweditor.h @@ -87,8 +87,6 @@ public: QList context() const; QWidget *widget(); - // Internal - bool generateCode(QByteArray &header, QString &errorMessage) const; QDesignerFormWindowInterface *formWindow() const; QWidget *integrationContainer(); void updateFormWindowSelectionHandles(bool state); From 6058a885f2464b624c5a0ff6cc47cc70422b94eb Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 27 Jan 2009 09:46:57 +0100 Subject: [PATCH 07/15] Fixes: fakevim: improvements for 'o' and 's' --- src/plugins/fakevim/fakevimhandler.cpp | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index 3b981fa6a23..8a164fee4d5 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -908,11 +908,13 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, moveToFirstNonBlankOnLine(); finishMovement(); } else if (key == 'i') { + recordBeginGroup(); enterInsertMode(); updateMiniBuffer(); if (atEndOfLine()) moveLeft(); } else if (key == 'I') { + recordBeginGroup(); setAnchor(); enterInsertMode(); if (m_gflag) @@ -976,13 +978,13 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, } else if (key == 'N') { search(lastSearchString(), !m_lastSearchForward); } else if (key == 'o' || key == 'O') { + recordBeginGroup(); + recordMove(); enterInsertMode(); moveToFirstNonBlankOnLine(); - recordBeginGroup(); int numSpaces = leftDist(); - moveUp(); - if (key == 'o') - moveDown(); + if (key == 'O') + moveUp(); moveToEndOfLine(); recordInsertText("\n"); moveToStartOfLine(); @@ -990,7 +992,6 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, recordInsertText(QString(indentDist(), ' ')); else recordInsertText(QString(numSpaces, ' ')); - recordEndGroup(); } else if (key == 'p' || key == 'P') { recordBeginGroup(); QString text = m_registers[m_register]; @@ -1034,8 +1035,13 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, redo(); } else if (key == 's') { recordBeginGroup(); - m_submode = ChangeSubMode; + setAnchor(); moveRight(qMin(count(), rightDist())); + m_registers[m_register] = recordRemoveSelectedText(); + //m_dotCommand = QString("%1s").arg(count()); + m_opcount.clear(); + m_mvcount.clear(); + enterInsertMode(); } else if (key == 't' || key == 'T') { m_subsubmode = FtSubSubMode; m_subsubdata = key; @@ -2043,7 +2049,6 @@ void FakeVimHandler::Private::enterInsertMode() EDITOR(setOverwriteMode(false)); m_mode = InsertMode; m_lastInsertion.clear(); - recordBeginGroup(); } void FakeVimHandler::Private::enterCommandMode() From e4876723a4ed506b641db9df9f5e00155c9be378 Mon Sep 17 00:00:00 2001 From: Jens Bache-Wiig Date: Tue, 27 Jan 2009 10:09:37 +0100 Subject: [PATCH 08/15] Fixes: Use alternate row colors for sidebar Task: As discussed with b_lindeijer Details: This enables alternate row colors, with filled empty area on the side bar for improved usability. --- src/plugins/coreplugin/manhattanstyle.cpp | 13 +++++++++---- src/plugins/projectexplorer/projecttreewidget.cpp | 2 ++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/plugins/coreplugin/manhattanstyle.cpp b/src/plugins/coreplugin/manhattanstyle.cpp index 47e13dec297..af361aacbb9 100644 --- a/src/plugins/coreplugin/manhattanstyle.cpp +++ b/src/plugins/coreplugin/manhattanstyle.cpp @@ -388,15 +388,20 @@ QPixmap ManhattanStyle::standardPixmap(StandardPixmap standardPixmap, const QSty int ManhattanStyle::styleHint(StyleHint hint, const QStyleOption *option, const QWidget *widget, QStyleHintReturn *returnData) const { - int ret = 0; + int ret = d->style->styleHint(hint, option, widget, returnData); switch (hint) { + // Make project explorer alternate rows all the way + case QStyle::SH_ItemView_PaintAlternatingRowColorsForEmptyArea: + if (widget && widget->property("AlternateEmpty").toBool()) + ret = true; + break; case QStyle::SH_EtchDisabledText: - ret = false; // We really should only enforce this for panel widgets + if (panelWidget(widget)) + ret = false; break; default: - ret = d->style->styleHint(hint, option, widget, returnData); + break; } - return ret; } diff --git a/src/plugins/projectexplorer/projecttreewidget.cpp b/src/plugins/projectexplorer/projecttreewidget.cpp index 3329f80788a..f08885ab6b9 100644 --- a/src/plugins/projectexplorer/projecttreewidget.cpp +++ b/src/plugins/projectexplorer/projecttreewidget.cpp @@ -73,6 +73,8 @@ public: setContextMenuPolicy(Qt::CustomContextMenu); setUniformRowHeights(true); setTextElideMode(Qt::ElideNone); + setAlternatingRowColors(true); + setProperty("AlternateEmpty", true); // Let Manhattan to override style default // setExpandsOnDoubleClick(false); } From 6cf47088fa6b490345ad29b23e7531b10592c978 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 27 Jan 2009 11:19:41 +0100 Subject: [PATCH 09/15] Fixes: Ship Qt Designer private Headers Task: 205821 Details: Added script to copy them over, swapping license headers, added directory qt_private. --- src/plugins/designer/README.txt | 9 + src/plugins/designer/formeditorw.cpp | 8 +- .../designer/formtemplatewizardpage.cpp | 2 +- src/plugins/designer/formwindoweditor.cpp | 4 +- .../qt_private/abstractnewformwidget_p.h | 80 ++++++++ .../qt_private/abstractoptionspage_p.h | 71 +++++++ .../designer/qt_private/abstractsettings_p.h | 79 +++++++ .../designer/qt_private/formwindowbase_p.h | 194 ++++++++++++++++++ .../designer/qt_private/iconloader_p.h | 64 ++++++ .../designer/qt_private/pluginmanager_p.h | 143 +++++++++++++ .../qdesigner_formwindowmanager_p.h | 90 ++++++++ .../qt_private/qdesigner_integration_p.h | 142 +++++++++++++ .../designer/qt_private/qtresourcemodel_p.h | 136 ++++++++++++ .../designer/qt_private/shared_global_p.h | 68 ++++++ src/plugins/designer/settingsmanager.h | 2 +- src/plugins/designer/settingspage.cpp | 2 +- src/plugins/designer/syncqtheader.sh | 69 +++++++ src/plugins/designer/workbenchintegration.h | 2 +- 18 files changed, 1155 insertions(+), 10 deletions(-) create mode 100644 src/plugins/designer/qt_private/abstractnewformwidget_p.h create mode 100644 src/plugins/designer/qt_private/abstractoptionspage_p.h create mode 100644 src/plugins/designer/qt_private/abstractsettings_p.h create mode 100644 src/plugins/designer/qt_private/formwindowbase_p.h create mode 100644 src/plugins/designer/qt_private/iconloader_p.h create mode 100644 src/plugins/designer/qt_private/pluginmanager_p.h create mode 100644 src/plugins/designer/qt_private/qdesigner_formwindowmanager_p.h create mode 100644 src/plugins/designer/qt_private/qdesigner_integration_p.h create mode 100644 src/plugins/designer/qt_private/qtresourcemodel_p.h create mode 100644 src/plugins/designer/qt_private/shared_global_p.h create mode 100755 src/plugins/designer/syncqtheader.sh diff --git a/src/plugins/designer/README.txt b/src/plugins/designer/README.txt index eeef2a6c1d8..7665e29c98e 100644 --- a/src/plugins/designer/README.txt +++ b/src/plugins/designer/README.txt @@ -5,6 +5,7 @@ Including cpp.pri in designer.pro enables them and defines CPP_ENABLED. Resource handling: +------------------ When the editor is opened for the ui file we remember the internal qrc list read from the ui file (m_originalUiQrcPaths). In next step (a call to @@ -35,3 +36,11 @@ designer's internal file watcher updates the changes to qrc files silently. A call to setResourceEditingEnabled(false) removes the edit resources action form resource browser in designer + +Building +-------- + +The plugin accesses some private headers of Qt Designer 4.5. +Copies of them are located in qt_private to achieve a clean build +from a standard Qt distribution. The script syncqtheader.sh +can be used to update them. diff --git a/src/plugins/designer/formeditorw.cpp b/src/plugins/designer/formeditorw.cpp index 54a14350313..4ab3c61694a 100644 --- a/src/plugins/designer/formeditorw.cpp +++ b/src/plugins/designer/formeditorw.cpp @@ -48,11 +48,11 @@ #include #include -#include +#include -#include // createIconSet -#include -#include +#include // createIconSet +#include +#include #include #include diff --git a/src/plugins/designer/formtemplatewizardpage.cpp b/src/plugins/designer/formtemplatewizardpage.cpp index aacda476a16..221da1edfc9 100644 --- a/src/plugins/designer/formtemplatewizardpage.cpp +++ b/src/plugins/designer/formtemplatewizardpage.cpp @@ -34,7 +34,7 @@ #include "formtemplatewizardpage.h" #include "formeditorw.h" -#include +#include #include #include diff --git a/src/plugins/designer/formwindoweditor.cpp b/src/plugins/designer/formwindoweditor.cpp index 22a848321b7..65eaf8aceb1 100644 --- a/src/plugins/designer/formwindoweditor.cpp +++ b/src/plugins/designer/formwindoweditor.cpp @@ -45,8 +45,8 @@ #include #include #include -#include -#include +#include +#include #include #include diff --git a/src/plugins/designer/qt_private/abstractnewformwidget_p.h b/src/plugins/designer/qt_private/abstractnewformwidget_p.h new file mode 100644 index 00000000000..2f176f74a2e --- /dev/null +++ b/src/plugins/designer/qt_private/abstractnewformwidget_p.h @@ -0,0 +1,80 @@ +/*************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Qt Software Information (qt-info@nokia.com) +** +** +** Non-Open Source Usage +** +** Licensees may use this file in accordance with the Qt Beta Version +** License Agreement, Agreement version 2.2 provided with the Software or, +** alternatively, in accordance with the terms contained in a written +** agreement between you and Nokia. +** +** GNU General Public License Usage +** +** Alternatively, this file may be used under the terms of the GNU General +** Public License versions 2.0 or 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the packaging +** of this file. Please review the following information to ensure GNU +** General Public Licensing requirements will be met: +** +** http://www.fsf.org/licensing/licenses/info/GPLv2.html and +** http://www.gnu.org/copyleft/gpl.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt GPL Exception +** version 1.3, included in the file GPL_EXCEPTION.txt in this package. +** +***************************************************************************/ + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of Qt Designer. This header +// file may change from version to version without notice, or even be removed. +// +// We mean it. +// + +#ifndef ABSTRACTNEWFORMWIDGET_H +#define ABSTRACTNEWFORMWIDGET_H + +#include + +#include + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +class QDesignerFormEditorInterface; + +class QDESIGNER_SDK_EXPORT QDesignerNewFormWidgetInterface : public QWidget +{ + Q_DISABLE_COPY(QDesignerNewFormWidgetInterface) + Q_OBJECT +public: + explicit QDesignerNewFormWidgetInterface(QWidget *parent = 0); + virtual ~QDesignerNewFormWidgetInterface(); + + virtual bool hasCurrentTemplate() const = 0; + virtual QString currentTemplate(QString *errorMessage = 0) = 0; + + static QDesignerNewFormWidgetInterface *createNewFormWidget(QDesignerFormEditorInterface *core, QWidget *parent = 0); + +Q_SIGNALS: + void templateActivated(); + void currentTemplateChanged(bool templateSelected); +}; + +QT_END_NAMESPACE + +QT_END_HEADER + +#endif // ABSTRACTNEWFORMWIDGET_H diff --git a/src/plugins/designer/qt_private/abstractoptionspage_p.h b/src/plugins/designer/qt_private/abstractoptionspage_p.h new file mode 100644 index 00000000000..8455c87720f --- /dev/null +++ b/src/plugins/designer/qt_private/abstractoptionspage_p.h @@ -0,0 +1,71 @@ +/*************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Qt Software Information (qt-info@nokia.com) +** +** +** Non-Open Source Usage +** +** Licensees may use this file in accordance with the Qt Beta Version +** License Agreement, Agreement version 2.2 provided with the Software or, +** alternatively, in accordance with the terms contained in a written +** agreement between you and Nokia. +** +** GNU General Public License Usage +** +** Alternatively, this file may be used under the terms of the GNU General +** Public License versions 2.0 or 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the packaging +** of this file. Please review the following information to ensure GNU +** General Public Licensing requirements will be met: +** +** http://www.fsf.org/licensing/licenses/info/GPLv2.html and +** http://www.gnu.org/copyleft/gpl.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt GPL Exception +** version 1.3, included in the file GPL_EXCEPTION.txt in this package. +** +***************************************************************************/ + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of Qt Designer. This header +// file may change from version to version without notice, or even be removed. +// +// We mean it. +// + +#ifndef ABSTRACTOPTIONSPAGE_P_H +#define ABSTRACTOPTIONSPAGE_P_H + +#include + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +class QString; +class QWidget; + +class QDESIGNER_SDK_EXPORT QDesignerOptionsPageInterface +{ +public: + virtual ~QDesignerOptionsPageInterface() {} + virtual QString name() const = 0; + virtual QWidget *createPage(QWidget *parent) = 0; + virtual void apply() = 0; + virtual void finish() = 0; +}; + +QT_END_NAMESPACE + +QT_END_HEADER + +#endif // ABSTRACTOPTIONSPAGE_P_H diff --git a/src/plugins/designer/qt_private/abstractsettings_p.h b/src/plugins/designer/qt_private/abstractsettings_p.h new file mode 100644 index 00000000000..2d5bece0cdf --- /dev/null +++ b/src/plugins/designer/qt_private/abstractsettings_p.h @@ -0,0 +1,79 @@ +/*************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Qt Software Information (qt-info@nokia.com) +** +** +** Non-Open Source Usage +** +** Licensees may use this file in accordance with the Qt Beta Version +** License Agreement, Agreement version 2.2 provided with the Software or, +** alternatively, in accordance with the terms contained in a written +** agreement between you and Nokia. +** +** GNU General Public License Usage +** +** Alternatively, this file may be used under the terms of the GNU General +** Public License versions 2.0 or 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the packaging +** of this file. Please review the following information to ensure GNU +** General Public Licensing requirements will be met: +** +** http://www.fsf.org/licensing/licenses/info/GPLv2.html and +** http://www.gnu.org/copyleft/gpl.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt GPL Exception +** version 1.3, included in the file GPL_EXCEPTION.txt in this package. +** +***************************************************************************/ + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of Qt Designer. This header +// file may change from version to version without notice, or even be removed. +// +// We mean it. +// + +#ifndef ABSTRACTSETTINGS_P_H +#define ABSTRACTSETTINGS_P_H + +#include + +#include + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +class QString; + +/*! + To be implemented by IDEs that want to control the way designer retrieves/stores its settings. + */ +class QDESIGNER_SDK_EXPORT QDesignerSettingsInterface +{ +public: + virtual ~QDesignerSettingsInterface() {} + + virtual void beginGroup(const QString &prefix) = 0; + virtual void endGroup() = 0; + + virtual bool contains(const QString &key) const = 0; + virtual void setValue(const QString &key, const QVariant &value) = 0; + virtual QVariant value(const QString &key, const QVariant &defaultValue = QVariant()) const = 0; + virtual void remove(const QString &key) = 0; +}; + +QT_END_NAMESPACE + +QT_END_HEADER + +#endif // ABSTRACTSETTINGS_P_H diff --git a/src/plugins/designer/qt_private/formwindowbase_p.h b/src/plugins/designer/qt_private/formwindowbase_p.h new file mode 100644 index 00000000000..23344c18194 --- /dev/null +++ b/src/plugins/designer/qt_private/formwindowbase_p.h @@ -0,0 +1,194 @@ +/*************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Qt Software Information (qt-info@nokia.com) +** +** +** Non-Open Source Usage +** +** Licensees may use this file in accordance with the Qt Beta Version +** License Agreement, Agreement version 2.2 provided with the Software or, +** alternatively, in accordance with the terms contained in a written +** agreement between you and Nokia. +** +** GNU General Public License Usage +** +** Alternatively, this file may be used under the terms of the GNU General +** Public License versions 2.0 or 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the packaging +** of this file. Please review the following information to ensure GNU +** General Public Licensing requirements will be met: +** +** http://www.fsf.org/licensing/licenses/info/GPLv2.html and +** http://www.gnu.org/copyleft/gpl.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt GPL Exception +** version 1.3, included in the file GPL_EXCEPTION.txt in this package. +** +***************************************************************************/ + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of Qt Designer. This header +// file may change from version to version without notice, or even be removed. +// +// We mean it. +// + +#ifndef FORMWINDOWBASE_H +#define FORMWINDOWBASE_H + +#include "shared_global_p.h" + +#include + +#include +#include + +QT_BEGIN_NAMESPACE + +class QDesignerDnDItemInterface; +class QMenu; +class QtResourceSet; +class QDesignerPropertySheet; + +namespace qdesigner_internal { + +class QEditorFormBuilder; +class DeviceProfile; +class Grid; + +class DesignerPixmapCache; +class DesignerIconCache; +class FormWindowBasePrivate; + +class QDESIGNER_SHARED_EXPORT FormWindowBase: public QDesignerFormWindowInterface +{ + Q_OBJECT +public: + enum HighlightMode { Restore, Highlight }; + enum SaveResourcesBehaviour { SaveAll, SaveOnlyUsedQrcFiles, DontSaveQrcFiles }; + + explicit FormWindowBase(QDesignerFormEditorInterface *core, QWidget *parent = 0, Qt::WindowFlags flags = 0); + virtual ~FormWindowBase(); + + QVariantMap formData(); + void setFormData(const QVariantMap &vm); + + // Return the widget containing the form. This is used to + // apply embedded design settings to that are inherited (for example font). + // These are meant to be applied to the form only and not to the other editors + // in the widget stack. + virtual QWidget *formContainer() const = 0; + + // Deprecated + virtual QPoint grid() const; + + // Deprecated + virtual void setGrid(const QPoint &grid); + + virtual bool hasFeature(Feature f) const; + virtual Feature features() const; + virtual void setFeatures(Feature f); + + const Grid &designerGrid() const; + void setDesignerGrid(const Grid& grid); + + bool hasFormGrid() const; + void setHasFormGrid(bool b); + + bool gridVisible() const; + + SaveResourcesBehaviour saveResourcesBehaviour() const; + void setSaveResourcesBehaviour(SaveResourcesBehaviour behaviour); + + static const Grid &defaultDesignerGrid(); + static void setDefaultDesignerGrid(const Grid& grid); + + // Overwrite to initialize and return a full popup menu for a managed widget + virtual QMenu *initializePopupMenu(QWidget *managedWidget); + // Helper to create a basic popup menu from task menu extensions (internal/public) + static QMenu *createExtensionTaskMenu(QDesignerFormWindowInterface *fw, QObject *o, bool trailingSeparator = true); + + virtual bool dropWidgets(const QList &item_list, QWidget *target, + const QPoint &global_mouse_pos) = 0; + + // Helper to find the widget at the mouse position with some flags. + enum WidgetUnderMouseMode { FindSingleSelectionDropTarget, FindMultiSelectionDropTarget }; + QWidget *widgetUnderMouse(const QPoint &formPos, WidgetUnderMouseMode m); + + virtual QWidget *widgetAt(const QPoint &pos) = 0; + virtual QWidget *findContainer(QWidget *w, bool excludeLayout) const = 0; + + void deleteWidgetList(const QWidgetList &widget_list); + + virtual void highlightWidget(QWidget *w, const QPoint &pos, HighlightMode mode = Highlight) = 0; + + enum PasteMode { PasteAll, PasteActionsOnly }; + virtual void paste(PasteMode pasteMode) = 0; + + // Factory method to create a form builder + virtual QEditorFormBuilder *createFormBuilder() = 0; + + virtual bool blockSelectionChanged(bool blocked) = 0; + virtual void emitSelectionChanged() = 0; + + DesignerPixmapCache *pixmapCache() const; + DesignerIconCache *iconCache() const; + QtResourceSet *resourceSet() const; + void setResourceSet(QtResourceSet *resourceSet); + void addReloadableProperty(QDesignerPropertySheet *sheet, int index); + void removeReloadableProperty(QDesignerPropertySheet *sheet, int index); + void addReloadablePropertySheet(QDesignerPropertySheet *sheet, QObject *object); + void removeReloadablePropertySheet(QDesignerPropertySheet *sheet); + void reloadProperties(); + + void emitWidgetRemoved(QWidget *w); + void emitObjectRemoved(QObject *o); + + DeviceProfile deviceProfile() const; + QString styleName() const; + QString deviceProfileName() const; + + enum LineTerminatorMode { + LFLineTerminator, + CRLFLineTerminator, + NativeLineTerminator = +#if defined (Q_OS_WIN) + CRLFLineTerminator +#else + LFLineTerminator +#endif + }; + + void setLineTerminatorMode(LineTerminatorMode mode); + LineTerminatorMode lineTerminatorMode() const; + + // Connect the 'activated' (doubleclicked) signal of the form window to a + // slot triggering the default action (of the task menu) + static void setupDefaultAction(QDesignerFormWindowInterface *fw); + +public slots: + void resourceSetActivated(QtResourceSet *resourceSet, bool resourceSetChanged); + +private slots: + void triggerDefaultAction(QWidget *w); + +private: + void syncGridFeature(); + + FormWindowBasePrivate *m_d; +}; + +} // namespace qdesigner_internal + +QT_END_NAMESPACE + +#endif // FORMWINDOWBASE_H diff --git a/src/plugins/designer/qt_private/iconloader_p.h b/src/plugins/designer/qt_private/iconloader_p.h new file mode 100644 index 00000000000..29c33ef5819 --- /dev/null +++ b/src/plugins/designer/qt_private/iconloader_p.h @@ -0,0 +1,64 @@ +/*************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Qt Software Information (qt-info@nokia.com) +** +** +** Non-Open Source Usage +** +** Licensees may use this file in accordance with the Qt Beta Version +** License Agreement, Agreement version 2.2 provided with the Software or, +** alternatively, in accordance with the terms contained in a written +** agreement between you and Nokia. +** +** GNU General Public License Usage +** +** Alternatively, this file may be used under the terms of the GNU General +** Public License versions 2.0 or 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the packaging +** of this file. Please review the following information to ensure GNU +** General Public Licensing requirements will be met: +** +** http://www.fsf.org/licensing/licenses/info/GPLv2.html and +** http://www.gnu.org/copyleft/gpl.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt GPL Exception +** version 1.3, included in the file GPL_EXCEPTION.txt in this package. +** +***************************************************************************/ + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of Qt Designer. This header +// file may change from version to version without notice, or even be removed. +// +// We mean it. +// + +#ifndef ICONLOADER_H +#define ICONLOADER_H + +#include "shared_global_p.h" + +QT_BEGIN_NAMESPACE + +class QString; +class QIcon; + +namespace qdesigner_internal { + +QDESIGNER_SHARED_EXPORT QIcon createIconSet(const QString &name); +QDESIGNER_SHARED_EXPORT QIcon emptyIcon(); + +} // namespace qdesigner_internal + +QT_END_NAMESPACE + +#endif // ICONLOADER_H diff --git a/src/plugins/designer/qt_private/pluginmanager_p.h b/src/plugins/designer/qt_private/pluginmanager_p.h new file mode 100644 index 00000000000..1b0b58ced28 --- /dev/null +++ b/src/plugins/designer/qt_private/pluginmanager_p.h @@ -0,0 +1,143 @@ +/*************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Qt Software Information (qt-info@nokia.com) +** +** +** Non-Open Source Usage +** +** Licensees may use this file in accordance with the Qt Beta Version +** License Agreement, Agreement version 2.2 provided with the Software or, +** alternatively, in accordance with the terms contained in a written +** agreement between you and Nokia. +** +** GNU General Public License Usage +** +** Alternatively, this file may be used under the terms of the GNU General +** Public License versions 2.0 or 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the packaging +** of this file. Please review the following information to ensure GNU +** General Public Licensing requirements will be met: +** +** http://www.fsf.org/licensing/licenses/info/GPLv2.html and +** http://www.gnu.org/copyleft/gpl.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt GPL Exception +** version 1.3, included in the file GPL_EXCEPTION.txt in this package. +** +***************************************************************************/ + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of Qt Designer. This header +// file may change from version to version without notice, or even be removed. +// +// We mean it. +// + +#ifndef PLUGINMANAGER_H +#define PLUGINMANAGER_H + +#include "shared_global_p.h" + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QDesignerFormEditorInterface; +class QDesignerCustomWidgetInterface; +class QDesignerPluginManagerPrivate; + +class QDesignerCustomWidgetSharedData; + +/* Information contained in the Dom XML of a custom widget. */ +class QDESIGNER_SHARED_EXPORT QDesignerCustomWidgetData { +public: + explicit QDesignerCustomWidgetData(const QString &pluginPath = QString()); + + enum ParseResult { ParseOk, ParseWarning, ParseError }; + ParseResult parseXml(const QString &xml, const QString &name, QString *errorMessage); + + QDesignerCustomWidgetData(const QDesignerCustomWidgetData&); + QDesignerCustomWidgetData& operator=(const QDesignerCustomWidgetData&); + ~QDesignerCustomWidgetData(); + + bool isNull() const; + + QString pluginPath() const; + + // Data as parsed from the widget's domXML(). + QString xmlClassName() const; + // Optional. The language the plugin is supposed to be used with. + QString xmlLanguage() const; + // Optional. method used to add pages to a container with a container extension + QString xmlAddPageMethod() const; + // Optional. Base class + QString xmlExtends() const; + // Optional. The name to be used in the widget box. + QString xmlDisplayName() const; + +private: + QSharedDataPointer m_d; +}; + +class QDESIGNER_SHARED_EXPORT QDesignerPluginManager: public QObject +{ + Q_OBJECT +public: + typedef QList CustomWidgetList; + + explicit QDesignerPluginManager(QDesignerFormEditorInterface *core); + virtual ~QDesignerPluginManager(); + + QDesignerFormEditorInterface *core() const; + + QObject *instance(const QString &plugin) const; + + QStringList registeredPlugins() const; + + QStringList findPlugins(const QString &path); + + QStringList pluginPaths() const; + void setPluginPaths(const QStringList &plugin_paths); + + QStringList disabledPlugins() const; + void setDisabledPlugins(const QStringList &disabled_plugins); + + QStringList failedPlugins() const; + QString failureReason(const QString &pluginName) const; + + QObjectList instances() const; + + CustomWidgetList registeredCustomWidgets() const; + QDesignerCustomWidgetData customWidgetData(QDesignerCustomWidgetInterface *w) const; + + bool registerNewPlugins(); + +public slots: + bool syncSettings(); + void ensureInitialized(); + +private: + void updateRegisteredPlugins(); + void registerPath(const QString &path); + void registerPlugin(const QString &plugin); + +private: + static QStringList defaultPluginPaths(); + + QDesignerPluginManagerPrivate *m_d; +}; + +QT_END_NAMESPACE + +#endif // PLUGINMANAGER_H diff --git a/src/plugins/designer/qt_private/qdesigner_formwindowmanager_p.h b/src/plugins/designer/qt_private/qdesigner_formwindowmanager_p.h new file mode 100644 index 00000000000..fc4efe6535a --- /dev/null +++ b/src/plugins/designer/qt_private/qdesigner_formwindowmanager_p.h @@ -0,0 +1,90 @@ +/*************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Qt Software Information (qt-info@nokia.com) +** +** +** Non-Open Source Usage +** +** Licensees may use this file in accordance with the Qt Beta Version +** License Agreement, Agreement version 2.2 provided with the Software or, +** alternatively, in accordance with the terms contained in a written +** agreement between you and Nokia. +** +** GNU General Public License Usage +** +** Alternatively, this file may be used under the terms of the GNU General +** Public License versions 2.0 or 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the packaging +** of this file. Please review the following information to ensure GNU +** General Public Licensing requirements will be met: +** +** http://www.fsf.org/licensing/licenses/info/GPLv2.html and +** http://www.gnu.org/copyleft/gpl.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt GPL Exception +** version 1.3, included in the file GPL_EXCEPTION.txt in this package. +** +***************************************************************************/ + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of Qt Designer. This header +// file may change from version to version without notice, or even be removed. +// +// We mean it. +// + +#ifndef QDESIGNER_FORMWINDOMANAGER_H +#define QDESIGNER_FORMWINDOMANAGER_H + +#include "shared_global_p.h" +#include + +QT_BEGIN_NAMESPACE + +namespace qdesigner_internal { + +class PreviewManager; + +// +// Convenience methods to manage form previews (ultimately forwarded to PreviewManager). +// +class QDESIGNER_SHARED_EXPORT QDesignerFormWindowManager + : public QDesignerFormWindowManagerInterface +{ + Q_OBJECT +public: + explicit QDesignerFormWindowManager(QObject *parent = 0); + virtual ~QDesignerFormWindowManager(); + + virtual QAction *actionDefaultPreview() const; + virtual QActionGroup *actionGroupPreviewInStyle() const; + virtual QAction *actionShowFormWindowSettingsDialog() const; + + virtual QPixmap createPreviewPixmap(QString *errorMessage) = 0; + + virtual PreviewManager *previewManager() const = 0; + +Q_SIGNALS: + void formWindowSettingsChanged(QDesignerFormWindowInterface *fw); + +public Q_SLOTS: + virtual void closeAllPreviews() = 0; + +private: + void *m_unused; +}; + +} // namespace qdesigner_internal + +QT_END_NAMESPACE + +#endif // QDESIGNER_FORMWINDOMANAGER_H diff --git a/src/plugins/designer/qt_private/qdesigner_integration_p.h b/src/plugins/designer/qt_private/qdesigner_integration_p.h new file mode 100644 index 00000000000..b301a1ce827 --- /dev/null +++ b/src/plugins/designer/qt_private/qdesigner_integration_p.h @@ -0,0 +1,142 @@ +/*************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Qt Software Information (qt-info@nokia.com) +** +** +** Non-Open Source Usage +** +** Licensees may use this file in accordance with the Qt Beta Version +** License Agreement, Agreement version 2.2 provided with the Software or, +** alternatively, in accordance with the terms contained in a written +** agreement between you and Nokia. +** +** GNU General Public License Usage +** +** Alternatively, this file may be used under the terms of the GNU General +** Public License versions 2.0 or 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the packaging +** of this file. Please review the following information to ensure GNU +** General Public Licensing requirements will be met: +** +** http://www.fsf.org/licensing/licenses/info/GPLv2.html and +** http://www.gnu.org/copyleft/gpl.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt GPL Exception +** version 1.3, included in the file GPL_EXCEPTION.txt in this package. +** +***************************************************************************/ + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of Qt Designer. This header +// file may change from version to version without notice, or even be removed. +// +// We mean it. +// + +#ifndef QDESIGNER_INTEGRATION_H +#define QDESIGNER_INTEGRATION_H + +#include "shared_global_p.h" +#include + +#include + +QT_BEGIN_NAMESPACE + +class QDesignerFormEditorInterface; +class QDesignerFormWindowInterface; +class QDesignerResourceBrowserInterface; + +class QVariant; +class QWidget; + +namespace qdesigner_internal { + +struct Selection; +class QDesignerIntegrationPrivate; + +class QDESIGNER_SHARED_EXPORT QDesignerIntegration: public QDesignerIntegrationInterface +{ + Q_OBJECT +public: + explicit QDesignerIntegration(QDesignerFormEditorInterface *core, QObject *parent = 0); + virtual ~QDesignerIntegration(); + + static void requestHelp(const QDesignerFormEditorInterface *core, const QString &manual, const QString &document); + + virtual QWidget *containerWindow(QWidget *widget) const; + + // Load plugins into widget database and factory. + static void initializePlugins(QDesignerFormEditorInterface *formEditor); + void emitObjectNameChanged(QDesignerFormWindowInterface *formWindow, QObject *object, + const QString &newName, const QString &oldName); + void emitNavigateToSlot(const QString &objectName, const QString &signalSignature, const QStringList ¶meterNames); + void emitNavigateToSlot(const QString &slotSignature); + + // Create a resource browser specific to integration. Language integration takes precedence + virtual QDesignerResourceBrowserInterface *createResourceBrowser(QWidget *parent = 0); + + enum ResourceFileWatcherBehaviour { + NoWatcher, + ReloadSilently, + PromptAndReload + }; + + ResourceFileWatcherBehaviour resourceFileWatcherBehaviour() const; + bool isResourceEditingEnabled() const; + bool isSlotNavigationEnabled() const; + +protected: + + void setResourceFileWatcherBehaviour(ResourceFileWatcherBehaviour behaviour); // PromptAndReload by default + void setResourceEditingEnabled(bool enable); // true by default + void setSlotNavigationEnabled(bool enable); // false by default + +signals: + void propertyChanged(QDesignerFormWindowInterface *formWindow, const QString &name, const QVariant &value); + void objectNameChanged(QDesignerFormWindowInterface *formWindow, QObject *object, const QString &newName, const QString &oldName); + void helpRequested(const QString &manual, const QString &document); + + void navigateToSlot(const QString &objectName, const QString &signalSignature, const QStringList ¶meterNames); + void navigateToSlot(const QString &slotSignature); + +public slots: + virtual void updateProperty(const QString &name, const QVariant &value, bool enableSubPropertyHandling); + // Additional signals of designer property editor + virtual void resetProperty(const QString &name); + virtual void addDynamicProperty(const QString &name, const QVariant &value); + virtual void removeDynamicProperty(const QString &name); + + virtual void updateActiveFormWindow(QDesignerFormWindowInterface *formWindow); + virtual void setupFormWindow(QDesignerFormWindowInterface *formWindow); + virtual void updateSelection(); + virtual void updateGeometry(); + virtual void activateWidget(QWidget *widget); + + void updateCustomWidgetPlugins(); + +private slots: + void updatePropertyPrivate(const QString &name, const QVariant &value); + +private: + void initialize(); + void getSelection(Selection &s); + QObject *propertyEditorObject(); + + QDesignerIntegrationPrivate *m_d; +}; + +} // namespace qdesigner_internal + +QT_END_NAMESPACE + +#endif // QDESIGNER_INTEGRATION_H diff --git a/src/plugins/designer/qt_private/qtresourcemodel_p.h b/src/plugins/designer/qt_private/qtresourcemodel_p.h new file mode 100644 index 00000000000..51743be926e --- /dev/null +++ b/src/plugins/designer/qt_private/qtresourcemodel_p.h @@ -0,0 +1,136 @@ +/*************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Qt Software Information (qt-info@nokia.com) +** +** +** Non-Open Source Usage +** +** Licensees may use this file in accordance with the Qt Beta Version +** License Agreement, Agreement version 2.2 provided with the Software or, +** alternatively, in accordance with the terms contained in a written +** agreement between you and Nokia. +** +** GNU General Public License Usage +** +** Alternatively, this file may be used under the terms of the GNU General +** Public License versions 2.0 or 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the packaging +** of this file. Please review the following information to ensure GNU +** General Public Licensing requirements will be met: +** +** http://www.fsf.org/licensing/licenses/info/GPLv2.html and +** http://www.gnu.org/copyleft/gpl.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt GPL Exception +** version 1.3, included in the file GPL_EXCEPTION.txt in this package. +** +***************************************************************************/ + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of Qt Designer. This header +// file may change from version to version without notice, or even be removed. +// +// We mean it. +// + +#ifndef QTRESOURCEMODEL_H +#define QTRESOURCEMODEL_H + +#include "shared_global_p.h" +#include +#include + +QT_BEGIN_NAMESPACE + +class QtResourceModel; + +class QDESIGNER_SHARED_EXPORT QtResourceSet // one instance per one form +{ +public: + QStringList activeQrcPaths() const; + + // activateQrcPaths(): if this QtResourceSet is active it emits resourceSetActivated(); + // otherwise only in case if active QtResource set contains one of + // paths which was marked as modified by this resource set, the signal + // is emitted (with reload = true); + // If new path appears on the list it is automatically added to + // loaded list of QtResourceModel. In addition it is marked as modified in case + // QtResourceModel didn't contain the path. + // If some path is removed from that list (and is not used in any other + // resource set) it is automatically unloaded. The removed file can also be + // marked as modified (later when another resource set which contains + // removed path is activated will be reloaded) + void activateQrcPaths(const QStringList &paths, int *errorCount = 0, QString *errorMessages = 0); + + bool isModified(const QString &path) const; // for all paths in resource model (redundant here, maybe it should be removed from here) + void setModified(const QString &path); // for all paths in resource model (redundant here, maybe it should be removed from here) +private: + QtResourceSet(); + QtResourceSet(QtResourceModel *model); + ~QtResourceSet(); + friend class QtResourceModel; + + class QtResourceSetPrivate *d_ptr; + Q_DECLARE_PRIVATE(QtResourceSet) + Q_DISABLE_COPY(QtResourceSet) +}; + +class QDESIGNER_SHARED_EXPORT QtResourceModel : public QObject // one instance per whole designer +{ + Q_OBJECT +public: + QtResourceModel(QObject *parent = 0); + ~QtResourceModel(); + + QStringList loadedQrcFiles() const; + bool isModified(const QString &path) const; // only for paths which are on loadedQrcFiles() list + void setModified(const QString &path); // only for paths which are on loadedQrcPaths() list + + QList resourceSets() const; + + QtResourceSet *currentResourceSet() const; + void setCurrentResourceSet(QtResourceSet *resourceSet, int *errorCount = 0, QString *errorMessages = 0); + + QtResourceSet *addResourceSet(const QStringList &paths); + void removeResourceSet(QtResourceSet *resourceSet); + + void reload(const QString &path, int *errorCount = 0, QString *errorMessages = 0); + void reload(int *errorCount = 0, QString *errorMessages = 0); + + // Contents of the current resource set (content file to qrc path) + QMap contents() const; + // Find the qrc file belonging to the contained file (from current resource set) + QString qrcPath(const QString &file) const; + + void setWatcherEnabled(bool enable); + bool isWatcherEnabled() const; + + void setWatcherEnabled(const QString &path, bool enable); + bool isWatcherEnabled(const QString &path); + +signals: + void resourceSetActivated(QtResourceSet *resourceSet, bool resourceSetChanged); // resourceSetChanged since last time it was activated! + void qrcFileModifiedExternally(const QString &path); + +private: + friend class QtResourceSet; + + class QtResourceModelPrivate *d_ptr; + Q_DECLARE_PRIVATE(QtResourceModel) + Q_DISABLE_COPY(QtResourceModel) + + Q_PRIVATE_SLOT(d_func(), void slotFileChanged(const QString &)) +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/plugins/designer/qt_private/shared_global_p.h b/src/plugins/designer/qt_private/shared_global_p.h new file mode 100644 index 00000000000..0df946fb90e --- /dev/null +++ b/src/plugins/designer/qt_private/shared_global_p.h @@ -0,0 +1,68 @@ +/*************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Qt Software Information (qt-info@nokia.com) +** +** +** Non-Open Source Usage +** +** Licensees may use this file in accordance with the Qt Beta Version +** License Agreement, Agreement version 2.2 provided with the Software or, +** alternatively, in accordance with the terms contained in a written +** agreement between you and Nokia. +** +** GNU General Public License Usage +** +** Alternatively, this file may be used under the terms of the GNU General +** Public License versions 2.0 or 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the packaging +** of this file. Please review the following information to ensure GNU +** General Public Licensing requirements will be met: +** +** http://www.fsf.org/licensing/licenses/info/GPLv2.html and +** http://www.gnu.org/copyleft/gpl.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt GPL Exception +** version 1.3, included in the file GPL_EXCEPTION.txt in this package. +** +***************************************************************************/ + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of Qt Designer. This header +// file may change from version to version without notice, or even be removed. +// +// We mean it. +// + +#ifndef SHARED_GLOBAL_H +#define SHARED_GLOBAL_H + +#include + +#ifdef QT_DESIGNER_STATIC +#define QDESIGNER_SHARED_EXTERN +#define QDESIGNER_SHARED_IMPORT +#else +#define QDESIGNER_SHARED_EXTERN Q_DECL_EXPORT +#define QDESIGNER_SHARED_IMPORT Q_DECL_IMPORT +#endif + +#ifndef QT_NO_SHARED_EXPORT +# ifdef QDESIGNER_SHARED_LIBRARY +# define QDESIGNER_SHARED_EXPORT QDESIGNER_SHARED_EXTERN +# else +# define QDESIGNER_SHARED_EXPORT QDESIGNER_SHARED_IMPORT +# endif +#else +# define QDESIGNER_SHARED_EXPORT +#endif + +#endif // SHARED_GLOBAL_H diff --git a/src/plugins/designer/settingsmanager.h b/src/plugins/designer/settingsmanager.h index ba6c89e133a..196d5f1ca53 100644 --- a/src/plugins/designer/settingsmanager.h +++ b/src/plugins/designer/settingsmanager.h @@ -34,7 +34,7 @@ #ifndef SETTINGSMANAGER_H #define SETTINGSMANAGER_H -#include +#include #include namespace Designer { diff --git a/src/plugins/designer/settingspage.cpp b/src/plugins/designer/settingspage.cpp index 8de4cad5dc2..9b2c773890a 100644 --- a/src/plugins/designer/settingspage.cpp +++ b/src/plugins/designer/settingspage.cpp @@ -34,7 +34,7 @@ #include "settingspage.h" #include -#include +#include using namespace Designer::Internal; diff --git a/src/plugins/designer/syncqtheader.sh b/src/plugins/designer/syncqtheader.sh new file mode 100755 index 00000000000..b114a8f6b4b --- /dev/null +++ b/src/plugins/designer/syncqtheader.sh @@ -0,0 +1,69 @@ +#!/bin/sh + +# ************************************************************************** +# +# This file is part of Qt Creator +# +# Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +# +# Contact: Qt Software Information (qt-info@nokia.com) +# +# +# Non-Open Source Usage +# +# Licensees may use this file in accordance with the Qt Beta Version +# License Agreement, Agreement version 2.2 provided with the Software or, +# alternatively, in accordance with the terms contained in a written +# agreement between you and Nokia. +# +# GNU General Public License Usage +# +# Alternatively, this file may be used under the terms of the GNU General +# Public License versions 2.0 or 3.0 as published by the Free Software +# Foundation and appearing in the file LICENSE.GPL included in the packaging +# of this file. Please review the following information to ensure GNU +# General Public Licensing requirements will be met: +# +# http://www.fsf.org/licensing/licenses/info/GPLv2.html and +# http://www.gnu.org/copyleft/gpl.html. +# +# In addition, as a special exception, Nokia gives you certain additional +# rights. These rights are described in the Nokia Qt GPL Exception +# version 1.3, included in the file GPL_EXCEPTION.txt in this package. +# +# ***************************************************************************/ + +# Internal utility script that synchronizes the Qt Designer private headers +# used by the Qt Designer plugin (located in the qt_private) directory +# with the Qt source tree pointed to by the environment variable QTDIR. + +REQUIRED_HEADERS="pluginmanager_p.h iconloader_p.h qdesigner_formwindowmanager_p.h formwindowbase_p.h +abstractnewformwidget_p.h qtresourcemodel_p.h abstractoptionspage_p.h +shared_global_p.h abstractsettings_p.h qdesigner_integration_p.h" + +echo Using $QTDIR + +syncHeader() +{ + HDR=$1 + # Locate the Designer header: look in lib/shared or SDK + QTHDR=$QTDIR/tools/designer/src/lib/shared/$HDR + if [ ! -f $QTHDR ] + then + QTHDR=$QTDIR/tools/designer/src/lib/sdk/$HDR + fi + echo Syncing $QTHDR + + [ -f $QTHDR ] || { echo "$HDR does not exist" ; exit 1 ; } + + TARGET=qt_private/$HDR + + # Exchange license header + head -n 32 formwindowfile.h > $TARGET || exit 1 + tail -n +11 $QTHDR >> $TARGET || exit 1 +} + +for H in $REQUIRED_HEADERS +do + syncHeader $H +done diff --git a/src/plugins/designer/workbenchintegration.h b/src/plugins/designer/workbenchintegration.h index 55acd931ec6..707b50a8d78 100644 --- a/src/plugins/designer/workbenchintegration.h +++ b/src/plugins/designer/workbenchintegration.h @@ -36,7 +36,7 @@ #include -#include +#include namespace Designer { namespace Internal { From 01933445dae09206208cc74704c5b515d42798f3 Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 27 Jan 2009 11:41:05 +0100 Subject: [PATCH 10/15] Fixes: find: make "item activated" in the search treeview jump to the file. --- src/plugins/find/searchresulttreeview.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/plugins/find/searchresulttreeview.cpp b/src/plugins/find/searchresulttreeview.cpp index ea950fb949c..3b51d9e0c1d 100644 --- a/src/plugins/find/searchresulttreeview.cpp +++ b/src/plugins/find/searchresulttreeview.cpp @@ -50,7 +50,7 @@ SearchResultTreeView::SearchResultTreeView(QWidget *parent) setIndentation(14); header()->hide(); - connect (this, SIGNAL(activated(const QModelIndex&)), this, SLOT(emitJumpToSearchResult(const QModelIndex&))); + connect (this, SIGNAL(activated(QModelIndex)), this, SLOT(emitJumpToSearchResult(QModelIndex))); } void SearchResultTreeView::setAutoExpandResults(bool expand) @@ -76,10 +76,7 @@ void SearchResultTreeView::appendResultLine(int index, const QString &fileName, void SearchResultTreeView::emitJumpToSearchResult(const QModelIndex &index) { - if (model()->data(index, ItemDataRoles::TypeRole).toString().compare("row") != 0) - return; - - QString fileName(model()->data(index, ItemDataRoles::FileNameRole).toString()); + QString fileName = model()->data(index, ItemDataRoles::FileNameRole).toString(); int position = model()->data(index, ItemDataRoles::ResultIndexRole).toInt(); int lineNumber = model()->data(index, ItemDataRoles::ResultLineNumberRole).toInt(); int searchTermStart = model()->data(index, ItemDataRoles::SearchTermStartRole).toInt(); From 598df2baba9f1afaa2a4a6e3721aa4525daf8eea Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 27 Jan 2009 12:11:08 +0100 Subject: [PATCH 11/15] Fixes: fakevim: implement 'z.' --- src/plugins/fakevim/fakevimhandler.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index 8a164fee4d5..7f5747e91b0 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -693,6 +693,10 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, scrollToLineInDocument(cursorLineInDocument()); moveToFirstNonBlankOnLine(); finishMovement(); + } else if (key == '.') { // center cursor line + scrollToLineInDocument(cursorLineInDocument() - linesOnScreen() / 2); + moveToFirstNonBlankOnLine(); + finishMovement(); } else { qDebug() << "IGNORED Z_MODE " << key << text; } From ccfbdf5b1b3037f9e8a817b5e6f713573b8a0a49 Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 27 Jan 2009 12:29:14 +0100 Subject: [PATCH 12/15] Fixes: fakevim: implement 'zz' --- src/plugins/fakevim/fakevimhandler.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index 7f5747e91b0..591b307d960 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -697,6 +697,9 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified, scrollToLineInDocument(cursorLineInDocument() - linesOnScreen() / 2); moveToFirstNonBlankOnLine(); finishMovement(); + } else if (key == 'z') { // center cursor line + scrollToLineInDocument(cursorLineInDocument() - linesOnScreen() / 2); + finishMovement(); } else { qDebug() << "IGNORED Z_MODE " << key << text; } From 629a4778a295534e1483a67bb58b7f7136475464 Mon Sep 17 00:00:00 2001 From: Jens Bache-Wiig Date: Tue, 27 Jan 2009 12:40:49 +0100 Subject: [PATCH 13/15] Fixes: Improved file icons Details: This patch makes use of system icons as a base and draws overlay on top. This should blend a bit better into the native icon theme. --- src/plugins/coreplugin/fileiconprovider.cpp | 28 +++++++++++++----- src/plugins/coreplugin/fileiconprovider.h | 4 ++- src/plugins/cppeditor/cppplugin.cpp | 4 +-- src/plugins/cppeditor/images/qt_cpp.png | Bin 561 -> 282 bytes src/plugins/cppeditor/images/qt_h.png | Bin 448 -> 492 bytes src/plugins/designer/formeditorfactory.cpp | 2 +- src/plugins/designer/images/qt_ui.png | Bin 666 -> 806 bytes .../qt4projectmanager/images/qt_project.png | Bin 516 -> 613 bytes .../profileeditorfactory.cpp | 4 +-- src/plugins/qt4projectmanager/qt4nodes.cpp | 14 ++++++++- src/plugins/resourceeditor/images/qt_qrc.png | Bin 622 -> 676 bytes .../resourceeditor/resourceeditorfactory.cpp | 4 +-- 12 files changed, 44 insertions(+), 16 deletions(-) diff --git a/src/plugins/coreplugin/fileiconprovider.cpp b/src/plugins/coreplugin/fileiconprovider.cpp index bf48ba37013..63947e8ed6c 100644 --- a/src/plugins/coreplugin/fileiconprovider.cpp +++ b/src/plugins/coreplugin/fileiconprovider.cpp @@ -32,6 +32,9 @@ ***************************************************************************/ #include "fileiconprovider.h" +#include +#include +#include using namespace Core; @@ -48,7 +51,7 @@ using namespace Core; FileIconProvider *FileIconProvider::m_instance = 0; FileIconProvider::FileIconProvider() - : m_unknownFileIcon(QLatin1String(":/core/images/unknownfile.png")) + : m_unknownFileIcon(qApp->style()->standardIcon(QStyle::SP_FileIcon)) { } @@ -76,7 +79,7 @@ QIcon FileIconProvider::icon(const QFileInfo &fileInfo) // same suffix (Mac OS X), but should speed up the retrieval a lot ... icon = m_systemIconProvider.icon(fileInfo); if (!suffix.isEmpty()) - registerIconForSuffix(icon, suffix); + registerIconOverlayForSuffix(icon, suffix); #else if (fileInfo.isDir()) { icon = m_systemIconProvider.icon(fileInfo); @@ -89,11 +92,22 @@ QIcon FileIconProvider::icon(const QFileInfo &fileInfo) return icon; } -/*! - Registers an icon for a given suffix, overriding any existing icon. - */ -void FileIconProvider::registerIconForSuffix(const QIcon &icon, const QString &suffix) +// Creates a pixmap with baseicon at size and overlayous overlayIcon over it. +QPixmap FileIconProvider::overlayIcon(QStyle::StandardPixmap baseIcon, const QIcon &overlayIcon, const QSize &size) const { + QPixmap iconPixmap = qApp->style()->standardIcon(baseIcon).pixmap(size); + QPainter painter(&iconPixmap); + painter.drawPixmap(0, 0, overlayIcon.pixmap(size)); + painter.end(); + return iconPixmap; +} + +/*! + Registers an icon for a given suffix, overlaying the system file icon + */ +void FileIconProvider::registerIconOverlayForSuffix(const QIcon &icon, const QString &suffix) +{ + QPixmap fileIconPixmap = overlayIcon(QStyle::SP_FileIcon, icon, QSize(16, 16)); // delete old icon, if it exists QList >::iterator iter = m_cache.begin(); for (; iter != m_cache.end(); ++iter) { @@ -103,7 +117,7 @@ void FileIconProvider::registerIconForSuffix(const QIcon &icon, const QString &s } } - QPair newEntry(suffix, icon); + QPair newEntry(suffix, fileIconPixmap); m_cache.append(newEntry); } diff --git a/src/plugins/coreplugin/fileiconprovider.h b/src/plugins/coreplugin/fileiconprovider.h index 8a92666ba4e..5e56228304f 100644 --- a/src/plugins/coreplugin/fileiconprovider.h +++ b/src/plugins/coreplugin/fileiconprovider.h @@ -40,6 +40,7 @@ #include #include #include +#include namespace Core { @@ -48,7 +49,8 @@ public: ~FileIconProvider(); // used to clear the cache QIcon icon(const QFileInfo &fileInfo); - void registerIconForSuffix(const QIcon &icon, const QString &suffix); + QPixmap overlayIcon(QStyle::StandardPixmap baseIcon, const QIcon &overlayIcon, const QSize &size) const; + void registerIconOverlayForSuffix(const QIcon &icon, const QString &suffix); static FileIconProvider *instance(); diff --git a/src/plugins/cppeditor/cppplugin.cpp b/src/plugins/cppeditor/cppplugin.cpp index e600de92c58..efa689995c4 100644 --- a/src/plugins/cppeditor/cppplugin.cpp +++ b/src/plugins/cppeditor/cppplugin.cpp @@ -75,9 +75,9 @@ CppPluginEditorFactory::CppPluginEditorFactory(CppPlugin *owner) : << QLatin1String(CppEditor::Constants::CPP_SOURCE_MIMETYPE) << QLatin1String(CppEditor::Constants::CPP_HEADER_MIMETYPE); Core::FileIconProvider *iconProvider = Core::FileIconProvider::instance(); - iconProvider->registerIconForSuffix(QIcon(":/cppeditor/images/qt_cpp.png"), + iconProvider->registerIconOverlayForSuffix(QIcon(":/cppeditor/images/qt_cpp.png"), QLatin1String("cpp")); - iconProvider->registerIconForSuffix(QIcon(":/cppeditor/images/qt_h.png"), + iconProvider->registerIconOverlayForSuffix(QIcon(":/cppeditor/images/qt_h.png"), QLatin1String("h")); } diff --git a/src/plugins/cppeditor/images/qt_cpp.png b/src/plugins/cppeditor/images/qt_cpp.png index 73fd1642b3c23adf39cc99207b5306d91d1f26a1..c938e2d65cf491ff9b2958530dbaa0ef8c10ab73 100644 GIT binary patch delta 254 zcmdnUGK*<~NGZx^prw85kJYlDyqr82*Fcg1yTpGcYi47I;J!Gca%qgD@k* ztT_@43=Hfgp1!W^HyNe5EF`>s?iXTUV3_6U;uvCaIypgt^|0WL*7%(o>9r3xEj)j9 z`|PrN9~GC( zD-#w6{8HK_=T^eFxxxGP{Jlv6f)A2^m8Q1$edX{lXSmC2^6!1bf=dhx3=E#GelF{r G5}E)fd1);G delta 536 zcmbQmw2@_kO1)%>YeY$Kep*R+Vo@rCV@iHfs)A>3VtQ&&YGO)d;mK4R1_s8*SyBT&wPIF!4v`|6LO8#U6b4p~}B8|mHzy8|E9CzFqBgeQi zboJF2vL2IKzNsEQC3U#JK3R5Vq;RyntWK)hgtKWc8Ty%-@+I6j6fTR*iHl3EuzC6D z`a4sjV%t4`*En4^;qp+MTp<;qHMQ$Ycvz^Y`F1_2{iSR6PhZe``^LXj51yO1>KXq0 z#F;vwZmLwNDoa97V$K=} vzNOk+|9M6J_i`)GZx^prw85kJYlDyqr82*Fcg1yTpGcYi47I;J!Gca%qgD@k* ztT_@43=Hfgp1!W^HyNe5EUaJ5JD0$~z?kFd;uvCadhX=?Ud)aH?e^yG4y>LWO$);I zIdC0yY7uerm{`*I#IuHZHHTQ(%1>O1NfT`z-#t#7b|T-*UZg47c8HyDc!Wbw||NAg!rM6IdNC9n4r8wp#Vx z5ynOAi&h)5HRPD>X6R&Gvvo<3=9C}?jinq-4EMh?t_abxKX;6AN|250Ge(OYl?ofg z)|!5;k`*kxmt$5xnQ`9p)~(y~HVQCQHaz;P{I_m?|3`_9(_-|tGXy;3In>B#_u$^k zr%z`1s2z66-g51vP>YeY$Kep*R+Vo@rCV@iHfs)A>3VtQ&&YGO)d;mK4R1_s6?PZ!6K zid%Cg@69{pz|(M7B}h}pu_Qrt%^vqDia8S>Fh0l>&=$%UOnoLA5i#SIs&~7`#3qlE z`RDbf|5DfzuHflRuJ zPrl3|hFeTKbIoQi%xD#8U@wRiVYU4FyOvc+&YN*cD(9|s&C4=VTxKrQoO3??((=oi z{#LtIGcZbgF_f9~@oPm($c;@p%|C1WL{FygzU!oYz@X>YjP6VEyJBCISS8#xa|vXb zKbzNxHj%<2hBImpk_0ZwmrlnQ;|4$2NXxC~`@l@bBtY*Bmq_yC$qC#J?)P#~}@_ko+?w2oQk60V_ f;r>_E0}PHEEDoG6c(IUyfq}u()z4*}Q$iB}GWxvg diff --git a/src/plugins/designer/formeditorfactory.cpp b/src/plugins/designer/formeditorfactory.cpp index df3c59adfa3..545a6cca27c 100644 --- a/src/plugins/designer/formeditorfactory.cpp +++ b/src/plugins/designer/formeditorfactory.cpp @@ -52,7 +52,7 @@ FormEditorFactory::FormEditorFactory() m_mimeTypes(QLatin1String(FORM_MIMETYPE)) { Core::FileIconProvider *iconProvider = Core::FileIconProvider::instance(); - iconProvider->registerIconForSuffix(QIcon(":/formeditor/images/qt_ui.png"), + iconProvider->registerIconOverlayForSuffix(QIcon(":/formeditor/images/qt_ui.png"), QLatin1String("ui")); } diff --git a/src/plugins/designer/images/qt_ui.png b/src/plugins/designer/images/qt_ui.png index 8fb61ee27ff36c0477eb777d5e99cd478969ea31..982b19d6043325c0ed18acf45bd1f94d4d514aa1 100644 GIT binary patch delta 783 zcmbQmx{PgtNGZx^prw85kJYlDyqr82*Fcg1yTpGcYi47I;J!Gca%qgD@k* ztT_@43=Hfgp1!W^HyNclMdW6@J%53LfoYkii(`nz>E2249>IY!$M=_iUp9MIuIXY? zzUt_AYY)irD5{=m*A#6E*kDw{>9h2BO~-{5GZZ!})El!bwP#cHxsCc_15nLY)EV-n0ur?780E72Y76&M}ey=s*fXG2{^h6V$}IkSHf z`5P>Dz1y*mo1y+tkD;3;D?^{*vH-7*%*+f|u3i;fd~wIcix&%z%IscwFMpHWhVOe8 z&W`@X%6On`mf}pN9zy{q1_rCSe4@+!HCZox=2Cq9>FCCbi9Ndye`nO;U|68Rb*Xns zP=J?UuNxzS@cbB=?RV}?2o8wZXJOls{=P}+z*go4EzT1%o|6__tk1Y`wUYnN^>5ea zG(CE!AI#kL@FPQ$;5)5`wXqCdnj)@_CQ_|YYuT2&Y_Kcb8&`awq&jgE|K@uFEY3^o zU3>V|ZwD|6OmcJL5b9(}iDWxpyefa)v(HX(fw%uu=wG{*JR{DwY4XzayrtJyGC6Q4 zt`wQ*!4kDLO!R}z#$4mCuYcB`v^$(OqeHoP*7kDi-xkl?FCL%SFvU`=TQPd=vkK8u zo&_6IPuezp5EH$BKJ{)!=G%4CIGvaM%V;!QHn)6tZ`}IrFYhGkclFKt@iQss+rzEb z=1t#OU8)lKT94s);m)o_A?MGWF{!eV+pE#luCrJ1zWepn&)m~rzPNPBXkx16)`+!E%nBNbc+)`Y!oh+D7!^=FORu^at| z4ms7=)%{y=`DKrKyxHutHcLZ(MmO;Wie!3vde%lpMhYvY_)c14`>`Ts;gn5V{s#Q} q+L|-_tQsT7TONiJKm7kP#bm8Hxqp4a83qOh1`bbGKbLh*2~7YLjA6R~ delta 641 zcmZ3+Hj8zFO1)%>YeY$Kep*R+Vo@rCV@iHfs)A>3VtQ&&YGO)d;mK4R1_mY@PZ!6K zid%Cg#b*Q+iX7h`o|>t9@o5KF>g~%OFBUf1ia5Dk>GsIqC;3IpY{Qm2`yZ80i#nx};_;v8%pC7X4p3k}e zQ|{Q)BF`V+fBwpxDH~|tlJ}AM_Swyk6&M0VR&KqW+xfgQYi*c!mWh;5CwsHwqwOl5 zOdDIPrQA!7{e67Kqu$3o<4GW!Lv8r}N*lQwIolHV-;dw${{BvDgIBdO9D4=JSN~yQ zT_JoWPJo5WVD{M^B_EmC>a)-Hzy7t3U3{_Nk;zZni!$aiJ-JrRaOBljD^{J_j>emF z4m~`0`9?%#Z+gDB%mJT?Gu#;eT$Z_7<~3 zXs7zruT{1)%2->M7E1K>CjEUZ6J}g}VeXEm{21j$D;5T(IS8GcKl`j&is*v+t424v zd>yXaw}jM)-RJ%tanr7~__==hOK(P%z?X}HRvt((S~z2#qxU6c)$n_|+%w{hAN>0w zbEEvCp2Ky4)VqZqd9m8bt(Vv~ovfU)T1o8MuY&4NniUJnpYLKg5_D3wdvv^j+nj`uR*I&0DO>)$mzWDxzsI>-Cy$O-qf^X(+|G$^{ z(x$@?8!o?G@?XWBV|)!*t_e$?3gd2cC@z>sFySE^xJ`JRD+fx*+&&t;ucLK6UN CO)xzG diff --git a/src/plugins/qt4projectmanager/images/qt_project.png b/src/plugins/qt4projectmanager/images/qt_project.png index 25133f5f476aa5ec2e5e8829d80d701560d5d476..3a1bfa5fda47a4a651e977e13d6eed5031b049bc 100644 GIT binary patch delta 588 zcmZo+dCD?DrJk`k$lZxy-8q?;3=9lxN#5=*4F5rJ!QSPQ85kHi3p^r=85p>QL70(Y z)*J~21_t&LPhVH|n~c(&7Mx1_iaQw?7@vB&IEGl9Zk@b8J2+6}xV`TqZrQG~jnT%D zF06v8BJEq;WSUeGIG4_KIpQg99_w`WQfLd0Y*Jx;A=f1N#X`Ppf(Pv#9FO?UeYDu| z(>=@QmP@`T`mAB+V}G~zdGWdLcdDOv9aZ|j*>Ab=RxwvW2F-@B)vhA0!Et)iHAT3V zT+Wp0J?2xvb>PghNoRQ))~?lMa9e!wjGr1qeUnT=VWDB$nMsqG0XYv2YAn3iK+iG>#TfX(Y{H{ z3!>jLZzx_X-Em@L%VdEzMTRUcffXywy?<}M{+q!jBi_xW!}>#QJ&(ZLj{i&@C-g;U z`ZKg7o=7l|$nRNNu}Dg$^uLl+$E%2@_rF;j3nC&P?b!D0sOa3X^nP>u3N0%S#y9WY zZQ8Tv%?XCjN>vJr?zz``?c3z?Sy=%(Xzn{2ep=Uv%ukp#JJnLpoN zw%t4a?Ue!p^VzguhC2@#f}|NPNG5!DTdXJ~A-#)fj{S;BA_?F9mR}Bj;FPSkcy(V< zS?2TG`HEAe{z;d{w!0`X^2e8NC^k^vRiLWBUW&1=M|ERXROb70Z}xSY-rDACpSE4i yq37|hy|IT6*)$*i?OMvtwEdHh)(_zX28ZANtsg%+tYlzdVDNPHb6Mw<&;$TPN#Obb diff --git a/src/plugins/qt4projectmanager/profileeditorfactory.cpp b/src/plugins/qt4projectmanager/profileeditorfactory.cpp index 21299bb2fea..f3d6b631ab9 100644 --- a/src/plugins/qt4projectmanager/profileeditorfactory.cpp +++ b/src/plugins/qt4projectmanager/profileeditorfactory.cpp @@ -56,9 +56,9 @@ ProFileEditorFactory::ProFileEditorFactory(Qt4Manager *manager, TextEditor::Text m_actionHandler(handler) { Core::FileIconProvider *iconProvider = Core::FileIconProvider::instance(); - iconProvider->registerIconForSuffix(QIcon(":/qt4projectmanager/images/qt_project.png"), + iconProvider->registerIconOverlayForSuffix(QIcon(":/qt4projectmanager/images/qt_project.png"), QLatin1String("pro")); - iconProvider->registerIconForSuffix(QIcon(":/qt4projectmanager/images/qt_project.png"), + iconProvider->registerIconOverlayForSuffix(QIcon(":/qt4projectmanager/images/qt_project.png"), QLatin1String("pri")); } diff --git a/src/plugins/qt4projectmanager/qt4nodes.cpp b/src/plugins/qt4projectmanager/qt4nodes.cpp index d7a1783feb5..f9990c522fb 100644 --- a/src/plugins/qt4projectmanager/qt4nodes.cpp +++ b/src/plugins/qt4projectmanager/qt4nodes.cpp @@ -43,6 +43,7 @@ #include #include +#include #include #include #include @@ -60,6 +61,7 @@ #include #include +#include #include #include #include @@ -94,7 +96,17 @@ Qt4PriFileNode::Qt4PriFileNode(Qt4Project *project, Qt4ProFileNode* qt4ProFileNo { Q_ASSERT(project); setFolderName(QFileInfo(filePath).baseName()); - setIcon(QIcon(":/qt4projectmanager/images/qt_project.png")); + + static QIcon dirIcon; + if (dirIcon.isNull()) { + // Create a custom Qt dir icon based on the system icon + Core::FileIconProvider *iconProvider = Core::FileIconProvider::instance(); + QPixmap dirIconPixmap = iconProvider->overlayIcon(QStyle::SP_DirIcon, + QIcon(":/qt4projectmanager/images/qt_project.png"), + QSize(16, 16)); + dirIcon.addPixmap(dirIconPixmap); + } + setIcon(dirIcon); m_fileWatcher->addFile(filePath); connect(m_fileWatcher, SIGNAL(fileChanged(QString)), this, SLOT(scheduleUpdate())); diff --git a/src/plugins/resourceeditor/images/qt_qrc.png b/src/plugins/resourceeditor/images/qt_qrc.png index d22ca676103cb6a5c2dbc5811bf9d81824be8972..3643f37e1a3ede6454fe3d14224e6fc72f73a5db 100644 GIT binary patch delta 652 zcmaFIvV?VlNGZx^prw85kJYlDyqr82*Fcg1yTpGcYi47I;J!Gca%qgD@k* ztT_@43=Hfgp1!W^HyNclHTh?3T|S3_fl0;F#WBRUC4M(Uq@$;jMRb~1qY+N&lJi8trR&XF(oKub?B~LyMFw5_x0%Z zm*UUEr%iwMe^HH8#ilJutKTw2W%n5V*w-J#CHT;{s_t9ZqZbcWveySQEJ;h>QTdxM zYx$As{`2MS>b`w7D%iS~amCfFE3Zor8MwHd(5siQDSX2bCEau(U}dD%QJtsrBY#y{ zF|Kpb%UJud);>r{iQx*fBTtL9Uh4e-y|s(CxN2U`S^WMti(^BFOT)i=e9PXQH_@Fp z=eF^}{o9lIA5_L&E)jfK?PyqA|D7jsMc}CqB_E|Hf3*9uu4!ku{Wk_j0hhDC!wc@p zPT8c9`y+H?h)wG?wzX>+rgBX1QJcM_ueZ1G%a5H$-(>xZI=}GT;i%|S`<6z9W^5EW z{qWbisYj&le>%UT#H>te2fGiG&hw-g3(2c?>~gwmZ#>GM;@r<>(fwM9fq{X+)76jF JWt~$(695uqCujfw delta 597 zcmZ3&`i^CSO1)%>YeY$Kep*R+Vo@rCV@iHfs)A>3VtQ&&YGO)d;mK4R1_mYpPZ!6K zid!|owi&^JBL9N6M7Nb>ZVd5xt+Zmt>kyeU6L|Kus3`bpS#g#X2(Yk=Pj5)*b{2db zwZgDj@6yt{AzWz_oOHS_ewq1w(w=AU|2~O*Z~4@=IQVU2asBz--{-xzuK(^j>Ex0F z7dJ)gO@Drzzty5acJa~>t&azHEW4bkBGkE~MFKrS zJJ+4&+Zgf2Lr6`6uiY!<*7qvgGLNM}i~oK6$fL%@6mqWLk`G%|xy_jLrvhMYxN0A*>d(Ul)(AmVh%wbhZ!fiA6 zez(Op?o{-)e_vN5@b(kW?dSgMHcwS~uRphY$zi#GTOqqsBk$NKRYzAf&faM`r*6ZM z1=F=p?7xlk!2nTyXxrUv1L2)_k!(kx=^gcsx^=T!Xu} z!P$K!(->~H-`Bm_yzR8DqR`S7r-cia%sT0pVjyncf69;da`0px1D(ddwVnndH;iS9 zs@=U+e&`-|JvZ~-2icY38T(^<9~^Re;r(Fh+4GOi$}_St{B@hywch(>F9QPugQu&X J%Q~loCIBpqAI$&& diff --git a/src/plugins/resourceeditor/resourceeditorfactory.cpp b/src/plugins/resourceeditor/resourceeditorfactory.cpp index dcdd691c9fc..aefd65f4147 100644 --- a/src/plugins/resourceeditor/resourceeditorfactory.cpp +++ b/src/plugins/resourceeditor/resourceeditorfactory.cpp @@ -55,8 +55,8 @@ ResourceEditorFactory::ResourceEditorFactory(ResourceEditorPlugin *plugin) : m_context += Core::UniqueIDManager::instance() ->uniqueIdentifier(QLatin1String(ResourceEditor::Constants::C_RESOURCEEDITOR)); Core::FileIconProvider *iconProvider = Core::FileIconProvider::instance(); - iconProvider->registerIconForSuffix(QIcon(":/resourceeditor/images/qt_qrc.png"), - QLatin1String("qrc")); + iconProvider->registerIconOverlayForSuffix(QIcon(":/resourceeditor/images/qt_qrc.png"), + QLatin1String("qrc")); } QString ResourceEditorFactory::kind() const From cc65b3949a7840aea98d46b7204475efe359c03f Mon Sep 17 00:00:00 2001 From: con Date: Tue, 27 Jan 2009 12:24:39 +0100 Subject: [PATCH 14/15] Fixes: - Resources (templates etc) on Mac --- qtcreator.pro | 1 - {src/app => share/qtcreator}/Info.plist | 0 share/share.pri | 2 +- src/app/app.pro | 2 ++ 4 files changed, 3 insertions(+), 2 deletions(-) rename {src/app => share/qtcreator}/Info.plist (100%) diff --git a/qtcreator.pro b/qtcreator.pro index e1e65631d12..7eadc16290f 100644 --- a/qtcreator.pro +++ b/qtcreator.pro @@ -6,7 +6,6 @@ count(TOO_OLD_LIST, 1) { } include(doc/doc.pri) -include(share/share.pri) TEMPLATE = subdirs CONFIG += ordered diff --git a/src/app/Info.plist b/share/qtcreator/Info.plist similarity index 100% rename from src/app/Info.plist rename to share/qtcreator/Info.plist diff --git a/share/share.pri b/share/share.pri index 50fa37a71a0..ece603de416 100644 --- a/share/share.pri +++ b/share/share.pri @@ -14,7 +14,7 @@ macx { RUNINTERMINAL.path = Contents/Resources RUNINTERMINAL.files = $$PWD/qtcreator/runInTerminal.command QMAKE_BUNDLE_DATA += SNIPPETS TEMPLATES DESIGNER SCHEMES GDBDEBUGGER LICENSE RUNINTERMINAL - QMAKE_INFO_PLIST = $$PWD/qtcreator/info.plist + QMAKE_INFO_PLIST = $$PWD/qtcreator/Info.plist } win32 { diff --git a/src/app/app.pro b/src/app/app.pro index cc8ccbe1af1..14a3cdf35c0 100644 --- a/src/app/app.pro +++ b/src/app/app.pro @@ -38,3 +38,5 @@ macx { ICON = qtcreator.icns } +include(../../share/share.pri) + From 822d8810199b0ab0003423f2de6e8a7a8749c3a9 Mon Sep 17 00:00:00 2001 From: con Date: Tue, 27 Jan 2009 12:41:37 +0100 Subject: [PATCH 15/15] Fixes: - Creator documentation on Mac --- doc/doc.pri | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/doc.pri b/doc/doc.pri index 4ed0de99375..3c23ab8a951 100644 --- a/doc/doc.pri +++ b/doc/doc.pri @@ -27,7 +27,8 @@ linux-* { } macx { - cp_docs.commands = $${QMAKE_COPY_DIR} $${OUT_PWD}/doc $${OUT_PWD}/bin/QtCreator.app/Contents/Resources + DOC_DIR = $${OUT_PWD}/bin/QtCreator.app/Contents/Resources/doc + cp_docs.commands = mkdir -p $${DOC_DIR} ; $${QMAKE_COPY} $${QCH_FILE} $${DOC_DIR} cp_docs.depends += qch_docs docs.depends = cp_docs QMAKE_EXTRA_TARGETS += html_docs qch_docs cp_docs docs